react-native-css 3.0.6 → 3.1.0-rc.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/CHANGELOG.md +21 -0
- package/dist/commonjs/babel/import-plugin.js +9 -3
- package/dist/commonjs/babel/import-plugin.js.map +1 -1
- package/dist/commonjs/babel/react-native-web.js +16 -3
- package/dist/commonjs/babel/react-native-web.js.map +1 -1
- package/dist/commonjs/babel/react-native.js +7 -2
- package/dist/commonjs/babel/react-native.js.map +1 -1
- package/dist/commonjs/compiler/atRules.js +35 -0
- package/dist/commonjs/compiler/atRules.js.map +1 -1
- package/dist/commonjs/compiler/compiler.js +43 -30
- package/dist/commonjs/compiler/compiler.js.map +1 -1
- package/dist/commonjs/compiler/container-query.js +6 -1
- package/dist/commonjs/compiler/container-query.js.map +1 -1
- package/dist/commonjs/compiler/declarations.js +102 -61
- package/dist/commonjs/compiler/declarations.js.map +1 -1
- package/dist/commonjs/compiler/lightningcss-loader.js +11 -8
- package/dist/commonjs/compiler/lightningcss-loader.js.map +1 -1
- package/dist/commonjs/compiler/media-query.js +16 -6
- package/dist/commonjs/compiler/media-query.js.map +1 -1
- package/dist/commonjs/compiler/selector-builder.js +13 -3
- package/dist/commonjs/compiler/selector-builder.js.map +1 -1
- package/dist/commonjs/components/FlatList.js +1 -0
- package/dist/commonjs/components/FlatList.js.map +1 -1
- package/dist/commonjs/components/ImageBackground.js +2 -6
- package/dist/commonjs/components/ImageBackground.js.map +1 -1
- package/dist/commonjs/components/KeyboardAvoidingView.js +2 -3
- package/dist/commonjs/components/KeyboardAvoidingView.js.map +1 -1
- package/dist/commonjs/components/index.cjs +46 -1
- package/dist/commonjs/components/index.cjs.map +1 -1
- package/dist/commonjs/jest/index.js +1 -1
- package/dist/commonjs/jest/index.js.map +1 -1
- package/dist/commonjs/metro/cache-version.js +43 -0
- package/dist/commonjs/metro/cache-version.js.map +1 -0
- package/dist/commonjs/metro/index.js +2 -0
- package/dist/commonjs/metro/index.js.map +1 -1
- package/dist/commonjs/metro/metro-transformer.js +1 -1
- package/dist/commonjs/metro/metro-transformer.js.map +1 -1
- package/dist/commonjs/metro/typescript.js +26 -6
- package/dist/commonjs/metro/typescript.js.map +1 -1
- package/dist/commonjs/native/api.js +12 -8
- package/dist/commonjs/native/api.js.map +1 -1
- package/dist/commonjs/native/conditions/attributes.js +16 -9
- package/dist/commonjs/native/conditions/attributes.js.map +1 -1
- package/dist/commonjs/native/conditions/container-query.js +11 -11
- package/dist/commonjs/native/conditions/container-query.js.map +1 -1
- package/dist/commonjs/native/conditions/media-query.js +1 -1
- package/dist/commonjs/native/conditions/media-query.js.map +1 -1
- package/dist/commonjs/native/react/interaction.js +10 -5
- package/dist/commonjs/native/react/interaction.js.map +1 -1
- package/dist/commonjs/native/react/rules.js +12 -5
- package/dist/commonjs/native/react/rules.js.map +1 -1
- package/dist/commonjs/native/react/useNativeCss.js +48 -12
- package/dist/commonjs/native/react/useNativeCss.js.map +1 -1
- package/dist/commonjs/native/react/usePassthrough.js +5 -2
- package/dist/commonjs/native/react/usePassthrough.js.map +1 -1
- package/dist/commonjs/native/reactivity.js +32 -22
- package/dist/commonjs/native/reactivity.js.map +1 -1
- package/dist/commonjs/native/reanimated.js +15 -3
- package/dist/commonjs/native/reanimated.js.map +1 -1
- package/dist/commonjs/native/styles/functions/color-mix.js +43 -29
- package/dist/commonjs/native/styles/functions/color-mix.js.map +1 -1
- package/dist/commonjs/native/styles/functions/filters.js +18 -5
- package/dist/commonjs/native/styles/functions/filters.js.map +1 -1
- package/dist/commonjs/native/styles/functions/numeric-functions.js +4 -3
- package/dist/commonjs/native/styles/functions/numeric-functions.js.map +1 -1
- package/dist/commonjs/native/styles/functions/string-functions.js +16 -1
- package/dist/commonjs/native/styles/functions/string-functions.js.map +1 -1
- package/dist/commonjs/native/styles/functions/transform-functions.js +5 -4
- package/dist/commonjs/native/styles/functions/transform-functions.js.map +1 -1
- package/dist/commonjs/native/styles/index.js +140 -14
- package/dist/commonjs/native/styles/index.js.map +1 -1
- package/dist/commonjs/native/styles/resolve.js +10 -6
- package/dist/commonjs/native/styles/resolve.js.map +1 -1
- package/dist/commonjs/native/styles/scale-factor.js +13 -0
- package/dist/commonjs/native/styles/scale-factor.js.map +1 -0
- package/dist/commonjs/native/styles/shorthands/animation.js +6 -3
- package/dist/commonjs/native/styles/shorthands/animation.js.map +1 -1
- package/dist/commonjs/native/styles/shorthands/index.js +11 -0
- package/dist/commonjs/native/styles/shorthands/index.js.map +1 -1
- package/dist/commonjs/native/styles/shorthands/logical-border-width.js +22 -0
- package/dist/commonjs/native/styles/shorthands/logical-border-width.js.map +1 -0
- package/dist/commonjs/native/styles/variables.js +55 -43
- package/dist/commonjs/native/styles/variables.js.map +1 -1
- package/dist/commonjs/native-internal/style-collection.js +1 -1
- package/dist/commonjs/native-internal/style-collection.js.map +1 -1
- package/dist/commonjs/utilities/dot-notation.types.js +4 -0
- package/dist/commonjs/utilities/style-descriptor.js +4 -9
- package/dist/commonjs/utilities/style-descriptor.js.map +1 -1
- package/dist/commonjs/web/api.js +1 -1
- package/dist/commonjs/web/api.js.map +1 -1
- package/dist/commonjs/web/assign-style.js +4 -1
- package/dist/commonjs/web/assign-style.js.map +1 -1
- package/dist/module/babel/import-plugin.js +11 -5
- package/dist/module/babel/import-plugin.js.map +1 -1
- package/dist/module/babel/react-native-web.js +16 -4
- package/dist/module/babel/react-native-web.js.map +1 -1
- package/dist/module/babel/react-native.js +7 -2
- package/dist/module/babel/react-native.js.map +1 -1
- package/dist/module/compiler/atRules.js +33 -0
- package/dist/module/compiler/atRules.js.map +1 -1
- package/dist/module/compiler/compiler.js +44 -31
- package/dist/module/compiler/compiler.js.map +1 -1
- package/dist/module/compiler/container-query.js +6 -1
- package/dist/module/compiler/container-query.js.map +1 -1
- package/dist/module/compiler/declarations.js +102 -61
- package/dist/module/compiler/declarations.js.map +1 -1
- package/dist/module/compiler/lightningcss-loader.js +10 -8
- package/dist/module/compiler/lightningcss-loader.js.map +1 -1
- package/dist/module/compiler/media-query.js +16 -6
- package/dist/module/compiler/media-query.js.map +1 -1
- package/dist/module/compiler/selector-builder.js +13 -3
- package/dist/module/compiler/selector-builder.js.map +1 -1
- package/dist/module/components/FlatList.js +1 -0
- package/dist/module/components/FlatList.js.map +1 -1
- package/dist/module/components/ImageBackground.js +2 -6
- package/dist/module/components/ImageBackground.js.map +1 -1
- package/dist/module/components/KeyboardAvoidingView.js +2 -3
- package/dist/module/components/KeyboardAvoidingView.js.map +1 -1
- package/dist/module/components/index.cjs +46 -1
- package/dist/module/components/index.cjs.map +1 -1
- package/dist/module/jest/index.js +1 -1
- package/dist/module/jest/index.js.map +1 -1
- package/dist/module/metro/cache-version.js +39 -0
- package/dist/module/metro/cache-version.js.map +1 -0
- package/dist/module/metro/index.js +2 -0
- package/dist/module/metro/index.js.map +1 -1
- package/dist/module/metro/metro-transformer.js +1 -1
- package/dist/module/metro/metro-transformer.js.map +1 -1
- package/dist/module/metro/typescript.js +26 -6
- package/dist/module/metro/typescript.js.map +1 -1
- package/dist/module/native/api.js +14 -10
- package/dist/module/native/api.js.map +1 -1
- package/dist/module/native/conditions/attributes.js +16 -9
- package/dist/module/native/conditions/attributes.js.map +1 -1
- package/dist/module/native/conditions/container-query.js +11 -11
- package/dist/module/native/conditions/container-query.js.map +1 -1
- package/dist/module/native/conditions/media-query.js +1 -1
- package/dist/module/native/conditions/media-query.js.map +1 -1
- package/dist/module/native/react/interaction.js +10 -5
- package/dist/module/native/react/interaction.js.map +1 -1
- package/dist/module/native/react/rules.js +13 -6
- package/dist/module/native/react/rules.js.map +1 -1
- package/dist/module/native/react/useNativeCss.js +49 -13
- package/dist/module/native/react/useNativeCss.js.map +1 -1
- package/dist/module/native/react/usePassthrough.js +5 -2
- package/dist/module/native/react/usePassthrough.js.map +1 -1
- package/dist/module/native/reactivity.js +32 -22
- package/dist/module/native/reactivity.js.map +1 -1
- package/dist/module/native/reanimated.js +15 -3
- package/dist/module/native/reanimated.js.map +1 -1
- package/dist/module/native/styles/functions/color-mix.js +43 -29
- package/dist/module/native/styles/functions/color-mix.js.map +1 -1
- package/dist/module/native/styles/functions/filters.js +16 -4
- package/dist/module/native/styles/functions/filters.js.map +1 -1
- package/dist/module/native/styles/functions/numeric-functions.js +4 -3
- package/dist/module/native/styles/functions/numeric-functions.js.map +1 -1
- package/dist/module/native/styles/functions/string-functions.js +13 -0
- package/dist/module/native/styles/functions/string-functions.js.map +1 -1
- package/dist/module/native/styles/functions/transform-functions.js +5 -4
- package/dist/module/native/styles/functions/transform-functions.js.map +1 -1
- package/dist/module/native/styles/index.js +140 -14
- package/dist/module/native/styles/index.js.map +1 -1
- package/dist/module/native/styles/resolve.js +10 -6
- package/dist/module/native/styles/resolve.js.map +1 -1
- package/dist/module/native/styles/scale-factor.js +9 -0
- package/dist/module/native/styles/scale-factor.js.map +1 -0
- package/dist/module/native/styles/shorthands/animation.js +6 -3
- package/dist/module/native/styles/shorthands/animation.js.map +1 -1
- package/dist/module/native/styles/shorthands/index.js +1 -0
- package/dist/module/native/styles/shorthands/index.js.map +1 -1
- package/dist/module/native/styles/shorthands/logical-border-width.js +18 -0
- package/dist/module/native/styles/shorthands/logical-border-width.js.map +1 -0
- package/dist/module/native/styles/variables.js +55 -43
- package/dist/module/native/styles/variables.js.map +1 -1
- package/dist/module/native-internal/style-collection.js +1 -1
- package/dist/module/native-internal/style-collection.js.map +1 -1
- package/dist/module/utilities/dot-notation.types.js +2 -0
- package/dist/module/utilities/style-descriptor.js +4 -9
- package/dist/module/utilities/style-descriptor.js.map +1 -1
- package/dist/module/web/api.js +1 -1
- package/dist/module/web/api.js.map +1 -1
- package/dist/module/web/assign-style.js +4 -1
- package/dist/module/web/assign-style.js.map +1 -1
- package/dist/typescript/commonjs/src/babel/import-plugin.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/babel/react-native-web.d.ts +2 -1
- package/dist/typescript/commonjs/src/babel/react-native-web.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/babel/react-native.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/atRules.d.ts +4 -1
- package/dist/typescript/commonjs/src/compiler/atRules.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/declarations.d.ts +2 -2
- package/dist/typescript/commonjs/src/compiler/declarations.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/lightningcss-loader.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/media-query.d.ts +1 -1
- package/dist/typescript/commonjs/src/compiler/media-query.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/selector-builder.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/components/FlatList.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/components/ImageBackground.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/components/KeyboardAvoidingView.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts +1 -1
- package/dist/typescript/commonjs/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/metro/cache-version.d.ts +8 -0
- package/dist/typescript/commonjs/src/metro/cache-version.d.ts.map +1 -0
- package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts +5 -3
- package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/metro/typescript.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/api.d.ts +4 -8
- package/dist/typescript/commonjs/src/native/api.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/conditions/container-query.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/react/interaction.d.ts +1 -1
- package/dist/typescript/commonjs/src/native/react/interaction.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/react/rules.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/react/useNativeCss.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/react/usePassthrough.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/reactivity.d.ts +7 -3
- package/dist/typescript/commonjs/src/native/reactivity.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/reanimated.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/functions/color-mix.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts +2 -0
- package/dist/typescript/commonjs/src/native/styles/functions/filters.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts +2 -0
- package/dist/typescript/commonjs/src/native/styles/functions/string-functions.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/functions/transform-functions.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/index.d.ts +2 -2
- package/dist/typescript/commonjs/src/native/styles/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/resolve.d.ts +1 -0
- package/dist/typescript/commonjs/src/native/styles/resolve.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts +2 -0
- package/dist/typescript/commonjs/src/native/styles/scale-factor.d.ts.map +1 -0
- package/dist/typescript/commonjs/src/native/styles/shorthands/animation.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts +1 -0
- package/dist/typescript/commonjs/src/native/styles/shorthands/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
- package/dist/typescript/commonjs/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
- package/dist/typescript/commonjs/src/native/styles/variables.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/native-internal/variables.d.ts +1 -1
- package/dist/typescript/commonjs/src/native-internal/variables.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/runtime.types.d.ts +11 -6
- package/dist/typescript/commonjs/src/runtime.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts +2 -1
- package/dist/typescript/commonjs/src/utilities/dot-notation.types.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts +1 -1
- package/dist/typescript/commonjs/src/utilities/style-descriptor.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/web/api.d.ts +5 -5
- package/dist/typescript/commonjs/src/web/api.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/web/assign-style.d.ts.map +1 -1
- package/dist/typescript/module/src/babel/import-plugin.d.ts +1 -1
- package/dist/typescript/module/src/babel/import-plugin.d.ts.map +1 -1
- package/dist/typescript/module/src/babel/react-native-web.d.ts +2 -1
- package/dist/typescript/module/src/babel/react-native-web.d.ts.map +1 -1
- package/dist/typescript/module/src/babel/react-native.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/atRules.d.ts +6 -3
- package/dist/typescript/module/src/compiler/atRules.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/compiler.d.ts +2 -2
- package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/compiler.types.d.ts +1 -1
- package/dist/typescript/module/src/compiler/compiler.types.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/container-query.d.ts +2 -2
- package/dist/typescript/module/src/compiler/container-query.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/declarations.d.ts +4 -4
- package/dist/typescript/module/src/compiler/declarations.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/index.d.ts +2 -2
- package/dist/typescript/module/src/compiler/index.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/inline-variables.d.ts +1 -1
- package/dist/typescript/module/src/compiler/inline-variables.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/keyframes.d.ts +2 -2
- package/dist/typescript/module/src/compiler/keyframes.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/lightningcss-loader.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/media-query.d.ts +3 -3
- package/dist/typescript/module/src/compiler/media-query.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/pseudo-elements.d.ts +1 -1
- package/dist/typescript/module/src/compiler/pseudo-elements.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/selector-builder.d.ts +1 -1
- package/dist/typescript/module/src/compiler/selector-builder.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/selectors.d.ts +2 -2
- package/dist/typescript/module/src/compiler/selectors.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/stylesheet.d.ts +1 -1
- package/dist/typescript/module/src/compiler/stylesheet.d.ts.map +1 -1
- package/dist/typescript/module/src/components/FlatList.d.ts.map +1 -1
- package/dist/typescript/module/src/components/ImageBackground.d.ts.map +1 -1
- package/dist/typescript/module/src/components/KeyboardAvoidingView.d.ts.map +1 -1
- package/dist/typescript/module/src/components/index.d.ts +16 -16
- package/dist/typescript/module/src/components/index.d.ts.map +1 -1
- package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts +1 -1
- package/dist/typescript/module/src/components/react-native-safe-area-context.native.d.ts.map +1 -1
- package/dist/typescript/module/src/metro/cache-version.d.ts +8 -0
- package/dist/typescript/module/src/metro/cache-version.d.ts.map +1 -0
- package/dist/typescript/module/src/metro/index.d.ts +1 -1
- package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
- package/dist/typescript/module/src/metro/metro-transformer.d.ts +6 -4
- package/dist/typescript/module/src/metro/metro-transformer.d.ts.map +1 -1
- package/dist/typescript/module/src/metro/typescript.d.ts.map +1 -1
- package/dist/typescript/module/src/native/api.d.ts +5 -9
- package/dist/typescript/module/src/native/api.d.ts.map +1 -1
- package/dist/typescript/module/src/native/conditions/attributes.d.ts +1 -1
- package/dist/typescript/module/src/native/conditions/attributes.d.ts.map +1 -1
- package/dist/typescript/module/src/native/conditions/container-query.d.ts +2 -2
- package/dist/typescript/module/src/native/conditions/container-query.d.ts.map +1 -1
- package/dist/typescript/module/src/native/conditions/guards.d.ts +2 -2
- package/dist/typescript/module/src/native/conditions/guards.d.ts.map +1 -1
- package/dist/typescript/module/src/native/conditions/index.d.ts +3 -3
- package/dist/typescript/module/src/native/conditions/index.d.ts.map +1 -1
- package/dist/typescript/module/src/native/conditions/media-query.d.ts +1 -1
- package/dist/typescript/module/src/native/conditions/media-query.d.ts.map +1 -1
- package/dist/typescript/module/src/native/index.d.ts +3 -3
- package/dist/typescript/module/src/native/index.d.ts.map +1 -1
- package/dist/typescript/module/src/native/react/interaction.d.ts +2 -2
- package/dist/typescript/module/src/native/react/interaction.d.ts.map +1 -1
- package/dist/typescript/module/src/native/react/rules.d.ts +2 -2
- package/dist/typescript/module/src/native/react/rules.d.ts.map +1 -1
- package/dist/typescript/module/src/native/react/useNativeCss.d.ts +4 -4
- package/dist/typescript/module/src/native/react/useNativeCss.d.ts.map +1 -1
- package/dist/typescript/module/src/native/react/usePassthrough.d.ts +1 -1
- package/dist/typescript/module/src/native/react/usePassthrough.d.ts.map +1 -1
- package/dist/typescript/module/src/native/reactivity.d.ts +7 -3
- package/dist/typescript/module/src/native/reactivity.d.ts.map +1 -1
- package/dist/typescript/module/src/native/reanimated.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/calculate-props.d.ts +2 -2
- package/dist/typescript/module/src/native/styles/calculate-props.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/functions/animation-timing.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/calc.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/functions/calc.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/functions/color-mix.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/filters.d.ts +3 -1
- package/dist/typescript/module/src/native/styles/functions/filters.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/index.d.ts +8 -8
- package/dist/typescript/module/src/native/styles/functions/index.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/functions/numeric-functions.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/functions/platform-functions.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts +3 -1
- package/dist/typescript/module/src/native/styles/functions/string-functions.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/functions/transform-functions.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/index.d.ts +7 -7
- package/dist/typescript/module/src/native/styles/index.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/line-height.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/line-height.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/resolve.d.ts +4 -3
- package/dist/typescript/module/src/native/styles/resolve.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/scale-factor.d.ts +2 -0
- package/dist/typescript/module/src/native/styles/scale-factor.d.ts.map +1 -0
- package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/_handler.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts +2 -2
- package/dist/typescript/module/src/native/styles/shorthands/animation.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/border.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/border.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/box-shadow.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/index.d.ts +6 -5
- package/dist/typescript/module/src/native/styles/shorthands/index.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts +4 -0
- package/dist/typescript/module/src/native/styles/shorthands/logical-border-width.d.ts.map +1 -0
- package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/text-shadow.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/shorthands/transform.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/units.d.ts +1 -1
- package/dist/typescript/module/src/native/styles/units.d.ts.map +1 -1
- package/dist/typescript/module/src/native/styles/variables.d.ts +2 -2
- package/dist/typescript/module/src/native/styles/variables.d.ts.map +1 -1
- package/dist/typescript/module/src/native-internal/index.d.ts +3 -3
- package/dist/typescript/module/src/native-internal/index.d.ts.map +1 -1
- package/dist/typescript/module/src/native-internal/root.d.ts +1 -1
- package/dist/typescript/module/src/native-internal/root.d.ts.map +1 -1
- package/dist/typescript/module/src/native-internal/style-collection.d.ts +2 -2
- package/dist/typescript/module/src/native-internal/style-collection.d.ts.map +1 -1
- package/dist/typescript/module/src/native-internal/variables.d.ts +2 -2
- package/dist/typescript/module/src/native-internal/variables.d.ts.map +1 -1
- package/dist/typescript/module/src/runtime.d.ts +1 -1
- package/dist/typescript/module/src/runtime.d.ts.map +1 -1
- package/dist/typescript/module/src/runtime.native.d.ts +1 -1
- package/dist/typescript/module/src/runtime.native.d.ts.map +1 -1
- package/dist/typescript/module/src/runtime.types.d.ts +11 -6
- package/dist/typescript/module/src/runtime.types.d.ts.map +1 -1
- package/dist/typescript/module/src/utilities/dot-notation.types.d.ts +2 -1
- package/dist/typescript/module/src/utilities/dot-notation.types.d.ts.map +1 -1
- package/dist/typescript/module/src/utilities/index.d.ts +3 -3
- package/dist/typescript/module/src/utilities/index.d.ts.map +1 -1
- package/dist/typescript/module/src/utilities/specificity.d.ts +2 -2
- package/dist/typescript/module/src/utilities/specificity.d.ts.map +1 -1
- package/dist/typescript/module/src/utilities/style-descriptor.d.ts +1 -1
- package/dist/typescript/module/src/utilities/style-descriptor.d.ts.map +1 -1
- package/dist/typescript/module/src/web/api.d.ts +5 -5
- package/dist/typescript/module/src/web/api.d.ts.map +1 -1
- package/dist/typescript/module/src/web/assign-style.d.ts.map +1 -1
- package/dist/typescript/module/src/web/index.d.ts +3 -3
- package/dist/typescript/module/src/web/index.d.ts.map +1 -1
- package/node/babel.mjs +4 -0
- package/node/compiler.mjs +2 -0
- package/node/metro.mjs +2 -0
- package/package.json +61 -27
- package/src/babel/import-plugin.ts +15 -4
- package/src/babel/react-native-web.ts +32 -3
- package/src/babel/react-native.ts +7 -1
- package/src/compiler/atRules.ts +44 -0
- package/src/compiler/compiler.ts +73 -49
- package/src/compiler/container-query.ts +8 -3
- package/src/compiler/declarations.ts +189 -100
- package/src/compiler/lightningcss-loader.ts +16 -15
- package/src/compiler/media-query.ts +20 -9
- package/src/compiler/selector-builder.ts +29 -3
- package/src/components/FlatList.tsx +1 -0
- package/src/components/ImageBackground.tsx +2 -6
- package/src/components/KeyboardAvoidingView.tsx +2 -3
- package/src/components/index.cts +46 -1
- package/src/jest/index.ts +1 -1
- package/src/metro/cache-version.ts +48 -0
- package/src/metro/index.ts +2 -0
- package/src/metro/metro-transformer.ts +9 -6
- package/src/metro/typescript.ts +53 -6
- package/src/native/api.tsx +20 -14
- package/src/native/conditions/attributes.ts +26 -9
- package/src/native/conditions/container-query.ts +11 -9
- package/src/native/conditions/media-query.ts +1 -1
- package/src/native/react/interaction.ts +11 -6
- package/src/native/react/rules.ts +13 -5
- package/src/native/react/useNativeCss.ts +54 -14
- package/src/native/react/usePassthrough.ts +3 -2
- package/src/native/reactivity.ts +42 -24
- package/src/native/reanimated.ts +24 -5
- package/src/native/styles/functions/color-mix.ts +45 -39
- package/src/native/styles/functions/filters.ts +20 -6
- package/src/native/styles/functions/numeric-functions.ts +7 -6
- package/src/native/styles/functions/string-functions.ts +18 -0
- package/src/native/styles/functions/transform-functions.ts +5 -4
- package/src/native/styles/index.ts +146 -15
- package/src/native/styles/resolve.ts +15 -11
- package/src/native/styles/scale-factor.ts +6 -0
- package/src/native/styles/shorthands/animation.ts +8 -2
- package/src/native/styles/shorthands/index.ts +1 -0
- package/src/native/styles/shorthands/logical-border-width.ts +32 -0
- package/src/native/styles/variables.ts +48 -38
- package/src/native-internal/style-collection.ts +1 -1
- package/src/runtime.types.ts +17 -15
- package/src/utilities/dot-notation.types.ts +4 -3
- package/src/utilities/style-descriptor.ts +11 -16
- package/src/web/api.tsx +6 -11
- package/src/web/assign-style.ts +2 -1
- package/types.d.ts +0 -20
- package/dist/commonjs/compiler/inheritance.test.js +0 -78
- package/dist/commonjs/compiler/inheritance.test.js.map +0 -1
- package/dist/module/compiler/inheritance.test.js +0 -78
- package/dist/module/compiler/inheritance.test.js.map +0 -1
- package/dist/typescript/commonjs/.config/eslint.config.d.mts +0 -3
- package/dist/typescript/commonjs/.config/eslint.config.d.mts.map +0 -1
- package/dist/typescript/commonjs/eslint.config.d.mts +0 -2
- package/dist/typescript/commonjs/eslint.config.d.mts.map +0 -1
- package/dist/typescript/commonjs/example/app.config.d.ts +0 -4
- package/dist/typescript/commonjs/example/app.config.d.ts.map +0 -1
- package/dist/typescript/commonjs/example/index.d.ts +0 -2
- package/dist/typescript/commonjs/example/index.d.ts.map +0 -1
- package/dist/typescript/commonjs/example/metro.config.d.ts +0 -3
- package/dist/typescript/commonjs/example/metro.config.d.ts.map +0 -1
- package/dist/typescript/commonjs/example/postcss.config.d.mts +0 -7
- package/dist/typescript/commonjs/example/postcss.config.d.mts.map +0 -1
- package/dist/typescript/commonjs/example/src/App.d.ts +0 -3
- package/dist/typescript/commonjs/example/src/App.d.ts.map +0 -1
- package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts +0 -2
- package/dist/typescript/commonjs/src/compiler/inheritance.test.d.ts.map +0 -1
- package/dist/typescript/module/.config/eslint.config.d.mts +0 -3
- package/dist/typescript/module/.config/eslint.config.d.mts.map +0 -1
- package/dist/typescript/module/eslint.config.d.mts +0 -2
- package/dist/typescript/module/eslint.config.d.mts.map +0 -1
- package/dist/typescript/module/example/app.config.d.ts +0 -4
- package/dist/typescript/module/example/app.config.d.ts.map +0 -1
- package/dist/typescript/module/example/index.d.ts +0 -2
- package/dist/typescript/module/example/index.d.ts.map +0 -1
- package/dist/typescript/module/example/metro.config.d.ts +0 -3
- package/dist/typescript/module/example/metro.config.d.ts.map +0 -1
- package/dist/typescript/module/example/postcss.config.d.mts +0 -7
- package/dist/typescript/module/example/postcss.config.d.mts.map +0 -1
- package/dist/typescript/module/example/src/App.d.ts +0 -3
- package/dist/typescript/module/example/src/App.d.ts.map +0 -1
- package/dist/typescript/module/src/compiler/inheritance.test.d.ts +0 -2
- package/dist/typescript/module/src/compiler/inheritance.test.d.ts.map +0 -1
- package/src/compiler/inheritance.test.ts +0 -121
|
@@ -8,6 +8,7 @@ import type { RenderGuard } from "../conditions/guards";
|
|
|
8
8
|
import { getDeepPath } from "../objects";
|
|
9
9
|
import {
|
|
10
10
|
activeFamily,
|
|
11
|
+
cleanupEffect,
|
|
11
12
|
containerLayoutFamily,
|
|
12
13
|
focusFamily,
|
|
13
14
|
hoverFamily,
|
|
@@ -30,6 +31,7 @@ export function updateRules(
|
|
|
30
31
|
forceUpdate = false,
|
|
31
32
|
isRerender = true,
|
|
32
33
|
): ComponentState {
|
|
34
|
+
cleanupEffect(state.ruleEffect);
|
|
33
35
|
const guards: RenderGuard[] = [];
|
|
34
36
|
const rules = new Set<StyleRule | InlineVariable | VariableContextValue>();
|
|
35
37
|
if (forceUpdate) {
|
|
@@ -144,13 +146,19 @@ export function updateRules(
|
|
|
144
146
|
containers = {
|
|
145
147
|
...inheritedContainers,
|
|
146
148
|
// This container becomes the default container
|
|
147
|
-
[DEFAULT_CONTAINER_NAME]:
|
|
149
|
+
[DEFAULT_CONTAINER_NAME]: {
|
|
150
|
+
key: state.ruleEffectGetter,
|
|
151
|
+
props: currentProps,
|
|
152
|
+
},
|
|
148
153
|
};
|
|
149
154
|
}
|
|
150
155
|
|
|
151
156
|
// This this component as the named container
|
|
152
157
|
for (const name of rule.c) {
|
|
153
|
-
containers![name] =
|
|
158
|
+
containers![name] = {
|
|
159
|
+
key: state.ruleEffectGetter,
|
|
160
|
+
props: currentProps,
|
|
161
|
+
};
|
|
154
162
|
}
|
|
155
163
|
|
|
156
164
|
// Enable hover/active/focus/layout handlers
|
|
@@ -212,14 +220,14 @@ export function updateRules(
|
|
|
212
220
|
};
|
|
213
221
|
}
|
|
214
222
|
|
|
215
|
-
if (usesVariables || variables) {
|
|
223
|
+
if (usesVariables || variables || inlineVariables.size) {
|
|
216
224
|
rules.add(inheritedVariables);
|
|
217
225
|
|
|
218
226
|
if (inlineVariables.size) {
|
|
219
227
|
variables = Object.assign(
|
|
220
228
|
{},
|
|
221
|
-
variables,
|
|
222
229
|
inheritedVariables,
|
|
230
|
+
variables,
|
|
223
231
|
...Array.from(inlineVariables),
|
|
224
232
|
{ [VAR_SYMBOL]: true },
|
|
225
233
|
);
|
|
@@ -243,7 +251,7 @@ export function updateRules(
|
|
|
243
251
|
}
|
|
244
252
|
|
|
245
253
|
// Remove this component from the old observer
|
|
246
|
-
state.stylesObs?.
|
|
254
|
+
state.stylesObs?.unsubscribe(state.styleEffect);
|
|
247
255
|
|
|
248
256
|
return {
|
|
249
257
|
...state,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
useState,
|
|
8
8
|
type ComponentType,
|
|
9
9
|
} from "react";
|
|
10
|
-
import { Pressable, View } from "react-native";
|
|
10
|
+
import { Image, Pressable, StyleSheet, View } from "react-native";
|
|
11
11
|
|
|
12
12
|
import { VariableContext } from "react-native-css/native-internal";
|
|
13
13
|
|
|
@@ -69,9 +69,6 @@ export function useNativeCss(
|
|
|
69
69
|
const inheritedContainers = useContext(ContainerContext);
|
|
70
70
|
|
|
71
71
|
const [state, setState] = useState((): ComponentState => {
|
|
72
|
-
// Both effects share the same observers to improve memory usage
|
|
73
|
-
const observers = new Set<Effect>();
|
|
74
|
-
|
|
75
72
|
/**
|
|
76
73
|
* When fired, this effect will force the rules to be re-evaluated.
|
|
77
74
|
* This will cause a re-render if there are different rules
|
|
@@ -79,7 +76,7 @@ export function useNativeCss(
|
|
|
79
76
|
* Use this when a rule condition changes, e.g FastRefresh or media queries
|
|
80
77
|
*/
|
|
81
78
|
const ruleEffect: Effect = {
|
|
82
|
-
observers,
|
|
79
|
+
observers: new Set(),
|
|
83
80
|
run: () => setState((state) => updateRules(state)),
|
|
84
81
|
};
|
|
85
82
|
|
|
@@ -90,11 +87,11 @@ export function useNativeCss(
|
|
|
90
87
|
* Use this when a value changes, e.g vm units or light / dark mode
|
|
91
88
|
*/
|
|
92
89
|
const styleEffect: Effect = {
|
|
93
|
-
observers,
|
|
90
|
+
observers: new Set(),
|
|
94
91
|
run: () => setState((state) => ({ ...state })),
|
|
95
92
|
};
|
|
96
93
|
|
|
97
|
-
|
|
94
|
+
const initialState = updateRules(
|
|
98
95
|
{
|
|
99
96
|
ruleEffect,
|
|
100
97
|
ruleEffectGetter: (observable) => observable.get(ruleEffect),
|
|
@@ -110,10 +107,23 @@ export function useNativeCss(
|
|
|
110
107
|
false,
|
|
111
108
|
false,
|
|
112
109
|
);
|
|
110
|
+
// State initializers may be discarded by React StrictMode. Subscribe once
|
|
111
|
+
// the component commits instead of retaining an abandoned initializer.
|
|
112
|
+
cleanupEffect(ruleEffect);
|
|
113
|
+
return initialState;
|
|
113
114
|
});
|
|
114
115
|
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
// Reconnect subscriptions after React replays an effect setup.
|
|
118
|
+
if (state.ruleEffect.observers.size === 0) {
|
|
119
|
+
state.ruleEffect.run();
|
|
120
|
+
state.styleEffect.run();
|
|
121
|
+
}
|
|
122
|
+
return () => {
|
|
123
|
+
cleanupEffect(state.ruleEffect);
|
|
124
|
+
cleanupEffect(state.styleEffect);
|
|
125
|
+
};
|
|
126
|
+
}, [state.ruleEffect, state.styleEffect]);
|
|
117
127
|
|
|
118
128
|
// Check if our derived state has changed (e.g the className prop)
|
|
119
129
|
if (
|
|
@@ -137,7 +147,11 @@ export function useNativeCss(
|
|
|
137
147
|
return createElement(Fragment);
|
|
138
148
|
}
|
|
139
149
|
|
|
140
|
-
let props = getStyledProps(
|
|
150
|
+
let props = getStyledProps(
|
|
151
|
+
state,
|
|
152
|
+
originalProps,
|
|
153
|
+
type === Image ? adaptImageProps : undefined,
|
|
154
|
+
);
|
|
141
155
|
|
|
142
156
|
if (type === View && props?.onPress) {
|
|
143
157
|
type = Pressable;
|
|
@@ -156,8 +170,18 @@ export function useNativeCss(
|
|
|
156
170
|
}
|
|
157
171
|
|
|
158
172
|
if (state.containers) {
|
|
173
|
+
// Publish a new props snapshot even when this component's own rules did not
|
|
174
|
+
// change. Descendants can depend on an ancestor attribute through a group.
|
|
175
|
+
const containers = Object.fromEntries(
|
|
176
|
+
Object.entries(state.containers).map(([name, container]) => [
|
|
177
|
+
name,
|
|
178
|
+
container.key === state.ruleEffectGetter
|
|
179
|
+
? { key: container.key, props: originalProps }
|
|
180
|
+
: (inheritedContainers[name] ?? container),
|
|
181
|
+
]),
|
|
182
|
+
);
|
|
159
183
|
props = {
|
|
160
|
-
value:
|
|
184
|
+
value: containers,
|
|
161
185
|
children: createElement(type, props),
|
|
162
186
|
};
|
|
163
187
|
type = ContainerContext.Provider;
|
|
@@ -181,9 +205,14 @@ export function mappingToConfig(mapping: StyledConfiguration<any>) {
|
|
|
181
205
|
} else if (typeof value === "string") {
|
|
182
206
|
return { source: key, target: value.split(".") };
|
|
183
207
|
} else if (typeof value === "object") {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
208
|
+
// Keep the declared deprecated alias working. The current spelling wins
|
|
209
|
+
// when both are provided, including an intentionally empty mapping.
|
|
210
|
+
const mapping = value.nativeStyleMapping ?? value.nativeStyleToProp;
|
|
211
|
+
const nativeStyleMapping = mapping
|
|
212
|
+
? Object.fromEntries(
|
|
213
|
+
Object.entries(mapping).map(([k, v]) => [k, v === true ? k : v]),
|
|
214
|
+
)
|
|
215
|
+
: undefined;
|
|
187
216
|
|
|
188
217
|
if (Array.isArray(value)) {
|
|
189
218
|
return { source: key, target: value, nativeStyleMapping };
|
|
@@ -209,3 +238,14 @@ export function mappingToConfig(mapping: StyledConfiguration<any>) {
|
|
|
209
238
|
throw new Error(`styled(): Invalid mapping for ${key}: ${value}`);
|
|
210
239
|
});
|
|
211
240
|
}
|
|
241
|
+
|
|
242
|
+
// Apply native Image fitting before normal, inline, and important props merge.
|
|
243
|
+
// The compiler's contentFit mapping remains available to Expo Image adapters.
|
|
244
|
+
function adaptImageProps(props: Record<string, any> | undefined) {
|
|
245
|
+
if (!props || !("contentFit" in props)) return props;
|
|
246
|
+
const { contentFit, style, ...rest } = props;
|
|
247
|
+
return {
|
|
248
|
+
...rest,
|
|
249
|
+
style: { ...StyleSheet.flatten(style), objectFit: contentFit },
|
|
250
|
+
};
|
|
251
|
+
}
|
|
@@ -32,8 +32,9 @@ export function usePassthrough(
|
|
|
32
32
|
if (Array.isArray(target)) {
|
|
33
33
|
for (let i = 0; i < target.length - 1; i++) {
|
|
34
34
|
const prop = target[i]!;
|
|
35
|
-
|
|
36
|
-
targetProps =
|
|
35
|
+
const value = targetProps[prop];
|
|
36
|
+
targetProps[prop] = Array.isArray(value) ? [...value] : { ...value };
|
|
37
|
+
targetProps = targetProps[prop];
|
|
37
38
|
}
|
|
38
39
|
target = target[target.length - 1]!;
|
|
39
40
|
}
|
package/src/native/reactivity.ts
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import type { StyleDescriptor } from "react-native-css/compiler";
|
|
11
11
|
|
|
12
12
|
export type Effect = {
|
|
13
|
-
observers: Set<
|
|
13
|
+
observers: Set<Observable<any, any>>;
|
|
14
14
|
run(): void;
|
|
15
15
|
};
|
|
16
16
|
|
|
@@ -19,6 +19,7 @@ export type Observable<Value, Arg = Value> = {
|
|
|
19
19
|
get: (effect?: Effect) => Value;
|
|
20
20
|
set: (arg: Arg) => void;
|
|
21
21
|
run: () => void;
|
|
22
|
+
unsubscribe: (effect: Effect) => void;
|
|
22
23
|
};
|
|
23
24
|
type Read<Value, Arg> = (get: Getter, arg?: Arg) => Value;
|
|
24
25
|
export type Getter = <Value>(observable: Observable<Value, any>) => Value;
|
|
@@ -43,9 +44,10 @@ export function observable<Value, Arg = Value>(
|
|
|
43
44
|
|
|
44
45
|
const observers = new Set<Effect>();
|
|
45
46
|
const effect: Effect = {
|
|
46
|
-
observers,
|
|
47
|
+
observers: new Set(),
|
|
47
48
|
run: () => {
|
|
48
49
|
if (!isStatic) {
|
|
50
|
+
cleanupEffect(effect);
|
|
49
51
|
const nextValue = (init as Read<Value, Arg>)(getter, lastArg);
|
|
50
52
|
if (equality(value, nextValue)) {
|
|
51
53
|
return;
|
|
@@ -57,14 +59,19 @@ export function observable<Value, Arg = Value>(
|
|
|
57
59
|
},
|
|
58
60
|
};
|
|
59
61
|
|
|
60
|
-
const getter: Getter = (observable) =>
|
|
62
|
+
const getter: Getter = (observable) =>
|
|
63
|
+
observable.get(observers.size > 0 ? effect : undefined);
|
|
61
64
|
|
|
62
|
-
function get(
|
|
63
|
-
if (
|
|
64
|
-
observers.
|
|
65
|
+
function get(subscriber?: Effect) {
|
|
66
|
+
if (subscriber) {
|
|
67
|
+
if (observers.size === 0 && !isStatic) didInit = false;
|
|
68
|
+
observers.add(subscriber);
|
|
69
|
+
subscriber.observers.add(obs);
|
|
65
70
|
}
|
|
66
71
|
if (!didInit) {
|
|
67
|
-
|
|
72
|
+
cleanupEffect(effect);
|
|
73
|
+
value = (init as Read<Value, Arg>)(getter, lastArg);
|
|
74
|
+
didInit = observers.size > 0;
|
|
68
75
|
}
|
|
69
76
|
|
|
70
77
|
return value;
|
|
@@ -77,9 +84,10 @@ export function observable<Value, Arg = Value>(
|
|
|
77
84
|
}
|
|
78
85
|
value = arg as unknown as Value;
|
|
79
86
|
} else {
|
|
87
|
+
cleanupEffect(effect);
|
|
80
88
|
const nextValue = (init as Read<Value, Arg>)(getter, arg);
|
|
81
89
|
|
|
82
|
-
didInit =
|
|
90
|
+
didInit = observers.size > 0;
|
|
83
91
|
lastArg = arg;
|
|
84
92
|
|
|
85
93
|
if (equality(value, nextValue)) {
|
|
@@ -108,6 +116,13 @@ export function observable<Value, Arg = Value>(
|
|
|
108
116
|
get,
|
|
109
117
|
set,
|
|
110
118
|
run: effect.run,
|
|
119
|
+
unsubscribe(subscriber) {
|
|
120
|
+
if (observers.delete(subscriber) && observers.size === 0 && !isStatic) {
|
|
121
|
+
cleanupEffect(effect);
|
|
122
|
+
didInit = false;
|
|
123
|
+
}
|
|
124
|
+
subscriber.observers.delete(obs);
|
|
125
|
+
},
|
|
111
126
|
};
|
|
112
127
|
|
|
113
128
|
return obs;
|
|
@@ -115,10 +130,11 @@ export function observable<Value, Arg = Value>(
|
|
|
115
130
|
|
|
116
131
|
export function cleanupEffect(effect: Effect) {
|
|
117
132
|
if (!effect) return;
|
|
118
|
-
|
|
119
|
-
dep.observers.delete(effect);
|
|
120
|
-
}
|
|
133
|
+
const dependencies = Array.from(effect.observers);
|
|
121
134
|
effect.observers.clear();
|
|
135
|
+
for (const dep of dependencies) {
|
|
136
|
+
dep.unsubscribe(effect);
|
|
137
|
+
}
|
|
122
138
|
}
|
|
123
139
|
|
|
124
140
|
/** Family Helpers ************************************************************/
|
|
@@ -129,11 +145,9 @@ export function family<Key, Result = Key, Args extends any = void>(
|
|
|
129
145
|
const map = new Map<Key, Result>();
|
|
130
146
|
return Object.assign(
|
|
131
147
|
(key: Key, args: Args) => {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
map.set(key, value);
|
|
136
|
-
}
|
|
148
|
+
if (map.has(key)) return map.get(key)!;
|
|
149
|
+
const value = fn(key, args);
|
|
150
|
+
map.set(key, value);
|
|
137
151
|
return value;
|
|
138
152
|
},
|
|
139
153
|
{
|
|
@@ -166,11 +180,9 @@ export function weakFamily<Key extends WeakKey, Args = undefined, Result = Key>(
|
|
|
166
180
|
const map = new WeakMap<Key, Result>();
|
|
167
181
|
return Object.assign(
|
|
168
182
|
(key: Key, args: Args) => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
map.set(key, value);
|
|
173
|
-
}
|
|
183
|
+
if (map.has(key)) return map.get(key)!;
|
|
184
|
+
const value = fn(key, args);
|
|
185
|
+
map.set(key, value);
|
|
174
186
|
return value;
|
|
175
187
|
},
|
|
176
188
|
{
|
|
@@ -216,14 +228,20 @@ Dimensions.addEventListener("change", ({ window }) => {
|
|
|
216
228
|
|
|
217
229
|
/** Color Scheme **************************************************************/
|
|
218
230
|
|
|
219
|
-
export const colorScheme = observable<ColorSchemeName>(
|
|
231
|
+
export const colorScheme = observable<ColorSchemeName | null | undefined>(
|
|
220
232
|
Appearance.getColorScheme(),
|
|
221
233
|
);
|
|
222
234
|
Appearance.addChangeListener((event) => colorScheme.set(event.colorScheme));
|
|
223
235
|
|
|
224
236
|
/** Containers ****************************************************************/
|
|
225
237
|
|
|
226
|
-
export type ContainerContextValue = Record<
|
|
238
|
+
export type ContainerContextValue = Record<
|
|
239
|
+
string,
|
|
240
|
+
{
|
|
241
|
+
key: WeakKey;
|
|
242
|
+
props: Record<string, unknown> | null | undefined;
|
|
243
|
+
}
|
|
244
|
+
>;
|
|
227
245
|
export const ContainerContext = createContext<ContainerContextValue>({});
|
|
228
246
|
|
|
229
247
|
export const containerLayoutFamily = weakFamily(() => {
|
|
@@ -243,6 +261,6 @@ export const containerWidthFamily = weakFamily((key) => {
|
|
|
243
261
|
|
|
244
262
|
export const containerHeightFamily = weakFamily((key) => {
|
|
245
263
|
return observable((read) => {
|
|
246
|
-
return read(containerLayoutFamily(key))?.
|
|
264
|
+
return read(containerLayoutFamily(key))?.height || 0;
|
|
247
265
|
});
|
|
248
266
|
});
|
package/src/native/reanimated.ts
CHANGED
|
@@ -11,11 +11,30 @@ export const animatedComponentFamily = weakFamily(
|
|
|
11
11
|
return component;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
)
|
|
14
|
+
// Reanimated 4.5 keeps the original component display name. Compare its
|
|
15
|
+
// public built-in components by identity instead of interpreting that name.
|
|
16
|
+
const reanimated =
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
18
|
+
require("react-native-reanimated") as typeof import("react-native-reanimated");
|
|
19
|
+
const animated = reanimated.default;
|
|
20
|
+
if (
|
|
21
|
+
[
|
|
22
|
+
animated.View,
|
|
23
|
+
animated.Text,
|
|
24
|
+
animated.Image,
|
|
25
|
+
animated.ScrollView,
|
|
26
|
+
animated.FlatList,
|
|
27
|
+
].some((value) => value === component)
|
|
28
|
+
) {
|
|
29
|
+
return component;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// This public constructor remains supported for arbitrary components; only
|
|
33
|
+
// its FlatList-specific overload is deprecated by Reanimated.
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
35
|
+
const createAnimatedComponent = reanimated.createAnimatedComponent as (
|
|
36
|
+
component: ComponentType,
|
|
37
|
+
) => ComponentType;
|
|
19
38
|
|
|
20
39
|
return createAnimatedComponent(component);
|
|
21
40
|
},
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
|
-
import type { PlainColorObject } from "colorjs.io";
|
|
3
1
|
import {
|
|
4
2
|
ColorSpace,
|
|
5
3
|
to as convert,
|
|
@@ -8,7 +6,6 @@ import {
|
|
|
8
6
|
P3,
|
|
9
7
|
parse,
|
|
10
8
|
sRGB,
|
|
11
|
-
type ColorConstructor,
|
|
12
9
|
} from "colorjs.io/fn";
|
|
13
10
|
|
|
14
11
|
import type { StyleFunctionResolver } from "../resolve";
|
|
@@ -18,49 +15,58 @@ ColorSpace.register(P3);
|
|
|
18
15
|
ColorSpace.register(OKLab);
|
|
19
16
|
|
|
20
17
|
export const colorMix: StyleFunctionResolver = (resolveValue, value) => {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
if (!Array.isArray(args) || args.length < 3) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
18
|
+
const resolved = resolveValue(value[2]);
|
|
19
|
+
if (!Array.isArray(resolved)) return;
|
|
26
20
|
|
|
21
|
+
// Resolved descriptors may be cached and shared by another styled component.
|
|
22
|
+
const args: unknown[] = [...(resolved as unknown[])];
|
|
27
23
|
try {
|
|
28
24
|
const space = args.shift();
|
|
25
|
+
const leftValue = args.shift();
|
|
26
|
+
if (typeof space !== "string" || typeof leftValue !== "string") return;
|
|
27
|
+
ColorSpace.get(space);
|
|
28
|
+
const left = parse(leftValue);
|
|
29
|
+
const percentage = () => {
|
|
30
|
+
const next = args[0];
|
|
31
|
+
if (typeof next !== "string" || !next.endsWith("%")) return undefined;
|
|
32
|
+
args.shift();
|
|
33
|
+
return Number(next.slice(0, -1)) / 100;
|
|
34
|
+
};
|
|
35
|
+
let leftWeight = percentage();
|
|
36
|
+
const rightValue = args.shift();
|
|
37
|
+
if (typeof rightValue !== "string") return;
|
|
38
|
+
const right = parse(rightValue);
|
|
39
|
+
let rightWeight = percentage();
|
|
40
|
+
if (args.length) return;
|
|
29
41
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
next = args.shift();
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (next === undefined) {
|
|
42
|
-
if (left.spaceId !== "srgb") {
|
|
43
|
-
left = convert(left, "srgb");
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return `rgba(${(left.coords[0] ?? 0) * 255}, ${(left.coords[1] ?? 0) * 255}, ${(left.coords[2] ?? 0) * 255}, ${left.alpha})`;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (typeof next !== "string") {
|
|
42
|
+
// CSS Color 5: omitted weights are complementary, then both are normalized.
|
|
43
|
+
leftWeight ??= rightWeight === undefined ? 0.5 : 1 - rightWeight;
|
|
44
|
+
rightWeight ??= 1 - leftWeight;
|
|
45
|
+
if (
|
|
46
|
+
![leftWeight, rightWeight].every(
|
|
47
|
+
(weight) => Number.isFinite(weight) && weight >= 0 && weight <= 1,
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
50
|
return;
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
const sum = leftWeight + rightWeight;
|
|
52
|
+
if (sum === 0) return;
|
|
53
|
+
const alphaMultiplier = Math.min(sum, 1);
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
if (
|
|
56
|
-
|
|
55
|
+
let result;
|
|
56
|
+
if (right.alpha === 0 || left.alpha === 0) {
|
|
57
|
+
// A transparent endpoint contributes no premultiplied channels.
|
|
58
|
+
const source = right.alpha === 0 ? left : right;
|
|
59
|
+
const weight = right.alpha === 0 ? leftWeight : rightWeight;
|
|
60
|
+
result = convert(source, "srgb");
|
|
61
|
+
result.alpha = ((source.alpha ?? 1) * weight) / sum;
|
|
62
|
+
} else {
|
|
63
|
+
result = mix(left, right, rightWeight / sum, {
|
|
64
|
+
space,
|
|
65
|
+
outputSpace: "srgb",
|
|
66
|
+
premultiplied: true,
|
|
67
|
+
});
|
|
57
68
|
}
|
|
58
|
-
|
|
59
|
-
const result = mix(left, right, {
|
|
60
|
-
space,
|
|
61
|
-
outputSpace: "srgb",
|
|
62
|
-
});
|
|
63
|
-
|
|
69
|
+
result.alpha = (result.alpha ?? 1) * alphaMultiplier;
|
|
64
70
|
return `rgba(${(result.coords[0] ?? 0) * 255}, ${(result.coords[1] ?? 0) * 255}, ${(result.coords[2] ?? 0) * 255}, ${result.alpha})`;
|
|
65
71
|
} catch {
|
|
66
72
|
return;
|
|
@@ -62,22 +62,22 @@ export const saturate: StyleFunctionResolver = (resolveValue, value) => {
|
|
|
62
62
|
export const opacity: StyleFunctionResolver = (resolveValue, value) => {
|
|
63
63
|
const args = resolveValue(value[2]);
|
|
64
64
|
return {
|
|
65
|
-
|
|
65
|
+
opacity: (Array.isArray(args) ? args[0] : args) as unknown,
|
|
66
66
|
};
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
const color = ["color", "
|
|
69
|
+
const color = ["color", "color"] as const;
|
|
70
70
|
const offsetX = ["offsetX", "number"] as const;
|
|
71
71
|
const offsetY = ["offsetY", "number"] as const;
|
|
72
|
-
const
|
|
72
|
+
const standardDeviation = ["standardDeviation", "number"] as const;
|
|
73
73
|
|
|
74
74
|
const handler = shorthandHandler(
|
|
75
75
|
[
|
|
76
|
-
[offsetX, offsetY,
|
|
76
|
+
[offsetX, offsetY, standardDeviation, color],
|
|
77
77
|
[color, offsetX, offsetY],
|
|
78
|
-
[color, offsetX, offsetY,
|
|
78
|
+
[color, offsetX, offsetY, standardDeviation],
|
|
79
79
|
[offsetX, offsetY, color],
|
|
80
|
-
[offsetX, offsetY,
|
|
80
|
+
[offsetX, offsetY, standardDeviation, color],
|
|
81
81
|
],
|
|
82
82
|
[],
|
|
83
83
|
"object",
|
|
@@ -97,3 +97,17 @@ export const dropShadow: StyleFunctionResolver = (
|
|
|
97
97
|
}
|
|
98
98
|
: undefined;
|
|
99
99
|
};
|
|
100
|
+
|
|
101
|
+
/** CSS variables may expand to multiple filters; native filter arrays must be flat. */
|
|
102
|
+
export const filter: StyleFunctionResolver = (resolveValue, descriptor) => {
|
|
103
|
+
const value: unknown = resolveValue(descriptor[2]);
|
|
104
|
+
if (Array.isArray(value)) {
|
|
105
|
+
const filters: unknown[] = value.flat(Infinity);
|
|
106
|
+
return filters.filter(
|
|
107
|
+
(entry) => entry !== undefined && entry !== "initial",
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
if (value === undefined || value === "initial") return;
|
|
111
|
+
if (value === "none") return null;
|
|
112
|
+
return typeof value === "string" ? value : [value];
|
|
113
|
+
};
|
|
@@ -23,16 +23,17 @@ export const min: StyleFunctionResolver = (resolveValue, value) => {
|
|
|
23
23
|
export const clamp: StyleFunctionResolver = (resolveValue, value) => {
|
|
24
24
|
const args = resolveValue(value[2]);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
if (!Array.isArray(args)) return;
|
|
27
|
+
|
|
28
|
+
const [minimum, preferred, maximum] = args as unknown[];
|
|
27
29
|
|
|
28
30
|
if (
|
|
29
|
-
|
|
30
|
-
typeof
|
|
31
|
-
typeof
|
|
32
|
-
typeof max !== "number"
|
|
31
|
+
typeof minimum !== "number" ||
|
|
32
|
+
typeof preferred !== "number" ||
|
|
33
|
+
typeof maximum !== "number"
|
|
33
34
|
) {
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
return Math.
|
|
38
|
+
return Math.max(minimum, Math.min(preferred, maximum));
|
|
38
39
|
};
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import type { StyleFunctionResolver } from "../resolve";
|
|
2
2
|
|
|
3
|
+
export const gradientPosition: StyleFunctionResolver = (
|
|
4
|
+
resolveValue,
|
|
5
|
+
value,
|
|
6
|
+
) => {
|
|
7
|
+
const position = resolveValue(value[2]);
|
|
8
|
+
return typeof position === "number" ? `${position}px` : position;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const colorStop: StyleFunctionResolver = (resolveValue, value) => {
|
|
12
|
+
const args = resolveValue(value[2]);
|
|
13
|
+
if (!Array.isArray(args)) return args;
|
|
14
|
+
const [color, position] = args as unknown[];
|
|
15
|
+
if (typeof color !== "string") return;
|
|
16
|
+
if (position === undefined) return color;
|
|
17
|
+
if (typeof position !== "number" && typeof position !== "string") return;
|
|
18
|
+
return `${color} ${typeof position === "number" ? `${position}px` : position}`;
|
|
19
|
+
};
|
|
20
|
+
|
|
3
21
|
export const join: StyleFunctionResolver = (resolveValue, value) => {
|
|
4
22
|
const args = resolveValue(value[2]);
|
|
5
23
|
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { isStyleDescriptorArray } from "react-native-css/utilities";
|
|
2
2
|
|
|
3
3
|
import type { StyleFunctionResolver } from "../resolve";
|
|
4
|
+
import { scaleFactor } from "../scale-factor";
|
|
4
5
|
|
|
5
6
|
export const scale: StyleFunctionResolver = (resolveValue, descriptor) => {
|
|
6
7
|
const args = descriptor[2];
|
|
7
8
|
|
|
8
9
|
if (!isStyleDescriptorArray(args)) {
|
|
9
|
-
return { scale: resolveValue(args) };
|
|
10
|
+
return { scale: scaleFactor(resolveValue(args)) };
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
const x = resolveValue(args[0]);
|
|
13
|
-
const y = resolveValue(args[1]);
|
|
13
|
+
const x = scaleFactor(resolveValue(args[0]));
|
|
14
|
+
const y = scaleFactor(resolveValue(args[1]));
|
|
14
15
|
|
|
15
16
|
const isXValid = typeof x === "string" || typeof x === "number";
|
|
16
17
|
const isYValid = typeof y === "string" || typeof y === "number";
|
|
@@ -18,7 +19,7 @@ export const scale: StyleFunctionResolver = (resolveValue, descriptor) => {
|
|
|
18
19
|
if (isXValid && isYValid) {
|
|
19
20
|
return x === y ? { scale: x } : [{ scaleX: x }, { scaleY: y }];
|
|
20
21
|
} else if (isXValid) {
|
|
21
|
-
return {
|
|
22
|
+
return { scale: x };
|
|
22
23
|
} else if (isYValid) {
|
|
23
24
|
return { scaleY: y };
|
|
24
25
|
}
|