react-native-reanimated 3.0.0-rc.8 → 3.0.0-rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +17 -12
  2. package/Common/cpp/NativeModules/NativeReanimatedModule.h +2 -2
  3. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +2 -2
  4. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.cpp +30 -0
  5. package/Common/cpp/ReanimatedRuntime/ReanimatedHermesRuntime.h +1 -1
  6. package/Common/cpp/SharedItems/Shareables.cpp +3 -1
  7. package/Common/cpp/SharedItems/Shareables.h +37 -22
  8. package/Common/cpp/Tools/RuntimeDecorator.cpp +26 -25
  9. package/Common/cpp/Tools/RuntimeDecorator.h +2 -1
  10. package/ios/LayoutReanimation/REAAnimationsManager.h +3 -1
  11. package/ios/LayoutReanimation/REAAnimationsManager.m +49 -16
  12. package/ios/LayoutReanimation/REAUIManager.mm +22 -62
  13. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +2 -2
  14. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  15. package/lib/commonjs/reanimated2/component/FlatList.js +19 -3
  16. package/lib/commonjs/reanimated2/component/FlatList.js.map +1 -1
  17. package/lib/commonjs/reanimated2/core.js +6 -74
  18. package/lib/commonjs/reanimated2/core.js.map +1 -1
  19. package/lib/commonjs/reanimated2/errors.js +66 -0
  20. package/lib/commonjs/reanimated2/errors.js.map +1 -0
  21. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  22. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js +0 -10
  23. package/lib/commonjs/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  24. package/lib/commonjs/reanimated2/initializers.js +157 -0
  25. package/lib/commonjs/reanimated2/initializers.js.map +1 -0
  26. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js +1 -6
  27. package/lib/commonjs/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  28. package/lib/commonjs/reanimated2/js-reanimated/global.js +4 -7
  29. package/lib/commonjs/reanimated2/js-reanimated/global.js.map +1 -1
  30. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js +0 -4
  31. package/lib/commonjs/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  32. package/lib/commonjs/reanimated2/mock.js +26 -0
  33. package/lib/commonjs/reanimated2/mock.js.map +1 -1
  34. package/lib/commonjs/reanimated2/shareables.js +6 -0
  35. package/lib/commonjs/reanimated2/shareables.js.map +1 -1
  36. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +2 -2
  37. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  38. package/lib/module/reanimated2/component/FlatList.js +18 -4
  39. package/lib/module/reanimated2/component/FlatList.js.map +1 -1
  40. package/lib/module/reanimated2/core.js +3 -74
  41. package/lib/module/reanimated2/core.js.map +1 -1
  42. package/lib/module/reanimated2/errors.js +58 -0
  43. package/lib/module/reanimated2/errors.js.map +1 -0
  44. package/lib/module/reanimated2/globals.d.js.map +1 -1
  45. package/lib/module/reanimated2/hook/useAnimatedStyle.js +2 -12
  46. package/lib/module/reanimated2/hook/useAnimatedStyle.js.map +1 -1
  47. package/lib/module/reanimated2/initializers.js +143 -0
  48. package/lib/module/reanimated2/initializers.js.map +1 -0
  49. package/lib/module/reanimated2/js-reanimated/JSReanimated.js +1 -6
  50. package/lib/module/reanimated2/js-reanimated/JSReanimated.js.map +1 -1
  51. package/lib/module/reanimated2/js-reanimated/global.js +4 -7
  52. package/lib/module/reanimated2/js-reanimated/global.js.map +1 -1
  53. package/lib/module/reanimated2/layoutReanimation/animationsManager.js +0 -2
  54. package/lib/module/reanimated2/layoutReanimation/animationsManager.js.map +1 -1
  55. package/lib/module/reanimated2/mock.js +26 -0
  56. package/lib/module/reanimated2/mock.js.map +1 -1
  57. package/lib/module/reanimated2/shareables.js +6 -1
  58. package/lib/module/reanimated2/shareables.js.map +1 -1
  59. package/package.json +3 -2
  60. package/plugin.js +81 -15
  61. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +11 -2
  62. package/src/reanimated2/component/FlatList.tsx +30 -5
  63. package/src/reanimated2/core.ts +3 -66
  64. package/src/reanimated2/errors.ts +57 -0
  65. package/src/reanimated2/globals.d.ts +22 -3
  66. package/src/reanimated2/hook/useAnimatedStyle.ts +1 -11
  67. package/src/reanimated2/initializers.ts +143 -0
  68. package/src/reanimated2/js-reanimated/JSReanimated.ts +8 -4
  69. package/src/reanimated2/js-reanimated/global.ts +4 -7
  70. package/src/reanimated2/layoutReanimation/animationsManager.ts +0 -3
  71. package/src/reanimated2/mock.ts +105 -0
  72. package/src/reanimated2/shareables.ts +7 -0
@@ -1,20 +1,13 @@
1
- /* global _setGlobalConsole */
2
1
  import NativeReanimatedModule from './NativeReanimated';
3
2
  import { nativeShouldBeMock, shouldBeUseWeb, isWeb } from './PlatformChecker';
4
3
  import { makeShareableCloneRecursive, makeShareable as makeShareableUnwrapped } from './shareables';
5
- import { runOnUI, runOnJS } from './threads';
6
4
  import { startMapper as startMapperUnwrapped } from './mappers';
7
5
  import { makeMutable as makeMutableUnwrapped, makeRemote as makeRemoteUnwrapped } from './mutables';
6
+ import { initializeUIRuntime } from './initializers';
8
7
  export { stopMapper } from './mappers';
9
8
  export { runOnJS, runOnUI } from './threads';
10
9
  export { getTimestamp } from './time';
11
10
 
12
- if (global._setGlobalConsole === undefined) {
13
- // it can happen when Reanimated plugin wasn't added, but the user uses the only API from version 1
14
- global._setGlobalConsole = () => {// noop
15
- };
16
- }
17
-
18
11
  const testWorklet = () => {
19
12
  'worklet';
20
13
  };
@@ -74,56 +67,6 @@ export function getViewProp(viewTag, propName) {
74
67
  });
75
68
  });
76
69
  }
77
-
78
- function valueUnpacker(objectToUnpack, category) {
79
- 'worklet';
80
-
81
- let workletsCache = global.__workletsCache;
82
- let handleCache = global.__handleCache;
83
-
84
- if (workletsCache === undefined) {
85
- // init
86
- workletsCache = global.__workletsCache = new Map();
87
- handleCache = global.__handleCache = new WeakMap();
88
- }
89
-
90
- if (objectToUnpack.__workletHash) {
91
- let workletFun = workletsCache.get(objectToUnpack.__workletHash);
92
-
93
- if (workletFun === undefined) {
94
- // eslint-disable-next-line no-eval
95
- workletFun = eval('(' + objectToUnpack.asString + '\n)');
96
- workletsCache.set(objectToUnpack.__workletHash, workletFun);
97
- }
98
-
99
- const functionInstance = workletFun.bind(objectToUnpack);
100
- objectToUnpack._recur = functionInstance;
101
- return functionInstance;
102
- } else if (objectToUnpack.__init) {
103
- let value = handleCache.get(objectToUnpack);
104
-
105
- if (value === undefined) {
106
- value = objectToUnpack.__init();
107
- handleCache.set(objectToUnpack, value);
108
- }
109
-
110
- return value;
111
- } else if (category === 'RemoteFunction') {
112
- const fun = () => {
113
- throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.
114
-
115
- Possible solutions are:
116
- a) If you want to synchronously execute this method, mark it as a worklet
117
- b) If you want to execute this function on the JS thread, wrap it using \`runOnJS\``);
118
- };
119
-
120
- fun.__remoteFunction = objectToUnpack;
121
- return fun;
122
- } else {
123
- throw new Error('data type not recognized by unpack method');
124
- }
125
- }
126
-
127
70
  export function registerEventHandler(eventHash, eventHandler) {
128
71
  return NativeReanimatedModule.registerEventHandler(eventHash, makeShareableCloneRecursive(eventHandler));
129
72
  }
@@ -141,24 +84,10 @@ export function registerSensor(sensorType, interval, eventHandler) {
141
84
  }
142
85
  export function unregisterSensor(listenerId) {
143
86
  return NativeReanimatedModule.unregisterSensor(listenerId);
144
- }
145
- NativeReanimatedModule.installCoreFunctions(valueUnpacker);
87
+ } // initialize UI runtime if applicable
146
88
 
147
89
  if (!isWeb() && isConfigured()) {
148
- const capturableConsole = console;
149
- runOnUI(() => {
150
- 'worklet';
151
-
152
- const console = {
153
- debug: runOnJS(capturableConsole.debug),
154
- log: runOnJS(capturableConsole.log),
155
- warn: runOnJS(capturableConsole.warn),
156
- error: runOnJS(capturableConsole.error),
157
- info: runOnJS(capturableConsole.info)
158
- };
159
-
160
- _setGlobalConsole(console);
161
- })();
90
+ initializeUIRuntime();
162
91
  }
163
92
 
