From 48d44b47d29bd9f1476cfd5b8b9cab5a768349b7 Mon Sep 17 00:00:00 2001
From: Georgii Savin <gsavin@devexperts.com>
Date: Sun, 3 Dec 2023 12:53:02 +0300
Subject: [PATCH] feat(offscreen): fix offscreen init types

---
 src/chart/canvas/offscreen/init-offscreen.ts | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/chart/canvas/offscreen/init-offscreen.ts b/src/chart/canvas/offscreen/init-offscreen.ts
index 7f857c8b..b606b492 100644
--- a/src/chart/canvas/offscreen/init-offscreen.ts
+++ b/src/chart/canvas/offscreen/init-offscreen.ts
@@ -4,10 +4,9 @@ import { isOffscreenCanvasModel } from './canvas-offscreen-wrapper';
 import { OffscreenWorker } from './offscreen-worker';
 
 export const isOffscreenWorkerAvailable = typeof Worker !== 'undefined';
-const OffscreenWorkerClass = isOffscreenWorkerAvailable
-	? wrap<typeof OffscreenWorker>(new Worker(new URL('./offscreen-worker.js', import.meta.url)))
-	: // ? wrap<typeof OffscreenWorker>(new Worker(new URL('http://localhost:3000/offscreen-worker.js')))
-	  class {};
+const OffscreenWorkerClass =
+	isOffscreenWorkerAvailable &&
+	wrap<typeof OffscreenWorker>(new Worker(new URL('./offscreen-worker.js', import.meta.url)));
 
 // create global worker instance, so every chart will use the same worker
 export let offscreenWorker: Remote<OffscreenWorker>;
@@ -16,8 +15,11 @@ let canvasesIdxOffset = 0;
 
 export const initOffscreenWorker = async (canvases: CanvasModel[]): Promise<Remote<OffscreenWorker>> => {
 	if (offscreenWorker === undefined) {
-		// @ts-ignore
-		offscreenWorker = await new OffscreenWorkerClass();
+		if (typeof OffscreenWorkerClass === 'function') {
+			offscreenWorker = await new OffscreenWorkerClass();
+		} else {
+			return Promise.reject('Offscreen worker is not available.');
+		}
 	}
 	const startOffset = canvasesIdxOffset;
 	canvasesIdxOffset += 10;