mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
edit wip
This commit is contained in:
parent
0ab24ead47
commit
189788a1b6
14 changed files with 599 additions and 6 deletions
59
script/edit/tools.ts
Normal file
59
script/edit/tools.ts
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
export interface EditOptions {
|
||||
unlock_pov: boolean,
|
||||
cut?: TickRange,
|
||||
}
|
||||
|
||||
export interface TickRange {
|
||||
from: number,
|
||||
to: number,
|
||||
}
|
||||
|
||||
function getCacheBuster(): string {
|
||||
const url = document.querySelector('script[src*="editor"]').attributes.src.value;
|
||||
return url.substring("/editor.js".length);
|
||||
}
|
||||
|
||||
export function edit(data: ArrayBuffer, options: EditOptions): Promise<ArrayBuffer> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const worker = new Worker(`/edit-worker.js${getCacheBuster()}`);
|
||||
worker.postMessage({
|
||||
buffer: data,
|
||||
options
|
||||
});
|
||||
worker.onmessage = (event) => {
|
||||
if (event.data.error) {
|
||||
reject(event.data.error);
|
||||
return;
|
||||
} else if (event.data.buffer) {
|
||||
resolve(event.data.buffer);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export function count_ticks(data: ArrayBuffer): Promise<number> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const worker = new Worker(`/edit-worker.js${getCacheBuster()}`);
|
||||
worker.postMessage({
|
||||
buffer: data,
|
||||
count: true
|
||||
});
|
||||
worker.onmessage = (event) => {
|
||||
if (event.data.error) {
|
||||
reject(event.data.error);
|
||||
return;
|
||||
} else if (event.data.ticks) {
|
||||
resolve(event.data.ticks);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export function downloadBuffer(arrayBuffer: ArrayBuffer, fileName: string) {
|
||||
const a = document.createElement('a')
|
||||
a.href = URL.createObjectURL(new Blob(
|
||||
[arrayBuffer],
|
||||
))
|
||||
a.download = fileName
|
||||
a.click()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue