mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-16 10:39:53 +00:00
Address minor nits
This commit is contained in:
@@ -6,67 +6,67 @@ const API_VERSION = 1;
|
|||||||
|
|
||||||
export function exposeAPI(app: App) {
|
export function exposeAPI(app: App) {
|
||||||
self.parent.postMessage({ type: 'READY', version: API_VERSION }, '*');
|
self.parent.postMessage({ type: 'READY', version: API_VERSION }, '*');
|
||||||
self.addEventListener('message', (ev: MessageEvent) => {
|
self.addEventListener('message', (event: MessageEvent) => {
|
||||||
if (ev.data !== 'READY?') {
|
if (event.data !== 'READY?') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ev.stopPropagation();
|
event.stopImmediatePropagation();
|
||||||
self.parent.postMessage({ type: 'READY', version: API_VERSION }, '*');
|
self.parent.postMessage({ type: 'READY', version: API_VERSION }, '*');
|
||||||
});
|
});
|
||||||
expose(new API(app), self.parent);
|
expose(new API(app), self.parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
class API {
|
class API {
|
||||||
constructor(private app: App) { }
|
constructor(private _app: App) { }
|
||||||
|
|
||||||
async setFile(blob: Blob, name: string) {
|
setFile(blob: Blob, name: string) {
|
||||||
return new Promise(async (resolve) => {
|
return new Promise((resolve) => {
|
||||||
document.addEventListener(
|
document.addEventListener(
|
||||||
'squoosh:processingstart',
|
'squoosh:processingstart',
|
||||||
() => resolve(),
|
() => resolve(),
|
||||||
{ once: true },
|
{ once: true },
|
||||||
);
|
);
|
||||||
this.app.openFile(new File([blob], name));
|
this._app.openFile(new File([blob], name));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async getBlob(side: 0 | 1) {
|
getBlob(side: 0 | 1) {
|
||||||
if (!this.app.state.file || !this.app.compressInstance) {
|
if (!this._app.state.file || !this._app.compressInstance) {
|
||||||
throw new Error('No file has been loaded');
|
throw new Error('No file has been loaded');
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
!this.app.compressInstance!.state.loading &&
|
!this._app.compressInstance!.state.loading &&
|
||||||
!this.app.compressInstance!.state.sides[side].loading
|
!this._app.compressInstance!.state.sides[side].loading
|
||||||
) {
|
) {
|
||||||
return this.app.compressInstance!.state.sides[side].file;
|
return this._app.compressInstance!.state.sides[side].file;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
document.addEventListener(
|
document.addEventListener(
|
||||||
'squoosh:processingdone',
|
'squoosh:processingdone',
|
||||||
(ev) => {
|
(event) => {
|
||||||
if ((ev as CustomEvent).detail.side !== side) {
|
if ((event as CustomEvent).detail.side !== side) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
resolve(this.app.compressInstance!.state.sides[side].file);
|
resolve(this._app.compressInstance!.state.sides[side].file);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
document.addEventListener(
|
document.addEventListener(
|
||||||
'squoosh:processingabort',
|
'squoosh:processingabort',
|
||||||
(ev) => {
|
(event) => {
|
||||||
if ((ev as CustomEvent).detail.side !== side) {
|
if ((event as CustomEvent).detail.side !== side) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
reject('aborted');
|
reject(new DOMException('Aborted', 'AbortError'));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
document.addEventListener(
|
document.addEventListener(
|
||||||
'squoosh:processingerroor',
|
'squoosh:processingerror',
|
||||||
(ev) => {
|
(event) => {
|
||||||
if ((ev as CustomEvent).detail.side !== side) {
|
if ((event as CustomEvent).detail.side !== side) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
reject((ev as CustomEvent).detail.msg);
|
reject(new Error((event as CustomEvent).detail.msg));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user