react-native-reanimated 3.0.0-rc.4 → 3.0.0-rc.6

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 (61) hide show
  1. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.cpp +97 -15
  2. package/Common/cpp/LayoutAnimations/LayoutAnimationsProxy.h +32 -8
  3. package/Common/cpp/NativeModules/NativeReanimatedModule.cpp +16 -1
  4. package/Common/cpp/NativeModules/NativeReanimatedModule.h +8 -1
  5. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.cpp +17 -0
  6. package/Common/cpp/NativeModules/NativeReanimatedModuleSpec.h +8 -0
  7. package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.cpp +2 -1
  8. package/Common/cpp/ReanimatedRuntime/ReanimatedRuntime.h +1 -0
  9. package/Common/cpp/Tools/RuntimeDecorator.cpp +2 -1
  10. package/android/CMakeLists.txt +1 -0
  11. package/android/build.gradle +9 -1
  12. package/android/src/fabric/java/com/swmansion/reanimated/NativeProxy.java +16 -25
  13. package/android/src/main/cpp/LayoutAnimations.cpp +42 -50
  14. package/android/src/main/cpp/LayoutAnimations.h +17 -3
  15. package/android/src/main/cpp/NativeProxy.cpp +55 -6
  16. package/android/src/main/java/com/swmansion/reanimated/NodesManager.java +1 -1
  17. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java +208 -223
  18. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/LayoutAnimations.java +7 -5
  19. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/NativeMethodsHolder.java +5 -3
  20. package/android/src/main/java/com/swmansion/reanimated/layoutReanimation/ViewHierarchyObserver.java +1 -1
  21. package/android/src/paper/java/com/swmansion/reanimated/NativeProxy.java +20 -7
  22. package/android/src/reactNativeVersionPatch/nativeHierarchyManager/62/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +8 -44
  23. package/android/src/reactNativeVersionPatch/nativeHierarchyManager/latest/com/swmansion/reanimated/layoutReanimation/ReanimatedNativeHierarchyManager.java +15 -61
  24. package/ios/LayoutReanimation/REAAnimationsManager.h +18 -8
  25. package/ios/LayoutReanimation/REAAnimationsManager.m +197 -162
  26. package/ios/LayoutReanimation/REAUIManager.mm +63 -70
  27. package/ios/native/NativeProxy.mm +55 -48
  28. package/lib/commonjs/createAnimatedComponent.js +26 -26
  29. package/lib/commonjs/createAnimatedComponent.js.map +1 -1
  30. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js +4 -0
  31. package/lib/commonjs/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  32. package/lib/commonjs/reanimated2/core.js +9 -9
  33. package/lib/commonjs/reanimated2/core.js.map +1 -1
  34. package/lib/commonjs/reanimated2/globals.d.js.map +1 -1
  35. package/lib/commonjs/reanimated2/jestUtils.js +17 -9
  36. package/lib/commonjs/reanimated2/jestUtils.js.map +1 -1
  37. package/lib/commonjs/reanimated2/layoutReanimation/LayoutAnimationRepository.js +23 -62
  38. package/lib/commonjs/reanimated2/layoutReanimation/LayoutAnimationRepository.js.map +1 -1
  39. package/lib/module/createAnimatedComponent.js +27 -26
  40. package/lib/module/createAnimatedComponent.js.map +1 -1
  41. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js +4 -0
  42. package/lib/module/reanimated2/NativeReanimated/NativeReanimated.js.map +1 -1
  43. package/lib/module/reanimated2/core.js +7 -9
  44. package/lib/module/reanimated2/core.js.map +1 -1
  45. package/lib/module/reanimated2/globals.d.js.map +1 -1
  46. package/lib/module/reanimated2/jestUtils.js +17 -9
  47. package/lib/module/reanimated2/jestUtils.js.map +1 -1
  48. package/lib/module/reanimated2/layoutReanimation/LayoutAnimationRepository.js +22 -61
  49. package/lib/module/reanimated2/layoutReanimation/LayoutAnimationRepository.js.map +1 -1
  50. package/package.json +2 -2
  51. package/src/createAnimatedComponent.tsx +48 -39
  52. package/src/reanimated2/NativeReanimated/NativeReanimated.ts +15 -0
  53. package/src/reanimated2/core.ts +19 -10
  54. package/src/reanimated2/globals.d.ts +10 -6
  55. package/src/reanimated2/jestUtils.ts +14 -6
  56. package/src/reanimated2/layoutReanimation/LayoutAnimationRepository.ts +24 -50
  57. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Default.js +0 -55
  58. package/lib/commonjs/reanimated2/layoutReanimation/defaultAnimations/Default.js.map +0 -1
  59. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Default.js +0 -40
  60. package/lib/module/reanimated2/layoutReanimation/defaultAnimations/Default.js.map +0 -1
  61. package/src/reanimated2/layoutReanimation/defaultAnimations/Default.ts +0 -49
@@ -32,6 +32,10 @@
32
32
  #import <dlfcn.h>
33
33
  #endif
34
34
 
