react-native-reanimated 4.3.1 → 4.3.3
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.
- package/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +12 -5
- package/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +59 -37
- package/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +11 -8
- package/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +4 -0
- package/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +17 -4
- package/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +5 -0
- package/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +5 -0
- package/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +25 -12
- package/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +3 -0
- package/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +48 -23
- package/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +13 -6
- package/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +38 -0
- package/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +106 -33
- package/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.cpp +205 -92
- package/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +4 -0
- package/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +5 -11
- package/android/CMakeLists.txt +4 -1
- package/android/build.gradle +2 -0
- package/android/generate-stub-pch.gradle.kts +84 -0
- package/android/src/main/cpp/ReanimatedPCH.h +46 -0
- package/android/src/main/java/com/swmansion/reanimated/NativeProxy.java +14 -1
- package/android/src/main/java/com/swmansion/reanimated/keyboard/KeyboardAnimationCallback.java +9 -1
- package/apple/reanimated/apple/ReanimatedModule.mm +12 -1
- package/lib/module/PropsRegistryGarbageCollector.js +3 -6
- package/lib/module/PropsRegistryGarbageCollector.js.map +1 -1
- package/lib/module/animation/styleAnimation.js +4 -3
- package/lib/module/animation/styleAnimation.js.map +1 -1
- package/lib/module/common/constants/platform.js +5 -5
- package/lib/module/common/constants/platform.js.map +1 -1
- package/lib/module/createAnimatedComponent/getViewInfo.js +3 -1
- package/lib/module/createAnimatedComponent/getViewInfo.js.map +1 -1
- package/lib/module/css/component/AnimatedComponent.js +0 -2
- package/lib/module/css/component/AnimatedComponent.js.map +1 -1
- package/lib/module/css/native/managers/CSSManager.js +5 -5
- package/lib/module/css/native/managers/CSSManager.js.map +1 -1
- package/lib/module/css/native/managers/CSSTransitionsManager.js +8 -1
- package/lib/module/css/native/managers/CSSTransitionsManager.js.map +1 -1
- package/lib/module/css/svg/native/processors/stroke.js +9 -5
- package/lib/module/css/svg/native/processors/stroke.js.map +1 -1
- package/lib/module/layoutReanimation/animationsManager.js +9 -6
- package/lib/module/layoutReanimation/animationsManager.js.map +1 -1
- package/lib/module/platform-specific/findHostInstance.js +8 -5
- package/lib/module/platform-specific/findHostInstance.js.map +1 -1
- package/lib/module/platform-specific/jsVersion.js +1 -1
- package/lib/module/updateProps/updateProps.js +3 -2
- package/lib/module/updateProps/updateProps.js.map +1 -1
- package/lib/module/valueSetter.js +1 -1
- package/lib/module/valueSetter.js.map +1 -1
- package/lib/typescript/PropsRegistryGarbageCollector.d.ts +0 -1
- package/lib/typescript/PropsRegistryGarbageCollector.d.ts.map +1 -1
- package/lib/typescript/animation/styleAnimation.d.ts +1 -1
- package/lib/typescript/animation/styleAnimation.d.ts.map +1 -1
- package/lib/typescript/common/constants/platform.d.ts.map +1 -1
- package/lib/typescript/createAnimatedComponent/commonTypes.d.ts +0 -1
- package/lib/typescript/createAnimatedComponent/commonTypes.d.ts.map +1 -1
- package/lib/typescript/createAnimatedComponent/getViewInfo.d.ts.map +1 -1
- package/lib/typescript/css/component/AnimatedComponent.d.ts +0 -1
- package/lib/typescript/css/component/AnimatedComponent.d.ts.map +1 -1
- package/lib/typescript/css/native/managers/CSSTransitionsManager.d.ts +5 -1
- package/lib/typescript/css/native/managers/CSSTransitionsManager.d.ts.map +1 -1
- package/lib/typescript/css/svg/native/processors/stroke.d.ts.map +1 -1
- package/lib/typescript/layoutReanimation/animationsManager.d.ts.map +1 -1
- package/lib/typescript/platform-specific/findHostInstance.d.ts.map +1 -1
- package/lib/typescript/platform-specific/jsVersion.d.ts +1 -1
- package/lib/typescript/platform-specific/types.d.ts +1 -0
- package/lib/typescript/platform-specific/types.d.ts.map +1 -1
- package/lib/typescript/updateProps/updateProps.d.ts.map +1 -1
- package/lib/typescript/valueSetter.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/PropsRegistryGarbageCollector.ts +3 -6
- package/src/animation/styleAnimation.ts +5 -3
- package/src/common/constants/platform.ts +6 -5
- package/src/createAnimatedComponent/commonTypes.ts +0 -1
- package/src/createAnimatedComponent/getViewInfo.ts +3 -1
- package/src/css/component/AnimatedComponent.tsx +0 -2
- package/src/css/native/managers/CSSManager.ts +8 -8
- package/src/css/native/managers/CSSTransitionsManager.ts +9 -2
- package/src/css/svg/native/processors/stroke.ts +9 -6
- package/src/layoutReanimation/animationsManager.ts +9 -7
- package/src/platform-specific/findHostInstance.ts +7 -7
- package/src/platform-specific/jsVersion.ts +1 -1
- package/src/platform-specific/types.ts +2 -0
- package/src/updateProps/updateProps.ts +3 -2
- package/src/valueSetter.ts +2 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import groovy.json.JsonSlurper
|
|
2
|
+
|
|
3
|
+
// Workaround for Android Studio's C++ analyzer surfacing errors during Gradle
|
|
4
|
+
// Sync when CMake's precompiled header binary (`cmake_pch.hxx.pch`, generated
|
|
5
|
+
// from `ReanimatedPCH.h`) hasn't been built yet. The project compiles fine,
|
|
6
|
+
// but on a clean sync the IDE can't index sources without the PCH binary. See
|
|
7
|
+
// the underlying issue: https://issuetracker.google.com/issues/187448826
|
|
8
|
+
|
|
9
|
+
// Generates minimal stub `.pch` files from an empty header so the IDE's C++
|
|
10
|
+
// engine doesn't fail during sync. The actual build regenerates the real PCH
|
|
11
|
+
// files via ninja because we set each stub PCH's mtime older than its source
|
|
12
|
+
// (`cmake_pch.hxx.cxx`).
|
|
13
|
+
|
|
14
|
+
// Adapted from Expo's PR: https://github.com/expo/expo/pull/45921
|
|
15
|
+
|
|
16
|
+
val cxxDir = project.file(".cxx")
|
|
17
|
+
|
|
18
|
+
val generateStubPCHTask = tasks.register("generateStubPCH") {
|
|
19
|
+
dependsOn("configureCMakeDebug")
|
|
20
|
+
doLast {
|
|
21
|
+
if (!cxxDir.exists()) {
|
|
22
|
+
return@doLast
|
|
23
|
+
}
|
|
24
|
+
cxxDir.walkTopDown().forEach { file ->
|
|
25
|
+
if (file.name != "compile_commands.json") {
|
|
26
|
+
return@forEach
|
|
27
|
+
}
|
|
28
|
+
@Suppress("UNCHECKED_CAST")
|
|
29
|
+
val entries = JsonSlurper().parseText(file.readText()) as List<Map<String, Any>>
|
|
30
|
+
entries.forEach entry@{ entry ->
|
|
31
|
+
val entryFile = entry["file"] as String
|
|
32
|
+
if (!entryFile.endsWith("cmake_pch.hxx.cxx")) {
|
|
33
|
+
return@entry
|
|
34
|
+
}
|
|
35
|
+
val pchFile = File(entryFile.substring(0, entryFile.length - ".cxx".length) + ".pch")
|
|
36
|
+
if (!pchFile.exists() || pchFile.length() == 0L) {
|
|
37
|
+
pchFile.parentFile.mkdirs()
|
|
38
|
+
|
|
39
|
+
val command = entry["command"] as String
|
|
40
|
+
val compiler = command.split(" ").first()
|
|
41
|
+
val target = Regex("""--target=\S+""").find(command)!!.value
|
|
42
|
+
val sysroot = Regex("""--sysroot=\S+""").find(command)!!.value
|
|
43
|
+
|
|
44
|
+
val stubHeader = File(pchFile.parentFile, "stub_pch.hxx")
|
|
45
|
+
stubHeader.writeText("")
|
|
46
|
+
|
|
47
|
+
val process = ProcessBuilder(
|
|
48
|
+
compiler,
|
|
49
|
+
target,
|
|
50
|
+
sysroot,
|
|
51
|
+
"-x", "c++-header",
|
|
52
|
+
"-o", pchFile.absolutePath,
|
|
53
|
+
stubHeader.absolutePath,
|
|
54
|
+
)
|
|
55
|
+
.directory(File(entry["directory"] as String))
|
|
56
|
+
.redirectErrorStream(true)
|
|
57
|
+
.start()
|
|
58
|
+
process.outputStream.close()
|
|
59
|
+
if (process.waitFor() != 0) {
|
|
60
|
+
throw GradleException(
|
|
61
|
+
"Stub PCH generation failed: ${process.inputStream.bufferedReader().readText()}",
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Ensure PCH is older than source so ninja rebuilds the real one during build
|
|
66
|
+
pchFile.setLastModified(File(entryFile).lastModified() - 1)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Register `prepareKotlinBuildScriptModel` if absent (Android Studio sync needs it
|
|
73
|
+
// to exist so the stub PCH generation runs) or configure it if some other plugin
|
|
74
|
+
// already registered it (e.g. on CI, where re-registering throws `Cannot add task
|
|
75
|
+
// 'prepareKotlinBuildScriptModel' as a task with that name already exists.`).
|
|
76
|
+
if (tasks.findByName("prepareKotlinBuildScriptModel") == null) {
|
|
77
|
+
tasks.register("prepareKotlinBuildScriptModel") {
|
|
78
|
+
dependsOn(generateStubPCHTask)
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
tasks.named("prepareKotlinBuildScriptModel") {
|
|
82
|
+
dependsOn(generateStubPCHTask)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
// IWYU pragma: begin_keep
|
|
4
|
+
|
|
5
|
+
// C++ standard library
|
|
6
|
+
#include <algorithm>
|
|
7
|
+
#include <atomic>
|
|
8
|
+
#include <functional>
|
|
9
|
+
#include <map>
|
|
10
|
+
#include <memory>
|
|
11
|
+
#include <mutex>
|
|
12
|
+
#include <optional>
|
|
13
|
+
#include <ostream>
|
|
14
|
+
#include <string>
|
|
15
|
+
#include <string_view>
|
|
16
|
+
#include <type_traits>
|
|
17
|
+
#include <unordered_map>
|
|
18
|
+
#include <unordered_set>
|
|
19
|
+
#include <utility>
|
|
20
|
+
#include <vector>
|
|
21
|
+
|
|
22
|
+
// fbjni
|
|
23
|
+
#include <fbjni/fbjni.h>
|
|
24
|
+
|
|
25
|
+
// folly
|
|
26
|
+
#include <folly/Conv.h>
|
|
27
|
+
#include <folly/Expected.h>
|
|
28
|
+
#include <folly/Format.h>
|
|
29
|
+
#include <folly/dynamic.h>
|
|
30
|
+
#include <folly/json/dynamic.h>
|
|
31
|
+
|
|
32
|
+
// jsi
|
|
33
|
+
#include <jsi/JSIDynamic.h>
|
|
34
|
+
#include <jsi/jsi.h>
|
|
35
|
+
|
|
36
|
+
// react-native renderer (Fabric)
|
|
37
|
+
#include <react/renderer/components/root/RootProps.h>
|
|
38
|
+
#include <react/renderer/components/root/RootShadowNode.h>
|
|
39
|
+
#include <react/renderer/components/view/BaseViewProps.h>
|
|
40
|
+
#include <react/renderer/components/view/ViewProps.h>
|
|
41
|
+
#include <react/renderer/core/EventDispatcher.h>
|
|
42
|
+
#include <react/renderer/core/ShadowNode.h>
|
|
43
|
+
#include <react/renderer/mounting/ShadowTree.h>
|
|
44
|
+
#include <react/renderer/uimanager/UIManager.h>
|
|
45
|
+
|
|
46
|
+
// IWYU pragma: end_keep
|
|
@@ -15,6 +15,7 @@ import com.facebook.react.bridge.UiThreadUtil;
|
|
|
15
15
|
import com.facebook.react.common.annotations.FrameworkAPI;
|
|
16
16
|
import com.facebook.react.fabric.FabricUIManager;
|
|
17
17
|
import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
|
|
18
|
+
import com.facebook.react.uimanager.IllegalViewOperationException;
|
|
18
19
|
import com.facebook.react.uimanager.UIManagerHelper;
|
|
19
20
|
import com.facebook.react.uimanager.common.UIManagerType;
|
|
20
21
|
import com.facebook.soloader.SoLoader;
|
|
@@ -305,7 +306,19 @@ public class NativeProxy {
|
|
|
305
306
|
}
|
|
306
307
|
|
|
307
308
|
for (int i = 0; i < tags.length; i++) {
|
|
308
|
-
|
|
309
|
+
try {
|
|
310
|
+
if (mFabricUIManager.resolveView(tags[i]) == null) {
|
|
311
|
+
tags[i] = -1;
|
|
312
|
+
}
|
|
313
|
+
} catch (IllegalViewOperationException e) {
|
|
314
|
+
// `resolveView` is expected to return `null` for a tag without a
|
|
315
|
+
// mounted view, but it instead throws when the tag's `ViewState` is
|
|
316
|
+
// already registered while the Android view hasn't been created yet.
|
|
317
|
+
// This happens when a view is mid-preallocation and a third-party view
|
|
318
|
+
// manager (e.g. lottie-react-native) dispatches an event synchronously
|
|
319
|
+
// from within `createView`, re-entering this code path. Treat it the
|
|
320
|
+
// same as a missing view.
|
|
321
|
+
// See https://github.com/software-mansion/react-native-reanimated/issues/9636.
|
|
309
322
|
tags[i] = -1;
|
|
310
323
|
}
|
|
311
324
|
}
|
package/android/src/main/java/com/swmansion/reanimated/keyboard/KeyboardAnimationCallback.java
CHANGED
|
@@ -10,6 +10,7 @@ public class KeyboardAnimationCallback extends WindowInsetsAnimationCompat.Callb
|
|
|
10
10
|
private final NotifyAboutKeyboardChangeFunction mNotifyAboutKeyboardChange;
|
|
11
11
|
private static final int CONTENT_TYPE_MASK = WindowInsetsCompat.Type.ime();
|
|
12
12
|
private final boolean mIsNavigationBarTranslucent;
|
|
13
|
+
private boolean mPendingStartDispatch = false;
|
|
13
14
|
|
|
14
15
|
public KeyboardAnimationCallback(
|
|
15
16
|
Keyboard keyboard,
|
|
@@ -30,7 +31,9 @@ public class KeyboardAnimationCallback extends WindowInsetsAnimationCompat.Callb
|
|
|
30
31
|
return bounds;
|
|
31
32
|
}
|
|
32
33
|
mKeyboard.onAnimationStart();
|
|
33
|
-
|
|
34
|
+
// Dispatching synchronously here can cancel the still-pending insets
|
|
35
|
+
// animation, so the dispatch is deferred to onProgress or onEnd.
|
|
36
|
+
mPendingStartDispatch = true;
|
|
34
37
|
return super.onStart(animation, bounds);
|
|
35
38
|
}
|
|
36
39
|
|
|
@@ -47,6 +50,7 @@ public class KeyboardAnimationCallback extends WindowInsetsAnimationCompat.Callb
|
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
if (isAnyKeyboardAnimationRunning) {
|
|
53
|
+
mPendingStartDispatch = false;
|
|
50
54
|
mKeyboard.updateHeight(insets, mIsNavigationBarTranslucent);
|
|
51
55
|
mNotifyAboutKeyboardChange.call();
|
|
52
56
|
}
|
|
@@ -56,6 +60,10 @@ public class KeyboardAnimationCallback extends WindowInsetsAnimationCompat.Callb
|
|
|
56
60
|
@Override
|
|
57
61
|
public void onEnd(@NonNull WindowInsetsAnimationCompat animation) {
|
|
58
62
|
if (isKeyboardAnimation(animation)) {
|
|
63
|
+
if (mPendingStartDispatch) {
|
|
64
|
+
mNotifyAboutKeyboardChange.call();
|
|
65
|
+
}
|
|
66
|
+
mPendingStartDispatch = false;
|
|
59
67
|
mKeyboard.onAnimationEnd();
|
|
60
68
|
mNotifyAboutKeyboardChange.call();
|
|
61
69
|
}
|
|
@@ -130,7 +130,18 @@ RCT_EXPORT_MODULE(ReanimatedModule);
|
|
|
130
130
|
- (BOOL)hasReactNativeFailedReload
|
|
131
131
|
{
|
|
132
132
|
id workletsModule = [_moduleRegistry moduleForName:"WorkletsModule"];
|
|
133
|
-
|
|
133
|
+
if (![_moduleRegistry moduleIsInitialized:[workletsModule class]]) {
|
|
134
|
+
return YES;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// On a double reload React Native can momentarily leave the surface presenter without
|
|
138
|
+
// a scheduler. This is another manifestation of the same non-fatal reload race, so we
|
|
139
|
+
// bail on it here instead of asserting on a nil scheduler later in installTurboModule.
|
|
140
|
+
if ([_surfacePresenter scheduler] == nil) {
|
|
141
|
+
return YES;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return NO;
|
|
134
145
|
}
|
|
135
146
|
|
|
136
147
|
- (void)checkBridgeless
|
|
@@ -4,7 +4,6 @@ import { unprocessColor, unprocessColorsInProps } from './common/style/processor
|
|
|
4
4
|
import { ReanimatedModule } from './ReanimatedModule';
|
|
5
5
|
const FLUSH_INTERVAL_MS = 500;
|
|
6
6
|
export const PropsRegistryGarbageCollector = {
|
|
7
|
-
viewsCount: 0,
|
|
8
7
|
viewsMap: new Map(),
|
|
9
8
|
intervalId: null,
|
|
10
9
|
registerView(viewTag, component) {
|
|
@@ -17,15 +16,13 @@ export const PropsRegistryGarbageCollector = {
|
|
|
17
16
|
return;
|
|
18
17
|
}
|
|
19
18
|
this.viewsMap.set(viewTag, component);
|
|
20
|
-
this.
|
|
21
|
-
if (this.viewsCount === 1) {
|
|
19
|
+
if (this.viewsMap.size === 1) {
|
|
22
20
|
this.registerInterval();
|
|
23
21
|
}
|
|
24
22
|
},
|
|
25
23
|
unregisterView(viewTag) {
|
|
26
|
-
this.viewsMap.delete(viewTag);
|
|
27
|
-
this.
|
|
28
|
-
if (this.viewsCount === 0) {
|
|
24
|
+
const deleted = this.viewsMap.delete(viewTag);
|
|
25
|
+
if (deleted && this.viewsMap.size === 0) {
|
|
29
26
|
this.unregisterInterval();
|
|
30
27
|
}
|
|
31
28
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["unprocessColor","unprocessColorsInProps","ReanimatedModule","FLUSH_INTERVAL_MS","PropsRegistryGarbageCollector","
|
|
1
|
+
{"version":3,"names":["unprocessColor","unprocessColorsInProps","ReanimatedModule","FLUSH_INTERVAL_MS","PropsRegistryGarbageCollector","viewsMap","Map","intervalId","registerView","viewTag","component","has","set","size","registerInterval","unregisterView","deleted","delete","unregisterInterval","syncPropsBackToReact","settledUpdates","getSettledUpdates","styleProps","get","unprocessProps","_syncStylePropsBackToReact","setInterval","bind","clearInterval","props","unprocessBoxShadow","Array","isArray","boxShadow","map","color"],"sourceRoot":"../../src","sources":["PropsRegistryGarbageCollector.ts"],"mappings":"AAAA,YAAY;;AAEZ,SACEA,cAAc,EACdC,sBAAsB,QACjB,kCAAkC;AAGzC,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAMC,iBAAiB,GAAG,GAAG;AAE7B,OAAO,MAAMC,6BAA6B,GAAG;EAC3CC,QAAQ,EAAE,IAAIC,GAAG,CAAqC,CAAC;EACvDC,UAAU,EAAE,IAA6B;EAEzCC,YAAYA,CAACC,OAAe,EAAEC,SAAqC,EAAE;IACnE,IAAI,IAAI,CAACL,QAAQ,CAACM,GAAG,CAACF,OAAO,CAAC,EAAE;MAC9B;MACA;MACA;MACA;MACA;MACA;IACF;IACA,IAAI,CAACJ,QAAQ,CAACO,GAAG,CAACH,OAAO,EAAEC,SAAS,CAAC;IACrC,IAAI,IAAI,CAACL,QAAQ,CAACQ,IAAI,KAAK,CAAC,EAAE;MAC5B,IAAI,CAACC,gBAAgB,CAAC,CAAC;IACzB;EACF,CAAC;EAEDC,cAAcA,CAACN,OAAe,EAAE;IAC9B,MAAMO,OAAO,GAAG,IAAI,CAACX,QAAQ,CAACY,MAAM,CAACR,OAAO,CAAC;IAC7C,IAAIO,OAAO,IAAI,IAAI,CAACX,QAAQ,CAACQ,IAAI,KAAK,CAAC,EAAE;MACvC,IAAI,CAACK,kBAAkB,CAAC,CAAC;IAC3B;EACF,CAAC;EAEDC,oBAAoBA,CAAA,EAAG;IACrB,MAAMC,cAAc,GAAGlB,gBAAgB,CAACmB,iBAAiB,CAAC,CAAC;IAC3D,KAAK,MAAM;MAAEZ,OAAO;MAAEa;IAAW,CAAC,IAAIF,cAAc,EAAE;MACpD,IAAIE,UAAU,KAAK,IAAI,EAAE;QACvB;MACF;MACA,MAAMZ,SAAS,GAAG,IAAI,CAACL,QAAQ,CAACkB,GAAG,CAACd,OAAO,CAAC;MAC5Ce,cAAc,CAACF,UAAU,CAAC;MAC1BZ,SAAS,EAAEe,0BAA0B,CAACH,UAAU,CAAC;IACnD;EACF,CAAC;EAEDR,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACP,UAAU,GAAGmB,WAAW,CAC3B,IAAI,CAACP,oBAAoB,CAACQ,IAAI,CAAC,IAAI,CAAC,EACpCxB,iBACF,CAAC;EACH,CAAC;EAEDe,kBAAkBA,CAAA,EAAG;IACnB,IAAI,IAAI,CAACX,UAAU,KAAK,IAAI,EAAE;MAC5BqB,aAAa,CAAC,IAAI,CAACrB,UAAU,CAAC;MAC9B,IAAI,CAACA,UAAU,GAAG,IAAI;IACxB;EACF;AACF,CAAC;AAED,SAASiB,cAAcA,CAACK,KAAiB,EAAE;EACzC5B,sBAAsB,CAAC4B,KAAK,CAAC;EAC7BC,kBAAkB,CAACD,KAAK,CAAC;AAC3B;AAEA,SAASC,kBAAkBA,CAACD,KAAiB,EAAE;EAC7C,IAAIE,KAAK,CAACC,OAAO,CAACH,KAAK,CAACI,SAAS,CAAC,EAAE;IAClC;IACAJ,KAAK,CAACI,SAAS,GAAGJ,KAAK,CAACI,SAAS,CAACC,GAAG,CAAED,SAAS,KAAM;MACpD,GAAGA,SAAS;MACZE,KAAK,EAAEnC,cAAc,CAACiC,SAAS,CAACE,KAAK;IACvC,CAAC,CAAC,CAAC;EACL;AACF","ignoreList":[]}
|
|
@@ -45,7 +45,7 @@ function setPath(obj, path, value) {
|
|
|
45
45
|
}
|
|
46
46
|
export function withStyleAnimation(
|
|
47
47
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
-
styleAnimations) {
|
|
48
|
+
styleAnimations, callback) {
|
|
49
49
|
'worklet';
|
|
50
50
|
|
|
51
51
|
return defineAnimation({}, () => {
|
|
@@ -148,7 +148,7 @@ styleAnimations) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
|
-
const
|
|
151
|
+
const styleAnimationCallback = finished => {
|
|
152
152
|
if (!finished) {
|
|
153
153
|
const animationsToCheck = [styleAnimations];
|
|
154
154
|
while (animationsToCheck.length > 0) {
|
|
@@ -169,6 +169,7 @@ styleAnimations) {
|
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
+
callback?.(finished);
|
|
172
173
|
};
|
|
173
174
|
return {
|
|
174
175
|
isHigherOrder: true,
|
|
@@ -176,7 +177,7 @@ styleAnimations) {
|
|
|
176
177
|
onStart,
|
|
177
178
|
current: {},
|
|
178
179
|
styleAnimations,
|
|
179
|
-
callback
|
|
180
|
+
callback: styleAnimationCallback
|
|
180
181
|
};
|
|
181
182
|
});
|
|
182
183
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ColorProperties","logger","processColor","withTiming","defineAnimation","isValidLayoutAnimationProp","resolvePath","obj","path","keys","Array","isArray","reduce","acc","current","undefined","setPath","value","currObj","i","length","withStyleAnimation","styleAnimations","onFrame","animation","now","stillGoing","entriesToCheck","currentEntry","pop","index","push","concat","key","Object","currentStyleAnimation","finished","
|
|
1
|
+
{"version":3,"names":["ColorProperties","logger","processColor","withTiming","defineAnimation","isValidLayoutAnimationProp","resolvePath","obj","path","keys","Array","isArray","reduce","acc","current","undefined","setPath","value","currObj","i","length","withStyleAnimation","styleAnimations","callback","onFrame","animation","now","stillGoing","entriesToCheck","currentEntry","pop","index","push","concat","key","Object","currentStyleAnimation","finished","isAnimatingColorProp","includes","onStart","previousAnimation","prevAnimation","prevVal","__DEV__","warn","join","propName","trim","currentAnimation","duration","styleAnimationCallback","animationsToCheck","element","values","isHigherOrder"],"sourceRoot":"../../../src","sources":["animation/styleAnimation.ts"],"mappings":"AAAA,YAAY;;AACZ,SAASA,eAAe,QAAQ,WAAW;AAC3C,SAASC,MAAM,EAAEC,YAAY,QAAQ,WAAW;AAWhD,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,eAAe,EAAEC,0BAA0B,QAAQ,QAAQ;;AAEpE;AACA;AACA,SAASC,WAAWA,CAClBC,GAAoB,EACpBC,IAAyC,EACN;EACnC,SAAS;;EACT,MAAMC,IAAuB,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EACnE,OAAOC,IAAI,CAACG,MAAM,CAAoC,CAACC,GAAG,EAAEC,OAAO,KAAK;IACtE,IAAIJ,KAAK,CAACC,OAAO,CAACE,GAAG,CAAC,IAAI,OAAOC,OAAO,KAAK,QAAQ,EAAE;MACrD,OAAOD,GAAG,CAACC,OAAO,CAAC;IACrB,CAAC,MAAM,IACLD,GAAG,KAAK,IAAI,IACZ,OAAOA,GAAG,KAAK,QAAQ,IACtBC,OAAO,IAAwBD,GAAG,EACnC;MACA,OAAQA,GAAG,CACTC,OAAO,CACR;IACH;IACA,OAAOC,SAAS;EAClB,CAAC,EAAER,GAAG,CAAC;AACT;;AAEA;;AAEA,SAASS,OAAOA,CACdT,GAAoB,EACpBC,IAAU,EACVS,KAA4B,EACtB;EACN,SAAS;;EACT,MAAMR,IAAU,GAAGC,KAAK,CAACC,OAAO,CAACH,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC;EACtD,IAAIU,OAA8B,GAAGX,GAAG;EACxC,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,IAAI,CAACW,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;IACxC;IACAD,OAAO,GAAGA,OAAmD;IAC7D,IAAI,EAAET,IAAI,CAACU,CAAC,CAAC,IAAID,OAAO,CAAC,EAAE;MACzB;MACA,IAAI,OAAOT,IAAI,CAACU,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;QACnCD,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC,GAAG,EAAE;MACvB,CAAC,MAAM;QACLD,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACvB;IACF;IACAD,OAAO,GAAGA,OAAO,CAACT,IAAI,CAACU,CAAC,CAAC,CAAC;EAC5B;EAECD,OAAO,CAA8CT,IAAI,CAACA,IAAI,CAACW,MAAM,GAAG,CAAC,CAAC,CAAC,GAC1EH,KAAK;AACT;AAOA,OAAO,SAASI,kBAAkBA;AAChC;AACAC,eAAmC,EACnCC,QAAsC,EAChB;EACtB,SAAS;;EACT,OAAOnB,eAAe,CAAuB,CAAC,CAAC,EAAE,MAAM;IACrD,SAAS;;IAET,MAAMoB,OAAO,GAAGA,CACdC,SAA+B,EAC/BC,GAAc,KACF;MACZ,IAAIC,UAAU,GAAG,KAAK;MACtB,MAAMC,cAAoD,GAAG,CAC3D;QAAEX,KAAK,EAAEQ,SAAS,CAACH,eAAe;QAAEd,IAAI,EAAE;MAAG,CAAC,CAC/C;MACD,OAAOoB,cAAc,CAACR,MAAM,GAAG,CAAC,EAAE;QAChC,MAAMS,YAAgD,GACpDD,cAAc,CAACE,GAAG,CAAC,CAAuC;QAC5D,IAAIpB,KAAK,CAACC,OAAO,CAACkB,YAAY,CAACZ,KAAK,CAAC,EAAE;UACrC,KAAK,IAAIc,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,YAAY,CAACZ,KAAK,CAACG,MAAM,EAAEW,KAAK,EAAE,EAAE;YAC9DH,cAAc,CAACI,IAAI,CAAC;cAClBf,KAAK,EAAEY,YAAY,CAACZ,KAAK,CAACc,KAAK,CAAC;cAChCvB,IAAI,EAAEqB,YAAY,CAACrB,IAAI,CAACyB,MAAM,CAACF,KAAK;YACtC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM,IACL,OAAOF,YAAY,CAACZ,KAAK,KAAK,QAAQ,IACtCY,YAAY,CAACZ,KAAK,CAACO,OAAO,KAAKT,SAAS,EACxC;UACA;UACA,KAAK,MAAMmB,GAAG,IAAIC,MAAM,CAAC1B,IAAI,CAACoB,YAAY,CAACZ,KAAK,CAAC,EAAE;YACjDW,cAAc,CAACI,IAAI,CAAC;cAClBf,KAAK,EAAEY,YAAY,CAACZ,KAAK,CAACiB,GAAG,CAAC;cAC9B1B,IAAI,EAAEqB,YAAY,CAACrB,IAAI,CAACyB,MAAM,CAACC,GAAG;YACpC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,MAAME,qBAAsC,GAC1CP,YAAY,CAACZ,KAAwB;UACvC,IAAImB,qBAAqB,CAACC,QAAQ,EAAE;YAClC;UACF;UACA,MAAMA,QAAQ,GAAGD,qBAAqB,CAACZ,OAAO,CAC5CY,qBAAqB,EACrBV,GACF,CAAC;UACD,IAAIW,QAAQ,EAAE;YACZD,qBAAqB,CAACC,QAAQ,GAAG,IAAI;YACrC,IAAID,qBAAqB,CAACb,QAAQ,EAAE;cAClCa,qBAAqB,CAACb,QAAQ,CAAC,IAAI,CAAC;YACtC;UACF,CAAC,MAAM;YACLI,UAAU,GAAG,IAAI;UACnB;;UAEA;UACA;UACA,MAAMW,oBAAoB,GACxBtC,eAAe,CAACuC,QAAQ,CAACV,YAAY,CAACrB,IAAI,CAAC,CAAC,CAAW,CAAC,IACvDqB,YAAY,CAACrB,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IACnCqB,YAAY,CAACrB,IAAI,CAACY,MAAM,GAAG,CAAC,IAC5BS,YAAY,CAACrB,IAAI,CAAC,CAAC,CAAC,KAAK,OAAQ;UAErCQ,OAAO,CACLS,SAAS,CAACX,OAAO,EACjBe,YAAY,CAACrB,IAAI,EACjB8B,oBAAoB,GAChBpC,YAAY,CAACkC,qBAAqB,CAACtB,OAAO,CAAC,GAC3CsB,qBAAqB,CAACtB,OAC5B,CAAC;QACH;MACF;MACA,OAAO,CAACa,UAAU;IACpB,CAAC;IAED,MAAMa,OAAO,GAAGA,CACdf,SAA+B,EAE/BR,KAAyB,EACzBS,GAAc,EACde,iBAAuC,KAC9B;MACT,MAAMb,cAEH,GAAG,CAAC;QAAEX,KAAK,EAAEK,eAAe;QAAEd,IAAI,EAAE;MAAG,CAAC,CAAC;MAC5C,OAAOoB,cAAc,CAACR,MAAM,GAAG,CAAC,EAAE;QAChC,MAAMS,YAEL,GAAGD,cAAc,CAACE,GAAG,CAAC,CAEtB;QACD,IAAIpB,KAAK,CAACC,OAAO,CAACkB,YAAY,CAACZ,KAAK,CAAC,EAAE;UACrC,KAAK,IAAIc,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,YAAY,CAACZ,KAAK,CAACG,MAAM,EAAEW,KAAK,EAAE,EAAE;YAC9DH,cAAc,CAACI,IAAI,CAAC;cAClBf,KAAK,EAAEY,YAAY,CAACZ,KAAK,CAACc,KAAK,CAAC;cAChCvB,IAAI,EAAEqB,YAAY,CAACrB,IAAI,CAACyB,MAAM,CAACF,KAAK;YACtC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM,IACL,OAAOF,YAAY,CAACZ,KAAK,KAAK,QAAQ,IACtCY,YAAY,CAACZ,KAAK,CAACuB,OAAO,KAAKzB,SAAS,EACxC;UACA,KAAK,MAAMmB,GAAG,IAAIC,MAAM,CAAC1B,IAAI,CAACoB,YAAY,CAACZ,KAAK,CAAC,EAAE;YACjDW,cAAc,CAACI,IAAI,CAAC;cAClBf,KAAK,EAAEY,YAAY,CAACZ,KAAK,CAACiB,GAAG,CAAC;cAC9B1B,IAAI,EAAEqB,YAAY,CAACrB,IAAI,CAACyB,MAAM,CAACC,GAAG;YACpC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,MAAMQ,aAAa,GAAGpC,WAAW,CAC/BmC,iBAAiB,EAAEnB,eAAe,EAClCO,YAAY,CAACrB,IACf,CAAC;UACD,IAAImC,OAAO,GAAGrC,WAAW,CAACW,KAAK,EAAEY,YAAY,CAACrB,IAAI,CAAC;UACnD,IAAIkC,aAAa,IAAI,CAACC,OAAO,EAAE;YAC7B;YACAA,OAAO,GAAID,aAAa,CAAS5B,OAAO;UAC1C;UACA,IAAI8B,OAAO,EAAE;YACX,IAAID,OAAO,KAAK5B,SAAS,EAAE;cACzBd,MAAM,CAAC4C,IAAI,CACT,yDAAyDhB,YAAY,CAACrB,IAAI,CAACsC,IAAI,CAC7E,GACF,CAAC,EACH,CAAC;YACH;YACA,MAAMC,QAAQ,GAAGlB,YAAY,CAACrB,IAAI,CAAC,CAAC,CAAC;YACrC,IACE,OAAOuC,QAAQ,KAAK,QAAQ,IAC5B,CAAC1C,0BAA0B,CAAC0C,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC,EAC5C;cACA/C,MAAM,CAAC4C,IAAI,CACT,IAAIE,QAAQ,4FACd,CAAC;YACH;UACF;UACA/B,OAAO,CAACS,SAAS,CAACX,OAAO,EAAEe,YAAY,CAACrB,IAAI,EAAEmC,OAAO,CAAC;UACtD,IAAIM,gBAAiC;UACrC,IACE,OAAOpB,YAAY,CAACZ,KAAK,KAAK,QAAQ,IACtC,CAACY,YAAY,CAACZ,KAAK,CAACuB,OAAO,EAC3B;YACAS,gBAAgB,GAAG9C,UAAU,CAC3B0B,YAAY,CAACZ,KAAK,EAClB;cAAEiC,QAAQ,EAAE;YAAE,CAChB,CAAoB,CAAC,CAAC;YACtBlC,OAAO,CACLS,SAAS,CAACH,eAAe,EACzBO,YAAY,CAACrB,IAAI,EACjByC,gBACF,CAAC;UACH,CAAC,MAAM;YACLA,gBAAgB,GAAGpB,YAAY,CAACZ,KAAmC;UACrE;UACAgC,gBAAgB,CAACT,OAAO,CACtBS,gBAAgB,EAChBN,OAAO,EACPjB,GAAG,EACHgB,aACF,CAAC;QACH;MACF;IACF,CAAC;IAED,MAAMS,sBAAsB,GAAId,QAAiB,IAAW;MAC1D,IAAI,CAACA,QAAQ,EAAE;QACb,MAAMe,iBAAwD,GAAG,CAC/D9B,eAAe,CAChB;QACD,OAAO8B,iBAAiB,CAAChC,MAAM,GAAG,CAAC,EAAE;UACnC,MAAM6B,gBAAqD,GACzDG,iBAAiB,CAACtB,GAAG,CAAC,CAAwC;UAChE,IAAIpB,KAAK,CAACC,OAAO,CAACsC,gBAAgB,CAAC,EAAE;YACnC,KAAK,MAAMI,OAAO,IAAIJ,gBAAgB,EAAE;cACtCG,iBAAiB,CAACpB,IAAI,CAACqB,OAAO,CAAC;YACjC;UACF,CAAC,MAAM,IACL,OAAOJ,gBAAgB,KAAK,QAAQ,IACpCA,gBAAgB,CAACT,OAAO,KAAKzB,SAAS,EACtC;YACA,KAAK,MAAME,KAAK,IAAIkB,MAAM,CAACmB,MAAM,CAACL,gBAAgB,CAAC,EAAE;cACnDG,iBAAiB,CAACpB,IAAI,CAACf,KAAK,CAAC;YAC/B;UACF,CAAC,MAAM;YACL,MAAMmB,qBAAsC,GAC1Ca,gBAAmC;YACrC,IACE,CAACb,qBAAqB,CAACC,QAAQ,IAC/BD,qBAAqB,CAACb,QAAQ,EAC9B;cACAa,qBAAqB,CAACb,QAAQ,CAAC,KAAK,CAAC;YACvC;UACF;QACF;MACF;MACAA,QAAQ,GAAGc,QAAQ,CAAC;IACtB,CAAC;IAED,OAAO;MACLkB,aAAa,EAAE,IAAI;MACnB/B,OAAO;MACPgB,OAAO;MACP1B,OAAO,EAAE,CAAC,CAAC;MACXQ,eAAe;MACfC,QAAQ,EAAE4B;IACZ,CAAC;EACH,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -8,12 +8,12 @@ function isWindowAvailable() {
|
|
|
8
8
|
// @ts-ignore Fallback if `window` is undefined.
|
|
9
9
|
return typeof window !== 'undefined';
|
|
10
10
|
}
|
|
11
|
-
export const IS_ANDROID = /* @__PURE__ */(() => Platform
|
|
12
|
-
export const IS_IOS = /* @__PURE__ */(() => Platform
|
|
13
|
-
export const IS_WEB = Platform
|
|
14
|
-
export const IS_JEST =
|
|
11
|
+
export const IS_ANDROID = /* @__PURE__ */(() => Platform?.OS === 'android')();
|
|
12
|
+
export const IS_IOS = /* @__PURE__ */(() => Platform?.OS === 'ios')();
|
|
13
|
+
export const IS_WEB = Platform?.OS === 'web';
|
|
14
|
+
export const IS_JEST = typeof globalThis.jest !== 'undefined' || process.env.NODE_ENV === 'test';
|
|
15
15
|
/** @knipIgnore */
|
|
16
|
-
export const IS_WINDOWS = Platform
|
|
16
|
+
export const IS_WINDOWS = Platform?.OS === 'windows';
|
|
17
17
|
export const IS_WINDOW_AVAILABLE = isWindowAvailable();
|
|
18
18
|
export const SHOULD_BE_USE_WEB = IS_JEST || IS_WEB || IS_WINDOWS;
|
|
19
19
|
//# sourceMappingURL=platform.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","isWindowAvailable","window","IS_ANDROID","OS","IS_IOS","IS_WEB","IS_JEST","process","env","
|
|
1
|
+
{"version":3,"names":["Platform","isWindowAvailable","window","IS_ANDROID","OS","IS_IOS","IS_WEB","IS_JEST","globalThis","jest","process","env","NODE_ENV","IS_WINDOWS","IS_WINDOW_AVAILABLE","SHOULD_BE_USE_WEB"],"sourceRoot":"../../../../src","sources":["common/constants/platform.ts"],"mappings":"AAAA,YAAY;;AACZ,SAASA,QAAQ,QAAQ,cAAc;AAEvC,SAASC,iBAAiBA,CAAA,EAAG;EAC3B;EACA;EACA;EACA;EACA,OAAO,OAAOC,MAAM,KAAK,WAAW;AACtC;AAEA,OAAO,MAAMC,UAAmB,GAAG,eAAgB,CAAC,MAClDH,QAAQ,EAAEI,EAAE,KAAK,SAAS,EAAE,CAAC;AAC/B,OAAO,MAAMC,MAAe,GAAG,eAAgB,CAAC,MAAML,QAAQ,EAAEI,EAAE,KAAK,KAAK,EAAE,CAAC;AAC/E,OAAO,MAAME,MAAe,GAAGN,QAAQ,EAAEI,EAAE,KAAK,KAAK;AACrD,OAAO,MAAMG,OAAgB,GAC3B,OAAOC,UAAU,CAACC,IAAI,KAAK,WAAW,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM;AAC3E;AACA,OAAO,MAAMC,UAAmB,GAAGb,QAAQ,EAAEI,EAAE,KAAK,SAAS;AAE7D,OAAO,MAAMU,mBAA4B,GAAGb,iBAAiB,CAAC,CAAC;AAE/D,OAAO,MAAMc,iBAAiB,GAAGR,OAAO,IAAID,MAAM,IAAIO,UAAU","ignoreList":[]}
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
// reactViewName via componentNameByReactViewName().
|
|
16
16
|
export function getViewInfo(element) {
|
|
17
17
|
return {
|
|
18
|
-
reactViewName: element?.
|
|
18
|
+
reactViewName: element?.__viewConfig?.uiViewClassName ??
|
|
19
|
+
// ReactFabricHostComponent (e.g. react-native-macos) exposes `_viewConfig`.
|
|
20
|
+
element?._viewConfig?.uiViewClassName ?? element?.__internalInstanceHandle?.type ?? element?.__internalInstanceHandle?.elementType,
|
|
19
21
|
viewTag: element?.__nativeTag
|
|
20
22
|
};
|
|
21
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getViewInfo","element","reactViewName","
|
|
1
|
+
{"version":3,"names":["getViewInfo","element","reactViewName","__viewConfig","uiViewClassName","_viewConfig","__internalInstanceHandle","type","elementType","viewTag","__nativeTag"],"sourceRoot":"../../../src","sources":["createAnimatedComponent/getViewInfo.ts"],"mappings":"AAAA,YAAY;;AAIZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,WAAWA,CAACC,OAAqB,EAG/C;EACA,OAAO;IACLC,aAAa,EAAGD,OAAO,EAAEE,YAAY,EAAEC,eAAe;IACpD;IACAH,OAAO,EAAEI,WAAW,EAAED,eAAe,IACrCH,OAAO,EAAEK,wBAAwB,EAAEC,IAAI,IACvCN,OAAO,EAAEK,wBAAwB,EAAEE,WAAsB;IAC3DC,OAAO,EAAER,OAAO,EAAES;EACpB,CAAC;AACH","ignoreList":[]}
|
|
@@ -16,7 +16,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
16
16
|
export default class AnimatedComponent extends Component {
|
|
17
17
|
_cssStyle = {}; // RN style object with Reanimated CSS properties
|
|
18
18
|
_componentRef = null;
|
|
19
|
-
_hasAnimatedRef = false;
|
|
20
19
|
// Used only on web
|
|
21
20
|
_componentDOMRef = null;
|
|
22
21
|
_willUnmount = false;
|
|
@@ -95,7 +94,6 @@ export default class AnimatedComponent extends Component {
|
|
|
95
94
|
// Component can specify ref which should be animated when animated version of the component is created.
|
|
96
95
|
// Otherwise, we animate the component itself.
|
|
97
96
|
if (componentRef && componentRef.getAnimatableRef) {
|
|
98
|
-
this._hasAnimatedRef = true;
|
|
99
97
|
return componentRef.getAnimatableRef();
|
|
100
98
|
}
|
|
101
99
|
// Case for SVG components on Web
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Component","Platform","StyleSheet","IS_JEST","ReanimatedError","SHOULD_BE_USE_WEB","getViewInfo","getShadowNodeWrapperFromRef","findHostInstance","markNodeAsRemovable","unmarkNodeAsRemovable","CSSManager","filterNonCSSStyleProps","jsx","_jsx","AnimatedComponent","_cssStyle","_componentRef","
|
|
1
|
+
{"version":3,"names":["Component","Platform","StyleSheet","IS_JEST","ReanimatedError","SHOULD_BE_USE_WEB","getViewInfo","getShadowNodeWrapperFromRef","findHostInstance","markNodeAsRemovable","unmarkNodeAsRemovable","CSSManager","filterNonCSSStyleProps","jsx","_jsx","AnimatedComponent","_cssStyle","_componentRef","_componentDOMRef","_willUnmount","constructor","ChildComponent","props","getComponentViewTag","_getViewInfo","viewTag","_onSetLocalRef","_viewInfo","undefined","shadowNodeWrapper","DOMElement","reactViewName","hostInstance","viewInfo","_setComponentRef","ref","forwardedRef","current","_resolveComponentRef","componentRef","getAnimatableRef","elementRef","_updateStyles","flatten","style","componentDidMount","_CSSManager","displayName","update","componentWillUnmount","unmountCleanup","wrapper","shouldComponentUpdate","nextProps","render","platformProps","select","web","default","collapsable"],"sourceRoot":"../../../../src","sources":["css/component/AnimatedComponent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,13 +30,13 @@ export default class CSSManager {
|
|
|
30
30
|
const hasAnimation = animationProperties !== null;
|
|
31
31
|
const hasTransition = transitionProperties !== null;
|
|
32
32
|
const normalizedStyle = hasAnimation || hasTransition || IS_ANDROID && this.hadTransitionLastUpdate ? this.propsBuilder.build(filteredStyle) : undefined;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
|
|
33
|
+
const transitionDetached = this.cssTransitionsManager.update(transitionProperties, normalizedStyle ?? {});
|
|
34
|
+
|
|
35
|
+
// Record the committed style as the base so animations and (on Android) a
|
|
36
|
+
// detaching transition can revert to it instead of interpolator defaults.
|
|
37
|
+
if (normalizedStyle && (hasAnimation || IS_ANDROID && transitionDetached)) {
|
|
37
38
|
setViewStyle(this.viewTag, normalizedStyle);
|
|
38
39
|
}
|
|
39
|
-
this.cssTransitionsManager.update(transitionProperties, normalizedStyle ?? {});
|
|
40
40
|
this.cssAnimationsManager.update(animationProperties);
|
|
41
41
|
this.hadTransitionLastUpdate = hasTransition;
|
|
42
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCompoundComponentName","getPropsBuilder","IS_ANDROID","filterCSSAndStyleProperties","setViewStyle","CSSAnimationsManager","CSSTransitionsManager","CSSManager","hadTransitionLastUpdate","constructor","shadowNodeWrapper","viewTag","reactViewName","componentDisplayName","tag","wrapper","compoundComponentName","propsBuilder","cssAnimationsManager","cssTransitionsManager","update","style","animationProperties","transitionProperties","filteredStyle","hasAnimation","hasTransition","normalizedStyle","build","undefined","unmountCleanup"],"sourceRoot":"../../../../../src","sources":["css/native/managers/CSSManager.ts"],"mappings":"AAAA,YAAY;;AACZ,SACEA,wBAAwB,EACxBC,eAAe,EACfC,UAAU,QACL,iBAAiB;AAKxB,SAASC,2BAA2B,QAAQ,aAAa;AACzD,SAASC,YAAY,QAAQ,UAAU;AACvC,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,qBAAqB,MAAM,yBAAyB;AAE3D,eAAe,MAAMC,UAAU,CAAwB;EAKrD;AACF;AACA;AACA;AACA;AACA;EACUC,uBAAuB,GAAG,KAAK;EAEvCC,WAAWA,CACT;IAAEC,iBAAiB;IAAEC,OAAO;IAAEC,aAAa,GAAG;EAAoB,CAAC,EACnEC,oBAAoB,GAAG,EAAE,EACzB;IACA,MAAMC,GAAG,GAAI,IAAI,CAACH,OAAO,GAAGA,OAAkB;IAC9C,MAAMI,OAAO,GAAGL,iBAAsC;IAEtD,MAAMM,qBAAqB,GAAGhB,wBAAwB,CACpDY,aAAa,EACbC,oBACF,CAAC;IAED,IAAI,CAACI,YAAY,GAAGhB,eAAe,CAACe,qBAAqB,CAAC;IAC1D,IAAI,CAACE,oBAAoB,GAAG,IAAIb,oBAAoB,CAClDU,OAAO,EACPD,GAAG,EACHE,qBACF,CAAC;IACD,IAAI,CAACG,qBAAqB,GAAG,IAAIb,qBAAqB,CAACS,OAAO,EAAED,GAAG,CAAC;EACtE;EAEAM,MAAMA,CAACC,KAAe,EAAQ;IAC5B,MAAM,CAACC,mBAAmB,EAAEC,oBAAoB,EAAEC,aAAa,CAAC,GAC9DrB,2BAA2B,CAACkB,KAAK,CAAC;IAEpC,MAAMI,YAAY,GAAGH,mBAAmB,KAAK,IAAI;IACjD,MAAMI,aAAa,GAAGH,oBAAoB,KAAK,IAAI;IAEnD,MAAMI,eAAe,GACnBF,YAAY,IACZC,aAAa,IACZxB,UAAU,IAAI,IAAI,CAACM,uBAAwB,GACxC,IAAI,CAACS,YAAY,CAACW,KAAK,CAACJ,aAAa,CAAC,GACtCK,SAAS;IAEf,
|
|
1
|
+
{"version":3,"names":["getCompoundComponentName","getPropsBuilder","IS_ANDROID","filterCSSAndStyleProperties","setViewStyle","CSSAnimationsManager","CSSTransitionsManager","CSSManager","hadTransitionLastUpdate","constructor","shadowNodeWrapper","viewTag","reactViewName","componentDisplayName","tag","wrapper","compoundComponentName","propsBuilder","cssAnimationsManager","cssTransitionsManager","update","style","animationProperties","transitionProperties","filteredStyle","hasAnimation","hasTransition","normalizedStyle","build","undefined","transitionDetached","unmountCleanup"],"sourceRoot":"../../../../../src","sources":["css/native/managers/CSSManager.ts"],"mappings":"AAAA,YAAY;;AACZ,SACEA,wBAAwB,EACxBC,eAAe,EACfC,UAAU,QACL,iBAAiB;AAKxB,SAASC,2BAA2B,QAAQ,aAAa;AACzD,SAASC,YAAY,QAAQ,UAAU;AACvC,OAAOC,oBAAoB,MAAM,wBAAwB;AACzD,OAAOC,qBAAqB,MAAM,yBAAyB;AAE3D,eAAe,MAAMC,UAAU,CAAwB;EAKrD;AACF;AACA;AACA;AACA;AACA;EACUC,uBAAuB,GAAG,KAAK;EAEvCC,WAAWA,CACT;IAAEC,iBAAiB;IAAEC,OAAO;IAAEC,aAAa,GAAG;EAAoB,CAAC,EACnEC,oBAAoB,GAAG,EAAE,EACzB;IACA,MAAMC,GAAG,GAAI,IAAI,CAACH,OAAO,GAAGA,OAAkB;IAC9C,MAAMI,OAAO,GAAGL,iBAAsC;IAEtD,MAAMM,qBAAqB,GAAGhB,wBAAwB,CACpDY,aAAa,EACbC,oBACF,CAAC;IAED,IAAI,CAACI,YAAY,GAAGhB,eAAe,CAACe,qBAAqB,CAAC;IAC1D,IAAI,CAACE,oBAAoB,GAAG,IAAIb,oBAAoB,CAClDU,OAAO,EACPD,GAAG,EACHE,qBACF,CAAC;IACD,IAAI,CAACG,qBAAqB,GAAG,IAAIb,qBAAqB,CAACS,OAAO,EAAED,GAAG,CAAC;EACtE;EAEAM,MAAMA,CAACC,KAAe,EAAQ;IAC5B,MAAM,CAACC,mBAAmB,EAAEC,oBAAoB,EAAEC,aAAa,CAAC,GAC9DrB,2BAA2B,CAACkB,KAAK,CAAC;IAEpC,MAAMI,YAAY,GAAGH,mBAAmB,KAAK,IAAI;IACjD,MAAMI,aAAa,GAAGH,oBAAoB,KAAK,IAAI;IAEnD,MAAMI,eAAe,GACnBF,YAAY,IACZC,aAAa,IACZxB,UAAU,IAAI,IAAI,CAACM,uBAAwB,GACxC,IAAI,CAACS,YAAY,CAACW,KAAK,CAACJ,aAAa,CAAC,GACtCK,SAAS;IAEf,MAAMC,kBAAkB,GAAG,IAAI,CAACX,qBAAqB,CAACC,MAAM,CAC1DG,oBAAoB,EACpBI,eAAe,IAAI,CAAC,CACtB,CAAC;;IAED;IACA;IACA,IACEA,eAAe,KACdF,YAAY,IAAKvB,UAAU,IAAI4B,kBAAmB,CAAC,EACpD;MACA1B,YAAY,CAAC,IAAI,CAACO,OAAO,EAAEgB,eAAe,CAAC;IAC7C;IAEA,IAAI,CAACT,oBAAoB,CAACE,MAAM,CAACE,mBAAmB,CAAC;IAErD,IAAI,CAACd,uBAAuB,GAAGkB,aAAa;EAC9C;EAEAK,cAAcA,CAAA,EAAS;IACrB,IAAI,CAACb,oBAAoB,CAACa,cAAc,CAAC,CAAC;IAC1C,IAAI,CAACZ,qBAAqB,CAACY,cAAc,CAAC,CAAC;EAC7C;AACF","ignoreList":[]}
|
|
@@ -15,6 +15,11 @@ export default class CSSTransitionsManager {
|
|
|
15
15
|
this.viewTag = viewTag;
|
|
16
16
|
this.shadowNodeWrapper = shadowNodeWrapper;
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @returns Whether this update detached a running transition (its props were
|
|
21
|
+
* removed, or normalized to an empty config, e.g. when duration is 0).
|
|
22
|
+
*/
|
|
18
23
|
update(transitionProperties, nextProps = {}) {
|
|
19
24
|
const transitionConfig = transitionProperties && normalizeCSSTransitionProperties(transitionProperties);
|
|
20
25
|
const prevProps = this.prevProps;
|
|
@@ -26,8 +31,9 @@ export default class CSSTransitionsManager {
|
|
|
26
31
|
if (!prevProps || !transitionConfig) {
|
|
27
32
|
if (this.hasTransition) {
|
|
28
33
|
this.detach();
|
|
34
|
+
return true;
|
|
29
35
|
}
|
|
30
|
-
return;
|
|
36
|
+
return false;
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
// Trigger transition for changed properties only
|
|
@@ -36,6 +42,7 @@ export default class CSSTransitionsManager {
|
|
|
36
42
|
runCSSTransition(this.shadowNodeWrapper, config);
|
|
37
43
|
this.hasTransition = true;
|
|
38
44
|
}
|
|
45
|
+
return false;
|
|
39
46
|
}
|
|
40
47
|
unmountCleanup() {
|
|
41
48
|
// noop
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["deepEqual","normalizeCSSTransitionProperties","runCSSTransition","unregisterCSSTransition","CSSTransitionsManager","prevProps","propsWithTransitions","Set","hasTransition","constructor","shadowNodeWrapper","viewTag","update","transitionProperties","nextProps","transitionConfig","detach","config","processTransitionConfig","Object","keys","length","unmountCleanup","clear","oldProps","newProps","newTransitionConfig","result","specificProperties","isAllowedProperty","property","has","getPropertySettings","settings","all","triggerTransition","value","add","key","delete"],"sourceRoot":"../../../../../src","sources":["css/native/managers/CSSTransitionsManager.ts"],"mappings":"AAAA,YAAY;;AAOZ,SAASA,SAAS,QAAQ,aAAa;AACvC,SAASC,gCAAgC,QAAQ,kBAAkB;AACnE,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,UAAU;AAMpE,eAAe,MAAMC,qBAAqB,CAAmC;EAI3E;EACQC,SAAS,GAAyB,IAAI;EAC9C;EACA;EACQC,oBAAoB,GAAG,IAAIC,GAAG,CAAS,CAAC;EAChD;EACQC,aAAa,GAAG,KAAK;EAE7BC,WAAWA,CAACC,iBAAoC,EAAEC,OAAe,EAAE;IACjE,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,iBAAiB,GAAGA,iBAAiB;EAC5C;
|
|
1
|
+
{"version":3,"names":["deepEqual","normalizeCSSTransitionProperties","runCSSTransition","unregisterCSSTransition","CSSTransitionsManager","prevProps","propsWithTransitions","Set","hasTransition","constructor","shadowNodeWrapper","viewTag","update","transitionProperties","nextProps","transitionConfig","detach","config","processTransitionConfig","Object","keys","length","unmountCleanup","clear","oldProps","newProps","newTransitionConfig","result","specificProperties","isAllowedProperty","property","has","getPropertySettings","settings","all","triggerTransition","value","add","key","delete"],"sourceRoot":"../../../../../src","sources":["css/native/managers/CSSTransitionsManager.ts"],"mappings":"AAAA,YAAY;;AAOZ,SAASA,SAAS,QAAQ,aAAa;AACvC,SAASC,gCAAgC,QAAQ,kBAAkB;AACnE,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,UAAU;AAMpE,eAAe,MAAMC,qBAAqB,CAAmC;EAI3E;EACQC,SAAS,GAAyB,IAAI;EAC9C;EACA;EACQC,oBAAoB,GAAG,IAAIC,GAAG,CAAS,CAAC;EAChD;EACQC,aAAa,GAAG,KAAK;EAE7BC,WAAWA,CAACC,iBAAoC,EAAEC,OAAe,EAAE;IACjE,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,iBAAiB,GAAGA,iBAAiB;EAC5C;;EAEA;AACF;AACA;AACA;EACEE,MAAMA,CACJC,oBAAoD,EACpDC,SAAwB,GAAG,CAAC,CAAC,EACpB;IACT,MAAMC,gBAAgB,GACpBF,oBAAoB,IACpBZ,gCAAgC,CAACY,oBAAoB,CAAC;IAExD,MAAMR,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,IAAI,CAACA,SAAS,GAAGS,SAAS;;IAE1B;IACA;IACA;IACA,IAAI,CAACT,SAAS,IAAI,CAACU,gBAAgB,EAAE;MACnC,IAAI,IAAI,CAACP,aAAa,EAAE;QACtB,IAAI,CAACQ,MAAM,CAAC,CAAC;QACb,OAAO,IAAI;MACb;MACA,OAAO,KAAK;IACd;;IAEA;IACA,MAAMC,MAAM,GAAG,IAAI,CAACC,uBAAuB,CACzCb,SAAS,EACTS,SAAS,EACTC,gBACF,CAAC;IAED,IAAII,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACI,MAAM,EAAE;MAC9BnB,gBAAgB,CAAC,IAAI,CAACQ,iBAAiB,EAAEO,MAAM,CAAC;MAChD,IAAI,CAACT,aAAa,GAAG,IAAI;IAC3B;IAEA,OAAO,KAAK;EACd;EAEAc,cAAcA,CAAA,EAAS;IACrB;EAAA;EAGMN,MAAMA,CAAA,EAAG;IACfb,uBAAuB,CAAC,IAAI,CAACQ,OAAO,CAAC;IACrC,IAAI,CAACL,oBAAoB,CAACiB,KAAK,CAAC,CAAC;IACjC,IAAI,CAACf,aAAa,GAAG,KAAK;EAC5B;EAEQU,uBAAuBA,CAC7BM,QAAuB,EACvBC,QAAuB,EACvBC,mBAAkD,EAC7B;IACrB,MAAMC,MAA2B,GAAG,CAAC,CAAC;IAEtC,MAAMC,kBAAkB,GAAGF,mBAAmB,CAACE,kBAAkB;IAEjE,MAAMC,iBAAiB,GAAIC,QAAgB,IACzC,CAACF,kBAAkB,IAAIA,kBAAkB,CAACG,GAAG,CAACD,QAAQ,CAAC;IAEzD,MAAME,mBAAmB,GAAIF,QAAgB,IAC3CJ,mBAAmB,CAACO,QAAQ,CAACH,QAAQ,CAAC,IACtCJ,mBAAmB,CAACO,QAAQ,CAACC,GAAG;IAElC,MAAMC,iBAAiB,GAAIL,QAAgB,IAAK;MAC9CH,MAAM,CAACG,QAAQ,CAAC,GAAG;QACjB,GAAGE,mBAAmB,CAACF,QAAQ,CAAC;QAChCM,KAAK,EAAE,CAACZ,QAAQ,CAACM,QAAQ,CAAC,EAAEL,QAAQ,CAACK,QAAQ,CAAC;MAChD,CAAC;MACD,IAAI,CAACxB,oBAAoB,CAAC+B,GAAG,CAACP,QAAQ,CAAC;IACzC,CAAC;;IAED;IACA,KAAK,MAAMQ,GAAG,IAAIb,QAAQ,EAAE;MAC1B,IAAII,iBAAiB,CAACS,GAAG,CAAC,IAAI,CAACtC,SAAS,CAACyB,QAAQ,CAACa,GAAG,CAAC,EAAEd,QAAQ,CAACc,GAAG,CAAC,CAAC,EAAE;QACtEH,iBAAiB,CAACG,GAAG,CAAC;MACxB;IACF;;IAEA;IACA;IACA;IACA,KAAK,MAAMA,GAAG,IAAId,QAAQ,EAAE;MAC1B,IAAI,CAACK,iBAAiB,CAACS,GAAG,CAAC,EAAE;QAC3B,IAAI,IAAI,CAAChC,oBAAoB,CAACyB,GAAG,CAACO,GAAG,CAAC,EAAE;UACtC;UACA;UACAX,MAAM,CAACW,GAAG,CAAC,GAAG,IAAI;UAClB,IAAI,CAAChC,oBAAoB,CAACiC,MAAM,CAACD,GAAG,CAAC;QACvC;MACF,CAAC,MAAM,IAAI,EAAEA,GAAG,IAAIb,QAAQ,CAAC,EAAE;QAC7B;QACAU,iBAAiB,CAACG,GAAG,CAAC;MACxB;IACF;IAEA,OAAOX,MAAM;EACf;AACF","ignoreList":[]}
|
|
@@ -10,16 +10,20 @@ export const processStrokeDashArray = value => {
|
|
|
10
10
|
if (isLength(value)) {
|
|
11
11
|
result = [value];
|
|
12
12
|
} else if (Array.isArray(value)) {
|
|
13
|
-
|
|
14
|
-
// "If the number of values is odd, the pattern behaves as if it was duplicated
|
|
15
|
-
// to yield an even number of values"
|
|
16
|
-
// (https://www.w3.org/TR/fill-stroke-3/#valdef-stroke-dasharray-length-percentage)
|
|
17
|
-
result = value.length % 2 === 0 || value.length < 3 ? value : value.concat(value);
|
|
13
|
+
result = [...value];
|
|
18
14
|
} else if (value === 'none') {
|
|
19
15
|
return 'none';
|
|
20
16
|
} else {
|
|
21
17
|
throw new ReanimatedError(ERROR_MESSAGES.invalidDashArray(value));
|
|
22
18
|
}
|
|
19
|
+
|
|
20
|
+
// Per the SVG spec an odd-length dash array is repeated to an even length.
|
|
21
|
+
// react-native-svg's extractStroke does this, but animated values bypass it
|
|
22
|
+
// and an odd-length array crashes Android's DashPathEffect, so we repeat here.
|
|
23
|
+
// https://www.w3.org/TR/fill-stroke-3/#valdef-stroke-dasharray-length-percentage
|
|
24
|
+
if (result.length % 2 === 1) {
|
|
25
|
+
result = result.concat(result);
|
|
26
|
+
}
|
|
23
27
|
if (__DEV__) {
|
|
24
28
|
isValidDashArray(result);
|
|
25
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ReanimatedError","isLength","ERROR_MESSAGES","invalidDashArray","value","JSON","stringify","processStrokeDashArray","result","Array","isArray","length","concat","__DEV__","isValidDashArray","every"],"sourceRoot":"../../../../../../src","sources":["css/svg/native/processors/stroke.ts"],"mappings":"AAAA,YAAY;;AAIZ,SAASA,eAAe,QAAQ,oBAAoB;AACpD,SAASC,QAAQ,QAAQ,gBAAgB;AAEzC,OAAO,MAAMC,cAAc,GAAG;EAC5BC,gBAAgB,EAAGC,KAAc,IAC/B,oCAAoCC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC;AAC7D,CAAC;AAED,OAAO,MAAMG,sBAGZ,GAAIH,KAAK,IAAK;EACb,IAAII,MAAoB,GAAG,EAAE;EAE7B,IAAIP,QAAQ,CAACG,KAAK,CAAC,EAAE;IACnBI,MAAM,GAAG,CAACJ,KAAK,CAAC;EAClB,CAAC,MAAM,IAAIK,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,EAAE;IAC/
|
|
1
|
+
{"version":3,"names":["ReanimatedError","isLength","ERROR_MESSAGES","invalidDashArray","value","JSON","stringify","processStrokeDashArray","result","Array","isArray","length","concat","__DEV__","isValidDashArray","every"],"sourceRoot":"../../../../../../src","sources":["css/svg/native/processors/stroke.ts"],"mappings":"AAAA,YAAY;;AAIZ,SAASA,eAAe,QAAQ,oBAAoB;AACpD,SAASC,QAAQ,QAAQ,gBAAgB;AAEzC,OAAO,MAAMC,cAAc,GAAG;EAC5BC,gBAAgB,EAAGC,KAAc,IAC/B,oCAAoCC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC;AAC7D,CAAC;AAED,OAAO,MAAMG,sBAGZ,GAAIH,KAAK,IAAK;EACb,IAAII,MAAoB,GAAG,EAAE;EAE7B,IAAIP,QAAQ,CAACG,KAAK,CAAC,EAAE;IACnBI,MAAM,GAAG,CAACJ,KAAK,CAAC;EAClB,CAAC,MAAM,IAAIK,KAAK,CAACC,OAAO,CAACN,KAAK,CAAC,EAAE;IAC/BI,MAAM,GAAG,CAAC,GAAGJ,KAAK,CAAC;EACrB,CAAC,MAAM,IAAIA,KAAK,KAAK,MAAM,EAAE;IAC3B,OAAO,MAAM;EACf,CAAC,MAAM;IACL,MAAM,IAAIJ,eAAe,CAACE,cAAc,CAACC,gBAAgB,CAACC,KAAK,CAAC,CAAC;EACnE;;EAEA;EACA;EACA;EACA;EACA,IAAII,MAAM,CAACG,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;IAC3BH,MAAM,GAAGA,MAAM,CAACI,MAAM,CAACJ,MAAM,CAAC;EAChC;EAEA,IAAIK,OAAO,EAAE;IACXC,gBAAgB,CAACN,MAAM,CAAC;EAC1B;EAEA,OAAOA,MAAM;AACf,CAAC;AAED,MAAMM,gBAAgB,GAAIV,KAAmB,IAAK;EAChD,IAAI,CAACA,KAAK,CAACW,KAAK,CAACd,QAAQ,CAAC,EAAE;IAC1B,MAAM,IAAID,eAAe,CAACE,cAAc,CAACC,gBAAgB,CAACC,KAAK,CAAC,CAAC;EACnE;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
import { runOnUISync } from 'react-native-worklets';
|
|
4
|
-
import { withStyleAnimation } from '../animation';
|
|
4
|
+
import { cancelAnimation, withStyleAnimation } from '../animation';
|
|
5
5
|
import { SHOULD_BE_USE_WEB } from '../common';
|
|
6
6
|
import { LayoutAnimationType } from '../commonTypes';
|
|
7
7
|
import { makeMutableUI } from '../mutables';
|
|
@@ -52,8 +52,7 @@ function createLayoutAnimationManager() {
|
|
|
52
52
|
stopObservingProgress(tag, value);
|
|
53
53
|
value._value = style.initialValues;
|
|
54
54
|
}
|
|
55
|
-
const animation = withStyleAnimation(currentAnimation
|
|
56
|
-
animation.callback = finished => {
|
|
55
|
+
const animation = withStyleAnimation(currentAnimation, finished => {
|
|
57
56
|
if (finished) {
|
|
58
57
|
currentAnimationForTag.delete(tag);
|
|
59
58
|
mutableValuesForTag.delete(tag);
|
|
@@ -61,9 +60,9 @@ function createLayoutAnimationManager() {
|
|
|
61
60
|
stopObservingProgress(tag, value, shouldRemoveView);
|
|
62
61
|
}
|
|
63
62
|
if (style.callback) {
|
|
64
|
-
style.callback(finished
|
|
63
|
+
style.callback(finished);
|
|
65
64
|
}
|
|
66
|
-
};
|
|
65
|
+
});
|
|
67
66
|
startObservingProgress(tag, value);
|
|
68
67
|
value.value = animation;
|
|
69
68
|
},
|
|
@@ -72,7 +71,11 @@ function createLayoutAnimationManager() {
|
|
|
72
71
|
if (!value) {
|
|
73
72
|
return;
|
|
74
73
|
}
|
|
75
|
-
|
|
74
|
+
// native already made its cleanup, so we just do cleanup here on JS side
|
|
75
|
+
value.removeListener(tag + TAG_OFFSET);
|
|
76
|
+
cancelAnimation(value);
|
|
77
|
+
currentAnimationForTag.delete(tag);
|
|
78
|
+
mutableValuesForTag.delete(tag);
|
|
76
79
|
}
|
|
77
80
|
};
|
|
78
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["runOnUISync","withStyleAnimation","SHOULD_BE_USE_WEB","LayoutAnimationType","makeMutableUI","TAG_OFFSET","startObservingProgress","tag","sharedValue","addListener","global","_notifyAboutProgress","value","stopObservingProgress","removeView","removeListener","_notifyAboutEnd","createLayoutAnimationManager","currentAnimationForTag","Map","mutableValuesForTag","start","type","yogaValues","config","style","currentAnimation","animations","previousAnimation","get","set","undefined","initialValues","_value","animation","
|
|
1
|
+
{"version":3,"names":["runOnUISync","cancelAnimation","withStyleAnimation","SHOULD_BE_USE_WEB","LayoutAnimationType","makeMutableUI","TAG_OFFSET","startObservingProgress","tag","sharedValue","addListener","global","_notifyAboutProgress","value","stopObservingProgress","removeView","removeListener","_notifyAboutEnd","createLayoutAnimationManager","currentAnimationForTag","Map","mutableValuesForTag","start","type","yogaValues","config","style","currentAnimation","animations","previousAnimation","get","set","undefined","initialValues","_value","animation","finished","delete","shouldRemoveView","EXITING","callback","stop","LayoutAnimationsManager"],"sourceRoot":"../../../src","sources":["layoutReanimation/animationsManager.ts"],"mappings":"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","ignoreList":[]}
|