From 68b825f91e11b67ea300c740826fa62578e168a4 Mon Sep 17 00:00:00 2001 From: Ryan Di Date: Tue, 1 Apr 2025 22:20:16 +1100 Subject: [PATCH] attempt with dynamic import --- packages/excalidraw/lasso/index.ts | 40 +++++++++---------- ...{lasso-worker.ts => lasso-worker.chunk.ts} | 0 2 files changed, 20 insertions(+), 20 deletions(-) rename packages/excalidraw/lasso/{lasso-worker.ts => lasso-worker.chunk.ts} (100%) diff --git a/packages/excalidraw/lasso/index.ts b/packages/excalidraw/lasso/index.ts index 1f7f7f52f..56bcfd3e6 100644 --- a/packages/excalidraw/lasso/index.ts +++ b/packages/excalidraw/lasso/index.ts @@ -31,8 +31,6 @@ import { AnimatedTrail } from "../animated-trail"; import { LassoWorkerPolyfill } from "./lasso-worker-polyfill"; -import { WorkerUrl } from "./lasso-worker"; - import type App from "../components/App"; import type { LassoWorkerInput, LassoWorkerOutput } from "./types"; @@ -85,23 +83,27 @@ export class LassoTrail extends AnimatedTrail { }); } - try { - if (typeof Worker !== "undefined" && WorkerUrl) { - this.worker = new Worker(WorkerUrl, { type: "module" }); - } else { - this.worker = new LassoWorkerPolyfill(); + if (!this.worker) { + try { + const { WorkerUrl } = await import("./lasso-worker.chunk"); + + if (typeof Worker !== "undefined" && WorkerUrl) { + this.worker = new Worker(WorkerUrl, { type: "module" }); + } else { + this.worker = new LassoWorkerPolyfill(); + } + + this.worker.onmessage = (event: MessageEvent) => { + const { selectedElementIds } = event.data; + this.selectElementsFromIds(selectedElementIds); + }; + + this.worker.onerror = (error) => { + console.error("Worker error:", error); + }; + } catch (error) { + console.error("Failed to start worker", error); } - - this.worker.onmessage = (event: MessageEvent) => { - const { selectedElementIds } = event.data; - this.selectElementsFromIds(selectedElementIds); - }; - - this.worker.onerror = (error) => { - console.error("Worker error:", error); - }; - } catch (error) { - console.error("Failed to start worker", error); } } @@ -226,7 +228,5 @@ export class LassoTrail extends AnimatedTrail { this.app.setState({ lassoSelection: null, }); - - this.worker?.terminate(); } } diff --git a/packages/excalidraw/lasso/lasso-worker.ts b/packages/excalidraw/lasso/lasso-worker.chunk.ts similarity index 100% rename from packages/excalidraw/lasso/lasso-worker.ts rename to packages/excalidraw/lasso/lasso-worker.chunk.ts