react-native-css 3.0.7 → 3.1.0-rc.1
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/README.md +24 -0
- package/dist/commonjs/babel/helpers.js +7 -0
- package/dist/commonjs/babel/helpers.js.map +1 -1
- package/dist/commonjs/babel/import-plugin.js +20 -8
- package/dist/commonjs/babel/import-plugin.js.map +1 -1
- package/dist/commonjs/babel/react-native-web.js +17 -4
- package/dist/commonjs/babel/react-native-web.js.map +1 -1
- package/dist/commonjs/babel/react-native.js +9 -4
- 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 +44 -28
- 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 +103 -62
- 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 +15 -4
- package/dist/commonjs/compiler/selector-builder.js.map +1 -1
- package/dist/commonjs/compiler/stylesheet.js +11 -3
- package/dist/commonjs/compiler/stylesheet.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 +16 -3
- 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/metro/warnings.js +135 -0
- package/dist/commonjs/metro/warnings.js.map +1 -0
- package/dist/commonjs/native/api.js +13 -9
- 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 +60 -11
- 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 +61 -24
- 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 +14 -1
- 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 +95 -12
- 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/root.js +18 -7
- package/dist/commonjs/native-internal/root.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/native-internal/variables.js +1 -1
- package/dist/commonjs/native-internal/variables.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/helpers.js +6 -0
- package/dist/module/babel/helpers.js.map +1 -1
- package/dist/module/babel/import-plugin.js +22 -10
- 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 +9 -4
- 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 +45 -29
- package/dist/module/compiler/compiler.js.map +1 -1
- package/dist/module/compiler/compiler.types.js +2 -0
- package/dist/module/compiler/compiler.types.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 +103 -62
- 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 +15 -4
- package/dist/module/compiler/selector-builder.js.map +1 -1
- package/dist/module/compiler/stylesheet.js +11 -3
- package/dist/module/compiler/stylesheet.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 +16 -3
- 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/metro/warnings.js +131 -0
- package/dist/module/metro/warnings.js.map +1 -0
- package/dist/module/native/api.js +15 -11
- 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 +63 -14
- 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 +55 -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 +12 -0
- 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 +95 -12
- 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/root.js +18 -7
- package/dist/module/native-internal/root.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/native-internal/variables.js +2 -2
- package/dist/module/native-internal/variables.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/helpers.d.ts +2 -1
- package/dist/typescript/commonjs/src/babel/helpers.d.ts.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 +1 -5
- package/dist/typescript/commonjs/src/compiler/compiler.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/compiler/compiler.types.d.ts +6 -0
- package/dist/typescript/commonjs/src/compiler/compiler.types.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/compiler/stylesheet.d.ts +6 -8
- package/dist/typescript/commonjs/src/compiler/stylesheet.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/jest/index.d.ts +2 -10
- package/dist/typescript/commonjs/src/jest/index.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 +4 -0
- package/dist/typescript/commonjs/src/metro/index.d.ts.map +1 -1
- package/dist/typescript/commonjs/src/metro/metro-transformer.d.ts +9 -4
- 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/metro/warnings.d.ts +13 -0
- package/dist/typescript/commonjs/src/metro/warnings.d.ts.map +1 -0
- 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 +14 -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/root.d.ts +12 -0
- package/dist/typescript/commonjs/src/native-internal/root.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/helpers.d.ts +2 -1
- package/dist/typescript/module/src/babel/helpers.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 +3 -7
- package/dist/typescript/module/src/compiler/compiler.d.ts.map +1 -1
- package/dist/typescript/module/src/compiler/compiler.types.d.ts +7 -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 +6 -8
- package/dist/typescript/module/src/compiler/stylesheet.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/jest/index.d.ts +2 -10
- package/dist/typescript/module/src/jest/index.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 +5 -1
- package/dist/typescript/module/src/metro/index.d.ts.map +1 -1
- package/dist/typescript/module/src/metro/metro-transformer.d.ts +10 -5
- 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/metro/warnings.d.ts +13 -0
- package/dist/typescript/module/src/metro/warnings.d.ts.map +1 -0
- 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 +14 -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 +13 -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 +63 -28
- package/src/babel/helpers.ts +8 -1
- package/src/babel/import-plugin.ts +31 -16
- package/src/babel/react-native-web.ts +32 -4
- package/src/babel/react-native.ts +9 -4
- package/src/compiler/atRules.ts +44 -0
- package/src/compiler/compiler.ts +78 -47
- package/src/compiler/compiler.types.ts +9 -0
- package/src/compiler/container-query.ts +8 -3
- package/src/compiler/declarations.ts +190 -101
- package/src/compiler/lightningcss-loader.ts +16 -15
- package/src/compiler/media-query.ts +20 -9
- package/src/compiler/selector-builder.ts +31 -4
- package/src/compiler/stylesheet.ts +17 -10
- 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 +7 -0
- package/src/metro/metro-transformer.ts +26 -8
- package/src/metro/typescript.ts +53 -6
- package/src/metro/warnings.ts +187 -0
- package/src/native/api.tsx +22 -17
- 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 +69 -14
- package/src/native/react/usePassthrough.ts +3 -2
- package/src/native/reactivity.ts +76 -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 +14 -0
- 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 +100 -13
- 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/root.ts +40 -13
- package/src/native-internal/style-collection.ts +1 -1
- package/src/native-internal/variables.tsx +6 -4
- 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
package/src/native/api.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
|
-
import { useContext, useState, type ComponentType } from "react";
|
|
3
|
-
import { Appearance } from "react-native";
|
|
2
|
+
import { useContext, useEffect, useState, type ComponentType } from "react";
|
|
3
|
+
import { Appearance, type ViewStyle } from "react-native";
|
|
4
4
|
|
|
5
5
|
import type { StyleDescriptor } from "react-native-css/compiler";
|
|
6
6
|
import { VariableContext } from "react-native-css/native-internal";
|
|
@@ -9,13 +9,16 @@ import type {
|
|
|
9
9
|
ColorScheme,
|
|
10
10
|
Props,
|
|
11
11
|
ReactComponent,
|
|
12
|
+
Styled,
|
|
12
13
|
StyledConfiguration,
|
|
13
14
|
StyledOptions,
|
|
14
15
|
} from "../runtime.types";
|
|
15
16
|
import { mappingToConfig, useNativeCss } from "./react/useNativeCss";
|
|
16
17
|
import { usePassthrough } from "./react/usePassthrough";
|
|
17
18
|
import {
|
|
19
|
+
cleanupEffect,
|
|
18
20
|
colorScheme as colorSchemeObs,
|
|
21
|
+
toVariableRecord,
|
|
19
22
|
VAR_SYMBOL,
|
|
20
23
|
type Effect,
|
|
21
24
|
type Getter,
|
|
@@ -40,12 +43,9 @@ const defaultMapping: StyledConfiguration<ComponentType<{ style: unknown }>> = {
|
|
|
40
43
|
* @param baseComponent
|
|
41
44
|
* @param mapping
|
|
42
45
|
*/
|
|
43
|
-
export const styled =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
>(
|
|
47
|
-
baseComponent: C,
|
|
48
|
-
mapping: M = defaultMapping as M,
|
|
46
|
+
export const styled: Styled = (
|
|
47
|
+
baseComponent: ReactComponent<any>,
|
|
48
|
+
mapping: StyledConfiguration<any> = defaultMapping,
|
|
49
49
|
options?: StyledOptions,
|
|
50
50
|
) => {
|
|
51
51
|
let component: any;
|
|
@@ -73,7 +73,7 @@ export const colorScheme: ColorScheme = {
|
|
|
73
73
|
return colorSchemeObs.get() ?? Appearance.getColorScheme() ?? "light";
|
|
74
74
|
},
|
|
75
75
|
set(value) {
|
|
76
|
-
return colorSchemeObs.set(value);
|
|
76
|
+
return colorSchemeObs.set(value === "unspecified" ? null : value);
|
|
77
77
|
},
|
|
78
78
|
};
|
|
79
79
|
|
|
@@ -97,28 +97,33 @@ export function useNativeVariable(name: string) {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
const inheritedVariables = useContext(VariableContext);
|
|
100
|
-
const [
|
|
100
|
+
const [, forceUpdate] = useState(0);
|
|
101
|
+
const [effect] = useState(() => {
|
|
101
102
|
const effect: Effect = {
|
|
102
103
|
observers: new Set(),
|
|
103
|
-
run: () =>
|
|
104
|
+
run: () => forceUpdate((state) => state + 1),
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
const get: Getter = (observable) => observable.get(effect);
|
|
107
108
|
|
|
108
|
-
return
|
|
109
|
+
return Object.assign(effect, { get });
|
|
109
110
|
});
|
|
110
111
|
|
|
112
|
+
useEffect(() => {
|
|
113
|
+
// React StrictMode replays setup after cleanup without another render.
|
|
114
|
+
if (effect.observers.size === 0) forceUpdate((state) => state + 1);
|
|
115
|
+
return () => cleanupEffect(effect);
|
|
116
|
+
}, [effect]);
|
|
117
|
+
cleanupEffect(effect);
|
|
111
118
|
return resolveValue([{}, "var", [name]], effect.get, { inheritedVariables });
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
/**
|
|
115
122
|
* @deprecated Use `<VariableContextProvider />` instead.
|
|
116
123
|
*/
|
|
117
|
-
export function vars(variables: Record<string, StyleDescriptor>) {
|
|
124
|
+
export function vars(variables: Record<string, StyleDescriptor>): ViewStyle {
|
|
118
125
|
return Object.assign(
|
|
119
126
|
{ [VAR_SYMBOL]: "inline" },
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
),
|
|
123
|
-
);
|
|
127
|
+
toVariableRecord(variables),
|
|
128
|
+
) as ViewStyle;
|
|
124
129
|
}
|
|
@@ -11,7 +11,7 @@ export function testAttributes(
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
function testAttribute(
|
|
14
|
-
[type, prop, operator, testValue]: AttributeQuery,
|
|
14
|
+
[type, prop, operator, testValue, caseSensitivity]: AttributeQuery,
|
|
15
15
|
props: Record<string, unknown> | undefined | null,
|
|
16
16
|
guards: RenderGuard[],
|
|
17
17
|
) {
|
|
@@ -32,21 +32,38 @@ function testAttribute(
|
|
|
32
32
|
return value !== undefined && value !== null && value !== false;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
if (operator === "!") return !value;
|
|
36
|
+
if (value === undefined || value === null || testValue === undefined)
|
|
37
|
+
return false;
|
|
38
|
+
|
|
39
|
+
if (
|
|
40
|
+
typeof value !== "string" &&
|
|
41
|
+
typeof value !== "number" &&
|
|
42
|
+
typeof value !== "boolean"
|
|
43
|
+
)
|
|
44
|
+
return false;
|
|
45
|
+
let actual = String(value);
|
|
46
|
+
if (caseSensitivity === "i") {
|
|
47
|
+
// CSS attribute flags fold ASCII letters only, not Unicode characters.
|
|
48
|
+
actual = actual.replace(/[A-Z]/g, (letter) => letter.toLowerCase());
|
|
49
|
+
testValue = testValue.replace(/[A-Z]/g, (letter) => letter.toLowerCase());
|
|
50
|
+
}
|
|
51
|
+
|
|
35
52
|
switch (operator) {
|
|
36
|
-
case "!":
|
|
37
|
-
return !value;
|
|
38
53
|
case "=":
|
|
39
|
-
return
|
|
54
|
+
return actual === testValue;
|
|
40
55
|
case "~=":
|
|
41
|
-
return
|
|
56
|
+
return (
|
|
57
|
+
testValue !== "" && actual.split(/[\t\n\f\r ]+/).includes(testValue)
|
|
58
|
+
);
|
|
42
59
|
case "|=":
|
|
43
|
-
return testValue
|
|
60
|
+
return actual === testValue || actual.startsWith(testValue + "-");
|
|
44
61
|
case "^=":
|
|
45
|
-
return testValue &&
|
|
62
|
+
return testValue !== "" && actual.startsWith(testValue);
|
|
46
63
|
case "$=":
|
|
47
|
-
return testValue &&
|
|
64
|
+
return testValue !== "" && actual.endsWith(testValue);
|
|
48
65
|
case "*=":
|
|
49
|
-
return testValue &&
|
|
66
|
+
return testValue !== "" && actual.includes(testValue);
|
|
50
67
|
default:
|
|
51
68
|
operator satisfies never;
|
|
52
69
|
return false;
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
type ContainerContextValue,
|
|
17
17
|
type Getter,
|
|
18
18
|
} from "../reactivity";
|
|
19
|
-
|
|
19
|
+
import { testAttributes } from "./attributes";
|
|
20
20
|
import type { RenderGuard } from "./guards";
|
|
21
21
|
|
|
22
22
|
export const DEFAULT_CONTAINER_NAME = "c:___default___";
|
|
@@ -47,15 +47,17 @@ export function testContainerQuery(
|
|
|
47
47
|
return false;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
|
|
50
|
+
// Ancestor snapshots have their own context guard. Their attributes must not
|
|
51
|
+
// be compared with this descendant's props by the ordinary attribute guards.
|
|
52
|
+
if (query.a && !testAttributes(query.a, container.props, [])) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
53
55
|
|
|
54
|
-
if (query.m && !testContainerMediaCondition(query.m, container, get)) {
|
|
56
|
+
if (query.m && !testContainerMediaCondition(query.m, container.key, get)) {
|
|
55
57
|
return false;
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
if (query.p && !testContainerPseudoCondition(query.p, container, get)) {
|
|
60
|
+
if (query.p && !testContainerPseudoCondition(query.p, container.key, get)) {
|
|
59
61
|
return false;
|
|
60
62
|
}
|
|
61
63
|
|
|
@@ -119,11 +121,11 @@ function testContainerMediaCondition(
|
|
|
119
121
|
case ">":
|
|
120
122
|
return left > right;
|
|
121
123
|
case ">=":
|
|
122
|
-
return left
|
|
124
|
+
return left >= right;
|
|
123
125
|
case "<":
|
|
124
|
-
return left
|
|
126
|
+
return left < right;
|
|
125
127
|
case "<=":
|
|
126
|
-
return left
|
|
128
|
+
return left <= right;
|
|
127
129
|
default:
|
|
128
130
|
condition[0] satisfies never;
|
|
129
131
|
return false;
|
|
@@ -39,7 +39,7 @@ function testComparison(mediaQuery: MediaCondition, get: Getter): Boolean {
|
|
|
39
39
|
|
|
40
40
|
switch (mediaQuery[1]) {
|
|
41
41
|
case "dir":
|
|
42
|
-
return (I18nManager.isRTL
|
|
42
|
+
return value === (I18nManager.isRTL ? "rtl" : "ltr");
|
|
43
43
|
case "hover":
|
|
44
44
|
return true;
|
|
45
45
|
case "platform":
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
|
|
12
12
|
const mainCache = new WeakMap<
|
|
13
13
|
WeakKey,
|
|
14
|
-
WeakMap<Function, (event: any) => void
|
|
14
|
+
Map<InteractionType, WeakMap<Function, (event: any) => void>>
|
|
15
15
|
>();
|
|
16
16
|
|
|
17
17
|
type Handler = (event: unknown) => void;
|
|
@@ -40,14 +40,19 @@ const defaultHandlers: Record<InteractionType, Handler> = {
|
|
|
40
40
|
export function getInteractionHandler(
|
|
41
41
|
weakKey: WeakKey,
|
|
42
42
|
type: InteractionType,
|
|
43
|
-
handler
|
|
43
|
+
handler?: Handler | null,
|
|
44
44
|
) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
handler ??= defaultHandlers[type];
|
|
46
|
+
let interactions = mainCache.get(weakKey);
|
|
47
|
+
if (!interactions) {
|
|
48
|
+
interactions = new Map();
|
|
49
|
+
mainCache.set(weakKey, interactions);
|
|
49
50
|
}
|
|
50
51
|
|
|
52
|
+
// A caller may reuse one callback for events that update opposite states.
|
|
53
|
+
let cache = interactions.get(type);
|
|
54
|
+
if (!cache) interactions.set(type, (cache = new WeakMap()));
|
|
55
|
+
|
|
51
56
|
let cached = cache.get(handler);
|
|
52
57
|
if (!cached) {
|
|
53
58
|
cached = (event: any) => {
|
|
@@ -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,
|
|
@@ -4,10 +4,11 @@ import {
|
|
|
4
4
|
Fragment,
|
|
5
5
|
useContext,
|
|
6
6
|
useEffect,
|
|
7
|
+
useRef,
|
|
7
8
|
useState,
|
|
8
9
|
type ComponentType,
|
|
9
10
|
} from "react";
|
|
10
|
-
import { Pressable, View } from "react-native";
|
|
11
|
+
import { Image, Pressable, StyleSheet, View } from "react-native";
|
|
11
12
|
|
|
12
13
|
import { VariableContext } from "react-native-css/native-internal";
|
|
13
14
|
|
|
@@ -16,6 +17,7 @@ import { testGuards, type RenderGuard } from "../conditions/guards";
|
|
|
16
17
|
import {
|
|
17
18
|
cleanupEffect,
|
|
18
19
|
ContainerContext,
|
|
20
|
+
hasChangedDependencies,
|
|
19
21
|
type ContainerContextValue,
|
|
20
22
|
type Effect,
|
|
21
23
|
type Getter,
|
|
@@ -69,9 +71,6 @@ export function useNativeCss(
|
|
|
69
71
|
const inheritedContainers = useContext(ContainerContext);
|
|
70
72
|
|
|
71
73
|
const [state, setState] = useState((): ComponentState => {
|
|
72
|
-
// Both effects share the same observers to improve memory usage
|
|
73
|
-
const observers = new Set<Effect>();
|
|
74
|
-
|
|
75
74
|
/**
|
|
76
75
|
* When fired, this effect will force the rules to be re-evaluated.
|
|
77
76
|
* This will cause a re-render if there are different rules
|
|
@@ -79,7 +78,7 @@ export function useNativeCss(
|
|
|
79
78
|
* Use this when a rule condition changes, e.g FastRefresh or media queries
|
|
80
79
|
*/
|
|
81
80
|
const ruleEffect: Effect = {
|
|
82
|
-
observers,
|
|
81
|
+
observers: new Set(),
|
|
83
82
|
run: () => setState((state) => updateRules(state)),
|
|
84
83
|
};
|
|
85
84
|
|
|
@@ -90,11 +89,11 @@ export function useNativeCss(
|
|
|
90
89
|
* Use this when a value changes, e.g vm units or light / dark mode
|
|
91
90
|
*/
|
|
92
91
|
const styleEffect: Effect = {
|
|
93
|
-
observers,
|
|
92
|
+
observers: new Set(),
|
|
94
93
|
run: () => setState((state) => ({ ...state })),
|
|
95
94
|
};
|
|
96
95
|
|
|
97
|
-
|
|
96
|
+
const initialState = updateRules(
|
|
98
97
|
{
|
|
99
98
|
ruleEffect,
|
|
100
99
|
ruleEffectGetter: (observable) => observable.get(ruleEffect),
|
|
@@ -110,10 +109,36 @@ export function useNativeCss(
|
|
|
110
109
|
false,
|
|
111
110
|
false,
|
|
112
111
|
);
|
|
112
|
+
// State initializers may be discarded by React StrictMode. Subscribe once
|
|
113
|
+
// the component commits instead of retaining an abandoned initializer.
|
|
114
|
+
cleanupEffect(ruleEffect);
|
|
115
|
+
return initialState;
|
|
113
116
|
});
|
|
114
117
|
|
|
115
|
-
//
|
|
116
|
-
|
|
118
|
+
// Distinguishes a fresh mount from an effect replay (Activity, StrictMode)
|
|
119
|
+
const hasCommittedRef = useRef(false);
|
|
120
|
+
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
// Reconnect subscriptions after React replays an effect setup.
|
|
123
|
+
if (state.ruleEffect.observers.size === 0) {
|
|
124
|
+
if (hasCommittedRef.current || hasChangedDependencies(state.ruleEffect)) {
|
|
125
|
+
// Replay, or conditions changed since the initializer: recalculate.
|
|
126
|
+
state.ruleEffect.run();
|
|
127
|
+
state.styleEffect.run();
|
|
128
|
+
} else {
|
|
129
|
+
// Fresh mount: resubscribe to the initializer's dependencies.
|
|
130
|
+
// styleEffect resubscribes itself during render.
|
|
131
|
+
for (const observable of state.ruleEffect.dependencies ?? []) {
|
|
132
|
+
observable.get(state.ruleEffect);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
hasCommittedRef.current = true;
|
|
137
|
+
return () => {
|
|
138
|
+
cleanupEffect(state.ruleEffect);
|
|
139
|
+
cleanupEffect(state.styleEffect);
|
|
140
|
+
};
|
|
141
|
+
}, [state.ruleEffect, state.styleEffect]);
|
|
117
142
|
|
|
118
143
|
// Check if our derived state has changed (e.g the className prop)
|
|
119
144
|
if (
|
|
@@ -137,7 +162,11 @@ export function useNativeCss(
|
|
|
137
162
|
return createElement(Fragment);
|
|
138
163
|
}
|
|
139
164
|
|
|
140
|
-
let props = getStyledProps(
|
|
165
|
+
let props = getStyledProps(
|
|
166
|
+
state,
|
|
167
|
+
originalProps,
|
|
168
|
+
type === Image ? adaptImageProps : undefined,
|
|
169
|
+
);
|
|
141
170
|
|
|
142
171
|
if (type === View && props?.onPress) {
|
|
143
172
|
type = Pressable;
|
|
@@ -156,8 +185,18 @@ export function useNativeCss(
|
|
|
156
185
|
}
|
|
157
186
|
|
|
158
187
|
if (state.containers) {
|
|
188
|
+
// Publish a new props snapshot even when this component's own rules did not
|
|
189
|
+
// change. Descendants can depend on an ancestor attribute through a group.
|
|
190
|
+
const containers = Object.fromEntries(
|
|
191
|
+
Object.entries(state.containers).map(([name, container]) => [
|
|
192
|
+
name,
|
|
193
|
+
container.key === state.ruleEffectGetter
|
|
194
|
+
? { key: container.key, props: originalProps }
|
|
195
|
+
: (inheritedContainers[name] ?? container),
|
|
196
|
+
]),
|
|
197
|
+
);
|
|
159
198
|
props = {
|
|
160
|
-
value:
|
|
199
|
+
value: containers,
|
|
161
200
|
children: createElement(type, props),
|
|
162
201
|
};
|
|
163
202
|
type = ContainerContext.Provider;
|
|
@@ -181,9 +220,14 @@ export function mappingToConfig(mapping: StyledConfiguration<any>) {
|
|
|
181
220
|
} else if (typeof value === "string") {
|
|
182
221
|
return { source: key, target: value.split(".") };
|
|
183
222
|
} else if (typeof value === "object") {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
223
|
+
// Keep the declared deprecated alias working. The current spelling wins
|
|
224
|
+
// when both are provided, including an intentionally empty mapping.
|
|
225
|
+
const mapping = value.nativeStyleMapping ?? value.nativeStyleToProp;
|
|
226
|
+
const nativeStyleMapping = mapping
|
|
227
|
+
? Object.fromEntries(
|
|
228
|
+
Object.entries(mapping).map(([k, v]) => [k, v === true ? k : v]),
|
|
229
|
+
)
|
|
230
|
+
: undefined;
|
|
187
231
|
|
|
188
232
|
if (Array.isArray(value)) {
|
|
189
233
|
return { source: key, target: value, nativeStyleMapping };
|
|
@@ -209,3 +253,14 @@ export function mappingToConfig(mapping: StyledConfiguration<any>) {
|
|
|
209
253
|
throw new Error(`styled(): Invalid mapping for ${key}: ${value}`);
|
|
210
254
|
});
|
|
211
255
|
}
|
|
256
|
+
|
|
257
|
+
// Apply native Image fitting before normal, inline, and important props merge.
|
|
258
|
+
// The compiler's contentFit mapping remains available to Expo Image adapters.
|
|
259
|
+
function adaptImageProps(props: Record<string, any> | undefined) {
|
|
260
|
+
if (!props || !("contentFit" in props)) return props;
|
|
261
|
+
const { contentFit, style, ...rest } = props;
|
|
262
|
+
return {
|
|
263
|
+
...rest,
|
|
264
|
+
style: { ...StyleSheet.flatten(style), objectFit: contentFit },
|
|
265
|
+
};
|
|
266
|
+
}
|
|
@@ -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,8 +10,12 @@ 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
|
+
/** Dependencies recorded by the last cleanupEffect() */
|
|
16
|
+
dependencies?: Observable<any, any>[];
|
|
17
|
+
/** Dependency values recorded by the last cleanupEffect() */
|
|
18
|
+
snapshots?: [Observable<any, any>, unknown][];
|
|
15
19
|
};
|
|
16
20
|
|
|
17
21
|
export type Observable<Value, Arg = Value> = {
|
|
@@ -19,6 +23,7 @@ export type Observable<Value, Arg = Value> = {
|
|
|
19
23
|
get: (effect?: Effect) => Value;
|
|
20
24
|
set: (arg: Arg) => void;
|
|
21
25
|
run: () => void;
|
|
26
|
+
unsubscribe: (effect: Effect) => void;
|
|
22
27
|
};
|
|
23
28
|
type Read<Value, Arg> = (get: Getter, arg?: Arg) => Value;
|
|
24
29
|
export type Getter = <Value>(observable: Observable<Value, any>) => Value;
|
|
@@ -43,9 +48,10 @@ export function observable<Value, Arg = Value>(
|
|
|
43
48
|
|
|
44
49
|
const observers = new Set<Effect>();
|
|
45
50
|
const effect: Effect = {
|
|
46
|
-
observers,
|
|
51
|
+
observers: new Set(),
|
|
47
52
|
run: () => {
|
|
48
53
|
if (!isStatic) {
|
|
54
|
+
cleanupEffect(effect);
|
|
49
55
|
const nextValue = (init as Read<Value, Arg>)(getter, lastArg);
|
|
50
56
|
if (equality(value, nextValue)) {
|
|
51
57
|
return;
|
|
@@ -57,14 +63,19 @@ export function observable<Value, Arg = Value>(
|
|
|
57
63
|
},
|
|
58
64
|
};
|
|
59
65
|
|
|
60
|
-
const getter: Getter = (observable) =>
|
|
66
|
+
const getter: Getter = (observable) =>
|
|
67
|
+
observable.get(observers.size > 0 ? effect : undefined);
|
|
61
68
|
|
|
62
|
-
function get(
|
|
63
|
-
if (
|
|
64
|
-
observers.
|
|
69
|
+
function get(subscriber?: Effect) {
|
|
70
|
+
if (subscriber) {
|
|
71
|
+
if (observers.size === 0 && !isStatic) didInit = false;
|
|
72
|
+
observers.add(subscriber);
|
|
73
|
+
subscriber.observers.add(obs);
|
|
65
74
|
}
|
|
66
75
|
if (!didInit) {
|
|
67
|
-
|
|
76
|
+
cleanupEffect(effect);
|
|
77
|
+
value = (init as Read<Value, Arg>)(getter, lastArg);
|
|
78
|
+
didInit = observers.size > 0;
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
return value;
|
|
@@ -77,9 +88,10 @@ export function observable<Value, Arg = Value>(
|
|
|
77
88
|
}
|
|
78
89
|
value = arg as unknown as Value;
|
|
79
90
|
} else {
|
|
91
|
+
cleanupEffect(effect);
|
|
80
92
|
const nextValue = (init as Read<Value, Arg>)(getter, arg);
|
|
81
93
|
|
|
82
|
-
didInit =
|
|
94
|
+
didInit = observers.size > 0;
|
|
83
95
|
lastArg = arg;
|
|
84
96
|
|
|
85
97
|
if (equality(value, nextValue)) {
|
|
@@ -108,6 +120,13 @@ export function observable<Value, Arg = Value>(
|
|
|
108
120
|
get,
|
|
109
121
|
set,
|
|
110
122
|
run: effect.run,
|
|
123
|
+
unsubscribe(subscriber) {
|
|
124
|
+
if (observers.delete(subscriber) && observers.size === 0 && !isStatic) {
|
|
125
|
+
cleanupEffect(effect);
|
|
126
|
+
didInit = false;
|
|
127
|
+
}
|
|
128
|
+
subscriber.observers.delete(obs);
|
|
129
|
+
},
|
|
111
130
|
};
|
|
112
131
|
|
|
113
132
|
return obs;
|
|
@@ -115,10 +134,26 @@ export function observable<Value, Arg = Value>(
|
|
|
115
134
|
|
|
116
135
|
export function cleanupEffect(effect: Effect) {
|
|
117
136
|
if (!effect) return;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
137
|
+
const dependencies = (effect.dependencies = Array.from(effect.observers));
|
|
138
|
+
// Snapshot before detaching so computed observables return cached values
|
|
139
|
+
effect.snapshots = dependencies.map(
|
|
140
|
+
(observable) =>
|
|
141
|
+
[observable, observable.get()] as [Observable<any, any>, unknown],
|
|
142
|
+
);
|
|
121
143
|
effect.observers.clear();
|
|
144
|
+
for (const dep of dependencies) {
|
|
145
|
+
dep.unsubscribe(effect);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** Whether any of the effect's dependencies changed since cleanupEffect() */
|
|
150
|
+
export function hasChangedDependencies(effect: Effect): boolean {
|
|
151
|
+
const snapshots = effect.snapshots;
|
|
152
|
+
if (!snapshots) return false;
|
|
153
|
+
for (const [observable, value] of snapshots) {
|
|
154
|
+
if (!Object.is(observable.get(), value)) return true;
|
|
155
|
+
}
|
|
156
|
+
return false;
|
|
122
157
|
}
|
|
123
158
|
|
|
124
159
|
/** Family Helpers ************************************************************/
|
|
@@ -129,11 +164,9 @@ export function family<Key, Result = Key, Args extends any = void>(
|
|
|
129
164
|
const map = new Map<Key, Result>();
|
|
130
165
|
return Object.assign(
|
|
131
166
|
(key: Key, args: Args) => {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
map.set(key, value);
|
|
136
|
-
}
|
|
167
|
+
if (map.has(key)) return map.get(key)!;
|
|
168
|
+
const value = fn(key, args);
|
|
169
|
+
map.set(key, value);
|
|
137
170
|
return value;
|
|
138
171
|
},
|
|
139
172
|
{
|
|
@@ -166,11 +199,9 @@ export function weakFamily<Key extends WeakKey, Args = undefined, Result = Key>(
|
|
|
166
199
|
const map = new WeakMap<Key, Result>();
|
|
167
200
|
return Object.assign(
|
|
168
201
|
(key: Key, args: Args) => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
map.set(key, value);
|
|
173
|
-
}
|
|
202
|
+
if (map.has(key)) return map.get(key)!;
|
|
203
|
+
const value = fn(key, args);
|
|
204
|
+
map.set(key, value);
|
|
174
205
|
return value;
|
|
175
206
|
},
|
|
176
207
|
{
|
|
@@ -186,6 +217,21 @@ export type VariableContextValue = Record<string, StyleDescriptor> & {
|
|
|
186
217
|
[VAR_SYMBOL]: true;
|
|
187
218
|
};
|
|
188
219
|
|
|
220
|
+
// Variable lookup is presence-keyed, so an entry with no value produces no key rather than one that stops the cascade
|
|
221
|
+
export function toVariableRecord(
|
|
222
|
+
variables: Record<string, StyleDescriptor>,
|
|
223
|
+
): Record<string, StyleDescriptor> {
|
|
224
|
+
const record: Record<string, StyleDescriptor> = {};
|
|
225
|
+
|
|
226
|
+
for (const [name, value] of Object.entries(variables)) {
|
|
227
|
+
if (value !== undefined) {
|
|
228
|
+
record[name.replace(/^--/, "")] = value;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return record;
|
|
233
|
+
}
|
|
234
|
+
|
|
189
235
|
/** Pseudo Classes ************************************************************/
|
|
190
236
|
|
|
191
237
|
export const hoverFamily = weakFamily(() => observable(false));
|
|
@@ -216,14 +262,20 @@ Dimensions.addEventListener("change", ({ window }) => {
|
|
|
216
262
|
|
|
217
263
|
/** Color Scheme **************************************************************/
|
|
218
264
|
|
|
219
|
-
export const colorScheme = observable<ColorSchemeName>(
|
|
265
|
+
export const colorScheme = observable<ColorSchemeName | null | undefined>(
|
|
220
266
|
Appearance.getColorScheme(),
|
|
221
267
|
);
|
|
222
268
|
Appearance.addChangeListener((event) => colorScheme.set(event.colorScheme));
|
|
223
269
|
|
|
224
270
|
/** Containers ****************************************************************/
|
|
225
271
|
|
|
226
|
-
export type ContainerContextValue = Record<
|
|
272
|
+
export type ContainerContextValue = Record<
|
|
273
|
+
string,
|
|
274
|
+
{
|
|
275
|
+
key: WeakKey;
|
|
276
|
+
props: Record<string, unknown> | null | undefined;
|
|
277
|
+
}
|
|
278
|
+
>;
|
|
227
279
|
export const ContainerContext = createContext<ContainerContextValue>({});
|
|
228
280
|
|
|
229
281
|
export const containerLayoutFamily = weakFamily(() => {
|
|
@@ -243,6 +295,6 @@ export const containerWidthFamily = weakFamily((key) => {
|
|
|
243
295
|
|
|
244
296
|
export const containerHeightFamily = weakFamily((key) => {
|
|
245
297
|
return observable((read) => {
|
|
246
|
-
return read(containerLayoutFamily(key))?.
|
|
298
|
+
return read(containerLayoutFamily(key))?.height || 0;
|
|
247
299
|
});
|
|
248
300
|
});
|