class Client { quantWorker: Worker; constructor() { /* Quant Worker */ const blob = new Blob([document.getElementById('quant-worker').textContent]); this.quantWorker = new Worker(window.URL.createObjectURL(blob)); this.quantWorker.addEventListener('message', this.onQuantMessage.bind(this), null); } onQuantMessage(event) : void { parent.postMessage({ pluginMessage: { command: "quantizedPalette", data: event.data.data, id: event.data.id } }, '*'); } } let client = new Client(); window.onmessage = (event) => { if ( !event.data.pluginMessage.command ) { throw( new Error("Command not included in plugin message.")); } const command = event.data.pluginMessage.command; switch (command) { case "quantizeImageData": client.quantWorker.postMessage({ data: event.data.pluginMessage.data, id: event.data.pluginMessage.id }); break; default: console.warn("Method not found for command `" + command + "`"); break; } };