UNPKG

tav-media

Version:

Cross platform media editing framework

74 lines (73 loc) 2.54 kB
import { PAGModule } from '../pag-module'; const rewindData = (fn, scope, ...args) => { if (PAGModule.Asyncify.currData !== null) { const currData = PAGModule.Asyncify.currData; PAGModule.Asyncify.currData = null; const ret = fn.call(scope, ...args); PAGModule.Asyncify.currData = currData; return ret; } else { return fn.call(scope, ...args); } }; export const proxyVector = (vector, process) => { const proxy = new Proxy(vector, { get(target, property, receiver) { switch (property) { case 'get': return (index) => { const wasmIns = rewindData(target.get, target, index); return !wasmIns ? wasmIns : process(wasmIns); }; case 'push_back': return (value) => { rewindData(target.push_back, target, value.wasmIns || value); return undefined; }; case 'size': return () => { return rewindData(target.size, target); }; default: return Reflect.get(target, property, receiver); } }, }); return proxy; }; export const isOffscreenCanvas = (element) => window.OffscreenCanvas && element instanceof OffscreenCanvas; export const layer2typeLayer = (wasmIns) => { switch (rewindData(wasmIns._layerType, wasmIns)) { case 2 /* LayerType.Solid */: return new PAGModule.PAGSolidLayer(wasmIns); case 3 /* LayerType.Text */: return new PAGModule.PAGTextLayer(wasmIns); case 5 /* LayerType.Image */: return new PAGModule.PAGImageLayer(wasmIns); default: return new PAGModule.PAGLayer(wasmIns); } }; export const getLayerTypeName = (layerType) => { switch (layerType) { case 2 /* LayerType.Solid */: return 'Solid'; case 3 /* LayerType.Text */: return 'Text'; case 4 /* LayerType.Shape */: return 'Shape'; case 5 /* LayerType.Image */: return 'Image'; case 6 /* LayerType.PreCompose */: return 'PreCompose'; default: return 'Unknown'; } }; export const getWasmIns = (value) => { if (value === null || value === void 0 ? void 0 : value.wasmIns) { return value.wasmIns; } return value; };