35
+ @interface RCTBridge (JSIRuntime)
36
+ - (void *)runtime;
37
+ @end
38
+
35
39
  namespace reanimated {
36
40
 
37
41
  using namespace facebook;
@@ -198,7 +202,8 @@ std::shared_ptr<NativeReanimatedModule> createReanimatedModule(
198
202
  auto jsQueue = std::make_shared<REAMessageThread>([NSRunLoop currentRunLoop], ^(NSError *error) {
199
203
  throw error;
200
204
  });
201
- std::shared_ptr<jsi::Runtime> animatedRuntime = ReanimatedRuntime::make(jsQueue);
205
+ auto rnRuntime = reinterpret_cast<facebook::jsi::Runtime *>(reanimatedModule.bridge.runtime);
206
+ std::shared_ptr<jsi::Runtime> animatedRuntime = ReanimatedRuntime::make(rnRuntime, jsQueue);
202
207
 
203
208
  std::shared_ptr<Scheduler> scheduler = std::make_shared<REAIOSScheduler>(jsInvoker);
204
209
  std::shared_ptr<ErrorHandler> errorHandler = std::make_shared<REAIOSErrorHandler>(scheduler);
@@ -224,8 +229,8 @@ std::shared_ptr<NativeReanimatedModule> createReanimatedModule(
224
229
  [nodesManager synchronouslyUpdateViewOnUIThread:viewTag props:uiProps];
225
230
  };
226
231
 
227
- std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy =
228
- std::make_shared<LayoutAnimationsProxy>([](int tag, jsi::Object newStyle) {}, [](int tag, bool isCancelled) {});
232
+ auto layoutAnimationsProxy = std::make_shared<LayoutAnimationsProxy>(
233
+ [](int tag, jsi::Object newStyle) {}, [](int tag, bool isCancelled, bool removeView) {}, errorHandler);
229
234
  #else
230
235
  // Layout Animations start
231
236
  __block std::weak_ptr<Scheduler> weakScheduler = scheduler;
@@ -241,16 +246,19 @@ std::shared_ptr<NativeReanimatedModule> createReanimatedModule(
241
246
  REAAnimationsManager *animationsManager = [[REAAnimationsManager alloc] initWithUIManager:reaUiManager];
242
247
  [reaUiManagerNoCast setUp:animationsManager];
243
248
 
244
- auto notifyAboutProgress = [=](int tag, jsi::Object newStyle) {
249
+ __weak REAAnimationsManager *weakAnimationsManager = animationsManager;
250
+ auto progressLayoutAnimation = [weakAnimationsManager, animatedRuntime](int tag, jsi::Object newStyle) {
251
+ REAAnimationsManager *animationsManager = weakAnimationsManager;
245
252
  if (animationsManager) {
246
253
  NSDictionary *propsDict = convertJSIObjectToNSDictionary(*animatedRuntime, newStyle);
247
- [animationsManager notifyAboutProgress:propsDict tag:[NSNumber numberWithInt:tag]];
254
+ [animationsManager progressLayoutAnimationWithStyle:propsDict forTag:@(tag)];
248
255
  }
249
256
  };
250
257
 
251
- auto notifyAboutEnd = [=](int tag, bool isCancelled) {
258
+ auto endLayoutAnimation = [weakAnimationsManager](int tag, bool isCancelled, bool removeView) {
259
+ REAAnimationsManager *animationsManager = weakAnimationsManager;
252
260
  if (animationsManager) {
253
- [animationsManager notifyAboutEnd:[NSNumber numberWithInt:tag] cancelled:isCancelled];
261
+ [animationsManager endLayoutAnimationForTag:@(tag) cancelled:isCancelled removeView:removeView];
254
262
  }
255
263
  };
256
264
 
@@ -261,48 +269,10 @@ std::shared_ptr<NativeReanimatedModule> createReanimatedModule(
261
269
  [reanimatedModule.nodesManager configureUiProps:uiPropsSet andNativeProps:nativePropsSet];
262
270
  };
263
271
 
264
- std::shared_ptr<LayoutAnimationsProxy> layoutAnimationsProxy =
265
- std::make_shared<LayoutAnimationsProxy>(notifyAboutProgress, notifyAboutEnd);
272
+ auto layoutAnimationsProxy =
273
+ std::make_shared<LayoutAnimationsProxy>(progressLayoutAnimation, endLayoutAnimation, errorHandler);
274
+ auto weakLayoutAnimationsProxy = std::weak_ptr(layoutAnimationsProxy);
266
275
  std::weak_ptr<jsi::Runtime> wrt = animatedRuntime;
267
- [animationsManager setAnimationStartingBlock:^(
268
- NSNumber *_Nonnull tag, NSString *type, NSDictionary *_Nonnull values, NSNumber *depth) {
269
- std::shared_ptr<jsi::Runtime> rt = wrt.lock();
270
- if (wrt.expired()) {
271
- return;
272
- }
273
- jsi::Object yogaValues(*rt);
274
- for (NSString *key in values.allKeys) {
275
- NSNumber *value = values[key];
276
- yogaValues.setProperty(*rt, [key UTF8String], [value doubleValue]);
277
- }
278
-
279
- jsi::Value layoutAnimationRepositoryAsValue =
280
- rt->global().getPropertyAsObject(*rt, "global").getProperty(*rt, "LayoutAnimationRepository");
281
- if (!layoutAnimationRepositoryAsValue.isUndefined()) {
282
- jsi::Function startAnimationForTag =
283
- layoutAnimationRepositoryAsValue.getObject(*rt).getPropertyAsFunction(*rt, "startAnimationForTag");
284
- startAnimationForTag.call(
285
- *rt,
286
- jsi::Value([tag intValue]),
287
- jsi::String::createFromAscii(*rt, std::string([type UTF8String])),
288
- yogaValues,
289
- jsi::Value([depth intValue]));
290
- }
291
- }];
292
-
293
- [animationsManager setRemovingConfigBlock:^(NSNumber *_Nonnull tag) {
294
- std::shared_ptr<jsi::Runtime> rt = wrt.lock();
295
- if (wrt.expired()) {
296
- return;
297
- }
298
- jsi::Value layoutAnimationRepositoryAsValue =
299
- rt->global().getPropertyAsObject(*rt, "global").getProperty(*rt, "LayoutAnimationRepository");
300
- if (!layoutAnimationRepositoryAsValue.isUndefined()) {
301
- jsi::Function removeConfig =
302
- layoutAnimationRepositoryAsValue.getObject(*rt).getPropertyAsFunction(*rt, "removeConfig");
303
- removeConfig.call(*rt, jsi::Value([tag intValue]));
304
- }
305
- }];
306
276
 
307
277
  // Layout Animations end
308
278
  #endif
@@ -409,7 +379,44 @@ std::shared_ptr<NativeReanimatedModule> createReanimatedModule(
409
379
  module->performOperations();
410
380
  }
411
381
  }];
382
+ #else
383
+ // Layout Animation callbacks setup
384
+ [animationsManager setAnimationStartingBlock:^(
385
+ NSNumber *_Nonnull tag, NSString *type, NSDictionary *_Nonnull values, NSNumber *depth) {
386
+ std::shared_ptr<jsi::Runtime> runtime = wrt.lock();
387
+ if (runtime == nullptr) {
388
+ return;
389
+ }
390
+ auto layoutAnimationsProxy = weakLayoutAnimationsProxy.lock();
391
+ if (layoutAnimationsProxy == nullptr) {
392
+ return;
393
+ }
394
+ jsi::Object yogaValues(*runtime);
395
+ for (NSString *key in values.allKeys) {
396
+ NSNumber *value = values[key];
397
+ yogaValues.setProperty(*runtime, [key UTF8String], [value doubleValue]);
398
+ }
399
+
400
+ layoutAnimationsProxy->startLayoutAnimation(*runtime, [tag intValue], std::string([type UTF8String]), yogaValues);
401
+ }];
402
+
403
+ [animationsManager setHasAnimationBlock:^(NSNumber *_Nonnull tag, NSString *_Nonnull type) {
404
+ auto layoutAnimationsProxy = weakLayoutAnimationsProxy.lock();
405
+ if (layoutAnimationsProxy == nullptr) {
406
+ return false;
407
+ }
408
+ return layoutAnimationsProxy->hasLayoutAnimation([tag intValue], std::string([type UTF8String]));
409
+ }];
410
+
411
+ [animationsManager setAnimationRemovingBlock:^(NSNumber *_Nonnull tag) {
412
+ auto layoutAnimationsProxy = weakLayoutAnimationsProxy.lock();
413
+ if (layoutAnimationsProxy == nullptr) {
414
+ return;
415
+ }
416
+ layoutAnimationsProxy->clearLayoutAnimationConfig([tag intValue]);
417
+ }];
412
418
  #endif
419
+
413
420
  return module;
414
421
  }
415
422
 
@@ -23,8 +23,6 @@ var _RNRenderer = require("./reanimated2/platform-specific/RNRenderer");
23
23
 
24
24
  var _core = require("./reanimated2/core");
25
25
 
26
- var _Default = require("./reanimated2/layoutReanimation/defaultAnimations/Default");
27
-
28
26
  var _PlatformChecker = require("./reanimated2/PlatformChecker");
29
27
 
30
28
  var _animation = require("./reanimated2/animation");
@@ -41,6 +39,16 @@ function dummyListener() {// empty listener we use to assign to listener propert
41
39
  // event is used.
42
40
  }
43
41
 
42
+ function maybeBuild(layoutAnimationOrBuilder) {
43
+ const isAnimationBuilder = value => 'build' in layoutAnimationOrBuilder && typeof layoutAnimationOrBuilder.build === 'function';
44
+
45
+ if (isAnimationBuilder(layoutAnimationOrBuilder)) {
46
+ return layoutAnimationOrBuilder.build();
47
+ } else {
48
+ return layoutAnimationOrBuilder;
49
+ }
50
+ }
51
+
44
52
  function flattenArray(array) {
45
53
  if (!Array.isArray(array)) {
46
54
  return [array];
@@ -117,36 +125,28 @@ function createAnimatedComponent(Component, options) {
117
125
  setLocalRef: ref => {
118
126
  // TODO update config
119
127
  const tag = (0, _reactNative.findNodeHandle)(ref);
120
-
121
- if (!(0, _PlatformChecker.shouldBeUseWeb)() && (this.props.layout || this.props.entering || this.props.exiting) && tag != null) {
122
- (0, _core.enableLayoutAnimations)(true, false);
123
- let layout = this.props.layout ? this.props.layout : _Default.DefaultLayout;
124
- let entering = this.props.entering ? this.props.entering : _Default.DefaultEntering;
125
- let exiting = this.props.exiting ? this.props.exiting : _Default.DefaultExiting;
126
-
127
- if (has('build', layout)) {
128
- layout = layout.build();
128
+ const {
129
+ layout,
130
+ entering,
131
+ exiting
132
+ } = this.props;
133
+
134
+ if ((layout || entering || exiting) && tag != null) {
135
+ if (!(0, _PlatformChecker.shouldBeUseWeb)()) {
136
+ (0, _core.enableLayoutAnimations)(true, false);
129
137
  }
130
138
 
131
- if (has('build', entering)) {
132
- entering = entering.build();
139
+ if (layout) {
140
+ (0, _core.configureLayoutAnimations)(tag, 'layout', maybeBuild(layout), this.sv);
133
141
  }
134
142
 
135
- if (has('build', exiting)) {
136
- exiting = exiting.build();
143
+ if (entering) {
144
+ (0, _core.configureLayoutAnimations)(tag, 'entering', maybeBuild(entering), this.sv);
137
145
  }
138
146
 
139
- const config = {
140
- layout,
141
- entering,
142
- exiting,
143
- sv: this.sv
144
- };
145
- (0, _core.runOnUI)(() => {
146
- 'worklet';
147
-
148
- global.LayoutAnimationRepository.registerConfig(tag, config);
149
- })();
147
+ if (exiting) {
148
+ (0, _core.configureLayoutAnimations)(tag, 'exiting', maybeBuild(exiting), this.sv);
149
+ }
150
150
  }
151
151
 
152
152
  if (ref !== this._component) {
@@ -1 +1 @@
1
- {"version":3,"names":["dummyListener","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","createAnimatedComponent","Component","options","invariant","prototype","isReactComponent","AnimatedComponent","React","constructor","props","value","setAndForwardRef","getForwardedRef","forwardedRef","setLocalRef","ref","tag","findNodeHandle","shouldBeUseWeb","layout","entering","exiting","enableLayoutAnimations","DefaultLayout","DefaultEntering","DefaultExiting","build","config","sv","runOnUI","global","LayoutAnimationRepository","registerConfig","_component","isJest","animatedStyle","makeMutable","componentWillUnmount","_detachNativeEvents","_detachStyles","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","viewTag","prop","current","WorkletEventHandler","registerForEvents","unregisterFromEvents","Platform","OS","_styles","remove","_viewTag","animatedProps","_IS_FABRIC","shadowNodeWrapper","getShadowNodeWrapperFromRef","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","setNativeProps","prevStyles","prevAnimatedProps","_animatedProps","viewName","hostInstance","RNRenderer","findHostInstance_DEPRECATED","Error","_nativeTag","viewConfig","uiViewClassName","hasReanimated2Props","length","adaptViewConfig","hasOneSameStyle","prevStyle","isPresent","some","add","name","initial","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","map","_isFirstRender","initialStyle","initialUpdaterRun","updater","StyleSheet","flatten","animatedProp","Object","keys","eventNames","eventName","listeners","isChromeDebugger","render","platformProps","select","web","default","collapsable","_setComponentRef","displayName","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';\nimport { findNodeHandle, Platform, StyleSheet } from 'react-native';\nimport WorkletEventHandler from './reanimated2/WorkletEventHandler';\nimport setAndForwardRef from './setAndForwardRef';\nimport './reanimated2/layoutReanimation/LayoutAnimationRepository';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n makeMutable,\n runOnUI,\n enableLayoutAnimations,\n} from './reanimated2/core';\nimport {\n DefaultEntering,\n DefaultExiting,\n DefaultLayout,\n} from './reanimated2/layoutReanimation/defaultAnimations/Default';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\ntype NestedArray<T> = T | NestedArray<T>[];\nfunction flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]) {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\nfunction isSameAnimatedStyle(\n style1?: StyleProps,\n style2?: StyleProps\n): boolean {\n // We cannot use equality check to compare useAnimatedStyle outputs directly.\n // Instead, we can compare its viewsRefs.\n return style1?.viewsRef === style2?.viewsRef;\n}\n\nconst isSameAnimatedProps = isSameAnimatedStyle;\n\nconst has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n\ninterface AnimatedProps extends Record<string, unknown> {\n viewDescriptors?: ViewDescriptorsSet;\n viewsRef?: ViewRefSet<unknown>;\n initial?: SharedValue<StyleProps>;\n}\n\nexport type AnimatedComponentProps<P extends Record<string, unknown>> = P & {\n forwardedRef?: Ref<Component>;\n style?: NestedArray<StyleProps>;\n animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n animatedStyle?: StyleProps;\n layout?:\n | BaseAnimationBuilder\n | ILayoutAnimationBuilder\n | typeof BaseAnimationBuilder;\n entering?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n exiting?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n};\n\ntype Options<P> = {\n setNativeProps: (ref: ComponentRef, props: P) => void;\n};\n\ninterface ComponentRef extends Component {\n setNativeProps?: (props: Record<string, unknown>) => void;\n getScrollableNode?: () => ComponentRef;\n}\n\nexport interface InitialComponentProps extends Record<string, unknown> {\n ref?: Ref<Component>;\n collapsable?: boolean;\n}\n\nexport default function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): ComponentType<AnimatedComponentProps<InitialComponentProps>> {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.'\n );\n\n class AnimatedComponent extends React.Component<\n AnimatedComponentProps<InitialComponentProps>\n > {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n animatedStyle: { value: StyleProps } = { value: {} };\n initialStyle = {};\n sv: SharedValue<null | Record<string, unknown>> | null;\n _component: ComponentRef | null = null;\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n this.sv = makeMutable({});\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n this.sv = null;\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n }\n\n _attachNativeEvents() {\n const viewTag = findNodeHandle(this);\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (Platform.OS === 'web' && this._styles !== null) {\n for (const style of this._styles) {\n if (style?.viewsRef) {\n style.viewsRef.remove(this);\n }\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (global._IS_FABRIC) {\n const shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(shadowNodeWrapper);\n })();\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n let viewTag: number | undefined;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n if (viewTag === undefined) {\n viewTag = prop.current.viewTag;\n }\n }\n }\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prop.current.registerForEvents(viewTag!, key);\n prop.current.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.setNativeProps(this._component!, props);\n } else {\n // eslint-disable-next-line no-unused-expressions\n this._component?.setNativeProps?.(props);\n }\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n } else {\n // hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);\n if (!hostInstance) {\n throw new Error(\n 'Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && hostInstance?.viewConfig) {\n adaptViewConfig(hostInstance.viewConfig);\n }\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n isSameAnimatedStyle(styles[0], prevStyles[0]);\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) =>\n isSameAnimatedStyle(style, prevStyle)\n );\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.animatedStyle.value = {\n ...this.animatedStyle.value,\n ...style.initial.value,\n };\n style.animatedStyle.current = this.animatedStyle;\n }\n });\n\n // detach old animatedProps\n if (\n prevAnimatedProps &&\n !isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)\n ) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n }\n\n _setComponentRef = setAndForwardRef<Component>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n const tag = findNodeHandle(ref);\n if (\n !shouldBeUseWeb() &&\n (this.props.layout || this.props.entering || this.props.exiting) &&\n tag != null\n ) {\n enableLayoutAnimations(true, false);\n let layout = this.props.layout ? this.props.layout : DefaultLayout;\n let entering = this.props.entering\n ? this.props.entering\n : DefaultEntering;\n let exiting = this.props.exiting\n ? this.props.exiting\n : DefaultExiting;\n\n if (has('build', layout)) {\n layout = layout.build();\n }\n\n if (has('build', entering)) {\n entering = entering.build() as EntryExitAnimationFunction;\n }\n\n if (has('build', exiting)) {\n exiting = exiting.build() as EntryExitAnimationFunction;\n }\n\n const config = {\n layout,\n entering,\n exiting,\n sv: this.sv,\n };\n runOnUI(() => {\n 'worklet';\n global.LayoutAnimationRepository.registerConfig(tag, config);\n })();\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n _filterNonAnimatedProps(\n inputProps: AnimatedComponentProps<InitialComponentProps>\n ): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const key in inputProps) {\n const value = inputProps[key];\n if (key === 'style') {\n const styleProp = inputProps.style;\n const styles = flattenArray<StyleProps>(styleProp ?? []);\n const processedStyle: StyleProps = styles.map((style) => {\n if (style && style.viewDescriptors) {\n // this is how we recognize styles returned by useAnimatedStyle\n style.viewsRef.add(this);\n if (this._isFirstRender) {\n this.initialStyle = {\n ...style.initial.value,\n ...initialUpdaterRun<StyleProps>(style.initial.updater),\n };\n }\n return this.initialStyle;\n } else {\n return style;\n }\n });\n props[key] = StyleSheet.flatten(processedStyle);\n } else if (key === 'animatedProps') {\n const animatedProp = inputProps.animatedProps as Partial<\n AnimatedComponentProps<AnimatedProps>\n >;\n if (animatedProp.initial !== undefined) {\n Object.keys(animatedProp.initial.value).forEach((key) => {\n props[key] = animatedProp.initial?.value[key];\n animatedProp.viewsRef?.add(this);\n });\n }\n } else if (\n has('current', value) &&\n value.current instanceof WorkletEventHandler\n ) {\n if (value.current.eventNames.length > 0) {\n value.current.eventNames.forEach((eventName) => {\n props[eventName] = has('listeners', value.current)\n ? (value.current.listeners as Record<string, unknown>)[\n eventName\n ]\n : dummyListener;\n });\n } else {\n props[key] = dummyListener;\n }\n } else if (\n key !== 'onGestureHandlerStateChange' ||\n !isChromeDebugger()\n ) {\n props[key] = value;\n }\n }\n return props;\n }\n\n render() {\n const props = this._filterNonAnimatedProps(this.props);\n if (isJest()) {\n props.animatedStyle = this.animatedStyle;\n }\n\n if (this._isFirstRender) {\n this._isFirstRender = false;\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n return (\n <Component {...props} ref={this._setComponentRef} {...platformProps} />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["dummyListener","maybeBuild","layoutAnimationOrBuilder","isAnimationBuilder","value","build","flattenArray","array","Array","isArray","resultArr","_flattenArray","arr","forEach","item","push","onlyAnimatedStyles","styles","filter","style","viewDescriptors","isSameAnimatedStyle","style1","style2","viewsRef","isSameAnimatedProps","has","key","x","undefined","createAnimatedComponent","Component","options","invariant","prototype","isReactComponent","AnimatedComponent","React","constructor","props","setAndForwardRef","getForwardedRef","forwardedRef","setLocalRef","ref","tag","findNodeHandle","layout","entering","exiting","shouldBeUseWeb","enableLayoutAnimations","configureLayoutAnimations","sv","_component","isJest","animatedStyle","makeMutable","componentWillUnmount","_detachNativeEvents","_detachStyles","componentDidMount","_attachNativeEvents","_attachAnimatedStyles","viewTag","prop","current","WorkletEventHandler","registerForEvents","unregisterFromEvents","Platform","OS","_styles","remove","_viewTag","animatedProps","global","_IS_FABRIC","shadowNodeWrapper","getShadowNodeWrapperFromRef","runOnUI","_removeShadowNodeFromRegistry","_reattachNativeEvents","prevProps","reattachNeeded","_updateFromNative","setNativeProps","prevStyles","prevAnimatedProps","_animatedProps","viewName","hostInstance","RNRenderer","findHostInstance_DEPRECATED","Error","_nativeTag","viewConfig","uiViewClassName","hasReanimated2Props","length","adaptViewConfig","hasOneSameStyle","prevStyle","isPresent","some","add","name","initial","componentDidUpdate","_filterNonAnimatedProps","inputProps","styleProp","processedStyle","map","_isFirstRender","initialStyle","initialUpdaterRun","updater","StyleSheet","flatten","animatedProp","Object","keys","eventNames","eventName","listeners","isChromeDebugger","render","platformProps","select","web","default","collapsable","_setComponentRef","displayName","forwardRef"],"sources":["createAnimatedComponent.tsx"],"sourcesContent":["import React, { Component, ComponentType, MutableRefObject, Ref } from 'react';\nimport { findNodeHandle, Platform, StyleSheet } from 'react-native';\nimport WorkletEventHandler from './reanimated2/WorkletEventHandler';\nimport setAndForwardRef from './setAndForwardRef';\nimport './reanimated2/layoutReanimation/LayoutAnimationRepository';\nimport invariant from 'invariant';\nimport { adaptViewConfig } from './ConfigHelper';\nimport { RNRenderer } from './reanimated2/platform-specific/RNRenderer';\nimport {\n makeMutable,\n configureLayoutAnimations,\n enableLayoutAnimations,\n runOnUI,\n} from './reanimated2/core';\nimport {\n isJest,\n isChromeDebugger,\n shouldBeUseWeb,\n} from './reanimated2/PlatformChecker';\nimport { initialUpdaterRun } from './reanimated2/animation';\nimport {\n BaseAnimationBuilder,\n EntryExitAnimationFunction,\n ILayoutAnimationBuilder,\n LayoutAnimationFunction,\n} from './reanimated2/layoutReanimation';\nimport {\n SharedValue,\n StyleProps,\n ShadowNodeWrapper,\n} from './reanimated2/commonTypes';\nimport {\n ViewDescriptorsSet,\n ViewRefSet,\n} from './reanimated2/ViewDescriptorsSet';\nimport { getShadowNodeWrapperFromRef } from './reanimated2/fabricUtils';\n\nfunction dummyListener() {\n // empty listener we use to assign to listener properties for which animated\n // event is used.\n}\n\nfunction maybeBuild(\n layoutAnimationOrBuilder:\n | ILayoutAnimationBuilder\n | LayoutAnimationFunction\n | Keyframe\n): LayoutAnimationFunction | Keyframe {\n const isAnimationBuilder = (\n value: ILayoutAnimationBuilder | LayoutAnimationFunction | Keyframe\n ): value is ILayoutAnimationBuilder =>\n 'build' in layoutAnimationOrBuilder &&\n typeof layoutAnimationOrBuilder.build === 'function';\n\n if (isAnimationBuilder(layoutAnimationOrBuilder)) {\n return layoutAnimationOrBuilder.build();\n } else {\n return layoutAnimationOrBuilder;\n }\n}\n\ntype NestedArray<T> = T | NestedArray<T>[];\nfunction flattenArray<T>(array: NestedArray<T>): T[] {\n if (!Array.isArray(array)) {\n return [array];\n }\n const resultArr: T[] = [];\n\n const _flattenArray = (arr: NestedArray<T>[]): void => {\n arr.forEach((item) => {\n if (Array.isArray(item)) {\n _flattenArray(item);\n } else {\n resultArr.push(item);\n }\n });\n };\n _flattenArray(array);\n return resultArr;\n}\n\nfunction onlyAnimatedStyles(styles: StyleProps[]) {\n return styles.filter((style) => style?.viewDescriptors);\n}\n\nfunction isSameAnimatedStyle(\n style1?: StyleProps,\n style2?: StyleProps\n): boolean {\n // We cannot use equality check to compare useAnimatedStyle outputs directly.\n // Instead, we can compare its viewsRefs.\n return style1?.viewsRef === style2?.viewsRef;\n}\n\nconst isSameAnimatedProps = isSameAnimatedStyle;\n\nconst has = <K extends string>(\n key: K,\n x: unknown\n): x is { [key in K]: unknown } => {\n if (typeof x === 'function' || typeof x === 'object') {\n if (x === null || x === undefined) {\n return false;\n } else {\n return key in x;\n }\n }\n return false;\n};\n\ninterface AnimatedProps extends Record<string, unknown> {\n viewDescriptors?: ViewDescriptorsSet;\n viewsRef?: ViewRefSet<unknown>;\n initial?: SharedValue<StyleProps>;\n}\n\nexport type AnimatedComponentProps<P extends Record<string, unknown>> = P & {\n forwardedRef?: Ref<Component>;\n style?: NestedArray<StyleProps>;\n animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n animatedStyle?: StyleProps;\n layout?:\n | BaseAnimationBuilder\n | ILayoutAnimationBuilder\n | typeof BaseAnimationBuilder;\n entering?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n exiting?:\n | BaseAnimationBuilder\n | typeof BaseAnimationBuilder\n | EntryExitAnimationFunction\n | Keyframe;\n};\n\ntype Options<P> = {\n setNativeProps: (ref: ComponentRef, props: P) => void;\n};\n\ninterface ComponentRef extends Component {\n setNativeProps?: (props: Record<string, unknown>) => void;\n getScrollableNode?: () => ComponentRef;\n}\n\nexport interface InitialComponentProps extends Record<string, unknown> {\n ref?: Ref<Component>;\n collapsable?: boolean;\n}\n\nexport default function createAnimatedComponent(\n Component: ComponentType<InitialComponentProps>,\n options?: Options<InitialComponentProps>\n): ComponentType<AnimatedComponentProps<InitialComponentProps>> {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.'\n );\n\n class AnimatedComponent extends React.Component<\n AnimatedComponentProps<InitialComponentProps>\n > {\n _styles: StyleProps[] | null = null;\n _animatedProps?: Partial<AnimatedComponentProps<AnimatedProps>>;\n _viewTag = -1;\n _isFirstRender = true;\n animatedStyle: { value: StyleProps } = { value: {} };\n initialStyle = {};\n sv: SharedValue<null | Record<string, unknown>> | null;\n _component: ComponentRef | null = null;\n static displayName: string;\n\n constructor(props: AnimatedComponentProps<InitialComponentProps>) {\n super(props);\n if (isJest()) {\n this.animatedStyle = { value: {} };\n }\n this.sv = makeMutable({});\n }\n\n componentWillUnmount() {\n this._detachNativeEvents();\n this._detachStyles();\n this.sv = null;\n }\n\n componentDidMount() {\n this._attachNativeEvents();\n this._attachAnimatedStyles();\n }\n\n _attachNativeEvents() {\n const viewTag = findNodeHandle(this);\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.registerForEvents(viewTag as number, key);\n }\n }\n }\n\n _detachNativeEvents() {\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n }\n\n _detachStyles() {\n if (Platform.OS === 'web' && this._styles !== null) {\n for (const style of this._styles) {\n if (style?.viewsRef) {\n style.viewsRef.remove(this);\n }\n }\n } else if (this._viewTag !== -1 && this._styles !== null) {\n for (const style of this._styles) {\n style.viewDescriptors.remove(this._viewTag);\n }\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.remove(this._viewTag);\n }\n if (global._IS_FABRIC) {\n const shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n runOnUI(() => {\n 'worklet';\n _removeShadowNodeFromRegistry(shadowNodeWrapper);\n })();\n }\n }\n }\n\n _reattachNativeEvents(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n let viewTag: number | undefined;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler\n ) {\n if (viewTag === undefined) {\n viewTag = prop.current.viewTag;\n }\n }\n }\n for (const key in prevProps) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n prop.current.unregisterFromEvents();\n }\n }\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (\n has('current', prop) &&\n prop.current instanceof WorkletEventHandler &&\n prop.current.reattachNeeded\n ) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n prop.current.registerForEvents(viewTag!, key);\n prop.current.reattachNeeded = false;\n }\n }\n }\n\n _updateFromNative(props: StyleProps) {\n if (options?.setNativeProps) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n options.setNativeProps(this._component!, props);\n } else {\n // eslint-disable-next-line no-unused-expressions\n this._component?.setNativeProps?.(props);\n }\n }\n\n _attachAnimatedStyles() {\n const styles = this.props.style\n ? onlyAnimatedStyles(flattenArray<StyleProps>(this.props.style))\n : [];\n const prevStyles = this._styles;\n this._styles = styles;\n\n const prevAnimatedProps = this._animatedProps;\n this._animatedProps = this.props.animatedProps;\n\n let viewTag: number | null;\n let viewName: string | null;\n let shadowNodeWrapper: ShadowNodeWrapper | null = null;\n if (Platform.OS === 'web') {\n viewTag = findNodeHandle(this);\n viewName = null;\n shadowNodeWrapper = null;\n } else {\n // hostInstance can be null for a component that doesn't render anything (render function returns null). Example: svg Stop: https://github.com/react-native-svg/react-native-svg/blob/develop/src/elements/Stop.tsx\n const hostInstance = RNRenderer.findHostInstance_DEPRECATED(this);\n if (!hostInstance) {\n throw new Error(\n 'Cannot find host instance for this component. Maybe it renders nothing?'\n );\n }\n // we can access view tag in the same way it's accessed here https://github.com/facebook/react/blob/e3f4eb7272d4ca0ee49f27577156b57eeb07cf73/packages/react-native-renderer/src/ReactFabric.js#L146\n viewTag = hostInstance?._nativeTag;\n /**\n * RN uses viewConfig for components for storing different properties of the component(example: https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/ScrollViewViewConfig.js#L16).\n * The name we're looking for is in the field named uiViewClassName.\n */\n viewName = hostInstance?.viewConfig?.uiViewClassName;\n // update UI props whitelist for this view\n const hasReanimated2Props =\n this.props.animatedProps?.viewDescriptors || styles.length;\n if (hasReanimated2Props && hostInstance?.viewConfig) {\n adaptViewConfig(hostInstance.viewConfig);\n }\n\n if (global._IS_FABRIC) {\n shadowNodeWrapper = getShadowNodeWrapperFromRef(this);\n }\n }\n this._viewTag = viewTag as number;\n\n // remove old styles\n if (prevStyles) {\n // in most of the cases, views have only a single animated style and it remains unchanged\n const hasOneSameStyle =\n styles.length === 1 &&\n prevStyles.length === 1 &&\n isSameAnimatedStyle(styles[0], prevStyles[0]);\n\n if (!hasOneSameStyle) {\n // otherwise, remove each style that is not present in new styles\n for (const prevStyle of prevStyles) {\n const isPresent = styles.some((style) =>\n isSameAnimatedStyle(style, prevStyle)\n );\n if (!isPresent) {\n prevStyle.viewDescriptors.remove(viewTag);\n }\n }\n }\n }\n\n styles.forEach((style) => {\n style.viewDescriptors.add({\n tag: viewTag,\n name: viewName,\n shadowNodeWrapper,\n });\n if (isJest()) {\n /**\n * We need to connect Jest's TestObject instance whose contains just props object\n * with the updateProps() function where we update the properties of the component.\n * We can't update props object directly because TestObject contains a copy of props - look at render function:\n * const props = this._filterNonAnimatedProps(this.props);\n */\n this.animatedStyle.value = {\n ...this.animatedStyle.value,\n ...style.initial.value,\n };\n style.animatedStyle.current = this.animatedStyle;\n }\n });\n\n // detach old animatedProps\n if (\n prevAnimatedProps &&\n !isSameAnimatedProps(prevAnimatedProps, this.props.animatedProps)\n ) {\n prevAnimatedProps.viewDescriptors!.remove(viewTag as number);\n }\n\n // attach animatedProps property\n if (this.props.animatedProps?.viewDescriptors) {\n this.props.animatedProps.viewDescriptors.add({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n tag: viewTag!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n name: viewName!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n shadowNodeWrapper: shadowNodeWrapper!,\n });\n }\n }\n\n componentDidUpdate(\n prevProps: AnimatedComponentProps<InitialComponentProps>\n ) {\n this._reattachNativeEvents(prevProps);\n this._attachAnimatedStyles();\n }\n\n _setComponentRef = setAndForwardRef<Component>({\n getForwardedRef: () =>\n this.props.forwardedRef as MutableRefObject<\n Component<Record<string, unknown>, Record<string, unknown>, unknown>\n >,\n setLocalRef: (ref) => {\n // TODO update config\n const tag = findNodeHandle(ref);\n const { layout, entering, exiting } = this.props;\n if ((layout || entering || exiting) && tag != null) {\n if (!shouldBeUseWeb()) {\n enableLayoutAnimations(true, false);\n }\n if (layout) {\n configureLayoutAnimations(\n tag,\n 'layout',\n maybeBuild(layout),\n this.sv\n );\n }\n if (entering) {\n configureLayoutAnimations(\n tag,\n 'entering',\n maybeBuild(entering),\n this.sv\n );\n }\n if (exiting) {\n configureLayoutAnimations(\n tag,\n 'exiting',\n maybeBuild(exiting),\n this.sv\n );\n }\n }\n\n if (ref !== this._component) {\n this._component = ref;\n }\n },\n });\n\n _filterNonAnimatedProps(\n inputProps: AnimatedComponentProps<InitialComponentProps>\n ): Record<string, unknown> {\n const props: Record<string, unknown> = {};\n for (const key in inputProps) {\n const value = inputProps[key];\n if (key === 'style') {\n const styleProp = inputProps.style;\n const styles = flattenArray<StyleProps>(styleProp ?? []);\n const processedStyle: StyleProps = styles.map((style) => {\n if (style && style.viewDescriptors) {\n // this is how we recognize styles returned by useAnimatedStyle\n style.viewsRef.add(this);\n if (this._isFirstRender) {\n this.initialStyle = {\n ...style.initial.value,\n ...initialUpdaterRun<StyleProps>(style.initial.updater),\n };\n }\n return this.initialStyle;\n } else {\n return style;\n }\n });\n props[key] = StyleSheet.flatten(processedStyle);\n } else if (key === 'animatedProps') {\n const animatedProp = inputProps.animatedProps as Partial<\n AnimatedComponentProps<AnimatedProps>\n >;\n if (animatedProp.initial !== undefined) {\n Object.keys(animatedProp.initial.value).forEach((key) => {\n props[key] = animatedProp.initial?.value[key];\n animatedProp.viewsRef?.add(this);\n });\n }\n } else if (\n has('current', value) &&\n value.current instanceof WorkletEventHandler\n ) {\n if (value.current.eventNames.length > 0) {\n value.current.eventNames.forEach((eventName) => {\n props[eventName] = has('listeners', value.current)\n ? (value.current.listeners as Record<string, unknown>)[\n eventName\n ]\n : dummyListener;\n });\n } else {\n props[key] = dummyListener;\n }\n } else if (\n key !== 'onGestureHandlerStateChange' ||\n !isChromeDebugger()\n ) {\n props[key] = value;\n }\n }\n return props;\n }\n\n render() {\n const props = this._filterNonAnimatedProps(this.props);\n if (isJest()) {\n props.animatedStyle = this.animatedStyle;\n }\n\n if (this._isFirstRender) {\n this._isFirstRender = false;\n }\n\n const platformProps = Platform.select({\n web: {},\n default: { collapsable: false },\n });\n return (\n <Component {...props} ref={this._setComponentRef} {...platformProps} />\n );\n }\n }\n\n AnimatedComponent.displayName = `AnimatedComponent(${\n Component.displayName || Component.name || 'Component'\n })`;\n\n return React.forwardRef<Component>((props, ref) => {\n return (\n <AnimatedComponent\n {...props}\n {...(ref === null ? null : { forwardedRef: ref })}\n />\n );\n });\n}\n"],"mappings":"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"}
@@ -77,6 +77,10 @@ class NativeReanimated {
77
77
  return this.InnerNativeModule.getViewProp(viewTag, propName, callback);
78
78
  }
79
79
 
80
+ configureLayoutAnimation(viewTag, type, config, viewSharedValue) {
81
+ this.InnerNativeModule.configureLayoutAnimation(viewTag, type, config, viewSharedValue);
82
+ }
83
+
80
84
  enableLayoutAnimations(flag) {
81
85
  this.InnerNativeModule.enableLayoutAnimations(flag);
82
86
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeReanimated","constructor","native","global","__reanimatedModuleProxy","undefined","ReanimatedModule","NativeModules","installTurboModule","InnerNativeModule","installCoreFunctions","valueSetter","makeShareable","value","makeMutable","makeRemote","object","registerSensor","sensorType","interval","sensorData","unregisterSensor","sensorId","startMapper","mapper","inputs","outputs","updater","viewDescriptors","stopMapper","mapperId","registerEventHandler","eventHash","eventHandler","unregisterEventHandler","id","getViewProp","viewTag","propName","callback","enableLayoutAnimations","flag","configureProps","uiProps","nativeProps","subscribeForKeyboardEvents","keyboardEventData","unsubscribeFromKeyboardEvents","listenerId"],"sources":["NativeReanimated.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n SharedValue,\n SensorValue3D,\n SensorValueRotation,\n AnimatedKeyboardInfo,\n} from '../commonTypes';\nimport { Descriptor } from '../hook/commonTypes';\n\nexport class NativeReanimated {\n native: boolean;\n private InnerNativeModule: any;\n\n constructor(native = true) {\n if (global.__reanimatedModuleProxy === undefined && native) {\n const { ReanimatedModule } = NativeModules;\n ReanimatedModule?.installTurboModule();\n }\n this.InnerNativeModule = global.__reanimatedModuleProxy;\n this.native = native;\n }\n\n installCoreFunctions(valueSetter: <T>(value: T) => void): void {\n return this.InnerNativeModule.installCoreFunctions(valueSetter);\n }\n\n makeShareable<T>(value: T): T {\n return this.InnerNativeModule.makeShareable(value);\n }\n\n makeMutable<T>(value: T): SharedValue<T> {\n return this.InnerNativeModule.makeMutable(value);\n }\n\n makeRemote<T>(object = {}): T {\n return this.InnerNativeModule.makeRemote(object);\n }\n\n registerSensor(\n sensorType: number,\n interval: number,\n sensorData: SensorValue3D | SensorValueRotation\n ) {\n return this.InnerNativeModule.registerSensor(\n sensorType,\n interval,\n sensorData\n );\n }\n\n unregisterSensor(sensorId: number) {\n return this.InnerNativeModule.unregisterSensor(sensorId);\n }\n\n startMapper(\n mapper: () => void,\n inputs: any[] = [],\n outputs: any[] = [],\n updater: () => void,\n viewDescriptors: Descriptor[] | SharedValue<Descriptor[]>\n ): number {\n return this.InnerNativeModule.startMapper(\n mapper,\n inputs,\n outputs,\n updater,\n viewDescriptors\n );\n }\n\n stopMapper(mapperId: number): void {\n return this.InnerNativeModule.stopMapper(mapperId);\n }\n\n registerEventHandler<T>(\n eventHash: string,\n eventHandler: (event: T) => void\n ): string {\n return this.InnerNativeModule.registerEventHandler(eventHash, eventHandler);\n }\n\n unregisterEventHandler(id: string): void {\n return this.InnerNativeModule.unregisterEventHandler(id);\n }\n\n getViewProp<T>(\n viewTag: string,\n propName: string,\n callback?: (result: T) => void\n ): Promise<T> {\n return this.InnerNativeModule.getViewProp(viewTag, propName, callback);\n }\n\n enableLayoutAnimations(flag: boolean): void {\n this.InnerNativeModule.enableLayoutAnimations(flag);\n }\n\n configureProps(uiProps: string[], nativeProps: string[]): void {\n this.InnerNativeModule.configureProps(uiProps, nativeProps);\n }\n\n subscribeForKeyboardEvents(keyboardEventData: AnimatedKeyboardInfo): number {\n return this.InnerNativeModule.subscribeForKeyboardEvents(keyboardEventData);\n }\n\n unsubscribeFromKeyboardEvents(listenerId: number): void {\n this.InnerNativeModule.unsubscribeFromKeyboardEvents(listenerId);\n }\n}\n"],"mappings":";;;;;;;AAAA;;;;AASO,MAAMA,gBAAN,CAAuB;EAI5BC,WAAW,GAAgB;IAAA,IAAfC,MAAe,uEAAN,IAAM;;IAAA;;IAAA;;IACzB,IAAIC,MAAM,CAACC,uBAAP,KAAmCC,SAAnC,IAAgDH,MAApD,EAA4D;MAC1D,MAAM;QAAEI;MAAF,IAAuBC,0BAA7B;MACAD,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAEE,kBAAlB;IACD;;IACD,KAAKC,iBAAL,GAAyBN,MAAM,CAACC,uBAAhC;IACA,KAAKF,MAAL,GAAcA,MAAd;EACD;;EAEDQ,oBAAoB,CAACC,WAAD,EAA2C;IAC7D,OAAO,KAAKF,iBAAL,CAAuBC,oBAAvB,CAA4CC,WAA5C,CAAP;EACD;;EAEDC,aAAa,CAAIC,KAAJ,EAAiB;IAC5B,OAAO,KAAKJ,iBAAL,CAAuBG,aAAvB,CAAqCC,KAArC,CAAP;EACD;;EAEDC,WAAW,CAAID,KAAJ,EAA8B;IACvC,OAAO,KAAKJ,iBAAL,CAAuBK,WAAvB,CAAmCD,KAAnC,CAAP;EACD;;EAEDE,UAAU,GAAoB;IAAA,IAAhBC,MAAgB,uEAAP,EAAO;IAC5B,OAAO,KAAKP,iBAAL,CAAuBM,UAAvB,CAAkCC,MAAlC,CAAP;EACD;;EAEDC,cAAc,CACZC,UADY,EAEZC,QAFY,EAGZC,UAHY,EAIZ;IACA,OAAO,KAAKX,iBAAL,CAAuBQ,cAAvB,CACLC,UADK,EAELC,QAFK,EAGLC,UAHK,CAAP;EAKD;;EAEDC,gBAAgB,CAACC,QAAD,EAAmB;IACjC,OAAO,KAAKb,iBAAL,CAAuBY,gBAAvB,CAAwCC,QAAxC,CAAP;EACD;;EAEDC,WAAW,CACTC,MADS,EAMD;IAAA,IAJRC,MAIQ,uEAJQ,EAIR;IAAA,IAHRC,OAGQ,uEAHS,EAGT;IAAA,IAFRC,OAEQ;IAAA,IADRC,eACQ;IACR,OAAO,KAAKnB,iBAAL,CAAuBc,WAAvB,CACLC,MADK,EAELC,MAFK,EAGLC,OAHK,EAILC,OAJK,EAKLC,eALK,CAAP;EAOD;;EAEDC,UAAU,CAACC,QAAD,EAAyB;IACjC,OAAO,KAAKrB,iBAAL,CAAuBoB,UAAvB,CAAkCC,QAAlC,CAAP;EACD;;EAEDC,oBAAoB,CAClBC,SADkB,EAElBC,YAFkB,EAGV;IACR,OAAO,KAAKxB,iBAAL,CAAuBsB,oBAAvB,CAA4CC,SAA5C,EAAuDC,YAAvD,CAAP;EACD;;EAEDC,sBAAsB,CAACC,EAAD,EAAmB;IACvC,OAAO,KAAK1B,iBAAL,CAAuByB,sBAAvB,CAA8CC,EAA9C,CAAP;EACD;;EAEDC,WAAW,CACTC,OADS,EAETC,QAFS,EAGTC,QAHS,EAIG;IACZ,OAAO,KAAK9B,iBAAL,CAAuB2B,WAAvB,CAAmCC,OAAnC,EAA4CC,QAA5C,EAAsDC,QAAtD,CAAP;EACD;;EAEDC,sBAAsB,CAACC,IAAD,EAAsB;IAC1C,KAAKhC,iBAAL,CAAuB+B,sBAAvB,CAA8CC,IAA9C;EACD;;EAEDC,cAAc,CAACC,OAAD,EAAoBC,WAApB,EAAiD;IAC7D,KAAKnC,iBAAL,CAAuBiC,cAAvB,CAAsCC,OAAtC,EAA+CC,WAA/C;EACD;;EAEDC,0BAA0B,CAACC,iBAAD,EAAkD;IAC1E,OAAO,KAAKrC,iBAAL,CAAuBoC,0BAAvB,CAAkDC,iBAAlD,CAAP;EACD;;EAEDC,6BAA6B,CAACC,UAAD,EAA2B;IACtD,KAAKvC,iBAAL,CAAuBsC,6BAAvB,CAAqDC,UAArD;EACD;;AAlG2B"}
1
+ {"version":3,"names":["NativeReanimated","constructor","native","global","__reanimatedModuleProxy","undefined","ReanimatedModule","NativeModules","installTurboModule","InnerNativeModule","installCoreFunctions","valueSetter","makeShareable","value","makeMutable","makeRemote","object","registerSensor","sensorType","interval","sensorData","unregisterSensor","sensorId","startMapper","mapper","inputs","outputs","updater","viewDescriptors","stopMapper","mapperId","registerEventHandler","eventHash","eventHandler","unregisterEventHandler","id","getViewProp","viewTag","propName","callback","configureLayoutAnimation","type","config","viewSharedValue","enableLayoutAnimations","flag","configureProps","uiProps","nativeProps","subscribeForKeyboardEvents","keyboardEventData","unsubscribeFromKeyboardEvents","listenerId"],"sources":["NativeReanimated.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport {\n SharedValue,\n SensorValue3D,\n SensorValueRotation,\n AnimatedKeyboardInfo,\n} from '../commonTypes';\nimport { Descriptor } from '../hook/commonTypes';\nimport { LayoutAnimationFunction } from '../layoutReanimation';\n\nexport class NativeReanimated {\n native: boolean;\n private InnerNativeModule: any;\n\n constructor(native = true) {\n if (global.__reanimatedModuleProxy === undefined && native) {\n const { ReanimatedModule } = NativeModules;\n ReanimatedModule?.installTurboModule();\n }\n this.InnerNativeModule = global.__reanimatedModuleProxy;\n this.native = native;\n }\n\n installCoreFunctions(valueSetter: <T>(value: T) => void): void {\n return this.InnerNativeModule.installCoreFunctions(valueSetter);\n }\n\n makeShareable<T>(value: T): T {\n return this.InnerNativeModule.makeShareable(value);\n }\n\n makeMutable<T>(value: T): SharedValue<T> {\n return this.InnerNativeModule.makeMutable(value);\n }\n\n makeRemote<T>(object = {}): T {\n return this.InnerNativeModule.makeRemote(object);\n }\n\n registerSensor(\n sensorType: number,\n interval: number,\n sensorData: SensorValue3D | SensorValueRotation\n ) {\n return this.InnerNativeModule.registerSensor(\n sensorType,\n interval,\n sensorData\n );\n }\n\n unregisterSensor(sensorId: number) {\n return this.InnerNativeModule.unregisterSensor(sensorId);\n }\n\n startMapper(\n mapper: () => void,\n inputs: any[] = [],\n outputs: any[] = [],\n updater: () => void,\n viewDescriptors: Descriptor[] | SharedValue<Descriptor[]>\n ): number {\n return this.InnerNativeModule.startMapper(\n mapper,\n inputs,\n outputs,\n updater,\n viewDescriptors\n );\n }\n\n stopMapper(mapperId: number): void {\n return this.InnerNativeModule.stopMapper(mapperId);\n }\n\n registerEventHandler<T>(\n eventHash: string,\n eventHandler: (event: T) => void\n ): string {\n return this.InnerNativeModule.registerEventHandler(eventHash, eventHandler);\n }\n\n unregisterEventHandler(id: string): void {\n return this.InnerNativeModule.unregisterEventHandler(id);\n }\n\n getViewProp<T>(\n viewTag: string,\n propName: string,\n callback?: (result: T) => void\n ): Promise<T> {\n return this.InnerNativeModule.getViewProp(viewTag, propName, callback);\n }\n\n configureLayoutAnimation(\n viewTag: number,\n type: string,\n config: Keyframe | LayoutAnimationFunction,\n viewSharedValue: SharedValue<null | Record<string, unknown>> | null\n ) {\n this.InnerNativeModule.configureLayoutAnimation(\n viewTag,\n type,\n config,\n viewSharedValue\n );\n }\n\n enableLayoutAnimations(flag: boolean): void {\n this.InnerNativeModule.enableLayoutAnimations(flag);\n }\n\n configureProps(uiProps: string[], nativeProps: string[]): void {\n this.InnerNativeModule.configureProps(uiProps, nativeProps);\n }\n\n subscribeForKeyboardEvents(keyboardEventData: AnimatedKeyboardInfo): number {\n return this.InnerNativeModule.subscribeForKeyboardEvents(keyboardEventData);\n }\n\n unsubscribeFromKeyboardEvents(listenerId: number): void {\n this.InnerNativeModule.unsubscribeFromKeyboardEvents(listenerId);\n }\n}\n"],"mappings":"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"}
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.checkPluginState = void 0;
7
+ exports.configureLayoutAnimations = configureLayoutAnimations;
7
8
  exports.configureProps = configureProps;
8
9
  exports.enableLayoutAnimations = enableLayoutAnimations;
9
10
  exports.getTimestamp = getTimestamp;
@@ -174,7 +175,8 @@ function workletValueSetter(value) {
174
175
  animation.onStart(animation, this.value, timestamp, previousAnimation);
175
176
  };
176
177
 
177
- initializeAnimation(getTimestamp());
178
+ const currentTimestamp = getTimestamp();
179
+ initializeAnimation(currentTimestamp);
178
180
 
179
181
  const step = timestamp => {
180
182
  if (animation.cancelled) {
@@ -199,13 +201,7 @@ function workletValueSetter(value) {
199
201
  };
200
202
 
201
203
  this._animation = animation;
202
-
203
- if (_frameTimestamp) {
204
- // frame
205
- step(_frameTimestamp);
206
- } else {
207
- requestAnimationFrame(step);
208
- }
204
+ step(currentTimestamp);
209
205
  } else {
210
206
  // prevent setting again to the same value
211
207
  // and triggering the mappers that treat this value as an input
@@ -262,7 +258,7 @@ function workletValueSetterJS(value) {
262
258
  };
263
259
 
264
260
  this._animation = animation;
265
- requestFrame(step);
261
+ step(getTimestamp());
266
262
  } else {
267
263
  this._setValue && this._setValue(value);
268
264
  }
@@ -348,6 +344,10 @@ function enableLayoutAnimations(flag) {
348
344
  }
349
345
  }
350
346
 
347
+ function configureLayoutAnimations(viewTag, type, config, viewSharedValue) {
348
+ _NativeReanimated.default.configureLayoutAnimation(viewTag, type, config, viewSharedValue);
349
+ }
350
+
351
351
  function configureProps(uiProps, nativeProps) {
352
352
  if (!(0, _PlatformChecker.nativeShouldBeMock)()) {
353
353
  _NativeReanimated.default.configureProps(uiProps, nativeProps);
@@ -1 +1 @@
1
- {"version":3,"names":["global","_setGlobalConsole","undefined","testWorklet","throwUninitializedReanimatedException","Error","checkPluginState","throwError","__workletHash","shouldBeUseWeb","isConfigured","isConfiguredCheck","pushFrame","frame","NativeReanimatedModule","requestFrame","native","requestAnimationFrame","_WORKLET","_log","s","console","log","runOnUI","worklet","makeShareable","value","getViewProp","viewTag","propName","_IS_FABRIC","Promise","resolve","reject","result","substr","_getTimestamp","nativeShouldBeMock","getTimestamp","_frameTimestamp","_eventTimestamp","_getCurrentTime","Platform","OS","workletValueSetter","previousAnimation","_animation","cancelled","onFrame","animation","_value","current","isHigherOrder","callback","initializeAnimation","timestamp","onStart","step","finished","workletValueSetterJS","_setValue","makeMutable","makeRemote","object","startMapper","mapper","inputs","outputs","updater","viewDescriptors","stopMapper","mapperId","runOnJS","fun","__callAsync","installCoreFunctions","isWeb","capturableConsole","debug","warn","error","info","featuresConfig","enableLayoutAnimations","setByUser","flag","isCallByUser","configureProps","uiProps","nativeProps","jestResetJsReanimatedModule","jestResetModule"],"sources":["core.ts"],"sourcesContent":["/* global _WORKLET _getCurrentTime _frameTimestamp _eventTimestamp _setGlobalConsole */\nimport NativeReanimatedModule from './NativeReanimated';\nimport { Platform } from 'react-native';\nimport { nativeShouldBeMock, shouldBeUseWeb, isWeb } from './PlatformChecker';\nimport {\n BasicWorkletFunction,\n ComplexWorkletFunction,\n SharedValue,\n AnimationObject,\n AnimatableValue,\n Timestamp,\n} from './commonTypes';\nimport { Descriptor } from './hook/commonTypes';\nimport JSReanimated from './js-reanimated/JSReanimated';\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\nexport type WorkletValue =\n | (() => AnimationObject)\n | AnimationObject\n | AnimatableValue\n | Descriptor;\ninterface WorkletValueSetterContext {\n _animation?: AnimationObject | null;\n _value?: AnimatableValue | Descriptor;\n value?: AnimatableValue;\n _setValue?: (val: AnimatableValue | Descriptor) => void;\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\nfunction pushFrame(frame: (timestamp: Timestamp) => void): void {\n (NativeReanimatedModule as JSReanimated).pushFrame(frame);\n}\n\nexport function requestFrame(frame: (timestamp: Timestamp) => void): void {\n 'worklet';\n if (NativeReanimatedModule.native) {\n requestAnimationFrame(frame);\n } else {\n pushFrame(frame);\n }\n}\n\nglobal._WORKLET = false;\nglobal._log = function (s: string) {\n console.log(s);\n};\n\nexport function runOnUI<A extends any[], R>(\n worklet: ComplexWorkletFunction<A, R>\n): (...args: A) => void {\n return makeShareable(worklet);\n}\n\nexport function makeShareable<T>(value: T): T {\n isConfiguredCheck();\n return NativeReanimatedModule.makeShareable(value);\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\nlet _getTimestamp: () => number;\nif (nativeShouldBeMock()) {\n _getTimestamp = () => {\n return (NativeReanimatedModule as JSReanimated).getTimestamp();\n };\n} else {\n _getTimestamp = () => {\n 'worklet';\n if (_frameTimestamp) {\n return _frameTimestamp;\n }\n if (_eventTimestamp) {\n return _eventTimestamp;\n }\n return _getCurrentTime();\n };\n}\n\nexport function getTimestamp(): number {\n 'worklet';\n if (Platform.OS === 'web') {\n return (NativeReanimatedModule as JSReanimated).getTimestamp();\n }\n return _getTimestamp();\n}\n\nfunction workletValueSetter<T extends WorkletValue>(\n this: WorkletValueSetterContext,\n value: T\n): void {\n 'worklet';\n const previousAnimation = this._animation;\n if (previousAnimation) {\n previousAnimation.cancelled = true;\n this._animation = null;\n }\n if (\n typeof value === 'function' ||\n (value !== null &&\n typeof value === 'object' &&\n (value as AnimationObject).onFrame !== undefined)\n ) {\n const animation: AnimationObject =\n typeof value === 'function'\n ? (value as () => AnimationObject)()\n : (value as AnimationObject);\n // prevent setting again to the same value\n // and triggering the mappers that treat this value as an input\n // this happens when the animation's target value(stored in animation.current until animation.onStart is called) is set to the same value as a current one(this._value)\n // built in animations that are not higher order(withTiming, withSpring) hold target value in .current\n if (this._value === animation.current && !animation.isHigherOrder) {\n animation.callback && animation.callback(true);\n return;\n }\n // animated set\n const initializeAnimation = (timestamp: number) => {\n animation.onStart(animation, this.value, timestamp, previousAnimation);\n };\n initializeAnimation(getTimestamp());\n const step = (timestamp: number) => {\n if (animation.cancelled) {\n animation.callback && animation.callback(false /* finished */);\n return;\n }\n const finished = animation.onFrame(animation, timestamp);\n animation.finished = true;\n animation.timestamp = timestamp;\n this._value = animation.current;\n if (finished) {\n animation.callback && animation.callback(true /* finished */);\n } else {\n requestAnimationFrame(step);\n }\n };\n\n this._animation = animation;\n\n if (_frameTimestamp) {\n // frame\n step(_frameTimestamp);\n } else {\n requestAnimationFrame(step);\n }\n } else {\n // prevent setting again to the same value\n // and triggering the mappers that treat this value as an input\n if (this._value === value) {\n return;\n }\n this._value = value as Descriptor | AnimatableValue;\n }\n}\n\n// We cannot use pushFrame\n// so we use own implementation for js\nfunction workletValueSetterJS<T extends WorkletValue>(\n this: WorkletValueSetterContext,\n value: T\n): void {\n const previousAnimation = this._animation;\n if (previousAnimation) {\n previousAnimation.cancelled = true;\n this._animation = null;\n }\n if (\n typeof value === 'function' ||\n (value !== null &&\n typeof value === 'object' &&\n (value as AnimationObject).onFrame)\n ) {\n // animated set\n const animation: AnimationObject =\n typeof value === 'function'\n ? (value as () => AnimationObject)()\n : (value as AnimationObject);\n let initializeAnimation: ((timestamp: number) => void) | null = (\n timestamp: number\n ) => {\n animation.onStart(animation, this.value, timestamp, previousAnimation);\n };\n const step = (timestamp: number) => {\n if (animation.cancelled) {\n animation.callback && animation.callback(false /* finished */);\n return;\n }\n if (initializeAnimation) {\n initializeAnimation(timestamp);\n initializeAnimation = null; // prevent closure from keeping ref to previous animation\n }\n const finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n this._setValue && this._setValue(animation.current as AnimatableValue);\n if (finished) {\n animation.callback && animation.callback(true /* finished */);\n } else {\n requestFrame(step);\n }\n };\n\n this._animation = animation;\n\n requestFrame(step);\n } else {\n this._setValue && this._setValue(value as AnimatableValue | Descriptor);\n }\n}\n\nexport function makeMutable<T>(value: T): SharedValue<T> {\n isConfiguredCheck();\n return NativeReanimatedModule.makeMutable(value);\n}\n\nexport function makeRemote<T>(object = {}): T {\n isConfiguredCheck();\n return NativeReanimatedModule.makeRemote(object);\n}\n\nexport function startMapper(\n mapper: () => void,\n inputs: any[] = [],\n outputs: any[] = [],\n updater: () => void = () => {\n // noop\n },\n viewDescriptors: Descriptor[] | SharedValue<Descriptor[]> = []\n): number {\n isConfiguredCheck();\n return NativeReanimatedModule.startMapper(\n mapper,\n inputs,\n outputs,\n updater,\n viewDescriptors\n );\n}\n\nexport function stopMapper(mapperId: number): void {\n NativeReanimatedModule.stopMapper(mapperId);\n}\n\nexport interface RunOnJSFunction<A extends any[], R> {\n __callAsync?: (...args: A) => void;\n (...args: A): R;\n}\n\nexport function runOnJS<A extends any[], R>(\n fun: RunOnJSFunction<A, R>\n): () => void {\n 'worklet';\n if (!_WORKLET) {\n return fun;\n }\n if (!fun.__callAsync) {\n throw new Error(\n \"Attempting to call runOnJS with an object that is not a host function. Using runOnJS is only possible with methods that are defined on the main React-Native Javascript thread and that aren't marked as worklets\"\n );\n } else {\n return fun.__callAsync;\n }\n}\n\nNativeReanimatedModule.installCoreFunctions(\n NativeReanimatedModule.native\n ? (workletValueSetter as <T>(value: T) => void)\n : (workletValueSetterJS as <T>(value: T) => void)\n);\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 configureProps(uiProps: string[], nativeProps: string[]): void {\n if (!nativeShouldBeMock()) {\n NativeReanimatedModule.configureProps(uiProps, nativeProps);\n }\n}\n\nexport function jestResetJsReanimatedModule() {\n (NativeReanimatedModule as JSReanimated).jestResetModule();\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["global","_setGlobalConsole","undefined","testWorklet","throwUninitializedReanimatedException","Error","checkPluginState","throwError","__workletHash","shouldBeUseWeb","isConfigured","isConfiguredCheck","pushFrame","frame","NativeReanimatedModule","requestFrame","native","requestAnimationFrame","_WORKLET","_log","s","console","log","runOnUI","worklet","makeShareable","value","getViewProp","viewTag","propName","_IS_FABRIC","Promise","resolve","reject","result","substr","_getTimestamp","nativeShouldBeMock","getTimestamp","_frameTimestamp","_eventTimestamp","_getCurrentTime","Platform","OS","workletValueSetter","previousAnimation","_animation","cancelled","onFrame","animation","_value","current","isHigherOrder","callback","initializeAnimation","timestamp","onStart","currentTimestamp","step","finished","workletValueSetterJS","_setValue","makeMutable","makeRemote","object","startMapper","mapper","inputs","outputs","updater","viewDescriptors","stopMapper","mapperId","runOnJS","fun","__callAsync","installCoreFunctions","isWeb","capturableConsole","debug","warn","error","info","featuresConfig","enableLayoutAnimations","setByUser","flag","isCallByUser","configureLayoutAnimations","type","config","viewSharedValue","configureLayoutAnimation","configureProps","uiProps","nativeProps","jestResetJsReanimatedModule","jestResetModule"],"sources":["core.ts"],"sourcesContent":["/* global _WORKLET _getCurrentTime _frameTimestamp _eventTimestamp _setGlobalConsole */\nimport NativeReanimatedModule from './NativeReanimated';\nimport { Platform } from 'react-native';\nimport { nativeShouldBeMock, shouldBeUseWeb, isWeb } from './PlatformChecker';\nimport {\n BasicWorkletFunction,\n ComplexWorkletFunction,\n SharedValue,\n AnimationObject,\n AnimatableValue,\n Timestamp,\n} from './commonTypes';\nimport { Descriptor } from './hook/commonTypes';\nimport JSReanimated from './js-reanimated/JSReanimated';\nimport { LayoutAnimationFunction } from './layoutReanimation';\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\nexport type WorkletValue =\n | (() => AnimationObject)\n | AnimationObject\n | AnimatableValue\n | Descriptor;\ninterface WorkletValueSetterContext {\n _animation?: AnimationObject | null;\n _value?: AnimatableValue | Descriptor;\n value?: AnimatableValue;\n _setValue?: (val: AnimatableValue | Descriptor) => void;\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\nfunction pushFrame(frame: (timestamp: Timestamp) => void): void {\n (NativeReanimatedModule as JSReanimated).pushFrame(frame);\n}\n\nexport function requestFrame(frame: (timestamp: Timestamp) => void): void {\n 'worklet';\n if (NativeReanimatedModule.native) {\n requestAnimationFrame(frame);\n } else {\n pushFrame(frame);\n }\n}\n\nglobal._WORKLET = false;\nglobal._log = function (s: string) {\n console.log(s);\n};\n\nexport function runOnUI<A extends any[], R>(\n worklet: ComplexWorkletFunction<A, R>\n): (...args: A) => void {\n return makeShareable(worklet);\n}\n\nexport function makeShareable<T>(value: T): T {\n isConfiguredCheck();\n return NativeReanimatedModule.makeShareable(value);\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\nlet _getTimestamp: () => number;\nif (nativeShouldBeMock()) {\n _getTimestamp = () => {\n return (NativeReanimatedModule as JSReanimated).getTimestamp();\n };\n} else {\n _getTimestamp = () => {\n 'worklet';\n if (_frameTimestamp) {\n return _frameTimestamp;\n }\n if (_eventTimestamp) {\n return _eventTimestamp;\n }\n return _getCurrentTime();\n };\n}\n\nexport function getTimestamp(): number {\n 'worklet';\n if (Platform.OS === 'web') {\n return (NativeReanimatedModule as JSReanimated).getTimestamp();\n }\n return _getTimestamp();\n}\n\nfunction workletValueSetter<T extends WorkletValue>(\n this: WorkletValueSetterContext,\n value: T\n): void {\n 'worklet';\n const previousAnimation = this._animation;\n if (previousAnimation) {\n previousAnimation.cancelled = true;\n this._animation = null;\n }\n if (\n typeof value === 'function' ||\n (value !== null &&\n typeof value === 'object' &&\n (value as AnimationObject).onFrame !== undefined)\n ) {\n const animation: AnimationObject =\n typeof value === 'function'\n ? (value as () => AnimationObject)()\n : (value as AnimationObject);\n // prevent setting again to the same value\n // and triggering the mappers that treat this value as an input\n // this happens when the animation's target value(stored in animation.current until animation.onStart is called) is set to the same value as a current one(this._value)\n // built in animations that are not higher order(withTiming, withSpring) hold target value in .current\n if (this._value === animation.current && !animation.isHigherOrder) {\n animation.callback && animation.callback(true);\n return;\n }\n // animated set\n const initializeAnimation = (timestamp: number) => {\n animation.onStart(animation, this.value, timestamp, previousAnimation);\n };\n const currentTimestamp = getTimestamp();\n initializeAnimation(currentTimestamp);\n const step = (timestamp: number) => {\n if (animation.cancelled) {\n animation.callback && animation.callback(false /* finished */);\n return;\n }\n const finished = animation.onFrame(animation, timestamp);\n animation.finished = true;\n animation.timestamp = timestamp;\n this._value = animation.current;\n if (finished) {\n animation.callback && animation.callback(true /* finished */);\n } else {\n requestAnimationFrame(step);\n }\n };\n\n this._animation = animation;\n step(currentTimestamp);\n } else {\n // prevent setting again to the same value\n // and triggering the mappers that treat this value as an input\n if (this._value === value) {\n return;\n }\n this._value = value as Descriptor | AnimatableValue;\n }\n}\n\n// We cannot use pushFrame\n// so we use own implementation for js\nfunction workletValueSetterJS<T extends WorkletValue>(\n this: WorkletValueSetterContext,\n value: T\n): void {\n const previousAnimation = this._animation;\n if (previousAnimation) {\n previousAnimation.cancelled = true;\n this._animation = null;\n }\n if (\n typeof value === 'function' ||\n (value !== null &&\n typeof value === 'object' &&\n (value as AnimationObject).onFrame)\n ) {\n // animated set\n const animation: AnimationObject =\n typeof value === 'function'\n ? (value as () => AnimationObject)()\n : (value as AnimationObject);\n let initializeAnimation: ((timestamp: number) => void) | null = (\n timestamp: number\n ) => {\n animation.onStart(animation, this.value, timestamp, previousAnimation);\n };\n const step = (timestamp: number) => {\n if (animation.cancelled) {\n animation.callback && animation.callback(false /* finished */);\n return;\n }\n if (initializeAnimation) {\n initializeAnimation(timestamp);\n initializeAnimation = null; // prevent closure from keeping ref to previous animation\n }\n const finished = animation.onFrame(animation, timestamp);\n animation.timestamp = timestamp;\n this._setValue && this._setValue(animation.current as AnimatableValue);\n if (finished) {\n animation.callback && animation.callback(true /* finished */);\n } else {\n requestFrame(step);\n }\n };\n\n this._animation = animation;\n step(getTimestamp());\n } else {\n this._setValue && this._setValue(value as AnimatableValue | Descriptor);\n }\n}\n\nexport function makeMutable<T>(value: T): SharedValue<T> {\n isConfiguredCheck();\n return NativeReanimatedModule.makeMutable(value);\n}\n\nexport function makeRemote<T>(object = {}): T {\n isConfiguredCheck();\n return NativeReanimatedModule.makeRemote(object);\n}\n\nexport function startMapper(\n mapper: () => void,\n inputs: any[] = [],\n outputs: any[] = [],\n updater: () => void = () => {\n // noop\n },\n viewDescriptors: Descriptor[] | SharedValue<Descriptor[]> = []\n): number {\n isConfiguredCheck();\n return NativeReanimatedModule.startMapper(\n mapper,\n inputs,\n outputs,\n updater,\n viewDescriptors\n );\n}\n\nexport function stopMapper(mapperId: number): void {\n NativeReanimatedModule.stopMapper(mapperId);\n}\n\nexport interface RunOnJSFunction<A extends any[], R> {\n __callAsync?: (...args: A) => void;\n (...args: A): R;\n}\n\nexport function runOnJS<A extends any[], R>(\n fun: RunOnJSFunction<A, R>\n): () => void {\n 'worklet';\n if (!_WORKLET) {\n return fun;\n }\n if (!fun.__callAsync) {\n throw new Error(\n \"Attempting to call runOnJS with an object that is not a host function. Using runOnJS is only possible with methods that are defined on the main React-Native Javascript thread and that aren't marked as worklets\"\n );\n } else {\n return fun.__callAsync;\n }\n}\n\nNativeReanimatedModule.installCoreFunctions(\n NativeReanimatedModule.native\n ? (workletValueSetter as <T>(value: T) => void)\n : (workletValueSetterJS as <T>(value: T) => void)\n);\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 viewSharedValue: SharedValue<null | Record<string, unknown>> | null\n): void {\n NativeReanimatedModule.configureLayoutAnimation(\n viewTag,\n type,\n config,\n viewSharedValue\n );\n}\n\nexport function configureProps(uiProps: string[], nativeProps: string[]): void {\n if (!nativeShouldBeMock()) {\n NativeReanimatedModule.configureProps(uiProps, nativeProps);\n }\n}\n\nexport function jestResetJsReanimatedModule() {\n (NativeReanimatedModule as JSReanimated).jestResetModule();\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;AAHA;AAgBA,IAAIA,MAAM,CAACC,iBAAP,KAA6BC,SAAjC,EAA4C;EAC1C;EACAF,MAAM,CAACC,iBAAP,GAA2B,MAAM,CAC/B;EACD,CAFD;AAGD;;AAmBD,MAAME,WAAuC,GAAG,MAAM;EACpD;AACD,CAFD;;AAIA,MAAMC,qCAAqC,GAAG,MAAM;EAClD,MAAM,IAAIC,KAAJ,CACJ,4cADI,CAAN;AAGD,CAJD;;AAMO,MAAMC,gBAAkD,GAAG,YAE7D;EAAA,IADHC,UACG,uEADU,IACV;;EACH,IAAI,CAACJ,WAAW,CAACK,aAAb,IAA8B,CAAC,IAAAC,+BAAA,GAAnC,EAAqD;IACnD,IAAIF,UAAJ,EAAgB;MACdH,qCAAqC;IACtC;;IACD,OAAO,KAAP;EACD;;EACD,OAAO,IAAP;AACD,CAVM;;;;AAYA,MAAMM,YAA+C,GAAG,YAE1D;EAAA,IADHH,UACG,uEADU,KACV;EACH,OAAOD,gBAAgB,CAACC,UAAD,CAAvB;AACD,CAJM;;;;AAMA,MAAMI,iBAA6B,GAAG,MAAM;EACjDL,gBAAgB,CAAC,IAAD,CAAhB;AACD,CAFM;;;;AAIP,SAASM,SAAT,CAAmBC,KAAnB,EAAgE;EAC7DC,yBAAD,CAAyCF,SAAzC,CAAmDC,KAAnD;AACD;;AAEM,SAASE,YAAT,CAAsBF,KAAtB,EAAmE;EACxE;;EACA,IAAIC,yBAAA,CAAuBE,MAA3B,EAAmC;IACjCC,qBAAqB,CAACJ,KAAD,CAArB;EACD,CAFD,MAEO;IACLD,SAAS,CAACC,KAAD,CAAT;EACD;AACF;;AAEDb,MAAM,CAACkB,QAAP,GAAkB,KAAlB;;AACAlB,MAAM,CAACmB,IAAP,GAAc,UAAUC,CAAV,EAAqB;EACjCC,OAAO,CAACC,GAAR,CAAYF,CAAZ;AACD,CAFD;;AAIO,SAASG,OAAT,CACLC,OADK,EAEiB;EACtB,OAAOC,aAAa,CAACD,OAAD,CAApB;AACD;;AAEM,SAASC,aAAT,CAA0BC,KAA1B,EAAuC;EAC5Cf,iBAAiB;EACjB,OAAOG,yBAAA,CAAuBW,aAAvB,CAAqCC,KAArC,CAAP;AACD;;AAEM,SAASC,WAAT,CAAwBC,OAAxB,EAAyCC,QAAzC,EAAuE;EAC5E,IAAI7B,MAAM,CAAC8B,UAAX,EAAuB;IACrB,MAAM,IAAIzB,KAAJ,CACJ,wEADI,CAAN;EAGD;;EAED,OAAO,IAAI0B,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtC,OAAOnB,yBAAA,CAAuBa,WAAvB,CACLC,OADK,EAELC,QAFK,EAGJK,MAAD,IAAe;MACb,IAAI,OAAOA,MAAP,KAAkB,QAAlB,IAA8BA,MAAM,CAACC,MAAP,CAAc,CAAd,EAAiB,CAAjB,MAAwB,QAA1D,EAAoE;QAClEF,MAAM,CAACC,MAAD,CAAN;MACD,CAFD,MAEO;QACLF,OAAO,CAACE,MAAD,CAAP;MACD;IACF,CATI,CAAP;EAWD,CAZM,CAAP;AAaD;;AAED,IAAIE,aAAJ;;AACA,IAAI,IAAAC,mCAAA,GAAJ,EAA0B;EACxBD,aAAa,GAAG,MAAM;IACpB,OAAQtB,yBAAD,CAAyCwB,YAAzC,EAAP;EACD,CAFD;AAGD,CAJD,MAIO;EACLF,aAAa,GAAG,MAAM;IACpB;;IACA,IAAIG,eAAJ,EAAqB;MACnB,OAAOA,eAAP;IACD;;IACD,IAAIC,eAAJ,EAAqB;MACnB,OAAOA,eAAP;IACD;;IACD,OAAOC,eAAe,EAAtB;EACD,CATD;AAUD;;AAEM,SAASH,YAAT,GAAgC;EACrC;;EACA,IAAII,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2B;IACzB,OAAQ7B,yBAAD,CAAyCwB,YAAzC,EAAP;EACD;;EACD,OAAOF,aAAa,EAApB;AACD;;AAED,SAASQ,kBAAT,CAEElB,KAFF,EAGQ;EACN;;EACA,MAAMmB,iBAAiB,GAAG,KAAKC,UAA/B;;EACA,IAAID,iBAAJ,EAAuB;IACrBA,iBAAiB,CAACE,SAAlB,GAA8B,IAA9B;IACA,KAAKD,UAAL,GAAkB,IAAlB;EACD;;EACD,IACE,OAAOpB,KAAP,KAAiB,UAAjB,IACCA,KAAK,KAAK,IAAV,IACC,OAAOA,KAAP,KAAiB,QADlB,IAEEA,KAAD,CAA2BsB,OAA3B,KAAuC9C,SAJ3C,EAKE;IACA,MAAM+C,SAA0B,GAC9B,OAAOvB,KAAP,KAAiB,UAAjB,GACKA,KAAD,EADJ,GAEKA,KAHP,CADA,CAKA;IACA;IACA;IACA;;IACA,IAAI,KAAKwB,MAAL,KAAgBD,SAAS,CAACE,OAA1B,IAAqC,CAACF,SAAS,CAACG,aAApD,EAAmE;MACjEH,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB,IAAnB,CAAtB;MACA;IACD,CAZD,CAaA;;;IACA,MAAMC,mBAAmB,GAAIC,SAAD,IAAuB;MACjDN,SAAS,CAACO,OAAV,CAAkBP,SAAlB,EAA6B,KAAKvB,KAAlC,EAAyC6B,SAAzC,EAAoDV,iBAApD;IACD,CAFD;;IAGA,MAAMY,gBAAgB,GAAGnB,YAAY,EAArC;IACAgB,mBAAmB,CAACG,gBAAD,CAAnB;;IACA,MAAMC,IAAI,GAAIH,SAAD,IAAuB;MAClC,IAAIN,SAAS,CAACF,SAAd,EAAyB;QACvBE,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB;QAAM;QAAzB,CAAtB;QACA;MACD;;MACD,MAAMM,QAAQ,GAAGV,SAAS,CAACD,OAAV,CAAkBC,SAAlB,EAA6BM,SAA7B,CAAjB;MACAN,SAAS,CAACU,QAAV,GAAqB,IAArB;MACAV,SAAS,CAACM,SAAV,GAAsBA,SAAtB;MACA,KAAKL,MAAL,GAAcD,SAAS,CAACE,OAAxB;;MACA,IAAIQ,QAAJ,EAAc;QACZV,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB;QAAK;QAAxB,CAAtB;MACD,CAFD,MAEO;QACLpC,qBAAqB,CAACyC,IAAD,CAArB;MACD;IACF,CAdD;;IAgBA,KAAKZ,UAAL,GAAkBG,SAAlB;IACAS,IAAI,CAACD,gBAAD,CAAJ;EACD,CA1CD,MA0CO;IACL;IACA;IACA,IAAI,KAAKP,MAAL,KAAgBxB,KAApB,EAA2B;MACzB;IACD;;IACD,KAAKwB,MAAL,GAAcxB,KAAd;EACD;AACF,C,CAED;AACA;;;AACA,SAASkC,oBAAT,CAEElC,KAFF,EAGQ;EACN,MAAMmB,iBAAiB,GAAG,KAAKC,UAA/B;;EACA,IAAID,iBAAJ,EAAuB;IACrBA,iBAAiB,CAACE,SAAlB,GAA8B,IAA9B;IACA,KAAKD,UAAL,GAAkB,IAAlB;EACD;;EACD,IACE,OAAOpB,KAAP,KAAiB,UAAjB,IACCA,KAAK,KAAK,IAAV,IACC,OAAOA,KAAP,KAAiB,QADlB,IAEEA,KAAD,CAA2BsB,OAJ/B,EAKE;IACA;IACA,MAAMC,SAA0B,GAC9B,OAAOvB,KAAP,KAAiB,UAAjB,GACKA,KAAD,EADJ,GAEKA,KAHP;;IAIA,IAAI4B,mBAAyD,GAC3DC,SAD8D,IAE3D;MACHN,SAAS,CAACO,OAAV,CAAkBP,SAAlB,EAA6B,KAAKvB,KAAlC,EAAyC6B,SAAzC,EAAoDV,iBAApD;IACD,CAJD;;IAKA,MAAMa,IAAI,GAAIH,SAAD,IAAuB;MAClC,IAAIN,SAAS,CAACF,SAAd,EAAyB;QACvBE,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB;QAAM;QAAzB,CAAtB;QACA;MACD;;MACD,IAAIC,mBAAJ,EAAyB;QACvBA,mBAAmB,CAACC,SAAD,CAAnB;QACAD,mBAAmB,GAAG,IAAtB,CAFuB,CAEK;MAC7B;;MACD,MAAMK,QAAQ,GAAGV,SAAS,CAACD,OAAV,CAAkBC,SAAlB,EAA6BM,SAA7B,CAAjB;MACAN,SAAS,CAACM,SAAV,GAAsBA,SAAtB;MACA,KAAKM,SAAL,IAAkB,KAAKA,SAAL,CAAeZ,SAAS,CAACE,OAAzB,CAAlB;;MACA,IAAIQ,QAAJ,EAAc;QACZV,SAAS,CAACI,QAAV,IAAsBJ,SAAS,CAACI,QAAV,CAAmB;QAAK;QAAxB,CAAtB;MACD,CAFD,MAEO;QACLtC,YAAY,CAAC2C,IAAD,CAAZ;MACD;IACF,CAjBD;;IAmBA,KAAKZ,UAAL,GAAkBG,SAAlB;IACAS,IAAI,CAACpB,YAAY,EAAb,CAAJ;EACD,CArCD,MAqCO;IACL,KAAKuB,SAAL,IAAkB,KAAKA,SAAL,CAAenC,KAAf,CAAlB;EACD;AACF;;AAEM,SAASoC,WAAT,CAAwBpC,KAAxB,EAAkD;EACvDf,iBAAiB;EACjB,OAAOG,yBAAA,CAAuBgD,WAAvB,CAAmCpC,KAAnC,CAAP;AACD;;AAEM,SAASqC,UAAT,GAAuC;EAAA,IAAhBC,MAAgB,uEAAP,EAAO;EAC5CrD,iBAAiB;EACjB,OAAOG,yBAAA,CAAuBiD,UAAvB,CAAkCC,MAAlC,CAAP;AACD;;AAEM,SAASC,WAAT,CACLC,MADK,EAQG;EAAA,IANRC,MAMQ,uEANQ,EAMR;EAAA,IALRC,OAKQ,uEALS,EAKT;EAAA,IAJRC,OAIQ,uEAJc,MAAM,CAC1B;EACD,CAEO;EAAA,IADRC,eACQ,uEADoD,EACpD;EACR3D,iBAAiB;EACjB,OAAOG,yBAAA,CAAuBmD,WAAvB,CACLC,MADK,EAELC,MAFK,EAGLC,OAHK,EAILC,OAJK,EAKLC,eALK,CAAP;AAOD;;AAEM,SAASC,UAAT,CAAoBC,QAApB,EAA4C;EACjD1D,yBAAA,CAAuByD,UAAvB,CAAkCC,QAAlC;AACD;;AAOM,SAASC,OAAT,CACLC,GADK,EAEO;EACZ;;EACA,IAAI,CAACxD,QAAL,EAAe;IACb,OAAOwD,GAAP;EACD;;EACD,IAAI,CAACA,GAAG,CAACC,WAAT,EAAsB;IACpB,MAAM,IAAItE,KAAJ,CACJ,mNADI,CAAN;EAGD,CAJD,MAIO;IACL,OAAOqE,GAAG,CAACC,WAAX;EACD;AACF;;AAED7D,yBAAA,CAAuB8D,oBAAvB,CACE9D,yBAAA,CAAuBE,MAAvB,GACK4B,kBADL,GAEKgB,oBAHP;;AAMA,IAAI,CAAC,IAAAiB,sBAAA,GAAD,IAAYnE,YAAY,EAA5B,EAAgC;EAC9B,MAAMoE,iBAAiB,GAAGzD,OAA1B;EACAE,OAAO,CAAC,MAAM;IACZ;;IACA,MAAMF,OAAO,GAAG;MACd0D,KAAK,EAAEN,OAAO,CAACK,iBAAiB,CAACC,KAAnB,CADA;MAEdzD,GAAG,EAAEmD,OAAO,CAACK,iBAAiB,CAACxD,GAAnB,CAFE;MAGd0D,IAAI,EAAEP,OAAO,CAACK,iBAAiB,CAACE,IAAnB,CAHC;MAIdC,KAAK,EAAER,OAAO,CAACK,iBAAiB,CAACG,KAAnB,CAJA;MAKdC,IAAI,EAAET,OAAO,CAACK,iBAAiB,CAACI,IAAnB;IALC,CAAhB;;IAOAjF,iBAAiB,CAACoB,OAAD,CAAjB;EACD,CAVM,CAAP;AAWD;;AAOD,IAAI8D,cAA8B,GAAG;EACnCC,sBAAsB,EAAE,KADW;EAEnCC,SAAS,EAAE;AAFwB,CAArC;;AAKO,SAASD,sBAAT,CACLE,IADK,EAGC;EAAA,IADNC,YACM,uEADS,IACT;;EACN,IAAIA,YAAJ,EAAkB;IAChBJ,cAAc,GAAG;MACfC,sBAAsB,EAAEE,IADT;MAEfD,SAAS,EAAE;IAFI,CAAjB;;IAIAvE,yBAAA,CAAuBsE,sBAAvB,CAA8CE,IAA9C;EACD,CAND,MAMO,IACL,CAACH,cAAc,CAACE,SAAhB,IACAF,cAAc,CAACC,sBAAf,KAA0CE,IAFrC,EAGL;IACAH,cAAc,CAACC,sBAAf,GAAwCE,IAAxC;;IACAxE,yBAAA,CAAuBsE,sBAAvB,CAA8CE,IAA9C;EACD;AACF;;AAEM,SAASE,yBAAT,CACL5D,OADK,EAEL6D,IAFK,EAGLC,MAHK,EAILC,eAJK,EAKC;EACN7E,yBAAA,CAAuB8E,wBAAvB,CACEhE,OADF,EAEE6D,IAFF,EAGEC,MAHF,EAIEC,eAJF;AAMD;;AAEM,SAASE,cAAT,CAAwBC,OAAxB,EAA2CC,WAA3C,EAAwE;EAC7E,IAAI,CAAC,IAAA1D,mCAAA,GAAL,EAA2B;IACzBvB,yBAAA,CAAuB+E,cAAvB,CAAsCC,OAAtC,EAA+CC,WAA/C;EACD;AACF;;AAEM,SAASC,2BAAT,GAAuC;EAC3ClF,yBAAD,CAAyCmF,eAAzC;AACD"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["globals.d.ts"],"sourcesContent":["import type {\n AnimatedStyle,\n StyleProps,\n MeasuredDimensions,\n} from './commonTypes';\nimport type { ReanimatedConsole } from './core';\nimport type { FrameCallbackRegistryUI } from './frameCallback/FrameCallbackRegistryUI';\nimport type { ShadowNodeWrapper } from './hook/commonTypes';\nimport type { NativeReanimated } from './NativeReanimated/NativeReanimated';\n\ndeclare global {\n const _WORKLET: boolean;\n const _IS_FABRIC: boolean;\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 _stopObservingProgress: (tag: number, flag: boolean) => void;\n const _startObservingProgress: (\n tag: number,\n flag: { value: boolean; _value: boolean }\n ) => void;\n const _setGestureState: (handlerTag: number, newState: number) => 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 LayoutAnimationRepository: {\n configs: Record<string, unknown>;\n registerConfig(tag: number, config: Record<string, unknown>): void;\n removeConfig(tag: number): void;\n startAnimationForTag(tag: number, type: string, yogaValues: unknown): void;\n };\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 _frameTimestamp: number | null;\n _eventTimestamp: number;\n __reanimatedModuleProxy: NativeReanimated;\n _setGlobalConsole: (console?: ReanimatedConsole) => void;\n _log: (s: string) => void;\n _getCurrentTime: () => number;\n _stopObservingProgress: (tag: number, flag: boolean) => void;\n _startObservingProgress: (\n tag: number,\n flag: { value: boolean; _value: boolean }\n ) => void;\n _setGestureState: (handlerTag: number, newState: number) => 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 LayoutAnimationRepository: {\n configs: Record<string, unknown>;\n registerConfig(tag: number, config: Record<string, unknown>): void;\n removeConfig(tag: number): void;\n startAnimationForTag(\n tag: number,\n type: string,\n yogaValues: unknown\n ): void;\n };\n ReanimatedDataMock: {\n now: () => number;\n };\n _frameCallbackRegistry: FrameCallbackRegistryUI;\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["globals.d.ts"],"sourcesContent":["import type {\n AnimatedStyle,\n StyleProps,\n MeasuredDimensions,\n} from './commonTypes';\nimport type { ReanimatedConsole } from './core';\nimport type { FrameCallbackRegistryUI } from './frameCallback/FrameCallbackRegistryUI';\nimport type { ShadowNodeWrapper } from './hook/commonTypes';\nimport type { NativeReanimated } from './NativeReanimated/NativeReanimated';\n\ndeclare global {\n const _WORKLET: boolean;\n const _IS_FABRIC: boolean;\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 _stopObservingProgress: (\n tag: number,\n cancelled: boolean,\n removeView: boolean\n ) => void;\n const _startObservingProgress: (\n tag: number,\n viewSharedValue: { value: unknown; _value: unknown },\n type: string\n ) => void;\n const _setGestureState: (handlerTag: number, newState: number) => 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 LayoutAnimationRepository: {\n configs: Record<string, unknown>;\n registerConfig(tag: number, config: Record<string, unknown>): void;\n removeConfig(tag: number): void;\n startAnimationForTag(tag: number, type: string, yogaValues: unknown): void;\n };\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 _frameTimestamp: number | null;\n _eventTimestamp: number;\n __reanimatedModuleProxy: NativeReanimated;\n _setGlobalConsole: (console?: ReanimatedConsole) => void;\n _log: (s: string) => void;\n _getCurrentTime: () => number;\n _stopObservingProgress: (tag: number, flag: boolean) => void;\n _startObservingProgress: (\n tag: number,\n flag: { value: boolean; _value: boolean }\n ) => void;\n _setGestureState: (handlerTag: number, newState: number) => 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 LayoutAnimationRepository: {\n startAnimationForTag(\n tag: number,\n type: string,\n yogaValues: Record<string, number>,\n config: LayoutAnimationFunction | Keyframe,\n viewSharedValue: { value: unknown; _value: unknown }\n ): void;\n };\n ReanimatedDataMock: {\n now: () => number;\n };\n _frameCallbackRegistry: FrameCallbackRegistryUI;\n }\n }\n}\n"],"mappings":""}