{"ast":null,"code":"import { useCallback, useEffect, useRef, useState } from 'react';\n\nvar useHeavyWork = function useHeavyWork(createWasm, createWorker, fallback, params) {\n  var wasm = useRef(null);\n  var worker = useRef(null);\n\n  var _useState = useState(undefined),\n      result = _useState[0],\n      setResult = _useState[1];\n\n  var runFallback = useCallback(function (p) {\n    return fallback && setResult(fallback(p));\n  }, [fallback]);\n  useEffect(function () {\n    if (true) {\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(function (work) {\n            return setResult(work(params));\n          })[\"catch\"](function () {\n            return runFallback(params);\n          });\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', function (_ref) {\n            var data = _ref.data;\n            return setResult(data);\n          });\n          (_worker$current3 = worker.current) === null || _worker$current3 === void 0 ? void 0 : _worker$current3.addEventListener('error', function () {\n            return runFallback(params);\n          });\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"}