UNPKG

react-native-filament

Version:

A real-time physically based 3D rendering engine for React Native

35 lines (34 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useWorkletEffect = useWorkletEffect; var _react = require("react"); var _useFilamentContext = require("./useFilamentContext"); var _reactNativeWorkletsCore = require("react-native-worklets-core"); var _ErrorUtils = require("../ErrorUtils"); function useWorkletEffect(workletFunction) { const { workletContext } = (0, _useFilamentContext.useFilamentContext)(); (0, _react.useEffect)(() => { const cleanupPromise = workletContext.runAsync((0, _ErrorUtils.wrapWithErrorHandler)(workletFunction)); return () => { cleanupPromise.then(cleanup => { if (cleanup == null || typeof cleanup !== 'function') { // no cleanup function was returned, do nothing. return; } if ((0, _reactNativeWorkletsCore.isWorklet)(cleanup)) { // call cleanup function on Worklet context workletContext.runAsync(cleanup); } else { // call normal cleanup JS function on normal context cleanup(); } }); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, (0, _reactNativeWorkletsCore.getWorkletDependencies)(workletFunction)); } //# sourceMappingURL=useWorkletEffect.js.map