react-native-unistyles 3.5.2 → 3.6.0
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/README.md +3 -0
- package/android/src/main/java/com/unistyles/NativePlatform+android.kt +44 -7
- package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +1 -1
- package/cxx/converters/BackgroundImageConverter.cpp +198 -11
- package/cxx/converters/BackgroundImageConverter.h +1 -0
- package/cxx/core/HostUnistyle.cpp +6 -0
- package/cxx/core/UnistylesRegistry.cpp +5 -5
- package/cxx/core/UnistylesRegistry.h +3 -3
- package/cxx/hybridObjects/HybridShadowRegistry.cpp +53 -14
- package/cxx/hybridObjects/HybridShadowRegistry.h +3 -2
- package/cxx/hybridObjects/HybridStyleSheet.cpp +3 -3
- package/cxx/parser/Parser.cpp +47 -9
- package/cxx/shadowTree/ShadowTreeManager.cpp +5 -5
- package/cxx/shadowTree/ShadowTreeManager.h +1 -1
- package/ios/NativePlatform+ios.swift +28 -15
- package/ios/NativePlatformListener+ios.swift +9 -0
- package/lib/commonjs/components/native/deep/ActivityIndicator.js +19 -0
- package/lib/commonjs/components/native/deep/ActivityIndicator.js.map +1 -0
- package/lib/commonjs/components/native/deep/Animated.js +19 -0
- package/lib/commonjs/components/native/deep/Animated.js.map +1 -0
- package/lib/commonjs/components/native/deep/FlatList.js +19 -0
- package/lib/commonjs/components/native/deep/FlatList.js.map +1 -0
- package/lib/commonjs/components/native/deep/Image.js +19 -0
- package/lib/commonjs/components/native/deep/Image.js.map +1 -0
- package/lib/commonjs/components/native/deep/ImageBackground.js +19 -0
- package/lib/commonjs/components/native/deep/ImageBackground.js.map +1 -0
- package/lib/commonjs/components/native/deep/KeyboardAvoidingView.js +19 -0
- package/lib/commonjs/components/native/deep/KeyboardAvoidingView.js.map +1 -0
- package/lib/commonjs/components/native/deep/Pressable.js +19 -0
- package/lib/commonjs/components/native/deep/Pressable.js.map +1 -0
- package/lib/commonjs/components/native/deep/RefreshControl.js +19 -0
- package/lib/commonjs/components/native/deep/RefreshControl.js.map +1 -0
- package/lib/commonjs/components/native/deep/SafeAreaView.js +19 -0
- package/lib/commonjs/components/native/deep/SafeAreaView.js.map +1 -0
- package/lib/commonjs/components/native/deep/ScrollView.js +19 -0
- package/lib/commonjs/components/native/deep/ScrollView.js.map +1 -0
- package/lib/commonjs/components/native/deep/SectionList.js +19 -0
- package/lib/commonjs/components/native/deep/SectionList.js.map +1 -0
- package/lib/commonjs/components/native/deep/Switch.js +19 -0
- package/lib/commonjs/components/native/deep/Switch.js.map +1 -0
- package/lib/commonjs/components/native/deep/Text.js +19 -0
- package/lib/commonjs/components/native/deep/Text.js.map +1 -0
- package/lib/commonjs/components/native/deep/TextInput.js +19 -0
- package/lib/commonjs/components/native/deep/TextInput.js.map +1 -0
- package/lib/commonjs/components/native/deep/TextNativeComponent.js +28 -0
- package/lib/commonjs/components/native/deep/TextNativeComponent.js.map +1 -0
- package/lib/commonjs/components/native/deep/TouchableHighlight.js +19 -0
- package/lib/commonjs/components/native/deep/TouchableHighlight.js.map +1 -0
- package/lib/commonjs/components/native/deep/TouchableOpacity.js +19 -0
- package/lib/commonjs/components/native/deep/TouchableOpacity.js.map +1 -0
- package/lib/commonjs/components/native/deep/View.js +19 -0
- package/lib/commonjs/components/native/deep/View.js.map +1 -0
- package/lib/commonjs/components/native/deep/ViewNativeComponent.js +26 -0
- package/lib/commonjs/components/native/deep/ViewNativeComponent.js.map +1 -0
- package/lib/commonjs/components/native/deep/VirtualizedList.js +19 -0
- package/lib/commonjs/components/native/deep/VirtualizedList.js.map +1 -0
- package/lib/commonjs/components/native/index.js +43 -0
- package/lib/commonjs/components/native/index.js.map +1 -0
- package/lib/commonjs/core/createUnistylesActivityIndicator.js +13 -3
- package/lib/commonjs/core/createUnistylesActivityIndicator.js.map +1 -1
- package/lib/commonjs/core/createUnistylesElement.native.js +6 -0
- package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -1
- package/lib/commonjs/core/createUnistylesImageBackground.js +20 -17
- package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
- package/lib/commonjs/core/createUnistylesTouchableHighlight.js +6 -0
- package/lib/commonjs/core/createUnistylesTouchableHighlight.js.map +1 -1
- package/lib/commonjs/core/getClassname.js +15 -0
- package/lib/commonjs/core/getClassname.js.map +1 -1
- package/lib/commonjs/core/hasUnistyles.js +26 -0
- package/lib/commonjs/core/hasUnistyles.js.map +1 -0
- package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js +10 -0
- package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
- package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +16 -15
- package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/index.js +86 -110
- package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/styleSource.js +65 -0
- package/lib/commonjs/specs/ShadowRegistry/styleSource.js.map +1 -0
- package/lib/commonjs/unifiber/src/adapters/reanimated.js +157 -0
- package/lib/commonjs/unifiber/src/adapters/reanimated.js.map +1 -0
- package/lib/commonjs/unifiber/src/adapters/registry.js +67 -0
- package/lib/commonjs/unifiber/src/adapters/registry.js.map +1 -0
- package/lib/commonjs/unifiber/src/diagnostics.js +59 -0
- package/lib/commonjs/unifiber/src/diagnostics.js.map +1 -0
- package/lib/commonjs/unifiber/src/fiber.js +199 -0
- package/lib/commonjs/unifiber/src/fiber.js.map +1 -0
- package/lib/commonjs/unifiber/src/host.js +214 -0
- package/lib/commonjs/unifiber/src/host.js.map +1 -0
- package/lib/commonjs/unifiber/src/index.js +38 -0
- package/lib/commonjs/unifiber/src/index.js.map +1 -0
- package/lib/commonjs/web/css/core.js +30 -5
- package/lib/commonjs/web/css/core.js.map +1 -1
- package/lib/commonjs/web/css/state.js +4 -1
- package/lib/commonjs/web/css/state.js.map +1 -1
- package/lib/commonjs/web/registry.js +1 -1
- package/lib/commonjs/web/registry.js.map +1 -1
- package/lib/commonjs/web/utils/unistyle.js +11 -3
- package/lib/commonjs/web/utils/unistyle.js.map +1 -1
- package/lib/module/components/native/deep/ActivityIndicator.js +5 -0
- package/lib/module/components/native/deep/ActivityIndicator.js.map +1 -0
- package/lib/module/components/native/deep/Animated.js +5 -0
- package/lib/module/components/native/deep/Animated.js.map +1 -0
- package/lib/module/components/native/deep/FlatList.js +5 -0
- package/lib/module/components/native/deep/FlatList.js.map +1 -0
- package/lib/module/components/native/deep/Image.js +5 -0
- package/lib/module/components/native/deep/Image.js.map +1 -0
- package/lib/module/components/native/deep/ImageBackground.js +5 -0
- package/lib/module/components/native/deep/ImageBackground.js.map +1 -0
- package/lib/module/components/native/deep/KeyboardAvoidingView.js +5 -0
- package/lib/module/components/native/deep/KeyboardAvoidingView.js.map +1 -0
- package/lib/module/components/native/deep/Pressable.js +5 -0
- package/lib/module/components/native/deep/Pressable.js.map +1 -0
- package/lib/module/components/native/deep/RefreshControl.js +5 -0
- package/lib/module/components/native/deep/RefreshControl.js.map +1 -0
- package/lib/module/components/native/deep/SafeAreaView.js +5 -0
- package/lib/module/components/native/deep/SafeAreaView.js.map +1 -0
- package/lib/module/components/native/deep/ScrollView.js +5 -0
- package/lib/module/components/native/deep/ScrollView.js.map +1 -0
- package/lib/module/components/native/deep/SectionList.js +5 -0
- package/lib/module/components/native/deep/SectionList.js.map +1 -0
- package/lib/module/components/native/deep/Switch.js +5 -0
- package/lib/module/components/native/deep/Switch.js.map +1 -0
- package/lib/module/components/native/deep/Text.js +5 -0
- package/lib/module/components/native/deep/Text.js.map +1 -0
- package/lib/module/components/native/deep/TextInput.js +5 -0
- package/lib/module/components/native/deep/TextInput.js.map +1 -0
- package/lib/module/components/native/deep/TextNativeComponent.js +8 -0
- package/lib/module/components/native/deep/TextNativeComponent.js.map +1 -0
- package/lib/module/components/native/deep/TouchableHighlight.js +5 -0
- package/lib/module/components/native/deep/TouchableHighlight.js.map +1 -0
- package/lib/module/components/native/deep/TouchableOpacity.js +5 -0
- package/lib/module/components/native/deep/TouchableOpacity.js.map +1 -0
- package/lib/module/components/native/deep/View.js +5 -0
- package/lib/module/components/native/deep/View.js.map +1 -0
- package/lib/module/components/native/deep/ViewNativeComponent.js +8 -0
- package/lib/module/components/native/deep/ViewNativeComponent.js.map +1 -0
- package/lib/module/components/native/deep/VirtualizedList.js +5 -0
- package/lib/module/components/native/deep/VirtualizedList.js.map +1 -0
- package/lib/module/components/native/index.js +43 -0
- package/lib/module/components/native/index.js.map +1 -0
- package/lib/module/core/createUnistylesActivityIndicator.js +13 -3
- package/lib/module/core/createUnistylesActivityIndicator.js.map +1 -1
- package/lib/module/core/createUnistylesElement.native.js +6 -0
- package/lib/module/core/createUnistylesElement.native.js.map +1 -1
- package/lib/module/core/createUnistylesImageBackground.js +20 -17
- package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
- package/lib/module/core/createUnistylesTouchableHighlight.js +6 -0
- package/lib/module/core/createUnistylesTouchableHighlight.js.map +1 -1
- package/lib/module/core/getClassname.js +16 -1
- package/lib/module/core/getClassname.js.map +1 -1
- package/lib/module/core/hasUnistyles.js +21 -0
- package/lib/module/core/hasUnistyles.js.map +1 -0
- package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js +10 -0
- package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
- package/lib/module/core/withUnistyles/withUnistyles.native.js +14 -14
- package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/index.js +86 -110
- package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/styleSource.js +60 -0
- package/lib/module/specs/ShadowRegistry/styleSource.js.map +1 -0
- package/lib/module/unifiber/src/adapters/reanimated.js +152 -0
- package/lib/module/unifiber/src/adapters/reanimated.js.map +1 -0
- package/lib/module/unifiber/src/adapters/registry.js +62 -0
- package/lib/module/unifiber/src/adapters/registry.js.map +1 -0
- package/lib/module/unifiber/src/diagnostics.js +52 -0
- package/lib/module/unifiber/src/diagnostics.js.map +1 -0
- package/lib/module/unifiber/src/fiber.js +183 -0
- package/lib/module/unifiber/src/fiber.js.map +1 -0
- package/lib/module/unifiber/src/host.js +191 -0
- package/lib/module/unifiber/src/host.js.map +1 -0
- package/lib/module/unifiber/src/index.js +33 -0
- package/lib/module/unifiber/src/index.js.map +1 -0
- package/lib/module/web/css/core.js +28 -4
- package/lib/module/web/css/core.js.map +1 -1
- package/lib/module/web/css/state.js +5 -2
- package/lib/module/web/css/state.js.map +1 -1
- package/lib/module/web/registry.js +1 -1
- package/lib/module/web/registry.js.map +1 -1
- package/lib/module/web/utils/unistyle.js +11 -3
- package/lib/module/web/utils/unistyle.js.map +1 -1
- package/lib/typescript/src/components/native/deep/ActivityIndicator.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/ActivityIndicator.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/Animated.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/Animated.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/FlatList.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/FlatList.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/Image.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/Image.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/ImageBackground.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/ImageBackground.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/KeyboardAvoidingView.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/KeyboardAvoidingView.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/Pressable.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/Pressable.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/RefreshControl.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/RefreshControl.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/SafeAreaView.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/SafeAreaView.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/ScrollView.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/ScrollView.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/SectionList.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/SectionList.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/Switch.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/Switch.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/Text.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/Text.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/TextInput.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/TextInput.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/TextNativeComponent.d.ts +3 -0
- package/lib/typescript/src/components/native/deep/TextNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/TouchableHighlight.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/TouchableHighlight.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/TouchableOpacity.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/TouchableOpacity.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/View.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/View.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/ViewNativeComponent.d.ts +3 -0
- package/lib/typescript/src/components/native/deep/ViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/components/native/deep/VirtualizedList.d.ts +2 -0
- package/lib/typescript/src/components/native/deep/VirtualizedList.d.ts.map +1 -0
- package/lib/typescript/src/components/native/index.d.ts +4 -0
- package/lib/typescript/src/components/native/index.d.ts.map +1 -0
- package/lib/typescript/src/components/scopeChildren.d.ts +1 -1
- package/lib/typescript/src/core/createUnistylesActivityIndicator.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesTouchableHighlight.d.ts.map +1 -1
- package/lib/typescript/src/core/getClassname.d.ts.map +1 -1
- package/lib/typescript/src/core/hasUnistyles.d.ts +2 -0
- package/lib/typescript/src/core/hasUnistyles.d.ts.map +1 -0
- package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -1
- package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts +6 -0
- package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +2 -2
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/styleSource.d.ts +11 -0
- package/lib/typescript/src/specs/ShadowRegistry/styleSource.d.ts.map +1 -0
- package/lib/typescript/src/specs/ShadowRegistry/types.d.ts +4 -41
- package/lib/typescript/src/specs/ShadowRegistry/types.d.ts.map +1 -1
- package/lib/typescript/src/unifiber/src/adapters/reanimated.d.ts +17 -0
- package/lib/typescript/src/unifiber/src/adapters/reanimated.d.ts.map +1 -0
- package/lib/typescript/src/unifiber/src/adapters/registry.d.ts +23 -0
- package/lib/typescript/src/unifiber/src/adapters/registry.d.ts.map +1 -0
- package/lib/typescript/src/unifiber/src/diagnostics.d.ts +10 -0
- package/lib/typescript/src/unifiber/src/diagnostics.d.ts.map +1 -0
- package/lib/typescript/src/unifiber/src/fiber.d.ts +48 -0
- package/lib/typescript/src/unifiber/src/fiber.d.ts.map +1 -0
- package/lib/typescript/src/unifiber/src/host.d.ts +32 -0
- package/lib/typescript/src/unifiber/src/host.d.ts.map +1 -0
- package/lib/typescript/src/unifiber/src/index.d.ts +49 -0
- package/lib/typescript/src/unifiber/src/index.d.ts.map +1 -0
- package/lib/typescript/src/web/css/core.d.ts +1 -0
- package/lib/typescript/src/web/css/core.d.ts.map +1 -1
- package/lib/typescript/src/web/css/state.d.ts.map +1 -1
- package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
- package/metro/babel-transformer.js +1040 -0
- package/metro/index.d.ts +31 -0
- package/metro/index.js +170 -0
- package/package.json +26 -8
- package/plugin/index.d.ts +7 -0
- package/plugin/index.js +36 -16
- package/src/components/native/deep/ActivityIndicator.ts +2 -0
- package/src/components/native/deep/Animated.ts +2 -0
- package/src/components/native/deep/FlatList.ts +2 -0
- package/src/components/native/deep/Image.ts +2 -0
- package/src/components/native/deep/ImageBackground.ts +2 -0
- package/src/components/native/deep/KeyboardAvoidingView.ts +2 -0
- package/src/components/native/deep/Pressable.ts +2 -0
- package/src/components/native/deep/RefreshControl.ts +2 -0
- package/src/components/native/deep/SafeAreaView.ts +2 -0
- package/src/components/native/deep/ScrollView.ts +2 -0
- package/src/components/native/deep/SectionList.ts +2 -0
- package/src/components/native/deep/Switch.ts +2 -0
- package/src/components/native/deep/Text.ts +2 -0
- package/src/components/native/deep/TextInput.ts +2 -0
- package/src/components/native/deep/TextNativeComponent.ts +5 -0
- package/src/components/native/deep/TouchableHighlight.ts +2 -0
- package/src/components/native/deep/TouchableOpacity.ts +2 -0
- package/src/components/native/deep/View.ts +2 -0
- package/src/components/native/deep/ViewNativeComponent.ts +5 -0
- package/src/components/native/deep/VirtualizedList.ts +2 -0
- package/src/components/native/index.ts +41 -0
- package/src/core/createUnistylesActivityIndicator.tsx +11 -4
- package/src/core/createUnistylesElement.native.tsx +5 -0
- package/src/core/createUnistylesImageBackground.tsx +27 -23
- package/src/core/createUnistylesTouchableHighlight.tsx +5 -0
- package/src/core/getClassname.ts +10 -1
- package/src/core/hasUnistyles.ts +20 -0
- package/src/core/useProxifiedUnistyles/useProxifiedUnistyles.ts +11 -0
- package/src/core/withUnistyles/withUnistyles.native.tsx +22 -25
- package/src/specs/ShadowRegistry/index.ts +87 -149
- package/src/specs/ShadowRegistry/styleSource.ts +78 -0
- package/src/specs/ShadowRegistry/types.ts +3 -43
- package/src/unifiber/LICENSE +21 -0
- package/src/unifiber/README.md +92 -0
- package/src/unifiber/src/adapters/reanimated.ts +204 -0
- package/src/unifiber/src/adapters/registry.ts +102 -0
- package/src/unifiber/src/diagnostics.ts +55 -0
- package/src/unifiber/src/fiber.ts +262 -0
- package/src/unifiber/src/host.ts +236 -0
- package/src/unifiber/src/index.ts +43 -0
- package/src/web/css/core.ts +29 -4
- package/src/web/css/state.ts +6 -2
- package/src/web/registry.ts +1 -1
- package/src/web/utils/unistyle.ts +12 -3
- package/lib/typescript/src/__tests__/mocks.spec.d.ts +0 -2
- package/lib/typescript/src/__tests__/mocks.spec.d.ts.map +0 -1
- package/lib/typescript/src/__tests__/passForwardRef.spec.d.ts +0 -2
- package/lib/typescript/src/__tests__/passForwardRef.spec.d.ts.map +0 -1
- package/lib/typescript/src/__tests__/scoped-theme.spec.d.ts +0 -2
- package/lib/typescript/src/__tests__/scoped-theme.spec.d.ts.map +0 -1
- package/lib/typescript/src/__tests__/shadow-registry.spec.d.ts +0 -2
- package/lib/typescript/src/__tests__/shadow-registry.spec.d.ts.map +0 -1
- package/lib/typescript/src/__tests__/web-listener.spec.d.ts +0 -2
- package/lib/typescript/src/__tests__/web-listener.spec.d.ts.map +0 -1
- package/lib/typescript/src/__tests__/web-runtime.spec.d.ts +0 -2
- package/lib/typescript/src/__tests__/web-runtime.spec.d.ts.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Keeps Reanimated's CSS style copy (`_cssStyle`) in sync with native-only style updates.
|
|
4
|
+
// Private fields are pinned by test/reanimated-contract.test.ts for 4.5 and 4.7.
|
|
5
|
+
|
|
6
|
+
import * as fiber from '../fiber';
|
|
7
|
+
|
|
8
|
+
// Bound once: Metro's inline requires
|
|
9
|
+
const {
|
|
10
|
+
contextReaderFor
|
|
11
|
+
} = fiber;
|
|
12
|
+
const CLASS_COMPONENT = fiber.Tag.ClassComponent;
|
|
13
|
+
// Symbol.for: two copies of unifiber in one bundle never wrap a component twice
|
|
14
|
+
const STATE = Symbol.for('unifiber.reanimated.css');
|
|
15
|
+
|
|
16
|
+
// Kept out of AnimatedComponentLike: a unique symbol in a public type breaks consumers' declaration builds (TS4023)
|
|
17
|
+
|
|
18
|
+
const hasCSSConfig = cssStyle => {
|
|
19
|
+
for (const key in cssStyle) {
|
|
20
|
+
if (key.startsWith('transition') || key.startsWith('animation')) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// Keyframe animations and pseudo-styles register again on update after componentWillUnmount cleaned them up.
|
|
28
|
+
// React runs no componentWillUnmount for a subtree deleted while hidden, so on a hidden owner they would leak.
|
|
29
|
+
const registersOnUpdate = cssStyle => {
|
|
30
|
+
for (const key in cssStyle) {
|
|
31
|
+
if (key.startsWith('animation')) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const value = cssStyle[key];
|
|
35
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
36
|
+
for (const selector in value) {
|
|
37
|
+
if (selector === 'default' || selector.startsWith(':')) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Deepest case: ScrollView with refreshControl on Android, 6-7 fibers
|
|
48
|
+
const MAX_OWNER_DEPTH = 12;
|
|
49
|
+
|
|
50
|
+
// The class whose `_componentRef` is this host's public instance. Lists don't match: their ref isn't a host.
|
|
51
|
+
export const animatedComponentOf = host => {
|
|
52
|
+
const fiber = host;
|
|
53
|
+
if (fiber?.memoizedProps?.collapsable !== false) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const publicInstance = fiber.stateNode?.canonical?.publicInstance;
|
|
57
|
+
if (!publicInstance) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
let current = fiber.return;
|
|
61
|
+
for (let depth = 0; current && depth < MAX_OWNER_DEPTH; depth++) {
|
|
62
|
+
if (current.tag === CLASS_COMPONENT && current.stateNode?._componentRef === publicInstance) {
|
|
63
|
+
return isAnimatedComponent(current.stateNode) ? current.stateNode : null;
|
|
64
|
+
}
|
|
65
|
+
current = current.return;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
};
|
|
69
|
+
const isAnimatedComponent = owner => typeof owner?._updateStyles === 'function' && typeof owner.shouldComponentUpdate === 'function' && owner._cssStyle !== null && typeof owner._cssStyle === 'object';
|
|
70
|
+
function updateStylesThroughSource(props) {
|
|
71
|
+
const state = this[STATE];
|
|
72
|
+
state.original.call(this, props);
|
|
73
|
+
if (!hasCSSConfig(this._cssStyle)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const epoch = state.source.epoch();
|
|
77
|
+
const read = contextReaderFor(this, state.rendering);
|
|
78
|
+
const contexts = state.source.contexts ?? [];
|
|
79
|
+
let contextChanged = false;
|
|
80
|
+
for (let i = 0; i < contexts.length; i++) {
|
|
81
|
+
const context = contexts[i];
|
|
82
|
+
const value = read(context);
|
|
83
|
+
const key = state.source.contextKey ? state.source.contextKey(context, value) : value;
|
|
84
|
+
if (state.contextKeys[i] !== key) {
|
|
85
|
+
state.contextKeys[i] = key;
|
|
86
|
+
contextChanged = true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (contextChanged || state.styleProp !== props.style || state.epoch !== epoch) {
|
|
90
|
+
state.fresh = state.source.resolve(props, read);
|
|
91
|
+
state.styleProp = props.style;
|
|
92
|
+
state.epoch = epoch;
|
|
93
|
+
}
|
|
94
|
+
const fresh = state.fresh;
|
|
95
|
+
if (!fresh) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// only the keys Reanimated kept: animated styles were split out of _cssStyle
|
|
100
|
+
for (const key in this._cssStyle) {
|
|
101
|
+
if (key in fresh) {
|
|
102
|
+
this._cssStyle[key] = fresh[key];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Marks the render phase, where context must be read from React's stack
|
|
108
|
+
function shouldUpdateMarkingRender(...args) {
|
|
109
|
+
const state = this[STATE];
|
|
110
|
+
state.rendering = true;
|
|
111
|
+
try {
|
|
112
|
+
return state.originalShouldUpdate.apply(this, args);
|
|
113
|
+
} finally {
|
|
114
|
+
state.rendering = false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export const reanimatedCSSAdapter = {
|
|
118
|
+
name: 'react-native-reanimated/css',
|
|
119
|
+
gate: host => host.memoizedProps?.collapsable === false,
|
|
120
|
+
claim: animatedComponentOf,
|
|
121
|
+
attach: (owner, source) => {
|
|
122
|
+
if (owner[STATE]) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
owner[STATE] = {
|
|
126
|
+
source,
|
|
127
|
+
original: owner._updateStyles,
|
|
128
|
+
originalShouldUpdate: owner.shouldComponentUpdate,
|
|
129
|
+
rendering: false,
|
|
130
|
+
styleProp: undefined,
|
|
131
|
+
epoch: -1,
|
|
132
|
+
contextKeys: [],
|
|
133
|
+
fresh: undefined
|
|
134
|
+
};
|
|
135
|
+
owner._updateStyles = updateStylesThroughSource;
|
|
136
|
+
owner.shouldComponentUpdate = shouldUpdateMarkingRender;
|
|
137
|
+
},
|
|
138
|
+
refresh: owner => {
|
|
139
|
+
// not mounted yet
|
|
140
|
+
if (typeof owner._CSSManager?.update !== 'function') {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Hidden transitions still run, so the reveal shows the new value instead of animating from the old one
|
|
145
|
+
if (owner._willUnmount === true && registersOnUpdate(owner._cssStyle)) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
owner._updateStyles(owner.props);
|
|
149
|
+
owner._CSSManager.update(owner._cssStyle, owner.props);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=reanimated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fiber","contextReaderFor","CLASS_COMPONENT","Tag","ClassComponent","STATE","Symbol","for","hasCSSConfig","cssStyle","key","startsWith","registersOnUpdate","value","Array","isArray","selector","MAX_OWNER_DEPTH","animatedComponentOf","host","memoizedProps","collapsable","publicInstance","stateNode","canonical","current","return","depth","tag","_componentRef","isAnimatedComponent","owner","_updateStyles","shouldComponentUpdate","_cssStyle","updateStylesThroughSource","props","state","original","call","epoch","source","read","rendering","contexts","contextChanged","i","length","context","contextKey","contextKeys","styleProp","style","fresh","resolve","shouldUpdateMarkingRender","args","originalShouldUpdate","apply","reanimatedCSSAdapter","name","gate","claim","attach","undefined","refresh","_CSSManager","update","_willUnmount"],"sourceRoot":"../../../../../src","sources":["unifiber/src/adapters/reanimated.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// An adapter that throws is disabled for the session and reported once
|
|
4
|
+
export const createOwnerRegistry = (source, adapters, onAdapterError) => {
|
|
5
|
+
const disabledAdapters = new Set();
|
|
6
|
+
const disable = (adapter, error) => {
|
|
7
|
+
disabledAdapters.add(adapter);
|
|
8
|
+
onAdapterError?.(`adapter ${adapter.name} failed: ${String(error)}`);
|
|
9
|
+
};
|
|
10
|
+
// Not inline closures: a closure in link() makes Hermes allocate its environment on every call
|
|
11
|
+
const attachOwner = (adapter, host) => {
|
|
12
|
+
try {
|
|
13
|
+
const owner = adapter.claim(host);
|
|
14
|
+
if (owner) {
|
|
15
|
+
adapter.attach(owner, source);
|
|
16
|
+
}
|
|
17
|
+
} catch (error) {
|
|
18
|
+
disable(adapter, error);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const refreshOwner = (adapter, host, seen) => {
|
|
22
|
+
try {
|
|
23
|
+
const owner = adapter.claim(host);
|
|
24
|
+
if (owner && !seen.has(owner)) {
|
|
25
|
+
seen.add(owner);
|
|
26
|
+
adapter.attach(owner, source);
|
|
27
|
+
adapter.refresh(owner, source);
|
|
28
|
+
}
|
|
29
|
+
} catch (error) {
|
|
30
|
+
disable(adapter, error);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
link(host) {
|
|
35
|
+
if (!host) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
for (let i = 0; i < adapters.length; i++) {
|
|
39
|
+
const adapter = adapters[i];
|
|
40
|
+
if (adapter.gate(host) && !disabledAdapters.has(adapter)) {
|
|
41
|
+
attachOwner(adapter, host);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
refresh(hosts) {
|
|
46
|
+
const seen = new Set();
|
|
47
|
+
for (let h = 0; h < hosts.length; h++) {
|
|
48
|
+
const host = hosts[h];
|
|
49
|
+
if (!host) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
for (let i = 0; i < adapters.length; i++) {
|
|
53
|
+
const adapter = adapters[i];
|
|
54
|
+
if (adapter.gate(host) && !disabledAdapters.has(adapter)) {
|
|
55
|
+
refreshOwner(adapter, host, seen);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createOwnerRegistry","source","adapters","onAdapterError","disabledAdapters","Set","disable","adapter","error","add","name","String","attachOwner","host","owner","claim","attach","refreshOwner","seen","has","refresh","link","i","length","gate","hosts","h"],"sourceRoot":"../../../../../src","sources":["unifiber/src/adapters/registry.ts"],"mappings":";;AA8BA;AACA,OAAO,MAAMA,mBAAmB,GAAGA,CAC/BC,MAAmB,EACnBC,QAA0C,EAC1CC,cAAyC,KACzB;EAChB,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAAe,CAAC;EAChD,MAAMC,OAAO,GAAGA,CAACC,OAAqB,EAAEC,KAAc,KAAK;IACvDJ,gBAAgB,CAACK,GAAG,CAACF,OAAO,CAAC;IAC7BJ,cAAc,GAAG,WAAWI,OAAO,CAACG,IAAI,YAAYC,MAAM,CAACH,KAAK,CAAC,EAAE,CAAC;EACxE,CAAC;EACD;EACA,MAAMI,WAAW,GAAGA,CAACL,OAAqB,EAAEM,IAAU,KAAK;IACvD,IAAI;MACA,MAAMC,KAAK,GAAGP,OAAO,CAACQ,KAAK,CAACF,IAAI,CAAC;MAEjC,IAAIC,KAAK,EAAE;QACPP,OAAO,CAACS,MAAM,CAACF,KAAK,EAAEb,MAAM,CAAC;MACjC;IACJ,CAAC,CAAC,OAAOO,KAAK,EAAE;MACZF,OAAO,CAACC,OAAO,EAAEC,KAAK,CAAC;IAC3B;EACJ,CAAC;EACD,MAAMS,YAAY,GAAGA,CAACV,OAAqB,EAAEM,IAAU,EAAEK,IAAiB,KAAK;IAC3E,IAAI;MACA,MAAMJ,KAAK,GAAGP,OAAO,CAACQ,KAAK,CAACF,IAAI,CAAC;MAEjC,IAAIC,KAAK,IAAI,CAACI,IAAI,CAACC,GAAG,CAACL,KAAK,CAAC,EAAE;QAC3BI,IAAI,CAACT,GAAG,CAACK,KAAK,CAAC;QACfP,OAAO,CAACS,MAAM,CAACF,KAAK,EAAEb,MAAM,CAAC;QAC7BM,OAAO,CAACa,OAAO,CAACN,KAAK,EAAEb,MAAM,CAAC;MAClC;IACJ,CAAC,CAAC,OAAOO,KAAK,EAAE;MACZF,OAAO,CAACC,OAAO,EAAEC,KAAK,CAAC;IAC3B;EACJ,CAAC;EAED,OAAO;IACHa,IAAIA,CAACR,IAAI,EAAE;MACP,IAAI,CAACA,IAAI,EAAE;QACP;MACJ;MAEA,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpB,QAAQ,CAACqB,MAAM,EAAED,CAAC,EAAE,EAAE;QACtC,MAAMf,OAAO,GAAGL,QAAQ,CAACoB,CAAC,CAAE;QAE5B,IAAIf,OAAO,CAACiB,IAAI,CAACX,IAAI,CAAC,IAAI,CAACT,gBAAgB,CAACe,GAAG,CAACZ,OAAO,CAAC,EAAE;UACtDK,WAAW,CAACL,OAAO,EAAEM,IAAI,CAAC;QAC9B;MACJ;IACJ,CAAC;IACDO,OAAOA,CAACK,KAAK,EAAE;MACX,MAAMP,IAAI,GAAG,IAAIb,GAAG,CAAS,CAAC;MAE9B,KAAK,IAAIqB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAACF,MAAM,EAAEG,CAAC,EAAE,EAAE;QACnC,MAAMb,IAAI,GAAGY,KAAK,CAACC,CAAC,CAAC;QAErB,IAAI,CAACb,IAAI,EAAE;UACP;QACJ;QAEA,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpB,QAAQ,CAACqB,MAAM,EAAED,CAAC,EAAE,EAAE;UACtC,MAAMf,OAAO,GAAGL,QAAQ,CAACoB,CAAC,CAAE;UAE5B,IAAIf,OAAO,CAACiB,IAAI,CAACX,IAAI,CAAC,IAAI,CAACT,gBAAgB,CAACe,GAAG,CAACZ,OAAO,CAAC,EAAE;YACtDU,YAAY,CAACV,OAAO,EAAEM,IAAI,EAAEK,IAAI,CAAC;UACrC;QACJ;MACJ;IACJ;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as host from './host';
|
|
4
|
+
|
|
5
|
+
// Bound once: Metro's inline requires
|
|
6
|
+
const {
|
|
7
|
+
committedHalf,
|
|
8
|
+
fiberOf
|
|
9
|
+
} = host;
|
|
10
|
+
const styleDiffers = (a, b) => a.memoizedProps?.style !== b.memoizedProps?.style;
|
|
11
|
+
const flattenInto = (style, out) => {
|
|
12
|
+
if (Array.isArray(style)) {
|
|
13
|
+
for (let i = 0; i < style.length; i++) {
|
|
14
|
+
flattenInto(style[i], out);
|
|
15
|
+
}
|
|
16
|
+
} else if (style && typeof style === 'object') {
|
|
17
|
+
Object.assign(out, style);
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
};
|
|
21
|
+
// Keys that differ from React's committed props: React re-sends them on the view's next render
|
|
22
|
+
export const verify = (host, expected) => {
|
|
23
|
+
const baseline = committedHalf(fiberOf(host), styleDiffers) ?? fiberOf(host);
|
|
24
|
+
const react = flattenInto(baseline.memoizedProps?.style, {});
|
|
25
|
+
const drift = [];
|
|
26
|
+
for (const key in expected) {
|
|
27
|
+
if (react[key] !== expected[key]) {
|
|
28
|
+
drift.push({
|
|
29
|
+
key,
|
|
30
|
+
react: react[key],
|
|
31
|
+
expected: expected[key]
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return drift;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// Development builds only
|
|
39
|
+
export const getOwners = (host, max = 8) => {
|
|
40
|
+
const owners = [];
|
|
41
|
+
for (let owner = fiberOf(host)._debugOwner; owner && owners.length < max; owner = owner._debugOwner ?? owner.owner) {
|
|
42
|
+
const name = owner.name ?? owner.type?.displayName ?? owner.type?.name ?? owner.type?.render?.name;
|
|
43
|
+
if (name) {
|
|
44
|
+
owners.push(name);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return owners;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Development builds only
|
|
51
|
+
export const getCreationStack = host => fiberOf(host)._debugStack?.stack;
|
|
52
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["host","committedHalf","fiberOf","styleDiffers","a","b","memoizedProps","style","flattenInto","out","Array","isArray","i","length","Object","assign","verify","expected","baseline","react","drift","key","push","getOwners","max","owners","owner","_debugOwner","name","type","displayName","render","getCreationStack","_debugStack","stack"],"sourceRoot":"../../../../src","sources":["unifiber/src/diagnostics.ts"],"mappings":";;AAEA,OAAO,KAAKA,IAAI,MAAM,QAAQ;;AAE9B;AACA,MAAM;EAAEC,aAAa;EAAEC;AAAQ,CAAC,GAAGF,IAAI;AAEvC,MAAMG,YAAY,GAAGA,CAACC,CAAW,EAAEC,CAAW,KAAKD,CAAC,CAACE,aAAa,EAAEC,KAAK,KAAKF,CAAC,CAACC,aAAa,EAAEC,KAAK;AAEpG,MAAMC,WAAW,GAAGA,CAACD,KAAc,EAAEE,GAA4B,KAAK;EAClE,IAAIC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;IACtB,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,KAAK,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;MACnCJ,WAAW,CAACD,KAAK,CAACK,CAAC,CAAC,EAAEH,GAAG,CAAC;IAC9B;EACJ,CAAC,MAAM,IAAIF,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC3CO,MAAM,CAACC,MAAM,CAACN,GAAG,EAAEF,KAAK,CAAC;EAC7B;EAEA,OAAOE,GAAG;AACd,CAAC;AAID;AACA,OAAO,MAAMO,MAAM,GAAGA,CAAChB,IAAU,EAAEiB,QAAiC,KAAmB;EACnF,MAAMC,QAAQ,GAAGjB,aAAa,CAACC,OAAO,CAACF,IAAI,CAAC,EAAEG,YAAY,CAAC,IAAID,OAAO,CAACF,IAAI,CAAC;EAC5E,MAAMmB,KAAK,GAAGX,WAAW,CAACU,QAAQ,CAACZ,aAAa,EAAEC,KAAK,EAAE,CAAC,CAAC,CAAC;EAC5D,MAAMa,KAAmB,GAAG,EAAE;EAE9B,KAAK,MAAMC,GAAG,IAAIJ,QAAQ,EAAE;IACxB,IAAIE,KAAK,CAACE,GAAG,CAAC,KAAKJ,QAAQ,CAACI,GAAG,CAAC,EAAE;MAC9BD,KAAK,CAACE,IAAI,CAAC;QAAED,GAAG;QAAEF,KAAK,EAAEA,KAAK,CAACE,GAAG,CAAC;QAAEJ,QAAQ,EAAEA,QAAQ,CAACI,GAAG;MAAE,CAAC,CAAC;IACnE;EACJ;EAEA,OAAOD,KAAK;AAChB,CAAC;;AAED;AACA,OAAO,MAAMG,SAAS,GAAGA,CAACvB,IAAU,EAAEwB,GAAG,GAAG,CAAC,KAAoB;EAC7D,MAAMC,MAAqB,GAAG,EAAE;EAEhC,KAAK,IAAIC,KAAK,GAAGxB,OAAO,CAACF,IAAI,CAAC,CAAC2B,WAAW,EAAED,KAAK,IAAID,MAAM,CAACZ,MAAM,GAAGW,GAAG,EAAEE,KAAK,GAAGA,KAAK,CAACC,WAAW,IAAID,KAAK,CAACA,KAAK,EAAE;IAChH,MAAME,IAAI,GAAGF,KAAK,CAACE,IAAI,IAAIF,KAAK,CAACG,IAAI,EAAEC,WAAW,IAAIJ,KAAK,CAACG,IAAI,EAAED,IAAI,IAAIF,KAAK,CAACG,IAAI,EAAEE,MAAM,EAAEH,IAAI;IAElG,IAAIA,IAAI,EAAE;MACNH,MAAM,CAACH,IAAI,CAACM,IAAI,CAAC;IACrB;EACJ;EAEA,OAAOH,MAAM;AACjB,CAAC;;AAED;AACA,OAAO,MAAMO,gBAAgB,GAAIhC,IAAU,IAAyBE,OAAO,CAACF,IAAI,CAAC,CAACiC,WAAW,EAAEC,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// The only module that reads React's fiber fields. A missing field gives undefined / null for that call, never a throw.
|
|
4
|
+
|
|
5
|
+
// ReactWorkTags, React 19
|
|
6
|
+
export const Tag = {
|
|
7
|
+
ClassComponent: 1,
|
|
8
|
+
HostRoot: 3,
|
|
9
|
+
HostComponent: 5,
|
|
10
|
+
ContextProvider: 10,
|
|
11
|
+
Suspense: 13,
|
|
12
|
+
Offscreen: 22,
|
|
13
|
+
Activity: 31
|
|
14
|
+
};
|
|
15
|
+
export const raw = fiber => fiber;
|
|
16
|
+
export const hostFiberOf = instance => instance?.__internalInstanceHandle ?? null;
|
|
17
|
+
|
|
18
|
+
// RN composites that keep their host behind a ref of their own, most common first
|
|
19
|
+
const compositeHostRefs = [handle => handle?.getScrollResponder?.()?.getNativeScrollRef?.(),
|
|
20
|
+
// FlatList, SectionList, VirtualizedList
|
|
21
|
+
handle => handle?.getNativeScrollRef?.(),
|
|
22
|
+
// ScrollView
|
|
23
|
+
handle => handle?._viewRef,
|
|
24
|
+
// ImageBackground
|
|
25
|
+
handle => handle?.viewRef?.current,
|
|
26
|
+
// KeyboardAvoidingView
|
|
27
|
+
handle => handle?._nativeRef // RefreshControl
|
|
28
|
+
];
|
|
29
|
+
export const resolveHostFiber = handle => {
|
|
30
|
+
const direct = hostFiberOf(handle);
|
|
31
|
+
if (direct || !handle) {
|
|
32
|
+
return direct;
|
|
33
|
+
}
|
|
34
|
+
for (let i = 0; i < compositeHostRefs.length; i++) {
|
|
35
|
+
const fiber = hostFiberOf(compositeHostRefs[i](handle));
|
|
36
|
+
if (fiber) {
|
|
37
|
+
return fiber;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
42
|
+
export const fiberOfInstance = instance => instance?._reactInternals ?? null;
|
|
43
|
+
export const firstHostBelow = fiber => {
|
|
44
|
+
let current = raw(fiber);
|
|
45
|
+
while (current && current.tag !== Tag.HostComponent) {
|
|
46
|
+
current = current.child;
|
|
47
|
+
}
|
|
48
|
+
return current ?? null;
|
|
49
|
+
};
|
|
50
|
+
export const hostAncestor = (fiber, levels = 1) => {
|
|
51
|
+
let current = raw(fiber)?.return;
|
|
52
|
+
while (current) {
|
|
53
|
+
if (current.tag === Tag.HostComponent && --levels === 0) {
|
|
54
|
+
return current;
|
|
55
|
+
}
|
|
56
|
+
current = current.return;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
};
|
|
60
|
+
export const shadowNodesOf = (fiber, out) => {
|
|
61
|
+
const current = raw(fiber);
|
|
62
|
+
const node = current?.stateNode?.node;
|
|
63
|
+
const alternateNode = current?.alternate?.stateNode?.node;
|
|
64
|
+
if (node) {
|
|
65
|
+
out.push(node);
|
|
66
|
+
}
|
|
67
|
+
if (alternateNode && alternateNode !== node) {
|
|
68
|
+
out.push(alternateNode);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const childOfParent = (parent, a, b) => {
|
|
72
|
+
for (let child = parent.child; child; child = child.sibling) {
|
|
73
|
+
if (child === a || child === b) {
|
|
74
|
+
return child;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// React 19.2 findCurrentFiberUsingSlowPath, returning null where React throws
|
|
81
|
+
export const committedOf = fiber => {
|
|
82
|
+
const self = raw(fiber);
|
|
83
|
+
if (!self) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const alternate = self.alternate;
|
|
87
|
+
if (!alternate) {
|
|
88
|
+
let root = self;
|
|
89
|
+
while (root.return) {
|
|
90
|
+
root = root.return;
|
|
91
|
+
}
|
|
92
|
+
return root.tag === Tag.HostRoot ? fiber : null;
|
|
93
|
+
}
|
|
94
|
+
let a = self;
|
|
95
|
+
let b = alternate;
|
|
96
|
+
while (true) {
|
|
97
|
+
const parentA = a.return;
|
|
98
|
+
if (!parentA) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
const parentB = parentA.alternate;
|
|
102
|
+
if (!parentB) {
|
|
103
|
+
const next = parentA.return;
|
|
104
|
+
if (next) {
|
|
105
|
+
a = next;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
if (parentA.child === parentB.child) {
|
|
111
|
+
const found = childOfParent(parentA, a, b);
|
|
112
|
+
return found === a ? fiber : found === b ? alternate : null;
|
|
113
|
+
}
|
|
114
|
+
if (a.return !== b.return) {
|
|
115
|
+
a = parentA;
|
|
116
|
+
b = parentB;
|
|
117
|
+
} else {
|
|
118
|
+
const inA = childOfParent(parentA, a, b);
|
|
119
|
+
const inB = inA ? null : childOfParent(parentB, a, b);
|
|
120
|
+
if (!inA && !inB) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const aUnderA = inA ? inA === a : inB !== a;
|
|
124
|
+
a = aUnderA ? parentA : parentB;
|
|
125
|
+
b = aUnderA ? parentB : parentA;
|
|
126
|
+
}
|
|
127
|
+
if (a.alternate !== b) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (a.tag !== Tag.HostRoot) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return a.stateNode?.current === a ? fiber : alternate;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// a provider's other half can hold its previous value
|
|
138
|
+
const committedProviderValue = provider => {
|
|
139
|
+
const alternate = provider.alternate;
|
|
140
|
+
if (!alternate || alternate.memoizedProps?.value === provider.memoizedProps?.value) {
|
|
141
|
+
return provider.memoizedProps?.value;
|
|
142
|
+
}
|
|
143
|
+
return (raw(committedOf(provider)) ?? provider).memoizedProps?.value;
|
|
144
|
+
};
|
|
145
|
+
export const readContext = (fiber, context, fallback) => {
|
|
146
|
+
for (let current = raw(fiber)?.return; current; current = current.return) {
|
|
147
|
+
if (current.tag === Tag.ContextProvider && (current.type === context || current.type?._context === context)) {
|
|
148
|
+
return committedProviderValue(current);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return fallback;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
// Fabric is a secondary renderer: its context stack is `_currentValue2`. Only valid during render.
|
|
155
|
+
export const readContextDuringRender = context => context?._currentValue2;
|
|
156
|
+
export const contextReaderFor = (instance, rendering) => rendering ? readContextDuringRender : context => readCommittedContext(instance, context);
|
|
157
|
+
const NO_PROVIDER = Symbol('no provider');
|
|
158
|
+
const readCommittedContext = (instance, context) => {
|
|
159
|
+
const value = readContext(committedOf(fiberOfInstance(instance)), context, NO_PROVIDER);
|
|
160
|
+
return value === NO_PROVIDER ? readContextDuringRender(context) : value;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// pendingProps too, so React still bails out. Replaced, not mutated: props are frozen in dev.
|
|
164
|
+
export const patchRenderedProps = (fiber, patch) => {
|
|
165
|
+
const self = raw(fiber);
|
|
166
|
+
if (!self) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
const patchedSelf = replaceProps(self, patch);
|
|
170
|
+
const patchedAlternate = self.alternate ? replaceProps(self.alternate, patch) : false;
|
|
171
|
+
return patchedSelf || patchedAlternate;
|
|
172
|
+
};
|
|
173
|
+
const replaceProps = (target, patch) => {
|
|
174
|
+
const props = target.memoizedProps;
|
|
175
|
+
const next = props ? patch(props) : undefined;
|
|
176
|
+
if (!next) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
target.memoizedProps = next;
|
|
180
|
+
target.pendingProps = next;
|
|
181
|
+
return true;
|
|
182
|
+
};
|
|
183
|
+
//# sourceMappingURL=fiber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Tag","ClassComponent","HostRoot","HostComponent","ContextProvider","Suspense","Offscreen","Activity","raw","fiber","hostFiberOf","instance","__internalInstanceHandle","compositeHostRefs","handle","getScrollResponder","getNativeScrollRef","_viewRef","viewRef","current","_nativeRef","resolveHostFiber","direct","i","length","fiberOfInstance","_reactInternals","firstHostBelow","tag","child","hostAncestor","levels","return","shadowNodesOf","out","node","stateNode","alternateNode","alternate","push","childOfParent","parent","a","b","sibling","committedOf","self","root","parentA","parentB","next","found","inA","inB","aUnderA","committedProviderValue","provider","memoizedProps","value","readContext","context","fallback","type","_context","readContextDuringRender","_currentValue2","contextReaderFor","rendering","readCommittedContext","NO_PROVIDER","Symbol","patchRenderedProps","patch","patchedSelf","replaceProps","patchedAlternate","target","props","undefined","pendingProps"],"sourceRoot":"../../../../src","sources":["unifiber/src/fiber.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// A Host is the view's creation fiber behind an opaque type: no allocation, and stable identity (=== / WeakMap keys).
|
|
4
|
+
|
|
5
|
+
import * as fiber from './fiber';
|
|
6
|
+
|
|
7
|
+
// Bound once: Metro's inline requires would turn each imported name used in a function into a require per call
|
|
8
|
+
const {
|
|
9
|
+
committedOf,
|
|
10
|
+
fiberOfInstance,
|
|
11
|
+
firstHostBelow,
|
|
12
|
+
hostAncestor,
|
|
13
|
+
patchRenderedProps: patchFiberProps,
|
|
14
|
+
raw,
|
|
15
|
+
resolveHostFiber,
|
|
16
|
+
shadowNodesOf
|
|
17
|
+
} = fiber;
|
|
18
|
+
const {
|
|
19
|
+
HostComponent: HOST_COMPONENT,
|
|
20
|
+
Offscreen: OFFSCREEN,
|
|
21
|
+
Suspense: SUSPENSE,
|
|
22
|
+
Activity: ACTIVITY
|
|
23
|
+
} = fiber.Tag;
|
|
24
|
+
export const fiberOf = host => host;
|
|
25
|
+
export const toHost = fiber => fiber?.stateNode?.canonical?.internalInstanceHandle ?? undefined;
|
|
26
|
+
const resolveRefSlowly = ref => raw(resolveHostFiber(ref)) ?? toHost(firstHostBelow(fiberOfInstance(ref)));
|
|
27
|
+
|
|
28
|
+
// The fast path is inlined: legacy Hermes doesn't inline calls
|
|
29
|
+
export const getHostFor = ref => {
|
|
30
|
+
const fiber = ref?.__internalInstanceHandle;
|
|
31
|
+
if (fiber !== undefined) {
|
|
32
|
+
return fiber;
|
|
33
|
+
}
|
|
34
|
+
return resolveRefSlowly(ref);
|
|
35
|
+
};
|
|
36
|
+
export const getShadowNodeFor = ref => {
|
|
37
|
+
const fiber = ref?.__internalInstanceHandle;
|
|
38
|
+
if (fiber !== undefined) {
|
|
39
|
+
return fiber.stateNode?.node;
|
|
40
|
+
}
|
|
41
|
+
return resolveRefSlowly(ref)?.stateNode?.node;
|
|
42
|
+
};
|
|
43
|
+
export const getHostForInstanceHandle = handle => toHost(handle);
|
|
44
|
+
|
|
45
|
+
// Not the first host below the scroll view: on iOS a refreshControl comes first
|
|
46
|
+
export const getContentContainerFor = ref => {
|
|
47
|
+
const scroll = ref?.getInnerViewRef ? ref : ref?.getNativeScrollRef?.() ?? ref?.getScrollResponder?.();
|
|
48
|
+
return getHostFor(scroll?.getInnerViewRef?.());
|
|
49
|
+
};
|
|
50
|
+
export const getShadowNode = host => fiberOf(host).stateNode?.node;
|
|
51
|
+
|
|
52
|
+
// Two nodes only while a render is in flight; after a commit both halves share one
|
|
53
|
+
export const getShadowNodes = (host, out = []) => {
|
|
54
|
+
shadowNodesOf(host, out);
|
|
55
|
+
return out;
|
|
56
|
+
};
|
|
57
|
+
export const getNativeTag = host => fiberOf(host).stateNode?.canonical?.nativeTag;
|
|
58
|
+
export const getParentHost = host => toHost(hostAncestor(host));
|
|
59
|
+
export const patchRenderedProps = (host, patch) => patchFiberProps(host, patch);
|
|
60
|
+
export const HiddenBy = {
|
|
61
|
+
None: 0,
|
|
62
|
+
Suspense: 1,
|
|
63
|
+
Freeze: 2,
|
|
64
|
+
Activity: 4
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// `return` can point into either half of a pair; ask which half is committed only when they disagree
|
|
68
|
+
export const committedHalf = (fiber, differs) => {
|
|
69
|
+
const alternate = fiber.alternate;
|
|
70
|
+
if (!alternate || !differs(fiber, alternate)) {
|
|
71
|
+
return fiber;
|
|
72
|
+
}
|
|
73
|
+
return raw(committedOf(fiber)) ?? null;
|
|
74
|
+
};
|
|
75
|
+
const hiddenStateDiffers = (a, b) => a.memoizedState === null !== (b.memoizedState === null);
|
|
76
|
+
|
|
77
|
+
// React's own visibility bit on the Offscreen instance: shared by both halves and flipped in the commit before refs
|
|
78
|
+
// detach, so it also holds inside a ref cleanup, where the committed half is still the old tree
|
|
79
|
+
const OFFSCREEN_VISIBLE = 1;
|
|
80
|
+
const isOffscreenHidden = offscreen => {
|
|
81
|
+
const visibility = offscreen.stateNode?._visibility;
|
|
82
|
+
if (typeof visibility === 'number') {
|
|
83
|
+
return (visibility & OFFSCREEN_VISIBLE) === 0;
|
|
84
|
+
}
|
|
85
|
+
return committedHalf(offscreen, hiddenStateDiffers)?.memoizedState != null;
|
|
86
|
+
};
|
|
87
|
+
const freezeDiffers = (a, b) => a.memoizedProps?.freeze !== b.memoizedProps?.freeze;
|
|
88
|
+
|
|
89
|
+
// react-freeze: Freeze > Suspense > Suspender. The Suspender keeps stale props because it throws, so read Freeze's.
|
|
90
|
+
const isFrozenBoundary = suspense => committedHalf(suspense.return, freezeDiffers)?.memoizedProps?.freeze === true;
|
|
91
|
+
|
|
92
|
+
// Every hidden subtree sits under an Offscreen fiber with memoizedState set
|
|
93
|
+
export const getHiddenReasons = host => {
|
|
94
|
+
let reasons = 0;
|
|
95
|
+
for (let current = fiberOf(host).return; current; current = current.return) {
|
|
96
|
+
if (current.tag !== OFFSCREEN || !isOffscreenHidden(current)) {
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const boundary = current.return;
|
|
100
|
+
if (boundary?.tag === ACTIVITY) {
|
|
101
|
+
reasons |= HiddenBy.Activity;
|
|
102
|
+
} else if (boundary?.tag === SUSPENSE) {
|
|
103
|
+
reasons |= isFrozenBoundary(boundary) ? HiddenBy.Freeze : HiddenBy.Suspense;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return reasons;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// Any hidden Offscreen, as in collectVisibleAncestors. Stops at the first: the reason isn't needed
|
|
110
|
+
export const isHidden = host => {
|
|
111
|
+
for (let current = fiberOf(host).return; current; current = current.return) {
|
|
112
|
+
if (current.tag === OFFSCREEN && isOffscreenHidden(current)) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
};
|
|
118
|
+
export const isSuspended = host => (getHiddenReasons(host) & HiddenBy.Suspense) !== 0;
|
|
119
|
+
export const isFrozen = host => (getHiddenReasons(host) & HiddenBy.Freeze) !== 0;
|
|
120
|
+
export const isInHiddenActivity = host => (getHiddenReasons(host) & HiddenBy.Activity) !== 0;
|
|
121
|
+
const isHiddenOffscreen = (offscreen, boundaries) => {
|
|
122
|
+
let hidden = boundaries.get(offscreen);
|
|
123
|
+
if (hidden === undefined) {
|
|
124
|
+
hidden = isOffscreenHidden(offscreen);
|
|
125
|
+
boundaries.set(offscreen, hidden);
|
|
126
|
+
if (offscreen.alternate) {
|
|
127
|
+
boundaries.set(offscreen.alternate, hidden);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return hidden;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// Hot loops below: indexed loops and writes, explicit null checks, no helper calls (legacy Hermes)
|
|
134
|
+
export const collectVisibleAncestors = (hosts, visit) => {
|
|
135
|
+
const visibleByTag = new Map();
|
|
136
|
+
const boundaries = new Map();
|
|
137
|
+
const pending = [];
|
|
138
|
+
for (let h = 0; h < hosts.length; h++) {
|
|
139
|
+
let visible = true;
|
|
140
|
+
let count = 0;
|
|
141
|
+
for (let current = hosts[h]; current != null; current = current.return) {
|
|
142
|
+
if (current.tag === HOST_COMPONENT) {
|
|
143
|
+
const stateNode = current.stateNode;
|
|
144
|
+
if (stateNode == null || stateNode.canonical == null) {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
const answer = visibleByTag.get(stateNode.canonical.nativeTag);
|
|
148
|
+
if (answer !== undefined) {
|
|
149
|
+
visible = answer;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
pending[count++] = current;
|
|
153
|
+
} else if (current.tag === OFFSCREEN && isHiddenOffscreen(current, boundaries)) {
|
|
154
|
+
visible = false;
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (let i = 0; i < count; i++) {
|
|
159
|
+
const canonical = pending[i].stateNode.canonical;
|
|
160
|
+
visibleByTag.set(canonical.nativeTag, visible);
|
|
161
|
+
if (visible && canonical.internalInstanceHandle != null) {
|
|
162
|
+
visit(canonical.internalInstanceHandle);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// Hidden hosts included
|
|
169
|
+
export const collectAncestors = (hosts, visit) => {
|
|
170
|
+
const visitedByTag = new Set();
|
|
171
|
+
for (let h = 0; h < hosts.length; h++) {
|
|
172
|
+
for (let current = hosts[h]; current != null; current = current.return) {
|
|
173
|
+
if (current.tag !== HOST_COMPONENT) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const stateNode = current.stateNode;
|
|
177
|
+
if (stateNode == null || stateNode.canonical == null) {
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
const canonical = stateNode.canonical;
|
|
181
|
+
if (visitedByTag.has(canonical.nativeTag)) {
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
visitedByTag.add(canonical.nativeTag);
|
|
185
|
+
if (canonical.internalInstanceHandle != null) {
|
|
186
|
+
visit(canonical.internalInstanceHandle);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=host.js.map
|