164
93
  let featuresConfig = {
@@ -1 +1 @@
1
- {"version":3,"names":["NativeReanimatedModule","nativeShouldBeMock","shouldBeUseWeb","isWeb","makeShareableCloneRecursive","makeShareable","makeShareableUnwrapped","runOnUI","runOnJS","startMapper","startMapperUnwrapped","makeMutable","makeMutableUnwrapped","makeRemote","makeRemoteUnwrapped","stopMapper","getTimestamp","global","_setGlobalConsole","undefined","testWorklet","throwUninitializedReanimatedException","Error","checkPluginState","throwError","__workletHash","isConfigured","isConfiguredCheck","configurationCheckWrapper","__DEV__","fn","_WORKLET","_log","s","console","log","getViewProp","viewTag","propName","_IS_FABRIC","Promise","resolve","reject","result","substr","valueUnpacker","objectToUnpack","category","workletsCache","__workletsCache","handleCache","__handleCache","Map","WeakMap","workletFun","get","eval","asString","set","functionInstance","bind","_recur","__init","value","fun","__remoteFunction","registerEventHandler","eventHash","eventHandler","unregisterEventHandler","id","subscribeForKeyboardEvents","unsubscribeFromKeyboardEvents","listenerId","registerSensor","sensorType","interval","unregisterSensor","installCoreFunctions","capturableConsole","debug","warn","error","info","featuresConfig","enableLayoutAnimations","setByUser","flag","isCallByUser","configureLayoutAnimations","type","config","configureLayoutAnimation","configureProps","uiProps","nativeProps"],"sources":["core.ts"],"sourcesContent":["/* global _setGlobalConsole */\nimport NativeReanimatedModule from './NativeReanimated';\nimport { nativeShouldBeMock, shouldBeUseWeb, isWeb } from './PlatformChecker';\nimport { BasicWorkletFunction, Value3D, ValueRotation } from './commonTypes';\nimport {\n makeShareableCloneRecursive,\n makeShareable as makeShareableUnwrapped,\n} from './shareables';\nimport { runOnUI, runOnJS } from './threads';\nimport { startMapper as startMapperUnwrapped } from './mappers';\nimport {\n makeMutable as makeMutableUnwrapped,\n makeRemote as makeRemoteUnwrapped,\n} from './mutables';\nimport { LayoutAnimationFunction } from './layoutReanimation';\n\nexport { stopMapper } from './mappers';\nexport { runOnJS, runOnUI } from './threads';\nexport { getTimestamp } from './time';\n\nif (global._setGlobalConsole === undefined) {\n // it can happen when Reanimated plugin wasn't added, but the user uses the only API from version 1\n global._setGlobalConsole = () => {\n // noop\n };\n}\n\nexport type ReanimatedConsole = Pick<\n Console,\n 'debug' | 'log' | 'warn' | 'info' | 'error'\n>;\n\nconst testWorklet: BasicWorkletFunction<void> = () => {\n 'worklet';\n};\n\nconst throwUninitializedReanimatedException = () => {\n throw new Error(\n \"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\"\n );\n};\n\nexport const checkPluginState: (throwError: boolean) => boolean = (\n throwError = true\n) => {\n if (!testWorklet.__workletHash && !shouldBeUseWeb()) {\n if (throwError) {\n throwUninitializedReanimatedException();\n }\n return false;\n }\n return true;\n};\n\nexport const isConfigured: (throwError?: boolean) => boolean = (\n throwError = false\n) => {\n return checkPluginState(throwError);\n};\n\nexport const isConfiguredCheck: () => void = () => {\n checkPluginState(true);\n};\n\nconst configurationCheckWrapper = __DEV__\n ? <T extends Array<any>, U>(fn: (...args: T) => U) => {\n return (...args: T): U => {\n isConfigured(true);\n return fn(...args);\n };\n }\n : <T extends Array<any>, U>(fn: (...args: T) => U) => fn;\n\nexport const startMapper = __DEV__\n ? configurationCheckWrapper(startMapperUnwrapped)\n : startMapperUnwrapped;\n\nexport const makeShareable = __DEV__\n ? configurationCheckWrapper(makeShareableUnwrapped)\n : makeShareableUnwrapped;\n\nexport const makeMutable = __DEV__\n ? configurationCheckWrapper(makeMutableUnwrapped)\n : makeMutableUnwrapped;\n\nexport const makeRemote = __DEV__\n ? configurationCheckWrapper(makeRemoteUnwrapped)\n : makeRemoteUnwrapped;\n\nglobal._WORKLET = false;\nglobal._log = function (s: string) {\n console.log(s);\n};\n\nexport function getViewProp<T>(viewTag: string, propName: string): Promise<T> {\n if (global._IS_FABRIC) {\n throw new Error(\n '[react-native-reanimated] `getViewProp` is not supported on Fabric yet'\n );\n }\n\n return new Promise((resolve, reject) => {\n return NativeReanimatedModule.getViewProp(\n viewTag,\n propName,\n (result: T) => {\n if (typeof result === 'string' && result.substr(0, 6) === 'error:') {\n reject(result);\n } else {\n resolve(result);\n }\n }\n );\n });\n}\n\nfunction valueUnpacker(objectToUnpack: any, category?: string): any {\n 'worklet';\n let workletsCache = global.__workletsCache;\n let handleCache = global.__handleCache;\n if (workletsCache === undefined) {\n // init\n workletsCache = global.__workletsCache = new Map();\n handleCache = global.__handleCache = new WeakMap();\n }\n if (objectToUnpack.__workletHash) {\n let workletFun = workletsCache.get(objectToUnpack.__workletHash);\n if (workletFun === undefined) {\n // eslint-disable-next-line no-eval\n workletFun = eval('(' + objectToUnpack.asString + '\\n)') as (\n ...args: any[]\n ) => any;\n workletsCache.set(objectToUnpack.__workletHash, workletFun);\n }\n const functionInstance = workletFun.bind(objectToUnpack);\n objectToUnpack._recur = functionInstance;\n return functionInstance;\n } else if (objectToUnpack.__init) {\n let value = handleCache!.get(objectToUnpack);\n if (value === undefined) {\n value = objectToUnpack.__init();\n handleCache!.set(objectToUnpack, value);\n }\n return value;\n } else if (category === 'RemoteFunction') {\n const fun = () => {\n throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.\n\nPossible solutions are:\n a) If you want to synchronously execute this method, mark it as a worklet\n b) If you want to execute this function on the JS thread, wrap it using \\`runOnJS\\``);\n };\n fun.__remoteFunction = objectToUnpack;\n return fun;\n } else {\n throw new Error('data type not recognized by unpack method');\n }\n}\n\nexport function registerEventHandler<T>(\n eventHash: string,\n eventHandler: (event: T) => void\n): string {\n return NativeReanimatedModule.registerEventHandler(\n eventHash,\n makeShareableCloneRecursive(eventHandler)\n );\n}\n\nexport function unregisterEventHandler(id: string): void {\n return NativeReanimatedModule.unregisterEventHandler(id);\n}\n\nexport function subscribeForKeyboardEvents(\n eventHandler: (state: number, height: number) => void\n): number {\n return NativeReanimatedModule.subscribeForKeyboardEvents(\n makeShareableCloneRecursive(eventHandler)\n );\n}\n\nexport function unsubscribeFromKeyboardEvents(listenerId: number): void {\n return NativeReanimatedModule.unsubscribeFromKeyboardEvents(listenerId);\n}\n\nexport function registerSensor(\n sensorType: number,\n interval: number,\n eventHandler: (data: Value3D | ValueRotation) => void\n): number {\n return NativeReanimatedModule.registerSensor(\n sensorType,\n interval,\n makeShareableCloneRecursive(eventHandler)\n );\n}\n\nexport function unregisterSensor(listenerId: number): void {\n return NativeReanimatedModule.unregisterSensor(listenerId);\n}\n\nNativeReanimatedModule.installCoreFunctions(valueUnpacker);\n\nif (!isWeb() && isConfigured()) {\n const capturableConsole = console;\n runOnUI(() => {\n 'worklet';\n const console = {\n debug: runOnJS(capturableConsole.debug),\n log: runOnJS(capturableConsole.log),\n warn: runOnJS(capturableConsole.warn),\n error: runOnJS(capturableConsole.error),\n info: runOnJS(capturableConsole.info),\n };\n _setGlobalConsole(console);\n })();\n}\n\ntype FeaturesConfig = {\n enableLayoutAnimations: boolean;\n setByUser: boolean;\n};\n\nlet featuresConfig: FeaturesConfig = {\n enableLayoutAnimations: false,\n setByUser: false,\n};\n\nexport function enableLayoutAnimations(\n flag: boolean,\n isCallByUser = true\n): void {\n if (isCallByUser) {\n featuresConfig = {\n enableLayoutAnimations: flag,\n setByUser: true,\n };\n NativeReanimatedModule.enableLayoutAnimations(flag);\n } else if (\n !featuresConfig.setByUser &&\n featuresConfig.enableLayoutAnimations !== flag\n ) {\n featuresConfig.enableLayoutAnimations = flag;\n NativeReanimatedModule.enableLayoutAnimations(flag);\n }\n}\n\nexport function configureLayoutAnimations(\n viewTag: number,\n type: string,\n config: LayoutAnimationFunction | Keyframe\n): void {\n NativeReanimatedModule.configureLayoutAnimation(\n viewTag,\n type,\n makeShareableCloneRecursive(config)\n );\n}\n\nexport function configureProps(uiProps: string[], nativeProps: string[]): void {\n if (!nativeShouldBeMock()) {\n NativeReanimatedModule.configureProps(uiProps, nativeProps);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeReanimatedModule","nativeShouldBeMock","shouldBeUseWeb","isWeb","makeShareableCloneRecursive","makeShareable","makeShareableUnwrapped","startMapper","startMapperUnwrapped","makeMutable","makeMutableUnwrapped","makeRemote","makeRemoteUnwrapped","initializeUIRuntime","stopMapper","runOnJS","runOnUI","getTimestamp","testWorklet","throwUninitializedReanimatedException","Error","checkPluginState","throwError","__workletHash","isConfigured","isConfiguredCheck","configurationCheckWrapper","__DEV__","fn","global","_WORKLET","_log","s","console","log","getViewProp","viewTag","propName","_IS_FABRIC","Promise","resolve","reject","result","substr","registerEventHandler","eventHash","eventHandler","unregisterEventHandler","id","subscribeForKeyboardEvents","unsubscribeFromKeyboardEvents","listenerId","registerSensor","sensorType","interval","unregisterSensor","featuresConfig","enableLayoutAnimations","setByUser","flag","isCallByUser","configureLayoutAnimations","type","config","configureLayoutAnimation","configureProps","uiProps","nativeProps"],"sources":["core.ts"],"sourcesContent":["import NativeReanimatedModule from './NativeReanimated';\nimport { nativeShouldBeMock, shouldBeUseWeb, isWeb } from './PlatformChecker';\nimport { BasicWorkletFunction, Value3D, ValueRotation } from './commonTypes';\nimport {\n makeShareableCloneRecursive,\n makeShareable as makeShareableUnwrapped,\n} from './shareables';\nimport { startMapper as startMapperUnwrapped } from './mappers';\nimport {\n makeMutable as makeMutableUnwrapped,\n makeRemote as makeRemoteUnwrapped,\n} from './mutables';\nimport { LayoutAnimationFunction } from './layoutReanimation';\nimport { initializeUIRuntime } from './initializers';\n\nexport { stopMapper } from './mappers';\nexport { runOnJS, runOnUI } from './threads';\nexport { getTimestamp } from './time';\n\nexport type ReanimatedConsole = Pick<\n Console,\n 'debug' | 'log' | 'warn' | 'info' | 'error'\n>;\n\nconst testWorklet: BasicWorkletFunction<void> = () => {\n 'worklet';\n};\n\nconst throwUninitializedReanimatedException = () => {\n throw new Error(\n \"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\"\n );\n};\n\nexport const checkPluginState: (throwError: boolean) => boolean = (\n throwError = true\n) => {\n if (!testWorklet.__workletHash && !shouldBeUseWeb()) {\n if (throwError) {\n throwUninitializedReanimatedException();\n }\n return false;\n }\n return true;\n};\n\nexport const isConfigured: (throwError?: boolean) => boolean = (\n throwError = false\n) => {\n return checkPluginState(throwError);\n};\n\nexport const isConfiguredCheck: () => void = () => {\n checkPluginState(true);\n};\n\nconst configurationCheckWrapper = __DEV__\n ? <T extends Array<any>, U>(fn: (...args: T) => U) => {\n return (...args: T): U => {\n isConfigured(true);\n return fn(...args);\n };\n }\n : <T extends Array<any>, U>(fn: (...args: T) => U) => fn;\n\nexport const startMapper = __DEV__\n ? configurationCheckWrapper(startMapperUnwrapped)\n : startMapperUnwrapped;\n\nexport const makeShareable = __DEV__\n ? configurationCheckWrapper(makeShareableUnwrapped)\n : makeShareableUnwrapped;\n\nexport const makeMutable = __DEV__\n ? configurationCheckWrapper(makeMutableUnwrapped)\n : makeMutableUnwrapped;\n\nexport const makeRemote = __DEV__\n ? configurationCheckWrapper(makeRemoteUnwrapped)\n : makeRemoteUnwrapped;\n\nglobal._WORKLET = false;\nglobal._log = function (s: string) {\n console.log(s);\n};\n\nexport function getViewProp<T>(viewTag: string, propName: string): Promise<T> {\n if (global._IS_FABRIC) {\n throw new Error(\n '[react-native-reanimated] `getViewProp` is not supported on Fabric yet'\n );\n }\n\n return new Promise((resolve, reject) => {\n return NativeReanimatedModule.getViewProp(\n viewTag,\n propName,\n (result: T) => {\n if (typeof result === 'string' && result.substr(0, 6) === 'error:') {\n reject(result);\n } else {\n resolve(result);\n }\n }\n );\n });\n}\n\nexport function registerEventHandler<T>(\n eventHash: string,\n eventHandler: (event: T) => void\n): string {\n return NativeReanimatedModule.registerEventHandler(\n eventHash,\n makeShareableCloneRecursive(eventHandler)\n );\n}\n\nexport function unregisterEventHandler(id: string): void {\n return NativeReanimatedModule.unregisterEventHandler(id);\n}\n\nexport function subscribeForKeyboardEvents(\n eventHandler: (state: number, height: number) => void\n): number {\n return NativeReanimatedModule.subscribeForKeyboardEvents(\n makeShareableCloneRecursive(eventHandler)\n );\n}\n\nexport function unsubscribeFromKeyboardEvents(listenerId: number): void {\n return NativeReanimatedModule.unsubscribeFromKeyboardEvents(listenerId);\n}\n\nexport function registerSensor(\n sensorType: number,\n interval: number,\n eventHandler: (data: Value3D | ValueRotation) => void\n): number {\n return NativeReanimatedModule.registerSensor(\n sensorType,\n interval,\n makeShareableCloneRecursive(eventHandler)\n );\n}\n\nexport function unregisterSensor(listenerId: number): void {\n return NativeReanimatedModule.unregisterSensor(listenerId);\n}\n\n// initialize UI runtime if applicable\nif (!isWeb() && isConfigured()) {\n initializeUIRuntime();\n}\n\ntype FeaturesConfig = {\n enableLayoutAnimations: boolean;\n setByUser: boolean;\n};\n\nlet featuresConfig: FeaturesConfig = {\n enableLayoutAnimations: false,\n setByUser: false,\n};\n\nexport function enableLayoutAnimations(\n flag: boolean,\n isCallByUser = true\n): void {\n if (isCallByUser) {\n featuresConfig = {\n enableLayoutAnimations: flag,\n setByUser: true,\n };\n NativeReanimatedModule.enableLayoutAnimations(flag);\n } else if (\n !featuresConfig.setByUser &&\n featuresConfig.enableLayoutAnimations !== flag\n ) {\n featuresConfig.enableLayoutAnimations = flag;\n NativeReanimatedModule.enableLayoutAnimations(flag);\n }\n}\n\nexport function configureLayoutAnimations(\n viewTag: number,\n type: string,\n config: LayoutAnimationFunction | Keyframe\n): void {\n NativeReanimatedModule.configureLayoutAnimation(\n viewTag,\n type,\n makeShareableCloneRecursive(config)\n );\n}\n\nexport function configureProps(uiProps: string[], nativeProps: string[]): void {\n if (!nativeShouldBeMock()) {\n NativeReanimatedModule.configureProps(uiProps, nativeProps);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ const _workletStackDetails = new Map();
2
+
3
+ export function registerWorkletStackDetails(hash, stackDetails) {
4
+ _workletStackDetails.set(hash, stackDetails);
5
+ }
6
+
7
+ function getBundleOffset(error) {
8
+ var _error$stack, _error$stack$split;
9
+
10
+ const frame = (_error$stack = error.stack) === null || _error$stack === void 0 ? void 0 : (_error$stack$split = _error$stack.split('\n')) === null || _error$stack$split === void 0 ? void 0 : _error$stack$split[0];
11
+
12
+ if (frame) {
13
+ const parsedFrame = /@([^@]+):(\d+):(\d+)/.exec(frame);
14
+
15
+ if (parsedFrame) {
16
+ const [, file, line, col] = parsedFrame;
17
+ return [file, Number(line), Number(col)];
18
+ }
19
+ }
20
+
21
+ return ['unknown', 0, 0];
22
+ }
23
+
24
+ function processStack(stack) {
25
+ const workletStackEntries = stack.match(/worklet_(\d+):(\d+):(\d+)/g);
26
+ let result = stack;
27
+ workletStackEntries === null || workletStackEntries === void 0 ? void 0 : workletStackEntries.forEach(match => {
28
+ const [, hash, origLine, origCol] = match.split(/:|_/).map(Number);
29
+
30
+ const errorDetails = _workletStackDetails.get(hash);
31
+
32
+ if (!errorDetails) {
33
+ return;
34
+ }
35
+
36
+ const [error, lineOffset, colOffset] = errorDetails;
37
+ const [bundleFile, bundleLine, bundleCol] = getBundleOffset(error);
38
+ const line = origLine + bundleLine + lineOffset;
39
+ const col = origCol + bundleCol + colOffset;
40
+ result = result.replace(match, `${bundleFile}:${line}:${col}`);
41
+ });
42
+ return result;
43
+ }
44
+
45
+ export function reportFatalErrorOnJS(_ref) {
46
+ let {
47
+ message,
48
+ stack
49
+ } = _ref;
50
+ const error = new Error();
51
+ error.message = message;
52
+ error.stack = stack ? processStack(stack) : undefined;
53
+ error.name = 'ReanimatedError'; // @ts-ignore React Native's ErrorUtils implementation extends the Error type with jsEngine field
54
+
55
+ error.jsEngine = 'reanimated';
56
+ global.ErrorUtils.reportFatalError(error);
57
+ }
58
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_workletStackDetails","Map","registerWorkletStackDetails","hash","stackDetails","set","getBundleOffset","error","frame","stack","split","parsedFrame","exec","file","line","col","Number","processStack","workletStackEntries","match","result","forEach","origLine","origCol","map","errorDetails","get","lineOffset","colOffset","bundleFile","bundleLine","bundleCol","replace","reportFatalErrorOnJS","message","Error","undefined","name","jsEngine","global","ErrorUtils","reportFatalError"],"sources":["errors.ts"],"sourcesContent":["type StackDetails = [Error, number, number];\n\nconst _workletStackDetails = new Map<number, StackDetails>();\n\nexport function registerWorkletStackDetails(\n hash: number,\n stackDetails: StackDetails\n) {\n _workletStackDetails.set(hash, stackDetails);\n}\n\nfunction getBundleOffset(error: Error): [string, number, number] {\n const frame = error.stack?.split('\\n')?.[0];\n if (frame) {\n const parsedFrame = /@([^@]+):(\\d+):(\\d+)/.exec(frame);\n if (parsedFrame) {\n const [, file, line, col] = parsedFrame;\n return [file, Number(line), Number(col)];\n }\n }\n return ['unknown', 0, 0];\n}\n\nfunction processStack(stack: string): string {\n const workletStackEntries = stack.match(/worklet_(\\d+):(\\d+):(\\d+)/g);\n let result = stack;\n workletStackEntries?.forEach((match) => {\n const [, hash, origLine, origCol] = match.split(/:|_/).map(Number);\n const errorDetails = _workletStackDetails.get(hash);\n if (!errorDetails) {\n return;\n }\n const [error, lineOffset, colOffset] = errorDetails;\n const [bundleFile, bundleLine, bundleCol] = getBundleOffset(error);\n const line = origLine + bundleLine + lineOffset;\n const col = origCol + bundleCol + colOffset;\n\n result = result.replace(match, `${bundleFile}:${line}:${col}`);\n });\n return result;\n}\n\nexport function reportFatalErrorOnJS({\n message,\n stack,\n}: {\n message: string;\n stack?: string;\n}) {\n const error = new Error();\n error.message = message;\n error.stack = stack ? processStack(stack) : undefined;\n error.name = 'ReanimatedError';\n // @ts-ignore React Native's ErrorUtils implementation extends the Error type with jsEngine field\n error.jsEngine = 'reanimated';\n global.ErrorUtils.reportFatalError(error);\n}\n"],"mappings":"AAEA,MAAMA,oBAAoB,GAAG,IAAIC,GAAJ,EAA7B;;AAEA,OAAO,SAASC,2BAAT,CACLC,IADK,EAELC,YAFK,EAGL;EACAJ,oBAAoB,CAACK,GAArB,CAAyBF,IAAzB,EAA+BC,YAA/B;AACD;;AAED,SAASE,eAAT,CAAyBC,KAAzB,EAAiE;EAAA;;EAC/D,MAAMC,KAAK,mBAAGD,KAAK,CAACE,KAAT,uEAAG,aAAaC,KAAb,CAAmB,IAAnB,CAAH,uDAAG,mBAA2B,CAA3B,CAAd;;EACA,IAAIF,KAAJ,EAAW;IACT,MAAMG,WAAW,GAAG,uBAAuBC,IAAvB,CAA4BJ,KAA5B,CAApB;;IACA,IAAIG,WAAJ,EAAiB;MACf,MAAM,GAAGE,IAAH,EAASC,IAAT,EAAeC,GAAf,IAAsBJ,WAA5B;MACA,OAAO,CAACE,IAAD,EAAOG,MAAM,CAACF,IAAD,CAAb,EAAqBE,MAAM,CAACD,GAAD,CAA3B,CAAP;IACD;EACF;;EACD,OAAO,CAAC,SAAD,EAAY,CAAZ,EAAe,CAAf,CAAP;AACD;;AAED,SAASE,YAAT,CAAsBR,KAAtB,EAA6C;EAC3C,MAAMS,mBAAmB,GAAGT,KAAK,CAACU,KAAN,CAAY,4BAAZ,CAA5B;EACA,IAAIC,MAAM,GAAGX,KAAb;EACAS,mBAAmB,SAAnB,IAAAA,mBAAmB,WAAnB,YAAAA,mBAAmB,CAAEG,OAArB,CAA8BF,KAAD,IAAW;IACtC,MAAM,GAAGhB,IAAH,EAASmB,QAAT,EAAmBC,OAAnB,IAA8BJ,KAAK,CAACT,KAAN,CAAY,KAAZ,EAAmBc,GAAnB,CAAuBR,MAAvB,CAApC;;IACA,MAAMS,YAAY,GAAGzB,oBAAoB,CAAC0B,GAArB,CAAyBvB,IAAzB,CAArB;;IACA,IAAI,CAACsB,YAAL,EAAmB;MACjB;IACD;;IACD,MAAM,CAAClB,KAAD,EAAQoB,UAAR,EAAoBC,SAApB,IAAiCH,YAAvC;IACA,MAAM,CAACI,UAAD,EAAaC,UAAb,EAAyBC,SAAzB,IAAsCzB,eAAe,CAACC,KAAD,CAA3D;IACA,MAAMO,IAAI,GAAGQ,QAAQ,GAAGQ,UAAX,GAAwBH,UAArC;IACA,MAAMZ,GAAG,GAAGQ,OAAO,GAAGQ,SAAV,GAAsBH,SAAlC;IAEAR,MAAM,GAAGA,MAAM,CAACY,OAAP,CAAeb,KAAf,EAAuB,GAAEU,UAAW,IAAGf,IAAK,IAAGC,GAAI,EAAnD,CAAT;EACD,CAZD;EAaA,OAAOK,MAAP;AACD;;AAED,OAAO,SAASa,oBAAT,OAMJ;EAAA,IANkC;IACnCC,OADmC;IAEnCzB;EAFmC,CAMlC;EACD,MAAMF,KAAK,GAAG,IAAI4B,KAAJ,EAAd;EACA5B,KAAK,CAAC2B,OAAN,GAAgBA,OAAhB;EACA3B,KAAK,CAACE,KAAN,GAAcA,KAAK,GAAGQ,YAAY,CAACR,KAAD,CAAf,GAAyB2B,SAA5C;EACA7B,KAAK,CAAC8B,IAAN,GAAa,iBAAb,CAJC,CAKD;;EACA9B,KAAK,CAAC+B,QAAN,GAAiB,YAAjB;EACAC,MAAM,CAACC,UAAP,CAAkBC,gBAAlB,CAAmClC,KAAnC;AACD"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["globals.d.ts"],"sourcesContent":["import type {\n AnimatedStyle,\n StyleProps,\n MeasuredDimensions,\n MapperRegistry,\n ShareableRef,\n ShareableSyncDataHolderRef,\n} from './commonTypes';\nimport type { ReanimatedConsole } from './core';\nimport type { FrameCallbackRegistryUI } from './frameCallback/FrameCallbackRegistryUI';\nimport type { ShadowNodeWrapper } from './hook/commonTypes';\nimport { LayoutAnimationStartFunction } from './layoutReanimation';\nimport type { NativeReanimated } from './NativeReanimated/NativeReanimated';\n\ndeclare global {\n const _WORKLET: boolean;\n const _IS_FABRIC: boolean;\n const _REANIMATED_VERSION_CPP: string;\n const _frameTimestamp: number | null;\n const _eventTimestamp: number;\n const __reanimatedModuleProxy: NativeReanimated;\n const _setGlobalConsole: (console?: ReanimatedConsole) => void;\n const _log: (s: string) => void;\n const _getCurrentTime: () => number;\n const _getTimestamp: () => number;\n const _notifyAboutProgress: (tag: number, value: number) => void;\n const _notifyAboutEnd: (\n tag: number,\n finished: boolean,\n removeView: boolean\n ) => void;\n const _setGestureState: (handlerTag: number, newState: number) => void;\n const _makeShareableClone: (value: any) => any;\n const _updateDataSynchronously: (\n dataHolder: ShareableSyncDataHolderRef,\n data: ShareableRef\n ) => void;\n const _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;\n const _updatePropsPaper: (\n tag: number,\n name: string,\n updates: StyleProps | AnimatedStyle\n ) => void;\n const _updatePropsFabric: (\n shadowNodeWrapper: ShadowNodeWrapper,\n props: StyleProps | AnimatedStyle\n ) => void;\n const _removeShadowNodeFromRegistry: (\n shadowNodeWrapper: ShadowNodeWrapper\n ) => void;\n const _measure: (viewTag: number) => MeasuredDimensions;\n const _scrollTo: (\n viewTag: number,\n x: number,\n y: number,\n animated: boolean\n ) => void;\n const _dispatchCommand: (\n shadowNodeWrapper: ShadowNodeWrapper,\n commandName: string,\n args: Array<unknown>\n ) => void;\n const _chronoNow: () => number;\n const performance: { now: () => number };\n const ReanimatedDataMock: {\n now: () => number;\n };\n const _frameCallbackRegistry: FrameCallbackRegistryUI;\n\n namespace NodeJS {\n interface Global {\n _WORKLET: boolean;\n _IS_FABRIC: boolean;\n _REANIMATED_VERSION_CPP: string;\n _frameTimestamp: number | null;\n _eventTimestamp: number;\n __reanimatedModuleProxy: NativeReanimated;\n _setGlobalConsole: (console?: ReanimatedConsole) => void;\n _log: (s: string) => void;\n _getCurrentTime: () => number;\n _getTimestamp: () => number;\n _setGestureState: (handlerTag: number, newState: number) => void;\n _makeShareableClone: (value: any) => any;\n _updateDataSynchronously: (\n ShareableSyncDataHolderRef,\n ShareableRef\n ) => void;\n _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;\n _updatePropsPaper: (\n tag: number,\n name: string,\n updates: StyleProps | AnimatedStyle\n ) => void;\n _updatePropsFabric: (\n shadowNodeWrapper: ShadowNodeWrapper,\n props: StyleProps | AnimatedStyle\n ) => void;\n _removeShadowNodeFromRegistry: (\n shadowNodeWrapper: ShadowNodeWrapper\n ) => void;\n _measure: (viewTag: number) => MeasuredDimensions;\n _scrollTo: (\n viewTag: number,\n x: number,\n y: number,\n animated: boolean\n ) => void;\n _dispatchCommand: (\n shadowNodeWrapper: ShadowNodeWrapper,\n commandName: string,\n args: Array<unknown>\n ) => void;\n _chronoNow: () => number;\n performance: { now: () => number };\n LayoutAnimationsManager: {\n start: LayoutAnimationStartFunction;\n };\n ReanimatedDataMock: {\n now: () => number;\n };\n _frameCallbackRegistry: FrameCallbackRegistryUI;\n __workletsCache?: Map<string, (...args: any[]) => any>;\n __handleCache?: WeakMap<any, any>;\n __mapperRegistry?: MapperRegistry;\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["globals.d.ts"],"sourcesContent":["import type {\n AnimatedStyle,\n StyleProps,\n MeasuredDimensions,\n MapperRegistry,\n ShareableRef,\n ShareableSyncDataHolderRef,\n} from './commonTypes';\nimport type { FrameCallbackRegistryUI } from './frameCallback/FrameCallbackRegistryUI';\nimport type { ShadowNodeWrapper } from './hook/commonTypes';\nimport { LayoutAnimationStartFunction } from './layoutReanimation';\nimport type { NativeReanimated } from './NativeReanimated/NativeReanimated';\n\ndeclare global {\n const _WORKLET: boolean;\n const _IS_FABRIC: boolean;\n const _REANIMATED_VERSION_CPP: string;\n const _frameTimestamp: number | null;\n const _eventTimestamp: number;\n const __reanimatedModuleProxy: NativeReanimated;\n const evalWithSourceMap: (\n js: string,\n sourceURL: string,\n sourceMap: string\n ) => any;\n const evalWithSourceUrl: (js: string, sourceURL: string) => any;\n const _log: (s: string) => void;\n const _getCurrentTime: () => number;\n const _getTimestamp: () => number;\n const _notifyAboutProgress: (tag: number, value: number) => void;\n const _notifyAboutEnd: (\n tag: number,\n finished: boolean,\n removeView: boolean\n ) => void;\n const _setGestureState: (handlerTag: number, newState: number) => void;\n const _makeShareableClone: (value: any) => any;\n const _updateDataSynchronously: (\n dataHolder: ShareableSyncDataHolderRef,\n data: ShareableRef\n ) => void;\n const _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;\n const _updatePropsPaper: (\n tag: number,\n name: string,\n updates: StyleProps | AnimatedStyle\n ) => void;\n const _updatePropsFabric: (\n shadowNodeWrapper: ShadowNodeWrapper,\n props: StyleProps | AnimatedStyle\n ) => void;\n const _removeShadowNodeFromRegistry: (\n shadowNodeWrapper: ShadowNodeWrapper\n ) => void;\n const _measure: (viewTag: number) => MeasuredDimensions;\n const _scrollTo: (\n viewTag: number,\n x: number,\n y: number,\n animated: boolean\n ) => void;\n const _dispatchCommand: (\n shadowNodeWrapper: ShadowNodeWrapper,\n commandName: string,\n args: Array<unknown>\n ) => void;\n const _chronoNow: () => number;\n const performance: { now: () => number };\n const ReanimatedDataMock: {\n now: () => number;\n };\n const ErrorUtils: {\n reportFatalError: (error: Error) => void;\n };\n const _frameCallbackRegistry: FrameCallbackRegistryUI;\n const requestAnimationFrame: (callback: (time: number) => void) => number;\n const console: Console;\n\n namespace NodeJS {\n interface Global {\n _WORKLET: boolean;\n _IS_FABRIC: boolean;\n _REANIMATED_VERSION_CPP: string;\n _frameTimestamp: number | null;\n _eventTimestamp: number;\n __reanimatedModuleProxy: NativeReanimated;\n evalWithSourceMap: (\n js: string,\n sourceURL: string,\n sourceMap: string\n ) => any;\n evalWithSourceUrl: (js: string, sourceURL: string) => any;\n _log: (s: string) => void;\n _getCurrentTime: () => number;\n _getTimestamp: () => number;\n _setGestureState: (handlerTag: number, newState: number) => void;\n _makeShareableClone: (value: any) => any;\n _updateDataSynchronously: (\n ShareableSyncDataHolderRef,\n ShareableRef\n ) => void;\n _scheduleOnJS: (fun: ShareableRef, args?: ShareableRef) => void;\n _updatePropsPaper: (\n tag: number,\n name: string,\n updates: StyleProps | AnimatedStyle\n ) => void;\n _updatePropsFabric: (\n shadowNodeWrapper: ShadowNodeWrapper,\n props: StyleProps | AnimatedStyle\n ) => void;\n _removeShadowNodeFromRegistry: (\n shadowNodeWrapper: ShadowNodeWrapper\n ) => void;\n _measure: (viewTag: number) => MeasuredDimensions;\n _scrollTo: (\n viewTag: number,\n x: number,\n y: number,\n animated: boolean\n ) => void;\n _dispatchCommand: (\n shadowNodeWrapper: ShadowNodeWrapper,\n commandName: string,\n args: Array<unknown>\n ) => void;\n _chronoNow: () => number;\n performance: { now: () => number };\n LayoutAnimationsManager: {\n start: LayoutAnimationStartFunction;\n };\n ReanimatedDataMock: {\n now: () => number;\n };\n ErrorUtils: {\n reportFatalError: (error: Error) => void;\n };\n _frameCallbackRegistry: FrameCallbackRegistryUI;\n __workletsCache?: Map<string, (...args: any[]) => any>;\n __handleCache?: WeakMap<any, any>;\n __mapperRegistry?: MapperRegistry;\n requestAnimationFrame: (callback: (time: number) => void) => number;\n console: Console;\n }\n }\n}\n"],"mappings":""}
@@ -5,9 +5,9 @@ import updateProps, { updatePropsJestWrapper } from '../UpdateProps';
5
5
  import { initialUpdaterRun } from '../animation';
6
6
  import NativeReanimatedModule from '../NativeReanimated';
7
7
  import { useSharedValue } from './useSharedValue';
8
- import { buildWorkletsHash, getStyleWithoutAnimations, isAnimated, parseColors, styleDiff, validateAnimatedStyles } from './utils';
8
+ import { buildWorkletsHash, getStyleWithoutAnimations, isAnimated, styleDiff, validateAnimatedStyles } from './utils';
9
9
  import { makeViewDescriptorsSet, makeViewsRefSet } from '../ViewDescriptorsSet';
10
- import { isJest, shouldBeUseWeb } from '../PlatformChecker';
10
+ import { isJest } from '../PlatformChecker';
11
11
 
12
12
  function prepareAnimation(animatedProp, lastAnimation, lastValue) {
13
13
  'worklet';
@@ -367,16 +367,6 @@ export function useAnimatedStyle(updater, dependencies, adapters) {
367
367
  };
368
368
  }
369
369
 
370
- if (!shouldBeUseWeb()) {
371
- updaterFn = () => {
372
- 'worklet';
373
-
374
- const style = updaterFn();
375
- parseColors(style);
376
- return style;
377
- };
378
- }
379
-
380
370
  if (isJest()) {
381
371
  fun = () => {
382
372
  'worklet';
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","startMapper","stopMapper","makeRemote","getTimestamp","updateProps","updatePropsJestWrapper","initialUpdaterRun","NativeReanimatedModule","useSharedValue","buildWorkletsHash","getStyleWithoutAnimations","isAnimated","parseColors","styleDiff","validateAnimatedStyles","makeViewDescriptorsSet","makeViewsRefSet","isJest","shouldBeUseWeb","prepareAnimation","animatedProp","lastAnimation","lastValue","Array","isArray","forEach","prop","index","onFrame","animation","value","current","undefined","callStart","timestamp","onStart","Object","keys","key","runAnimations","result","animationsActive","allFinished","entry","finished","callback","k","styleUpdater","viewDescriptors","updater","state","maybeViewRef","animations","newValues","oldValues","last","hasAnimations","frame","_timestamp","isAnimationCancelled","isAnimationRunning","updates","propName","requestAnimationFrame","_frameTimestamp","assign","style","diff","jestStyleUpdater","animatedStyle","adapters","length","checkSharedValueUsage","currentKey","element","Error","useAnimatedStyle","dependencies","viewsRef","initRef","inputs","values","_closure","adaptersArray","adaptersHash","__workletHash","push","initialStyle","initial","remoteState","sharableViewDescriptors","native","fun","updaterFn","adapter","mapperId","process","env","JEST_WORKER_ID"],"sources":["useAnimatedStyle.ts"],"sourcesContent":["/* global _frameTimestamp */\nimport { MutableRefObject, useEffect, useRef } from 'react';\n\nimport { startMapper, stopMapper, makeRemote, getTimestamp } from '../core';\nimport updateProps, { updatePropsJestWrapper } from '../UpdateProps';\nimport { initialUpdaterRun } from '../animation';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport { useSharedValue } from './useSharedValue';\nimport {\n buildWorkletsHash,\n getStyleWithoutAnimations,\n isAnimated,\n parseColors,\n styleDiff,\n validateAnimatedStyles,\n} from './utils';\nimport { DependencyList, Descriptor } from './commonTypes';\nimport {\n makeViewDescriptorsSet,\n makeViewsRefSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from '../ViewDescriptorsSet';\nimport { isJest, shouldBeUseWeb } from '../PlatformChecker';\nimport {\n AnimationObject,\n Timestamp,\n AdapterWorkletFunction,\n AnimatedStyle,\n BasicWorkletFunction,\n BasicWorkletFunctionOptional,\n NestedObjectValues,\n SharedValue,\n} from '../commonTypes';\nexport interface AnimatedStyleResult {\n viewDescriptors: ViewDescriptorsSet;\n initial: AnimatedStyle;\n viewsRef: ViewRefSet<any>;\n animatedStyle?: MutableRefObject<AnimatedStyle>;\n}\n\ninterface AnimatedState {\n last: AnimatedStyle;\n animations: AnimatedStyle;\n isAnimationRunning: boolean;\n isAnimationCancelled: boolean;\n}\n\ninterface AnimationRef {\n initial: {\n value: AnimatedStyle;\n updater: () => AnimatedStyle;\n };\n remoteState: AnimatedState;\n viewDescriptors: ViewDescriptorsSet;\n}\n\nfunction prepareAnimation(\n animatedProp: AnimatedStyle,\n lastAnimation: AnimatedStyle,\n lastValue: AnimatedStyle\n): void {\n 'worklet';\n if (Array.isArray(animatedProp)) {\n animatedProp.forEach((prop, index) => {\n prepareAnimation(\n prop,\n lastAnimation && lastAnimation[index],\n lastValue && lastValue[index]\n );\n });\n // return animatedProp;\n }\n if (typeof animatedProp === 'object' && animatedProp.onFrame) {\n const animation = animatedProp;\n\n let value = animation.current;\n if (lastValue !== undefined) {\n if (typeof lastValue === 'object') {\n if (lastValue.value !== undefined) {\n // previously it was a shared value\n value = lastValue.value;\n } else if (lastValue.onFrame !== undefined) {\n if (lastAnimation?.current !== undefined) {\n // it was an animation before, copy its state\n value = lastAnimation.current;\n } else if (lastValue?.current !== undefined) {\n // it was initialized\n value = lastValue.current;\n }\n }\n } else {\n // previously it was a plain value, just set it as starting point\n value = lastValue;\n }\n }\n\n animation.callStart = (timestamp: Timestamp) => {\n animation.onStart(animation, value, timestamp, lastAnimation);\n };\n animation.callStart(getTimestamp());\n animation.callStart = null;\n } else if (typeof animatedProp === 'object') {\n // it is an object\n Object.keys(animatedProp).forEach((key) =>\n prepareAnimation(\n animatedProp[key],\n lastAnimation && lastAnimation[key],\n lastValue && lastValue[key]\n )\n );\n }\n}\n\nfunction runAnimations(\n animation: AnimatedStyle,\n timestamp: Timestamp,\n key: number | string,\n result: AnimatedStyle,\n animationsActive: SharedValue<boolean>\n): boolean {\n 'worklet';\n if (!animationsActive.value) {\n return true;\n }\n if (Array.isArray(animation)) {\n result[key] = [];\n let allFinished = true;\n animation.forEach((entry, index) => {\n if (\n !runAnimations(entry, timestamp, index, result[key], animationsActive)\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else if (typeof animation === 'object' && animation.onFrame) {\n let finished = true;\n if (!animation.finished) {\n if (animation.callStart) {\n animation.callStart(timestamp);\n animation.callStart = null;\n }\n finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n if (finished) {\n animation.finished = true;\n animation.callback && animation.callback(true /* finished */);\n }\n }\n result[key] = animation.current;\n return finished;\n } else if (typeof animation === 'object') {\n result[key] = {};\n let allFinished = true;\n Object.keys(animation).forEach((k) => {\n if (\n !runAnimations(\n animation[k],\n timestamp,\n k,\n result[key],\n animationsActive\n )\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else {\n result[key] = animation;\n return true;\n }\n}\n\nfunction styleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>\n): void {\n 'worklet';\n const animations = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n let hasAnimations = false;\n for (const key in newValues) {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n } else {\n delete animations[key];\n }\n }\n\n if (hasAnimations) {\n const frame = (_timestamp?: Timestamp) => {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n for (const propName in animations) {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n }\n\n if (updates) {\n updateProps(viewDescriptors, updates, maybeViewRef);\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n };\n\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n state.last = Object.assign({}, oldValues, newValues);\n const style = getStyleWithoutAnimations(state.last);\n if (style) {\n updateProps(viewDescriptors, style, maybeViewRef);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n if (diff) {\n updateProps(viewDescriptors, newValues, maybeViewRef);\n }\n }\n}\n\nfunction jestStyleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>,\n animatedStyle: MutableRefObject<AnimatedStyle>,\n adapters: AdapterWorkletFunction[] = []\n): void {\n 'worklet';\n const animations: AnimatedStyle = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n // extract animated props\n let hasAnimations = false;\n Object.keys(animations).forEach((key) => {\n const value = newValues[key];\n if (!isAnimated(value)) {\n delete animations[key];\n }\n });\n Object.keys(newValues).forEach((key) => {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n }\n });\n\n function frame(_timestamp?: Timestamp) {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n Object.keys(animations).forEach((propName) => {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n });\n\n if (Object.keys(updates).length) {\n updatePropsJestWrapper(\n viewDescriptors,\n updates,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n }\n\n if (hasAnimations) {\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n }\n\n // calculate diff\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n\n if (Object.keys(diff).length !== 0) {\n updatePropsJestWrapper(\n viewDescriptors,\n diff,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n}\n\n// check for invalid usage of shared values in returned object\nfunction checkSharedValueUsage(\n prop: NestedObjectValues<AnimationObject>,\n currentKey?: string\n): void {\n if (Array.isArray(prop)) {\n // if it's an array (i.ex. transform) validate all its elements\n for (const element of prop) {\n checkSharedValueUsage(element, currentKey);\n }\n } else if (typeof prop === 'object' && prop.value === undefined) {\n // if it's a nested object, run validation for all its props\n for (const key of Object.keys(prop)) {\n checkSharedValueUsage(prop[key], key);\n }\n } else if (\n currentKey !== undefined &&\n typeof prop === 'object' &&\n prop.value !== undefined\n ) {\n // if shared value is passed insted of its value, throw an error\n throw new Error(\n `invalid value passed to \\`${currentKey}\\`, maybe you forgot to use \\`.value\\`?`\n );\n }\n}\n\nexport function useAnimatedStyle<T extends AnimatedStyle>(\n updater: BasicWorkletFunction<T>,\n dependencies?: DependencyList,\n adapters?: AdapterWorkletFunction | AdapterWorkletFunction[]\n): AnimatedStyleResult {\n const viewsRef: ViewRefSet<any> = makeViewsRefSet();\n const initRef = useRef<AnimationRef>();\n const inputs = Object.values(updater._closure ?? {});\n const adaptersArray: AdapterWorkletFunction[] = adapters\n ? Array.isArray(adapters)\n ? adapters\n : [adapters]\n : [];\n const adaptersHash = adapters ? buildWorkletsHash(adaptersArray) : null;\n const animationsActive = useSharedValue<boolean>(true);\n const animatedStyle: MutableRefObject<AnimatedStyle> = useRef<AnimatedStyle>(\n {}\n );\n\n // build dependencies\n if (!dependencies) {\n dependencies = [...inputs, updater.__workletHash];\n } else {\n dependencies.push(updater.__workletHash);\n }\n adaptersHash && dependencies.push(adaptersHash);\n\n if (!initRef.current) {\n const initialStyle: AnimatedStyle = initialUpdaterRun(updater);\n validateAnimatedStyles(initialStyle);\n initRef.current = {\n initial: {\n value: initialStyle,\n updater: updater,\n },\n remoteState: makeRemote<AnimatedState>({\n last: initialStyle,\n animations: {},\n isAnimationCancelled: false,\n isAnimationRunning: false,\n }),\n viewDescriptors: makeViewDescriptorsSet(),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { initial, remoteState, viewDescriptors } = initRef.current!;\n const sharableViewDescriptors = viewDescriptors.sharableViewDescriptors;\n const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;\n\n dependencies.push(sharableViewDescriptors);\n\n useEffect(() => {\n let fun;\n let updaterFn = updater as BasicWorkletFunctionOptional<T>;\n if (adapters) {\n updaterFn = () => {\n 'worklet';\n const newValues = updater();\n adaptersArray.forEach((adapter) => {\n adapter(newValues);\n });\n return newValues;\n };\n }\n\n if (!shouldBeUseWeb()) {\n updaterFn = () => {\n 'worklet';\n const style = updaterFn();\n parseColors(style);\n return style;\n };\n }\n\n if (isJest()) {\n fun = () => {\n 'worklet';\n jestStyleUpdater(\n sharableViewDescriptors,\n updater,\n remoteState,\n maybeViewRef,\n animationsActive,\n animatedStyle,\n adaptersArray\n );\n };\n } else {\n fun = () => {\n 'worklet';\n styleUpdater(\n sharableViewDescriptors,\n updaterFn,\n remoteState,\n maybeViewRef,\n animationsActive\n );\n };\n }\n const mapperId = startMapper(fun, inputs);\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n animationsActive.value = true;\n return () => {\n // initRef.current = null;\n // viewsRef = null;\n animationsActive.value = false;\n };\n }, []);\n\n checkSharedValueUsage(initial.value);\n\n if (process.env.JEST_WORKER_ID) {\n return { viewDescriptors, initial: initial, viewsRef, animatedStyle };\n } else {\n return { viewDescriptors, initial: initial, viewsRef };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useEffect","useRef","startMapper","stopMapper","makeRemote","getTimestamp","updateProps","updatePropsJestWrapper","initialUpdaterRun","NativeReanimatedModule","useSharedValue","buildWorkletsHash","getStyleWithoutAnimations","isAnimated","styleDiff","validateAnimatedStyles","makeViewDescriptorsSet","makeViewsRefSet","isJest","prepareAnimation","animatedProp","lastAnimation","lastValue","Array","isArray","forEach","prop","index","onFrame","animation","value","current","undefined","callStart","timestamp","onStart","Object","keys","key","runAnimations","result","animationsActive","allFinished","entry","finished","callback","k","styleUpdater","viewDescriptors","updater","state","maybeViewRef","animations","newValues","oldValues","last","hasAnimations","frame","_timestamp","isAnimationCancelled","isAnimationRunning","updates","propName","requestAnimationFrame","_frameTimestamp","assign","style","diff","jestStyleUpdater","animatedStyle","adapters","length","checkSharedValueUsage","currentKey","element","Error","useAnimatedStyle","dependencies","viewsRef","initRef","inputs","values","_closure","adaptersArray","adaptersHash","__workletHash","push","initialStyle","initial","remoteState","sharableViewDescriptors","native","fun","updaterFn","adapter","mapperId","process","env","JEST_WORKER_ID"],"sources":["useAnimatedStyle.ts"],"sourcesContent":["/* global _frameTimestamp */\nimport { MutableRefObject, useEffect, useRef } from 'react';\n\nimport { startMapper, stopMapper, makeRemote, getTimestamp } from '../core';\nimport updateProps, { updatePropsJestWrapper } from '../UpdateProps';\nimport { initialUpdaterRun } from '../animation';\nimport NativeReanimatedModule from '../NativeReanimated';\nimport { useSharedValue } from './useSharedValue';\nimport {\n buildWorkletsHash,\n getStyleWithoutAnimations,\n isAnimated,\n styleDiff,\n validateAnimatedStyles,\n} from './utils';\nimport { DependencyList, Descriptor } from './commonTypes';\nimport {\n makeViewDescriptorsSet,\n makeViewsRefSet,\n ViewDescriptorsSet,\n ViewRefSet,\n} from '../ViewDescriptorsSet';\nimport { isJest } from '../PlatformChecker';\nimport {\n AnimationObject,\n Timestamp,\n AdapterWorkletFunction,\n AnimatedStyle,\n BasicWorkletFunction,\n BasicWorkletFunctionOptional,\n NestedObjectValues,\n SharedValue,\n} from '../commonTypes';\nexport interface AnimatedStyleResult {\n viewDescriptors: ViewDescriptorsSet;\n initial: AnimatedStyle;\n viewsRef: ViewRefSet<any>;\n animatedStyle?: MutableRefObject<AnimatedStyle>;\n}\n\ninterface AnimatedState {\n last: AnimatedStyle;\n animations: AnimatedStyle;\n isAnimationRunning: boolean;\n isAnimationCancelled: boolean;\n}\n\ninterface AnimationRef {\n initial: {\n value: AnimatedStyle;\n updater: () => AnimatedStyle;\n };\n remoteState: AnimatedState;\n viewDescriptors: ViewDescriptorsSet;\n}\n\nfunction prepareAnimation(\n animatedProp: AnimatedStyle,\n lastAnimation: AnimatedStyle,\n lastValue: AnimatedStyle\n): void {\n 'worklet';\n if (Array.isArray(animatedProp)) {\n animatedProp.forEach((prop, index) => {\n prepareAnimation(\n prop,\n lastAnimation && lastAnimation[index],\n lastValue && lastValue[index]\n );\n });\n // return animatedProp;\n }\n if (typeof animatedProp === 'object' && animatedProp.onFrame) {\n const animation = animatedProp;\n\n let value = animation.current;\n if (lastValue !== undefined) {\n if (typeof lastValue === 'object') {\n if (lastValue.value !== undefined) {\n // previously it was a shared value\n value = lastValue.value;\n } else if (lastValue.onFrame !== undefined) {\n if (lastAnimation?.current !== undefined) {\n // it was an animation before, copy its state\n value = lastAnimation.current;\n } else if (lastValue?.current !== undefined) {\n // it was initialized\n value = lastValue.current;\n }\n }\n } else {\n // previously it was a plain value, just set it as starting point\n value = lastValue;\n }\n }\n\n animation.callStart = (timestamp: Timestamp) => {\n animation.onStart(animation, value, timestamp, lastAnimation);\n };\n animation.callStart(getTimestamp());\n animation.callStart = null;\n } else if (typeof animatedProp === 'object') {\n // it is an object\n Object.keys(animatedProp).forEach((key) =>\n prepareAnimation(\n animatedProp[key],\n lastAnimation && lastAnimation[key],\n lastValue && lastValue[key]\n )\n );\n }\n}\n\nfunction runAnimations(\n animation: AnimatedStyle,\n timestamp: Timestamp,\n key: number | string,\n result: AnimatedStyle,\n animationsActive: SharedValue<boolean>\n): boolean {\n 'worklet';\n if (!animationsActive.value) {\n return true;\n }\n if (Array.isArray(animation)) {\n result[key] = [];\n let allFinished = true;\n animation.forEach((entry, index) => {\n if (\n !runAnimations(entry, timestamp, index, result[key], animationsActive)\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else if (typeof animation === 'object' && animation.onFrame) {\n let finished = true;\n if (!animation.finished) {\n if (animation.callStart) {\n animation.callStart(timestamp);\n animation.callStart = null;\n }\n finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n if (finished) {\n animation.finished = true;\n animation.callback && animation.callback(true /* finished */);\n }\n }\n result[key] = animation.current;\n return finished;\n } else if (typeof animation === 'object') {\n result[key] = {};\n let allFinished = true;\n Object.keys(animation).forEach((k) => {\n if (\n !runAnimations(\n animation[k],\n timestamp,\n k,\n result[key],\n animationsActive\n )\n ) {\n allFinished = false;\n }\n });\n return allFinished;\n } else {\n result[key] = animation;\n return true;\n }\n}\n\nfunction styleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>\n): void {\n 'worklet';\n const animations = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n let hasAnimations = false;\n for (const key in newValues) {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n } else {\n delete animations[key];\n }\n }\n\n if (hasAnimations) {\n const frame = (_timestamp?: Timestamp) => {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n for (const propName in animations) {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n }\n\n if (updates) {\n updateProps(viewDescriptors, updates, maybeViewRef);\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n };\n\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n state.last = Object.assign({}, oldValues, newValues);\n const style = getStyleWithoutAnimations(state.last);\n if (style) {\n updateProps(viewDescriptors, style, maybeViewRef);\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n if (diff) {\n updateProps(viewDescriptors, newValues, maybeViewRef);\n }\n }\n}\n\nfunction jestStyleUpdater(\n viewDescriptors: SharedValue<Descriptor[]>,\n updater: BasicWorkletFunction<AnimatedStyle>,\n state: AnimatedState,\n maybeViewRef: ViewRefSet<any> | undefined,\n animationsActive: SharedValue<boolean>,\n animatedStyle: MutableRefObject<AnimatedStyle>,\n adapters: AdapterWorkletFunction[] = []\n): void {\n 'worklet';\n const animations: AnimatedStyle = state.animations ?? {};\n const newValues = updater() ?? {};\n const oldValues = state.last;\n\n // extract animated props\n let hasAnimations = false;\n Object.keys(animations).forEach((key) => {\n const value = newValues[key];\n if (!isAnimated(value)) {\n delete animations[key];\n }\n });\n Object.keys(newValues).forEach((key) => {\n const value = newValues[key];\n if (isAnimated(value)) {\n prepareAnimation(value, animations[key], oldValues[key]);\n animations[key] = value;\n hasAnimations = true;\n }\n });\n\n function frame(_timestamp?: Timestamp) {\n const { animations, last, isAnimationCancelled } = state;\n const timestamp = _timestamp ?? getTimestamp();\n if (isAnimationCancelled) {\n state.isAnimationRunning = false;\n return;\n }\n\n const updates: AnimatedStyle = {};\n let allFinished = true;\n Object.keys(animations).forEach((propName) => {\n const finished = runAnimations(\n animations[propName],\n timestamp,\n propName,\n updates,\n animationsActive\n );\n if (finished) {\n last[propName] = updates[propName];\n delete animations[propName];\n } else {\n allFinished = false;\n }\n });\n\n if (Object.keys(updates).length) {\n updatePropsJestWrapper(\n viewDescriptors,\n updates,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n\n if (!allFinished) {\n requestAnimationFrame(frame);\n } else {\n state.isAnimationRunning = false;\n }\n }\n\n if (hasAnimations) {\n state.animations = animations;\n if (!state.isAnimationRunning) {\n state.isAnimationCancelled = false;\n state.isAnimationRunning = true;\n if (_frameTimestamp) {\n frame(_frameTimestamp);\n } else {\n requestAnimationFrame(frame);\n }\n }\n } else {\n state.isAnimationCancelled = true;\n state.animations = [];\n }\n\n // calculate diff\n const diff = styleDiff(oldValues, newValues);\n state.last = Object.assign({}, oldValues, newValues);\n\n if (Object.keys(diff).length !== 0) {\n updatePropsJestWrapper(\n viewDescriptors,\n diff,\n maybeViewRef,\n animatedStyle,\n adapters\n );\n }\n}\n\n// check for invalid usage of shared values in returned object\nfunction checkSharedValueUsage(\n prop: NestedObjectValues<AnimationObject>,\n currentKey?: string\n): void {\n if (Array.isArray(prop)) {\n // if it's an array (i.ex. transform) validate all its elements\n for (const element of prop) {\n checkSharedValueUsage(element, currentKey);\n }\n } else if (typeof prop === 'object' && prop.value === undefined) {\n // if it's a nested object, run validation for all its props\n for (const key of Object.keys(prop)) {\n checkSharedValueUsage(prop[key], key);\n }\n } else if (\n currentKey !== undefined &&\n typeof prop === 'object' &&\n prop.value !== undefined\n ) {\n // if shared value is passed insted of its value, throw an error\n throw new Error(\n `invalid value passed to \\`${currentKey}\\`, maybe you forgot to use \\`.value\\`?`\n );\n }\n}\n\nexport function useAnimatedStyle<T extends AnimatedStyle>(\n updater: BasicWorkletFunction<T>,\n dependencies?: DependencyList,\n adapters?: AdapterWorkletFunction | AdapterWorkletFunction[]\n): AnimatedStyleResult {\n const viewsRef: ViewRefSet<any> = makeViewsRefSet();\n const initRef = useRef<AnimationRef>();\n const inputs = Object.values(updater._closure ?? {});\n const adaptersArray: AdapterWorkletFunction[] = adapters\n ? Array.isArray(adapters)\n ? adapters\n : [adapters]\n : [];\n const adaptersHash = adapters ? buildWorkletsHash(adaptersArray) : null;\n const animationsActive = useSharedValue<boolean>(true);\n const animatedStyle: MutableRefObject<AnimatedStyle> = useRef<AnimatedStyle>(\n {}\n );\n\n // build dependencies\n if (!dependencies) {\n dependencies = [...inputs, updater.__workletHash];\n } else {\n dependencies.push(updater.__workletHash);\n }\n adaptersHash && dependencies.push(adaptersHash);\n\n if (!initRef.current) {\n const initialStyle: AnimatedStyle = initialUpdaterRun(updater);\n validateAnimatedStyles(initialStyle);\n initRef.current = {\n initial: {\n value: initialStyle,\n updater: updater,\n },\n remoteState: makeRemote<AnimatedState>({\n last: initialStyle,\n animations: {},\n isAnimationCancelled: false,\n isAnimationRunning: false,\n }),\n viewDescriptors: makeViewDescriptorsSet(),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { initial, remoteState, viewDescriptors } = initRef.current!;\n const sharableViewDescriptors = viewDescriptors.sharableViewDescriptors;\n const maybeViewRef = NativeReanimatedModule.native ? undefined : viewsRef;\n\n dependencies.push(sharableViewDescriptors);\n\n useEffect(() => {\n let fun;\n let updaterFn = updater as BasicWorkletFunctionOptional<T>;\n if (adapters) {\n updaterFn = () => {\n 'worklet';\n const newValues = updater();\n adaptersArray.forEach((adapter) => {\n adapter(newValues);\n });\n return newValues;\n };\n }\n\n if (isJest()) {\n fun = () => {\n 'worklet';\n jestStyleUpdater(\n sharableViewDescriptors,\n updater,\n remoteState,\n maybeViewRef,\n animationsActive,\n animatedStyle,\n adaptersArray\n );\n };\n } else {\n fun = () => {\n 'worklet';\n styleUpdater(\n sharableViewDescriptors,\n updaterFn,\n remoteState,\n maybeViewRef,\n animationsActive\n );\n };\n }\n const mapperId = startMapper(fun, inputs);\n return () => {\n stopMapper(mapperId);\n };\n }, dependencies);\n\n useEffect(() => {\n animationsActive.value = true;\n return () => {\n // initRef.current = null;\n // viewsRef = null;\n animationsActive.value = false;\n };\n }, []);\n\n checkSharedValueUsage(initial.value);\n\n if (process.env.JEST_WORKER_ID) {\n return { viewDescriptors, initial: initial, viewsRef, animatedStyle };\n } else {\n return { viewDescriptors, initial: initial, viewsRef };\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { reportFatalErrorOnJS } from './errors';
2
+ import NativeReanimatedModule from './NativeReanimated';
3
+ import { isJest } from './PlatformChecker';
4
+ import { runOnUI, runOnJS } from './threads'; // callGuard is only used with debug builds
5
+
6
+ function callGuardDEV(fn) {
7
+ 'worklet';
8
+
9
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
10
+ args[_key - 1] = arguments[_key];
11
+ }
12
+
13
+ try {
14
+ fn(...args);
15
+ } catch (e) {
16
+ if (global.ErrorUtils) {
17
+ global.ErrorUtils.reportFatalError(e);
18
+ } else {
19
+ throw e;
20
+ }
21
+ }
22
+ }
23
+
24
+ function valueUnpacker(objectToUnpack, category) {
25
+ 'worklet';
26
+
27
+ let workletsCache = global.__workletsCache;
28
+ let handleCache = global.__handleCache;
29
+
30
+ if (workletsCache === undefined) {
31
+ // init
32
+ workletsCache = global.__workletsCache = new Map();
33
+ handleCache = global.__handleCache = new WeakMap();
34
+ }
35
+
36
+ if (objectToUnpack.__workletHash) {
37
+ let workletFun = workletsCache.get(objectToUnpack.__workletHash);
38
+
39
+ if (workletFun === undefined) {
40
+ if (global.evalWithSourceMap) {
41
+ // if the runtime (hermes only for now) supports loading source maps
42
+ // we want to use the proper filename for the location as it guarantees
43
+ // that debugger understands and loads the source code of the file where
44
+ // the worklet is defined.
45
+ workletFun = global.evalWithSourceMap('(' + objectToUnpack.asString + '\n)', objectToUnpack.__location, objectToUnpack.__sourceMap);
46
+ } else if (global.evalWithSourceUrl) {
47
+ // if the runtime doesn't support loading source maps, in dev mode we
48
+ // can pass source url when evaluating the worklet. Now, instead of using
49
+ // the actual file location we use worklet hash, as it the allows us to
50
+ // properly symbolicate traces (see errors.ts for details)
51
+ workletFun = global.evalWithSourceUrl('(' + objectToUnpack.asString + '\n)', `worklet_${objectToUnpack.__workletHash}`);
52
+ } else {
53
+ // in release we use the regular eval to save on JSI calls
54
+ // eslint-disable-next-line no-eval
55
+ workletFun = eval('(' + objectToUnpack.asString + '\n)');
56
+ }
57
+
58
+ workletsCache.set(objectToUnpack.__workletHash, workletFun);
59
+ }
60
+
61
+ const functionInstance = workletFun.bind(objectToUnpack);
62
+ objectToUnpack._recur = functionInstance;
63
+ return functionInstance;
64
+ } else if (objectToUnpack.__init) {
65
+ let value = handleCache.get(objectToUnpack);
66
+
67
+ if (value === undefined) {
68
+ value = objectToUnpack.__init();
69
+ handleCache.set(objectToUnpack, value);
70
+ }
71
+
72
+ return value;
73
+ } else if (category === 'RemoteFunction') {
74
+ const fun = () => {
75
+ throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.
76
+
77
+ Possible solutions are:
78
+ a) If you want to synchronously execute this method, mark it as a worklet
79
+ b) If you want to execute this function on the JS thread, wrap it using \`runOnJS\``);
80
+ };
81
+
82
+ fun.__remoteFunction = objectToUnpack;
83
+ return fun;
84
+ } else {
85
+ throw new Error('data type not recognized by unpack method');
86
+ }
87
+ }
88
+
89
+ export function initializeUIRuntime() {
90
+ NativeReanimatedModule.installCoreFunctions(callGuardDEV, valueUnpacker);
91
+ const IS_JEST = isJest();
92
+ const capturableConsole = console;
93
+ runOnUI(() => {
94
+ 'worklet'; // setup error handler
95
+
96
+ global.ErrorUtils = {
97
+ reportFatalError: error => {
98
+ runOnJS(reportFatalErrorOnJS)({
99
+ message: error.message,
100
+ stack: error.stack
101
+ });
102
+ }
103
+ }; // setup console
104
+ // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version
105
+
106
+ global.console = {
107
+ debug: runOnJS(capturableConsole.debug),
108
+ log: runOnJS(capturableConsole.log),
109
+ warn: runOnJS(capturableConsole.warn),
110
+ error: runOnJS(capturableConsole.error),
111
+ info: runOnJS(capturableConsole.info)
112
+ };
113
+
114
+ if (!IS_JEST) {
115
+ // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden
116
+ // so we avoid doing requestAnimationFrame batching in Jest environment.
117
+ const nativeRequestAnimationFrame = global.requestAnimationFrame;
118
+ let callbacks = [];
119
+
120
+ global.requestAnimationFrame = callback => {
121
+ callbacks.push(callback);
122
+
123
+ if (callbacks.length === 1) {
124
+ // We schedule native requestAnimationFrame only when the first callback
125
+ // is added and then use it to execute all the enqueued callbacks. Once
126
+ // the callbacks are run, we clear the array.
127
+ nativeRequestAnimationFrame(timestamp => {
128
+ const currentCallbacks = callbacks;
129
+ callbacks = [];
130
+ currentCallbacks.forEach(f => f(timestamp));
131
+ });
132
+ } // Reanimated currently does not support cancelling calbacks requested with
133
+ // requestAnimationFrame. We return -1 as identifier which isn't in line
134
+ // with the spec but it should give users better clue in case they actually
135
+ // attempt to store the value returned from rAF and use it for cancelling.
136
+
137
+
138
+ return -1;
139
+ };
140
+ }
141
+ })();
142
+ }
143
+ //# sourceMappingURL=initializers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["reportFatalErrorOnJS","NativeReanimatedModule","isJest","runOnUI","runOnJS","callGuardDEV","fn","args","e","global","ErrorUtils","reportFatalError","valueUnpacker","objectToUnpack","category","workletsCache","__workletsCache","handleCache","__handleCache","undefined","Map","WeakMap","__workletHash","workletFun","get","evalWithSourceMap","asString","__location","__sourceMap","evalWithSourceUrl","eval","set","functionInstance","bind","_recur","__init","value","fun","Error","__remoteFunction","initializeUIRuntime","installCoreFunctions","IS_JEST","capturableConsole","console","error","message","stack","debug","log","warn","info","nativeRequestAnimationFrame","requestAnimationFrame","callbacks","callback","push","length","timestamp","currentCallbacks","forEach","f"],"sources":["initializers.ts"],"sourcesContent":["import { reportFatalErrorOnJS } from './errors';\nimport NativeReanimatedModule from './NativeReanimated';\nimport { isJest } from './PlatformChecker';\nimport { runOnUI, runOnJS } from './threads';\n\n// callGuard is only used with debug builds\nfunction callGuardDEV<T extends Array<any>, U>(\n fn: (...args: T) => U,\n ...args: T\n): void {\n 'worklet';\n try {\n fn(...args);\n } catch (e) {\n if (global.ErrorUtils) {\n global.ErrorUtils.reportFatalError(e as Error);\n } else {\n throw e;\n }\n }\n}\n\nfunction valueUnpacker(objectToUnpack: any, category?: string): any {\n 'worklet';\n let workletsCache = global.__workletsCache;\n let handleCache = global.__handleCache;\n if (workletsCache === undefined) {\n // init\n workletsCache = global.__workletsCache = new Map();\n handleCache = global.__handleCache = new WeakMap();\n }\n if (objectToUnpack.__workletHash) {\n let workletFun = workletsCache.get(objectToUnpack.__workletHash);\n if (workletFun === undefined) {\n if (global.evalWithSourceMap) {\n // if the runtime (hermes only for now) supports loading source maps\n // we want to use the proper filename for the location as it guarantees\n // that debugger understands and loads the source code of the file where\n // the worklet is defined.\n workletFun = global.evalWithSourceMap(\n '(' + objectToUnpack.asString + '\\n)',\n objectToUnpack.__location,\n objectToUnpack.__sourceMap\n ) as (...args: any[]) => any;\n } else if (global.evalWithSourceUrl) {\n // if the runtime doesn't support loading source maps, in dev mode we\n // can pass source url when evaluating the worklet. Now, instead of using\n // the actual file location we use worklet hash, as it the allows us to\n // properly symbolicate traces (see errors.ts for details)\n workletFun = global.evalWithSourceUrl(\n '(' + objectToUnpack.asString + '\\n)',\n `worklet_${objectToUnpack.__workletHash}`\n ) as (...args: any[]) => any;\n } else {\n // in release we use the regular eval to save on JSI calls\n // eslint-disable-next-line no-eval\n workletFun = eval('(' + objectToUnpack.asString + '\\n)') as (\n ...args: any[]\n ) => any;\n }\n workletsCache.set(objectToUnpack.__workletHash, workletFun);\n }\n const functionInstance = workletFun.bind(objectToUnpack);\n objectToUnpack._recur = functionInstance;\n return functionInstance;\n } else if (objectToUnpack.__init) {\n let value = handleCache!.get(objectToUnpack);\n if (value === undefined) {\n value = objectToUnpack.__init();\n handleCache!.set(objectToUnpack, value);\n }\n return value;\n } else if (category === 'RemoteFunction') {\n const fun = () => {\n throw new Error(`Tried to synchronously call a non-worklet function on the UI thread.\n\nPossible solutions are:\n a) If you want to synchronously execute this method, mark it as a worklet\n b) If you want to execute this function on the JS thread, wrap it using \\`runOnJS\\``);\n };\n fun.__remoteFunction = objectToUnpack;\n return fun;\n } else {\n throw new Error('data type not recognized by unpack method');\n }\n}\n\nexport function initializeUIRuntime() {\n NativeReanimatedModule.installCoreFunctions(callGuardDEV, valueUnpacker);\n\n const IS_JEST = isJest();\n\n const capturableConsole = console;\n runOnUI(() => {\n 'worklet';\n // setup error handler\n global.ErrorUtils = {\n reportFatalError: (error: Error) => {\n runOnJS(reportFatalErrorOnJS)({\n message: error.message,\n stack: error.stack,\n });\n },\n };\n\n // setup console\n // @ts-ignore TypeScript doesn't like that there are missing methods in console object, but we don't provide all the methods for the UI runtime console version\n global.console = {\n debug: runOnJS(capturableConsole.debug),\n log: runOnJS(capturableConsole.log),\n warn: runOnJS(capturableConsole.warn),\n error: runOnJS(capturableConsole.error),\n info: runOnJS(capturableConsole.info),\n };\n\n if (!IS_JEST) {\n // Jest mocks requestAnimationFrame API and it does not like if that mock gets overridden\n // so we avoid doing requestAnimationFrame batching in Jest environment.\n const nativeRequestAnimationFrame = global.requestAnimationFrame;\n let callbacks: Array<(time: number) => void> = [];\n global.requestAnimationFrame = (\n callback: (timestamp: number) => void\n ): number => {\n callbacks.push(callback);\n if (callbacks.length === 1) {\n // We schedule native requestAnimationFrame only when the first callback\n // is added and then use it to execute all the enqueued callbacks. Once\n // the callbacks are run, we clear the array.\n nativeRequestAnimationFrame((timestamp) => {\n const currentCallbacks = callbacks;\n callbacks = [];\n currentCallbacks.forEach((f) => f(timestamp));\n });\n }\n // Reanimated currently does not support cancelling calbacks requested with\n // requestAnimationFrame. We return -1 as identifier which isn't in line\n // with the spec but it should give users better clue in case they actually\n // attempt to store the value returned from rAF and use it for cancelling.\n return -1;\n };\n }\n })();\n}\n"],"mappings":"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"}
@@ -1,13 +1,9 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
1
  import { NativeReanimated } from '../NativeReanimated/NativeReanimated';
4
2
  import { isJest } from '../PlatformChecker';
5
3
  export default class JSReanimated extends NativeReanimated {
6
4
  constructor() {
7
5
  super(false);
8
6
 
9
- _defineProperty(this, "_valueUnpacker", undefined);
10
-
11
7
  if (isJest()) {
12
8
  // on node < 16 jest have problems mocking performance.now method which
13
9
  // results in the tests failing, since date precision isn't that important
@@ -24,8 +20,7 @@ export default class JSReanimated extends NativeReanimated {
24
20
  };
25
21
  }
26
22
 
27
- installCoreFunctions(valueUnpacker) {
28
- this._valueUnpacker = valueUnpacker;
23
+ installCoreFunctions(_callGuard, _valueUnpacker) {// noop
29
24
  }
30
25
 
31
26
  scheduleOnUI(worklet) {