diff --git a/excalidraw-app/vite.config.mts b/excalidraw-app/vite.config.mts index 55d655ad2..29e5c0430 100644 --- a/excalidraw-app/vite.config.mts +++ b/excalidraw-app/vite.config.mts @@ -25,7 +25,10 @@ export default defineConfig(({ mode }) => { alias: [ { find: /^@excalidraw\/common$/, - replacement: path.resolve(__dirname, "../packages/common/src/index.ts"), + replacement: path.resolve( + __dirname, + "../packages/common/src/index.ts", + ), }, { find: /^@excalidraw\/common\/(.*?)/, @@ -33,7 +36,10 @@ export default defineConfig(({ mode }) => { }, { find: /^@excalidraw\/element$/, - replacement: path.resolve(__dirname, "../packages/element/src/index.ts"), + replacement: path.resolve( + __dirname, + "../packages/element/src/index.ts", + ), }, { find: /^@excalidraw\/element\/(.*?)/, @@ -41,7 +47,10 @@ export default defineConfig(({ mode }) => { }, { find: /^@excalidraw\/excalidraw$/, - replacement: path.resolve(__dirname, "../packages/excalidraw/index.tsx"), + replacement: path.resolve( + __dirname, + "../packages/excalidraw/index.tsx", + ), }, { find: /^@excalidraw\/excalidraw\/(.*?)/, @@ -57,7 +66,10 @@ export default defineConfig(({ mode }) => { }, { find: /^@excalidraw\/utils$/, - replacement: path.resolve(__dirname, "../packages/utils/src/index.ts"), + replacement: path.resolve( + __dirname, + "../packages/utils/src/index.ts", + ), }, { find: /^@excalidraw\/utils\/(.*?)/, diff --git a/packages/excalidraw/lasso/index.ts b/packages/excalidraw/lasso/index.ts index e155a591a..bbd74d4d9 100644 --- a/packages/excalidraw/lasso/index.ts +++ b/packages/excalidraw/lasso/index.ts @@ -29,10 +29,10 @@ import { type AnimationFrameHandler } from "../animation-frame-handler"; import { AnimatedTrail } from "../animated-trail"; -import LassoWorker from "./lasso-worker.ts?worker"; - import { LassoWorkerPolyfill } from "./lasso-worker-polyfill"; +import { WorkerUrl } from "./lasso-worker.chunk"; + import type App from "../components/App"; import type { LassoWorkerInput, LassoWorkerOutput } from "./types"; @@ -67,7 +67,7 @@ export class LassoTrail extends AnimatedTrail { }); } - startPath(x: number, y: number, keepPreviousSelection = false) { + async startPath(x: number, y: number, keepPreviousSelection = false) { // clear any existing trails just in case this.endPath(); @@ -86,10 +86,11 @@ export class LassoTrail extends AnimatedTrail { } try { - this.worker = - typeof Worker !== "undefined" - ? new LassoWorker() - : new LassoWorkerPolyfill(); + 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; diff --git a/packages/excalidraw/lasso/lasso-worker.ts b/packages/excalidraw/lasso/lasso-worker.chunk.ts similarity index 94% rename from packages/excalidraw/lasso/lasso-worker.ts rename to packages/excalidraw/lasso/lasso-worker.chunk.ts index aa22889a9..c4d19b154 100644 --- a/packages/excalidraw/lasso/lasso-worker.ts +++ b/packages/excalidraw/lasso/lasso-worker.chunk.ts @@ -2,7 +2,9 @@ import { updateSelection } from "./utils"; import type { LassoWorkerInput } from "./types"; -const ctx = self as unknown as Worker; +export const WorkerUrl: URL | undefined = import.meta.url + ? new URL(import.meta.url) + : undefined; // variables to track processing state and latest input data // for "backpressure" purposes @@ -70,5 +72,3 @@ const processInputData = () => { } } }; - -export default ctx;