UNPKG

react-native-reanimated

Version:

More powerful alternative to Animated library for React Native.

213 lines (166 loc) • 7.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkPluginState = void 0; exports.configureLayoutAnimations = configureLayoutAnimations; exports.configureProps = configureProps; exports.enableLayoutAnimations = enableLayoutAnimations; exports.getViewProp = getViewProp; exports.makeShareable = exports.makeRemote = exports.makeMutable = exports.isConfiguredCheck = exports.isConfigured = void 0; exports.registerEventHandler = registerEventHandler; exports.registerSensor = registerSensor; Object.defineProperty(exports, "runOnJS", { enumerable: true, get: function () { return _threads.runOnJS; } }); Object.defineProperty(exports, "runOnUI", { enumerable: true, get: function () { return _threads.runOnUI; } }); exports.startMapper = void 0; Object.defineProperty(exports, "stopMapper", { enumerable: true, get: function () { return _mappers.stopMapper; } }); exports.subscribeForKeyboardEvents = subscribeForKeyboardEvents; exports.unregisterEventHandler = unregisterEventHandler; exports.unregisterSensor = unregisterSensor; exports.unsubscribeFromKeyboardEvents = unsubscribeFromKeyboardEvents; var _NativeReanimated = _interopRequireDefault(require("./NativeReanimated")); var _PlatformChecker = require("./PlatformChecker"); var _shareables = require("./shareables"); var _mappers = require("./mappers"); var _mutables = require("./mutables"); var _initializers = require("./initializers"); var _threads = require("./threads"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const testWorklet = () => { 'worklet'; }; const throwUninitializedReanimatedException = () => { throw new Error("Failed to initialize react-native-reanimated library, make sure you followed installation steps here: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/installation/ \n1) Make sure reanimated's babel plugin is installed in your babel.config.js (you should have 'react-native-reanimated/plugin' listed there - also see the above link for details) \n2) Make sure you reset build cache after updating the config, run: yarn start --reset-cache"); }; const checkPluginState = function () { let throwError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; if (!testWorklet.__workletHash && !(0, _PlatformChecker.shouldBeUseWeb)()) { if (throwError) { throwUninitializedReanimatedException(); } return false; } return true; }; exports.checkPluginState = checkPluginState; const isConfigured = function () { let throwError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; return checkPluginState(throwError); }; exports.isConfigured = isConfigured; const isConfiguredCheck = () => { checkPluginState(true); }; exports.isConfiguredCheck = isConfiguredCheck; const configurationCheckWrapper = __DEV__ ? fn => { return function () { isConfigured(true); return fn(...arguments); }; } : fn => fn; const startMapper = __DEV__ ? configurationCheckWrapper(_mappers.startMapper) : _mappers.startMapper; exports.startMapper = startMapper; const makeShareable = __DEV__ ? configurationCheckWrapper(_shareables.makeShareable) : _shareables.makeShareable; exports.makeShareable = makeShareable; const makeMutable = __DEV__ ? configurationCheckWrapper(_mutables.makeMutable) : _mutables.makeMutable; exports.makeMutable = makeMutable; const makeRemote = __DEV__ ? configurationCheckWrapper(_mutables.makeRemote) : _mutables.makeRemote; exports.makeRemote = makeRemote; global._WORKLET = false; global._log = function (s) { console.log(s); }; function getViewProp(viewTag, propName) { if (global._IS_FABRIC) { throw new Error('[react-native-reanimated] `getViewProp` is not supported on Fabric yet'); } return new Promise((resolve, reject) => { return _NativeReanimated.default.getViewProp(viewTag, propName, result => { if (typeof result === 'string' && result.substr(0, 6) === 'error:') { reject(result); } else { resolve(result); } }); }); } function registerEventHandler(eventHash, eventHandler) { function handleAndFlushImmediates(eventTimestamp, event) { 'worklet'; global.__frameTimestamp = eventTimestamp; eventHandler(event); global.__flushAnimationFrame(eventTimestamp); global.__frameTimestamp = undefined; } return _NativeReanimated.default.registerEventHandler(eventHash, (0, _shareables.makeShareableCloneRecursive)(handleAndFlushImmediates)); } function unregisterEventHandler(id) { return _NativeReanimated.default.unregisterEventHandler(id); } function subscribeForKeyboardEvents(eventHandler, options) { // TODO: this should really go with the same code path as other events, that is // via registerEventHandler. For now we are copying the code from there. function handleAndFlushImmediates(state, height) { 'worklet'; const now = performance.now(); global.__frameTimestamp = now; eventHandler(state, height); global.__flushAnimationFrame(now); global.__frameTimestamp = undefined; } return _NativeReanimated.default.subscribeForKeyboardEvents((0, _shareables.makeShareableCloneRecursive)(handleAndFlushImmediates), options.isStatusBarTranslucentAndroid ?? false); } function unsubscribeFromKeyboardEvents(listenerId) { return _NativeReanimated.default.unsubscribeFromKeyboardEvents(listenerId); } function registerSensor(sensorType, interval, iosReferenceFrame, eventHandler) { return _NativeReanimated.default.registerSensor(sensorType, interval, iosReferenceFrame, (0, _shareables.makeShareableCloneRecursive)(eventHandler)); } function unregisterSensor(listenerId) { return _NativeReanimated.default.unregisterSensor(listenerId); } // initialize UI runtime if applicable if (!(0, _PlatformChecker.isWeb)() && isConfigured()) { (0, _initializers.initializeUIRuntime)(); } let featuresConfig = { enableLayoutAnimations: false, setByUser: false }; function enableLayoutAnimations(flag) { let isCallByUser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (isCallByUser) { featuresConfig = { enableLayoutAnimations: flag, setByUser: true }; _NativeReanimated.default.enableLayoutAnimations(flag); } else if (!featuresConfig.setByUser && featuresConfig.enableLayoutAnimations !== flag) { featuresConfig.enableLayoutAnimations = flag; _NativeReanimated.default.enableLayoutAnimations(flag); } } function configureLayoutAnimations(viewTag, type, config) { let sharedTransitionTag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ''; _NativeReanimated.default.configureLayoutAnimation(viewTag, type, sharedTransitionTag, (0, _shareables.makeShareableCloneRecursive)(config)); } function configureProps(uiProps, nativeProps) { if (!(0, _PlatformChecker.nativeShouldBeMock)()) { _NativeReanimated.default.configureProps(uiProps, nativeProps); } } //# sourceMappingURL=core.js.map