{"ast":null,"code":"import { useCallback, useEffect, useRef, useState } from 'react';\n\nconst useHeavyWork = (createWasm, createWorker, fallback, params) => {\n  const wasm = useRef(null);\n  const worker = useRef(null);\n  const {\n    0: result,\n    1: setResult\n  } = useState(undefined);\n  const runFallback = useCallback(p => fallback && setResult(fallback(p)), [fallback]);\n  useEffect(() => {\n    if (false) {\n      try {\n        if (createWasm && typeof WebAssembly !== 'undefined') {\n          var _wasm$current;\n\n          if (!wasm.current) {\n            wasm.current = createWasm();\n          }\n\n          (_wasm$current = wasm.current) === null || _wasm$current === void 0 ? void 0 : _wasm$current.then(work => setResult(work(params))).catch(() => runFallback(params));\n          return;\n        }\n\n        if (createWorker && typeof Worker !== 'undefined') {\n          var _worker$current, _worker$current2, _worker$current3;\n\n          if (!worker.current) {\n            worker.current = createWorker();\n          }\n\n          (_worker$current = worker.current) === null || _worker$current === void 0 ? void 0 : _worker$current.postMessage(params);\n          (_worker$current2 = worker.current) === null || _worker$current2 === void 0 ? void 0 : _worker$current2.addEventListener('message', ({\n            data\n          }) => setResult(data));\n          (_worker$current3 = worker.current) === null || _worker$current3 === void 0 ? void 0 : _worker$current3.addEventListener('error', () => runFallback(params));\n          return;\n        }\n      } catch (e) {\n        if (false) {\n          // eslint-disable-next-line no-console\n          console.error('Error during heavy work, trying to use fallback'); // eslint-disable-next-line no-console\n\n          console.error(e);\n        }\n\n        runFallback(params);\n      }\n    }\n\n    runFallback(params);\n  }, [createWasm, createWorker, runFallback, params]);\n  return result;\n};\n\nexport default useHeavyWork;","map":null,"metadata":{},"sourceType":"module"}