@tamagui/web 3.0.0-beta.831.1 → 3.0.0-beta.889.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/dist/cjs/createComponent.cjs +12 -1
- package/dist/cjs/createComponent.native.cjs +12 -1
- package/dist/cjs/createComponent.native.js +12 -1
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/createStyledHOC.cjs +1 -1
- package/dist/cjs/createStyledHOC.native.cjs +1 -1
- package/dist/cjs/createStyledHOC.native.js +1 -1
- package/dist/cjs/createStyledHOC.native.js.map +1 -1
- package/dist/cjs/createVariable.cjs +0 -10
- package/dist/cjs/createVariable.native.cjs +0 -10
- package/dist/cjs/createVariable.native.js +0 -10
- package/dist/cjs/createVariable.native.js.map +1 -1
- package/dist/cjs/helpers/borderComponents.cjs +62 -0
- package/dist/cjs/helpers/borderComponents.native.cjs +82 -0
- package/dist/cjs/helpers/borderComponents.native.js +84 -0
- package/dist/cjs/helpers/borderComponents.native.js.map +1 -0
- package/dist/cjs/helpers/createDesignSystem.cjs +0 -2
- package/dist/cjs/helpers/createStyledContext.cjs +10 -18
- package/dist/cjs/helpers/createStyledContext.native.cjs +14 -18
- package/dist/cjs/helpers/createStyledContext.native.js +14 -18
- package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
- package/dist/cjs/helpers/formatDiagnostic.cjs +6 -6
- package/dist/cjs/helpers/formatDiagnostic.native.cjs +6 -6
- package/dist/cjs/helpers/formatDiagnostic.native.js +6 -6
- package/dist/cjs/helpers/formatDiagnostic.native.js.map +1 -1
- package/dist/cjs/helpers/getCSSStylesAtomic.cjs +128 -109
- package/dist/cjs/helpers/getCSSStylesAtomic.native.cjs +11 -3
- package/dist/cjs/helpers/getCSSStylesAtomic.native.js +11 -3
- package/dist/cjs/helpers/getCSSStylesAtomic.native.js.map +1 -1
- package/dist/cjs/helpers/getCSSStylesAtomicCompiled.cjs +13 -1
- package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.cjs +15 -1
- package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js +15 -1
- package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
- package/dist/cjs/helpers/getDynamicVal.cjs +5 -1
- package/dist/cjs/helpers/getDynamicVal.native.cjs +5 -1
- package/dist/cjs/helpers/getDynamicVal.native.js +5 -1
- package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -1
- package/dist/cjs/helpers/getSplitStyles.cjs +1042 -1715
- package/dist/cjs/helpers/getSplitStyles.native.cjs +1081 -1887
- package/dist/cjs/helpers/getSplitStyles.native.js +1081 -1887
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/cjs/helpers/grammarConfig.cjs +163 -1
- package/dist/cjs/helpers/grammarConfig.native.cjs +186 -1
- package/dist/cjs/helpers/grammarConfig.native.js +186 -1
- package/dist/cjs/helpers/grammarConfig.native.js.map +1 -1
- package/dist/cjs/helpers/insertStyleRule.cjs +5 -1
- package/dist/cjs/helpers/insertStyleRule.native.cjs +7 -1
- package/dist/cjs/helpers/insertStyleRule.native.js +7 -1
- package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
- package/dist/cjs/helpers/log.cjs +9 -8
- package/dist/cjs/helpers/log.native.cjs +9 -8
- package/dist/cjs/helpers/log.native.js +9 -8
- package/dist/cjs/helpers/log.native.js.map +1 -1
- package/dist/cjs/helpers/mergeVariants.cjs +44 -13
- package/dist/cjs/helpers/mergeVariants.native.cjs +79 -14
- package/dist/cjs/helpers/mergeVariants.native.js +79 -14
- package/dist/cjs/helpers/mergeVariants.native.js.map +1 -1
- package/dist/cjs/helpers/nativeOnlyProps.cjs +0 -1
- package/dist/cjs/helpers/nativeOnlyProps.native.cjs +0 -1
- package/dist/cjs/helpers/nativeOnlyProps.native.js +0 -1
- package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -1
- package/dist/cjs/helpers/nativeStyleEngine.cjs +34 -14
- package/dist/cjs/helpers/nativeStyleEngine.native.cjs +36 -14
- package/dist/cjs/helpers/nativeStyleEngine.native.js +36 -14
- package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
- package/dist/cjs/helpers/normalizeValueWithProperty.cjs +7 -8
- package/dist/cjs/helpers/normalizeValueWithProperty.native.cjs +9 -8
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js +9 -8
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
- package/dist/cjs/helpers/parseBorderShorthand.native.cjs +25 -56
- package/dist/cjs/helpers/parseBorderShorthand.native.js +25 -56
- package/dist/cjs/helpers/parseBorderShorthand.native.js.map +1 -1
- package/dist/cjs/helpers/parseOutlineShorthand.native.cjs +9 -49
- package/dist/cjs/helpers/parseOutlineShorthand.native.js +9 -49
- package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -1
- package/dist/cjs/helpers/resolveSafeArea.cjs +35 -100
- package/dist/cjs/helpers/resolveVariantStyle.cjs +57 -0
- package/dist/cjs/helpers/resolveVariantStyle.native.cjs +67 -0
- package/dist/cjs/helpers/resolveVariantStyle.native.js +69 -0
- package/dist/cjs/helpers/resolveVariantStyle.native.js.map +1 -0
- package/dist/cjs/helpers/styleStaticConfig.cjs +1 -50
- package/dist/cjs/helpers/styleStaticConfig.native.cjs +1 -51
- package/dist/cjs/helpers/styleStaticConfig.native.js +1 -51
- package/dist/cjs/helpers/styleStaticConfig.native.js.map +1 -1
- package/dist/cjs/helpers/styleStaticConfigCore.cjs +107 -0
- package/dist/cjs/helpers/styleStaticConfigCore.native.cjs +127 -0
- package/dist/cjs/helpers/styleStaticConfigCore.native.js +129 -0
- package/dist/cjs/helpers/styleStaticConfigCore.native.js.map +1 -0
- package/dist/cjs/helpers/styledDynamic.cjs +160 -0
- package/dist/cjs/helpers/styledDynamic.native.cjs +195 -0
- package/dist/cjs/helpers/styledDynamic.native.js +197 -0
- package/dist/cjs/helpers/styledDynamic.native.js.map +1 -0
- package/dist/cjs/helpers/tokenCategories.cjs +15 -38
- package/dist/cjs/helpers/tokenCategories.native.cjs +15 -40
- package/dist/cjs/helpers/tokenCategories.native.js +15 -40
- package/dist/cjs/helpers/tokenCategories.native.js.map +1 -1
- package/dist/cjs/helpers/variableValue.cjs +17 -12
- package/dist/cjs/helpers/variableValue.native.cjs +46 -23
- package/dist/cjs/helpers/variableValue.native.js +46 -23
- package/dist/cjs/helpers/variableValue.native.js.map +1 -1
- package/dist/cjs/helpers/warnOnce.cjs +5 -4
- package/dist/cjs/helpers/warnOnce.native.cjs +6 -4
- package/dist/cjs/helpers/warnOnce.native.js +6 -4
- package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
- package/dist/cjs/hooks/useAnimationDriver.cjs +2 -2
- package/dist/cjs/hooks/useAnimationDriver.native.cjs +2 -2
- package/dist/cjs/hooks/useAnimationDriver.native.js +2 -2
- package/dist/cjs/hooks/useAnimationDriver.native.js.map +1 -1
- package/dist/cjs/hooks/useComponentState.cjs +41 -82
- package/dist/cjs/hooks/useComponentState.native.cjs +45 -84
- package/dist/cjs/hooks/useComponentState.native.js +45 -84
- package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
- package/dist/cjs/hooks/useMedia.cjs +2 -2
- package/dist/cjs/hooks/useMedia.native.cjs +2 -2
- package/dist/cjs/hooks/useMedia.native.js +2 -2
- package/dist/cjs/hooks/useMedia.native.js.map +1 -1
- package/dist/cjs/{helpers/directStyleCSS.native.js → hooks/useStyle.cjs} +16 -8
- package/dist/cjs/{helpers/directStyleCSS.native.cjs → hooks/useStyle.native.cjs} +16 -4
- package/dist/cjs/hooks/useStyle.native.js +34 -0
- package/dist/cjs/hooks/useStyle.native.js.map +1 -0
- package/dist/cjs/hooks/useThemeState.cjs +25 -90
- package/dist/cjs/hooks/useThemeState.native.cjs +34 -94
- package/dist/cjs/hooks/useThemeState.native.js +34 -94
- package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
- package/dist/cjs/index.cjs +6 -3
- package/dist/cjs/index.native.cjs +6 -3
- package/dist/cjs/index.native.js +6 -3
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/static-resolve.cjs +2 -2
- package/dist/cjs/static-resolve.native.cjs +2 -2
- package/dist/cjs/static-resolve.native.js +2 -2
- package/dist/cjs/static-resolve.native.js.map +1 -1
- package/dist/cjs/style.cjs +91 -0
- package/dist/cjs/style.native.cjs +98 -0
- package/dist/cjs/style.native.js +100 -0
- package/dist/cjs/style.native.js.map +1 -0
- package/dist/cjs/styled.cjs +11 -6
- package/dist/cjs/styled.native.cjs +11 -6
- package/dist/cjs/styled.native.js +11 -6
- package/dist/cjs/styled.native.js.map +1 -1
- package/dist/cjs/types.cjs +6 -4
- package/dist/cjs/types.native.cjs +6 -4
- package/dist/cjs/types.native.js +6 -4
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/views/TamaguiProvider.cjs +1 -2
- package/dist/cjs/views/TamaguiProvider.native.cjs +1 -2
- package/dist/cjs/views/TamaguiProvider.native.js +1 -2
- package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
- package/dist/cjs/views/Text.cjs +17 -12
- package/dist/cjs/views/Text.native.cjs +1 -0
- package/dist/cjs/views/Text.native.js +1 -0
- package/dist/cjs/views/Text.native.js.map +1 -1
- package/dist/cjs/views/Theme.cjs +3 -3
- package/dist/cjs/views/Theme.native.cjs +3 -3
- package/dist/cjs/views/Theme.native.js +3 -3
- package/dist/cjs/views/Theme.native.js.map +1 -1
- package/dist/cjs/views/ThemeDebug.cjs +1 -4
- package/dist/esm/createComponent.mjs +12 -1
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +12 -1
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/createStyledHOC.mjs +1 -1
- package/dist/esm/createStyledHOC.mjs.map +1 -1
- package/dist/esm/createStyledHOC.native.js +1 -1
- package/dist/esm/createStyledHOC.native.js.map +1 -1
- package/dist/esm/createVariable.mjs +1 -9
- package/dist/esm/createVariable.mjs.map +1 -1
- package/dist/esm/createVariable.native.js +1 -9
- package/dist/esm/createVariable.native.js.map +1 -1
- package/dist/esm/helpers/borderComponents.mjs +37 -0
- package/dist/esm/helpers/borderComponents.mjs.map +1 -0
- package/dist/esm/helpers/borderComponents.native.js +55 -0
- package/dist/esm/helpers/borderComponents.native.js.map +1 -0
- package/dist/esm/helpers/createDesignSystem.mjs +0 -2
- package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
- package/dist/esm/helpers/createStyledContext.mjs +10 -18
- package/dist/esm/helpers/createStyledContext.mjs.map +1 -1
- package/dist/esm/helpers/createStyledContext.native.js +14 -18
- package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
- package/dist/esm/helpers/formatDiagnostic.mjs +6 -6
- package/dist/esm/helpers/formatDiagnostic.mjs.map +1 -1
- package/dist/esm/helpers/formatDiagnostic.native.js +6 -6
- package/dist/esm/helpers/formatDiagnostic.native.js.map +1 -1
- package/dist/esm/helpers/getCSSStylesAtomic.mjs +126 -109
- package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
- package/dist/esm/helpers/getCSSStylesAtomic.native.js +7 -4
- package/dist/esm/helpers/getCSSStylesAtomic.native.js.map +1 -1
- package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs +8 -1
- package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs.map +1 -1
- package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js +10 -1
- package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
- package/dist/esm/helpers/getDynamicVal.mjs +5 -1
- package/dist/esm/helpers/getDynamicVal.mjs.map +1 -1
- package/dist/esm/helpers/getDynamicVal.native.js +5 -1
- package/dist/esm/helpers/getDynamicVal.native.js.map +1 -1
- package/dist/esm/helpers/getSplitStyles.mjs +1034 -1705
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.native.js +1071 -1871
- package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/esm/helpers/grammarConfig.mjs +164 -2
- package/dist/esm/helpers/grammarConfig.mjs.map +1 -1
- package/dist/esm/helpers/grammarConfig.native.js +187 -2
- package/dist/esm/helpers/grammarConfig.native.js.map +1 -1
- package/dist/esm/helpers/insertStyleRule.mjs +5 -2
- package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
- package/dist/esm/helpers/insertStyleRule.native.js +7 -2
- package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
- package/dist/esm/helpers/log.mjs +9 -8
- package/dist/esm/helpers/log.mjs.map +1 -1
- package/dist/esm/helpers/log.native.js +9 -8
- package/dist/esm/helpers/log.native.js.map +1 -1
- package/dist/esm/helpers/mergeVariants.mjs +44 -13
- package/dist/esm/helpers/mergeVariants.mjs.map +1 -1
- package/dist/esm/helpers/mergeVariants.native.js +79 -14
- package/dist/esm/helpers/mergeVariants.native.js.map +1 -1
- package/dist/esm/helpers/nativeOnlyProps.mjs +0 -1
- package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -1
- package/dist/esm/helpers/nativeOnlyProps.native.js +0 -1
- package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -1
- package/dist/esm/helpers/nativeStyleEngine.mjs +34 -15
- package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
- package/dist/esm/helpers/nativeStyleEngine.native.js +36 -15
- package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
- package/dist/esm/helpers/normalizeValueWithProperty.mjs +7 -8
- package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
- package/dist/esm/helpers/normalizeValueWithProperty.native.js +9 -8
- package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
- package/dist/esm/helpers/parseBorderShorthand.native.js +23 -56
- package/dist/esm/helpers/parseBorderShorthand.native.js.map +1 -1
- package/dist/esm/helpers/parseOutlineShorthand.native.js +10 -49
- package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -1
- package/dist/esm/helpers/resolveSafeArea.mjs +35 -97
- package/dist/esm/helpers/resolveSafeArea.mjs.map +1 -1
- package/dist/esm/helpers/resolveVariantStyle.mjs +38 -0
- package/dist/esm/helpers/resolveVariantStyle.mjs.map +1 -0
- package/dist/esm/helpers/resolveVariantStyle.native.js +46 -0
- package/dist/esm/helpers/resolveVariantStyle.native.js.map +1 -0
- package/dist/esm/helpers/styleStaticConfig.mjs +1 -50
- package/dist/esm/helpers/styleStaticConfig.mjs.map +1 -1
- package/dist/esm/helpers/styleStaticConfig.native.js +1 -51
- package/dist/esm/helpers/styleStaticConfig.native.js.map +1 -1
- package/dist/esm/helpers/styleStaticConfigCore.mjs +88 -0
- package/dist/esm/helpers/styleStaticConfigCore.mjs.map +1 -0
- package/dist/esm/helpers/styleStaticConfigCore.native.js +106 -0
- package/dist/esm/helpers/styleStaticConfigCore.native.js.map +1 -0
- package/dist/esm/helpers/styledDynamic.mjs +136 -0
- package/dist/esm/helpers/styledDynamic.mjs.map +1 -0
- package/dist/esm/helpers/styledDynamic.native.js +169 -0
- package/dist/esm/helpers/styledDynamic.native.js.map +1 -0
- package/dist/esm/helpers/tokenCategories.mjs +15 -36
- package/dist/esm/helpers/tokenCategories.mjs.map +1 -1
- package/dist/esm/helpers/tokenCategories.native.js +15 -38
- package/dist/esm/helpers/tokenCategories.native.js.map +1 -1
- package/dist/esm/helpers/variableValue.mjs +17 -12
- package/dist/esm/helpers/variableValue.mjs.map +1 -1
- package/dist/esm/helpers/variableValue.native.js +46 -23
- package/dist/esm/helpers/variableValue.native.js.map +1 -1
- package/dist/esm/helpers/warnOnce.mjs +5 -4
- package/dist/esm/helpers/warnOnce.mjs.map +1 -1
- package/dist/esm/helpers/warnOnce.native.js +6 -4
- package/dist/esm/helpers/warnOnce.native.js.map +1 -1
- package/dist/esm/hooks/useAnimationDriver.mjs +2 -2
- package/dist/esm/hooks/useAnimationDriver.mjs.map +1 -1
- package/dist/esm/hooks/useAnimationDriver.native.js +2 -2
- package/dist/esm/hooks/useAnimationDriver.native.js.map +1 -1
- package/dist/esm/hooks/useComponentState.mjs +41 -82
- package/dist/esm/hooks/useComponentState.mjs.map +1 -1
- package/dist/esm/hooks/useComponentState.native.js +45 -84
- package/dist/esm/hooks/useComponentState.native.js.map +1 -1
- package/dist/esm/hooks/useMedia.mjs +2 -2
- package/dist/esm/hooks/useMedia.mjs.map +1 -1
- package/dist/esm/hooks/useMedia.native.js +2 -2
- package/dist/esm/hooks/useMedia.native.js.map +1 -1
- package/dist/esm/hooks/useStyle.mjs +11 -0
- package/dist/esm/hooks/useStyle.mjs.map +1 -0
- package/dist/esm/hooks/useStyle.native.js +11 -0
- package/dist/esm/hooks/useStyle.native.js.map +1 -0
- package/dist/esm/hooks/useThemeState.mjs +25 -90
- package/dist/esm/hooks/useThemeState.mjs.map +1 -1
- package/dist/esm/hooks/useThemeState.native.js +34 -94
- package/dist/esm/hooks/useThemeState.native.js.map +1 -1
- package/dist/esm/index.js +6 -4
- package/dist/esm/index.mjs +6 -4
- package/dist/esm/index.native.js +6 -4
- package/dist/esm/static-resolve.mjs +3 -3
- package/dist/esm/static-resolve.mjs.map +1 -1
- package/dist/esm/static-resolve.native.js +3 -3
- package/dist/esm/static-resolve.native.js.map +1 -1
- package/dist/esm/style.mjs +58 -0
- package/dist/esm/style.mjs.map +1 -0
- package/dist/esm/style.native.js +63 -0
- package/dist/esm/style.native.js.map +1 -0
- package/dist/esm/styled.mjs +12 -6
- package/dist/esm/styled.mjs.map +1 -1
- package/dist/esm/styled.native.js +12 -6
- package/dist/esm/styled.native.js.map +1 -1
- package/dist/esm/types.mjs +3 -4
- package/dist/esm/types.mjs.map +1 -1
- package/dist/esm/types.native.js +3 -4
- package/dist/esm/types.native.js.map +1 -1
- package/dist/esm/views/TamaguiProvider.mjs +1 -2
- package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
- package/dist/esm/views/TamaguiProvider.native.js +1 -2
- package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
- package/dist/esm/views/Text.mjs +17 -12
- package/dist/esm/views/Text.mjs.map +1 -1
- package/dist/esm/views/Theme.mjs +3 -3
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +3 -3
- package/dist/esm/views/Theme.native.js.map +1 -1
- package/dist/esm/views/ThemeDebug.mjs +1 -4
- package/dist/esm/views/ThemeDebug.mjs.map +1 -1
- package/package.json +15 -15
- package/src/createComponent.tsx +21 -1
- package/src/createStyledHOC.tsx +4 -2
- package/src/createVariable.ts +0 -10
- package/src/helpers/borderComponents.ts +62 -0
- package/src/helpers/createDesignSystem.ts +0 -2
- package/src/helpers/createStyledContext.tsx +15 -53
- package/src/helpers/formatDiagnostic.ts +9 -9
- package/src/helpers/getCSSStylesAtomic.native.ts +6 -3
- package/src/helpers/getCSSStylesAtomic.ts +192 -207
- package/src/helpers/getCSSStylesAtomicCompiled.ts +13 -1
- package/src/helpers/getDynamicVal.ts +4 -0
- package/src/helpers/getSplitStyles.tsx +2080 -3270
- package/src/helpers/grammarConfig.ts +218 -1
- package/src/helpers/insertStyleRule.tsx +4 -2
- package/src/helpers/log.ts +12 -11
- package/src/helpers/mergeVariants.ts +55 -18
- package/src/helpers/nativeOnlyProps.ts +0 -1
- package/src/helpers/nativeStyleEngine.ts +55 -14
- package/src/helpers/normalizeValueWithProperty.ts +10 -12
- package/src/helpers/parseBorderShorthand.native.ts +23 -45
- package/src/helpers/parseOutlineShorthand.native.ts +9 -40
- package/src/helpers/resolveSafeArea.ts +34 -101
- package/src/helpers/resolveVariantStyle.ts +77 -0
- package/src/helpers/styleFrontend.ts +8 -5
- package/src/helpers/styleStaticConfig.ts +5 -72
- package/src/helpers/styleStaticConfigCore.ts +110 -0
- package/src/helpers/styledDynamic.ts +191 -0
- package/src/helpers/tokenCategories.ts +40 -65
- package/src/helpers/variableValue.ts +20 -15
- package/src/helpers/warnOnce.ts +5 -4
- package/src/hooks/useAnimationDriver.ts +6 -2
- package/src/hooks/useComponentState.ts +55 -183
- package/src/hooks/useMedia.tsx +10 -8
- package/src/hooks/useStyle.ts +10 -0
- package/src/hooks/useThemeState.ts +51 -264
- package/src/index.ts +6 -6
- package/src/internalRuntimeTypes.ts +1 -0
- package/src/static-resolve.ts +7 -4
- package/src/style.ts +97 -0
- package/src/styled.tsx +39 -68
- package/src/types.tsx +105 -169
- package/src/views/TamaguiProvider.tsx +0 -2
- package/src/views/Text.tsx +20 -14
- package/src/views/Theme.tsx +13 -9
- package/src/views/ThemeDebug.tsx +0 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/createStyledHOC.d.ts +1 -1
- package/types/createStyledHOC.d.ts.map +1 -1
- package/types/createVariable.d.ts +0 -2
- package/types/createVariable.d.ts.map +1 -1
- package/types/helpers/borderComponents.d.ts +10 -0
- package/types/helpers/borderComponents.d.ts.map +1 -0
- package/types/helpers/createDesignSystem.d.ts.map +1 -1
- package/types/helpers/createStyledContext.d.ts.map +1 -1
- package/types/helpers/getCSSStylesAtomic.d.ts +20 -19
- package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
- package/types/helpers/getCSSStylesAtomic.native.d.ts +5 -0
- package/types/helpers/getCSSStylesAtomic.native.d.ts.map +1 -1
- package/types/helpers/getCSSStylesAtomicCompiled.d.ts +6 -1
- package/types/helpers/getCSSStylesAtomicCompiled.d.ts.map +1 -1
- package/types/helpers/getDynamicVal.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts +3 -5
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/grammarConfig.d.ts +25 -2
- package/types/helpers/grammarConfig.d.ts.map +1 -1
- package/types/helpers/insertStyleRule.d.ts +1 -0
- package/types/helpers/insertStyleRule.d.ts.map +1 -1
- package/types/helpers/log.d.ts.map +1 -1
- package/types/helpers/mergeVariants.d.ts.map +1 -1
- package/types/helpers/nativeOnlyProps.d.ts +0 -1
- package/types/helpers/nativeOnlyProps.d.ts.map +1 -1
- package/types/helpers/nativeStyleEngine.d.ts +6 -0
- package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
- package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
- package/types/helpers/parseBorderShorthand.native.d.ts +1 -0
- package/types/helpers/parseBorderShorthand.native.d.ts.map +1 -1
- package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -1
- package/types/helpers/resolveSafeArea.d.ts +0 -1
- package/types/helpers/resolveSafeArea.d.ts.map +1 -1
- package/types/helpers/resolveVariantStyle.d.ts +3 -0
- package/types/helpers/resolveVariantStyle.d.ts.map +1 -0
- package/types/helpers/styleFrontend.d.ts +3 -5
- package/types/helpers/styleFrontend.d.ts.map +1 -1
- package/types/helpers/styleStaticConfig.d.ts +4 -9
- package/types/helpers/styleStaticConfig.d.ts.map +1 -1
- package/types/helpers/styleStaticConfigCore.d.ts +4 -0
- package/types/helpers/styleStaticConfigCore.d.ts.map +1 -0
- package/types/helpers/styledDynamic.d.ts +18 -0
- package/types/helpers/styledDynamic.d.ts.map +1 -0
- package/types/helpers/tokenCategories.d.ts +0 -1
- package/types/helpers/tokenCategories.d.ts.map +1 -1
- package/types/helpers/variableValue.d.ts.map +1 -1
- package/types/helpers/warnOnce.d.ts.map +1 -1
- package/types/helpers/webPropsToSkip.native.d.ts +68 -68
- package/types/hooks/useAnimationDriver.d.ts.map +1 -1
- package/types/hooks/useComponentState.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useStyle.d.ts +4 -0
- package/types/hooks/useStyle.d.ts.map +1 -0
- package/types/hooks/useThemeState.d.ts +1 -11
- package/types/hooks/useThemeState.d.ts.map +1 -1
- package/types/index.d.ts +6 -4
- package/types/index.d.ts.map +1 -1
- package/types/internalRuntimeTypes.d.ts +1 -1
- package/types/internalRuntimeTypes.d.ts.map +1 -1
- package/types/static-resolve.d.ts.map +1 -1
- package/types/style.d.ts +18 -0
- package/types/style.d.ts.map +1 -0
- package/types/styled.d.ts +10 -10
- package/types/styled.d.ts.map +1 -1
- package/types/types.d.ts +74 -49
- package/types/types.d.ts.map +1 -1
- package/types/views/TamaguiProvider.d.ts +1 -1
- package/types/views/TamaguiProvider.d.ts.map +1 -1
- package/types/views/Text.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
- package/types/views/ThemeDebug.d.ts.map +1 -1
- package/dist/cjs/helpers/directStyleCSS.cjs +0 -345
- package/dist/cjs/helpers/directStyleCSS.native.js.map +0 -1
- package/dist/cjs/helpers/directStyleCSSCompiled.cjs +0 -40
- package/dist/cjs/helpers/directStyleCSSCompiled.native.cjs +0 -46
- package/dist/cjs/helpers/directStyleCSSCompiled.native.js +0 -48
- package/dist/cjs/helpers/directStyleCSSCompiled.native.js.map +0 -1
- package/dist/cjs/helpers/getVariantExtras.cjs +0 -91
- package/dist/cjs/helpers/getVariantExtras.native.cjs +0 -94
- package/dist/cjs/helpers/getVariantExtras.native.js +0 -96
- package/dist/cjs/helpers/getVariantExtras.native.js.map +0 -1
- package/dist/cjs/helpers/variantResolvers.cjs +0 -87
- package/dist/cjs/helpers/variantResolvers.native.cjs +0 -140
- package/dist/cjs/helpers/variantResolvers.native.js +0 -142
- package/dist/cjs/helpers/variantResolvers.native.js.map +0 -1
- package/dist/esm/helpers/directStyleCSS.mjs +0 -317
- package/dist/esm/helpers/directStyleCSS.mjs.map +0 -1
- package/dist/esm/helpers/directStyleCSS.native.js +0 -1
- package/dist/esm/helpers/directStyleCSSCompiled.mjs +0 -11
- package/dist/esm/helpers/directStyleCSSCompiled.mjs.map +0 -1
- package/dist/esm/helpers/directStyleCSSCompiled.native.js +0 -15
- package/dist/esm/helpers/directStyleCSSCompiled.native.js.map +0 -1
- package/dist/esm/helpers/getVariantExtras.mjs +0 -69
- package/dist/esm/helpers/getVariantExtras.mjs.map +0 -1
- package/dist/esm/helpers/getVariantExtras.native.js +0 -70
- package/dist/esm/helpers/getVariantExtras.native.js.map +0 -1
- package/dist/esm/helpers/variantResolvers.mjs +0 -65
- package/dist/esm/helpers/variantResolvers.mjs.map +0 -1
- package/dist/esm/helpers/variantResolvers.native.js +0 -116
- package/dist/esm/helpers/variantResolvers.native.js.map +0 -1
- package/src/helpers/directStyleCSS.native.ts +0 -1
- package/src/helpers/directStyleCSS.ts +0 -513
- package/src/helpers/directStyleCSSCompiled.ts +0 -32
- package/src/helpers/getVariantExtras.tsx +0 -95
- package/src/helpers/variantResolvers.ts +0 -121
- package/types/helpers/directStyleCSS.d.ts +0 -28
- package/types/helpers/directStyleCSS.d.ts.map +0 -1
- package/types/helpers/directStyleCSS.native.d.ts +0 -2
- package/types/helpers/directStyleCSS.native.d.ts.map +0 -1
- package/types/helpers/directStyleCSSCompiled.d.ts +0 -10
- package/types/helpers/directStyleCSSCompiled.d.ts.map +0 -1
- package/types/helpers/getVariantExtras.d.ts +0 -4
- package/types/helpers/getVariantExtras.d.ts.map +0 -1
- package/types/helpers/variantResolvers.d.ts +0 -9
- package/types/helpers/variantResolvers.d.ts.map +0 -1
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import type { PropMappedValue } from '../types'
|
|
2
|
+
import { classifyBorderComponents } from './borderComponents'
|
|
2
3
|
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
'
|
|
10
|
-
|
|
11
|
-
'inset',
|
|
12
|
-
'outset',
|
|
13
|
-
'none',
|
|
14
|
-
'hidden',
|
|
15
|
-
])
|
|
4
|
+
// native width props want numbers: px and unitless become numbers, the CSS
|
|
5
|
+
// width keywords map to their user-agent px values, anything else passes as-is
|
|
6
|
+
export function toNativeBorderWidth(width: string): string | number {
|
|
7
|
+
if (width === 'thin') return 1
|
|
8
|
+
if (width === 'medium') return 3
|
|
9
|
+
if (width === 'thick') return 5
|
|
10
|
+
return width.endsWith('px') || !/[a-z%]/i.test(width) ? Number.parseFloat(width) : width
|
|
11
|
+
}
|
|
16
12
|
|
|
17
13
|
// parses CSS border shorthand: "<width> <style> <color>"
|
|
18
14
|
// components can appear in any order, all are optional
|
|
@@ -28,46 +24,28 @@ export function parseBorderShorthand(value: string): PropMappedValue | undefined
|
|
|
28
24
|
]
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
const
|
|
32
|
-
let borderWidth: string | number | undefined
|
|
33
|
-
let borderStyle: string | undefined
|
|
34
|
-
let borderColor: string | undefined
|
|
35
|
-
|
|
36
|
-
for (const part of parts) {
|
|
37
|
-
// check if it's a border style keyword
|
|
38
|
-
if (borderStyles.has(part)) {
|
|
39
|
-
borderStyle = part
|
|
40
|
-
}
|
|
41
|
-
// check if it's a length (number or ends with px/em/rem/etc)
|
|
42
|
-
else if (/^[\d.]+(?:px|em|rem|%|pt|vw|vh)?$/.test(part)) {
|
|
43
|
-
const num = parseFloat(part)
|
|
44
|
-
borderWidth = part.endsWith('px') || !part.match(/[a-z%]/i) ? num : part
|
|
45
|
-
}
|
|
46
|
-
// otherwise assume it's a color
|
|
47
|
-
else {
|
|
48
|
-
borderColor = part
|
|
49
|
-
}
|
|
50
|
-
}
|
|
27
|
+
const { width, style, color } = classifyBorderComponents(value)
|
|
51
28
|
|
|
52
29
|
const result: PropMappedValue = []
|
|
53
30
|
|
|
54
31
|
// expand to individual width props (RN doesn't support borderWidth shorthand)
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
result.push(['
|
|
58
|
-
result.push(['
|
|
59
|
-
result.push(['
|
|
32
|
+
if (width !== undefined) {
|
|
33
|
+
const nativeWidth = toNativeBorderWidth(width)
|
|
34
|
+
result.push(['borderTopWidth', nativeWidth])
|
|
35
|
+
result.push(['borderRightWidth', nativeWidth])
|
|
36
|
+
result.push(['borderBottomWidth', nativeWidth])
|
|
37
|
+
result.push(['borderLeftWidth', nativeWidth])
|
|
60
38
|
}
|
|
61
39
|
// borderStyle is supported as-is on native
|
|
62
|
-
if (
|
|
63
|
-
result.push(['borderStyle',
|
|
40
|
+
if (style !== undefined) {
|
|
41
|
+
result.push(['borderStyle', style])
|
|
64
42
|
}
|
|
65
43
|
// expand to individual color props (RN doesn't support borderColor shorthand)
|
|
66
|
-
if (
|
|
67
|
-
result.push(['borderTopColor',
|
|
68
|
-
result.push(['borderRightColor',
|
|
69
|
-
result.push(['borderBottomColor',
|
|
70
|
-
result.push(['borderLeftColor',
|
|
44
|
+
if (color !== undefined) {
|
|
45
|
+
result.push(['borderTopColor', color])
|
|
46
|
+
result.push(['borderRightColor', color])
|
|
47
|
+
result.push(['borderBottomColor', color])
|
|
48
|
+
result.push(['borderLeftColor', color])
|
|
71
49
|
}
|
|
72
50
|
|
|
73
51
|
return result.length > 0 ? result : undefined
|
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
import type { PropMappedValue } from '../types'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const outlineStyles = new Set([
|
|
5
|
-
'solid',
|
|
6
|
-
'dashed',
|
|
7
|
-
'dotted',
|
|
8
|
-
'double',
|
|
9
|
-
'groove',
|
|
10
|
-
'ridge',
|
|
11
|
-
'inset',
|
|
12
|
-
'outset',
|
|
13
|
-
'none',
|
|
14
|
-
'hidden',
|
|
15
|
-
])
|
|
2
|
+
import { classifyBorderComponents } from './borderComponents'
|
|
3
|
+
import { toNativeBorderWidth } from './parseBorderShorthand.native'
|
|
16
4
|
|
|
17
5
|
// parses CSS outline shorthand: "<width> <style> <color>"
|
|
18
6
|
// components can appear in any order, all are optional
|
|
@@ -25,37 +13,18 @@ export function parseOutlineShorthand(value: string): PropMappedValue | undefine
|
|
|
25
13
|
]
|
|
26
14
|
}
|
|
27
15
|
|
|
28
|
-
const
|
|
29
|
-
let outlineWidth: string | number | undefined
|
|
30
|
-
let outlineStyle: string | undefined
|
|
31
|
-
let outlineColor: string | undefined
|
|
32
|
-
|
|
33
|
-
for (const part of parts) {
|
|
34
|
-
// check if it's an outline style keyword
|
|
35
|
-
if (outlineStyles.has(part)) {
|
|
36
|
-
outlineStyle = part
|
|
37
|
-
}
|
|
38
|
-
// check if it's a length (number or ends with px/em/rem/etc)
|
|
39
|
-
else if (/^[\d.]+(?:px|em|rem|%|pt|vw|vh)?$/.test(part)) {
|
|
40
|
-
const num = parseFloat(part)
|
|
41
|
-
outlineWidth = part.endsWith('px') || !part.match(/[a-z%]/i) ? num : part
|
|
42
|
-
}
|
|
43
|
-
// otherwise assume it's a color
|
|
44
|
-
else {
|
|
45
|
-
outlineColor = part
|
|
46
|
-
}
|
|
47
|
-
}
|
|
16
|
+
const { width, style, color } = classifyBorderComponents(value, true)
|
|
48
17
|
|
|
49
18
|
const result: PropMappedValue = []
|
|
50
19
|
|
|
51
|
-
if (
|
|
52
|
-
result.push(['outlineWidth',
|
|
20
|
+
if (width !== undefined) {
|
|
21
|
+
result.push(['outlineWidth', toNativeBorderWidth(width)])
|
|
53
22
|
}
|
|
54
|
-
if (
|
|
55
|
-
result.push(['outlineStyle',
|
|
23
|
+
if (style !== undefined) {
|
|
24
|
+
result.push(['outlineStyle', style])
|
|
56
25
|
}
|
|
57
|
-
if (
|
|
58
|
-
result.push(['outlineColor',
|
|
26
|
+
if (color !== undefined) {
|
|
27
|
+
result.push(['outlineColor', color])
|
|
59
28
|
}
|
|
60
29
|
|
|
61
30
|
return result.length > 0 ? result : undefined
|
|
@@ -5,112 +5,45 @@
|
|
|
5
5
|
// insets on native (see resolveSafeArea.native.ts).
|
|
6
6
|
//
|
|
7
7
|
|
|
8
|
-
type Edge = 'top' | '
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
paddingBlock: ['top', 'bottom'],
|
|
27
|
-
paddingInline: ['left', 'right'],
|
|
28
|
-
paddingBlockStart: 'top',
|
|
29
|
-
paddingBlockEnd: 'bottom',
|
|
30
|
-
paddingInlineStart: 'left',
|
|
31
|
-
paddingInlineEnd: 'right',
|
|
32
|
-
// margin
|
|
33
|
-
margin: ['top', 'right', 'bottom', 'left'],
|
|
34
|
-
marginTop: 'top',
|
|
35
|
-
marginBottom: 'bottom',
|
|
36
|
-
marginLeft: 'left',
|
|
37
|
-
marginRight: 'right',
|
|
38
|
-
marginHorizontal: ['left', 'right'],
|
|
39
|
-
marginVertical: ['top', 'bottom'],
|
|
40
|
-
marginStart: 'left',
|
|
41
|
-
marginEnd: 'right',
|
|
42
|
-
marginBlock: ['top', 'bottom'],
|
|
43
|
-
marginInline: ['left', 'right'],
|
|
44
|
-
marginBlockStart: 'top',
|
|
45
|
-
marginBlockEnd: 'bottom',
|
|
46
|
-
marginInlineStart: 'left',
|
|
47
|
-
marginInlineEnd: 'right',
|
|
48
|
-
// inset
|
|
49
|
-
inset: ['top', 'right', 'bottom', 'left'],
|
|
50
|
-
top: 'top',
|
|
51
|
-
bottom: 'bottom',
|
|
52
|
-
left: 'left',
|
|
53
|
-
right: 'right',
|
|
54
|
-
start: 'left',
|
|
55
|
-
end: 'right',
|
|
8
|
+
type Edge = 'top' | 'right' | 'bottom' | 'left'
|
|
9
|
+
|
|
10
|
+
const allEdges: Edge[] = ['top', 'right', 'bottom', 'left']
|
|
11
|
+
const suffixEdges: Record<string, Edge[]> = {
|
|
12
|
+
Horizontal: ['left', 'right'],
|
|
13
|
+
Inline: ['left', 'right'],
|
|
14
|
+
Vertical: ['top', 'bottom'],
|
|
15
|
+
Block: ['top', 'bottom'],
|
|
16
|
+
Start: ['left'],
|
|
17
|
+
InlineStart: ['left'],
|
|
18
|
+
End: ['right'],
|
|
19
|
+
InlineEnd: ['right'],
|
|
20
|
+
Top: ['top'],
|
|
21
|
+
BlockStart: ['top'],
|
|
22
|
+
Bottom: ['bottom'],
|
|
23
|
+
BlockEnd: ['bottom'],
|
|
24
|
+
Left: ['left'],
|
|
25
|
+
Right: ['right'],
|
|
56
26
|
}
|
|
57
27
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return key in propEdges
|
|
28
|
+
function safeAreaEdges(key: string): [string, Edge[]] | undefined {
|
|
29
|
+
if (key === 'inset') return ['', allEdges]
|
|
30
|
+
if (/^(top|right|bottom|left)$/.test(key)) return ['', [key as Edge]]
|
|
31
|
+
if (key === 'start') return ['', ['left']]
|
|
32
|
+
if (key === 'end') return ['', ['right']]
|
|
33
|
+
const match = /^(padding|margin)(.*)$/.exec(key)
|
|
34
|
+
if (!match) return
|
|
35
|
+
const edges = match[2] ? suffixEdges[match[2]] : allEdges
|
|
36
|
+
return edges && [match[1], edges]
|
|
68
37
|
}
|
|
69
38
|
|
|
70
39
|
// resolve key="safe" -> array of [edge-key, value] pairs.
|
|
71
40
|
// returns undefined if key isn't safe-area-aware.
|
|
72
41
|
export function expandSafeAreaValue(key: string): Array<[string, string]> | undefined {
|
|
73
|
-
const
|
|
74
|
-
if (!
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
// for inset: emit bare top/right/bottom/left (the actual CSS sides).
|
|
81
|
-
const base = baseKeyForExpansion[key]
|
|
82
|
-
if (base === '') {
|
|
83
|
-
return edges.map((e) => [edgeToSideKey[e], envForEdge[e]])
|
|
84
|
-
}
|
|
85
|
-
return edges.map((e) => [`${base}${edgeToPascal[e]}`, envForEdge[e]])
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const edgeToPascal: Record<Edge, string> = {
|
|
89
|
-
top: 'Top',
|
|
90
|
-
bottom: 'Bottom',
|
|
91
|
-
left: 'Left',
|
|
92
|
-
right: 'Right',
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const edgeToSideKey: Record<Edge, string> = {
|
|
96
|
-
top: 'top',
|
|
97
|
-
bottom: 'bottom',
|
|
98
|
-
left: 'left',
|
|
99
|
-
right: 'right',
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// for each multi-edge prop, what's the base name to prepend Top/Bottom/etc?
|
|
103
|
-
// '' = no prefix (use bare edge names like 'top', 'left')
|
|
104
|
-
const baseKeyForExpansion: Record<string, string> = {
|
|
105
|
-
padding: 'padding',
|
|
106
|
-
paddingHorizontal: 'padding',
|
|
107
|
-
paddingVertical: 'padding',
|
|
108
|
-
paddingBlock: 'padding',
|
|
109
|
-
paddingInline: 'padding',
|
|
110
|
-
margin: 'margin',
|
|
111
|
-
marginHorizontal: 'margin',
|
|
112
|
-
marginVertical: 'margin',
|
|
113
|
-
marginBlock: 'margin',
|
|
114
|
-
marginInline: 'margin',
|
|
115
|
-
inset: '',
|
|
42
|
+
const match = safeAreaEdges(key)
|
|
43
|
+
if (!match) return
|
|
44
|
+
const [base, edges] = match
|
|
45
|
+
return edges.map((edge) => [
|
|
46
|
+
base ? `${base}${edge[0].toUpperCase()}${edge.slice(1)}` : edge,
|
|
47
|
+
`env(safe-area-inset-${edge})`,
|
|
48
|
+
])
|
|
116
49
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { GetStyleState } from '../types'
|
|
2
|
+
import { emitVariantStyle, walkConditionalValue } from './getSplitStyles'
|
|
3
|
+
import { isObj } from './isObj'
|
|
4
|
+
import { skipProps } from './skipProps'
|
|
5
|
+
import { styleOriginalValues } from './styleOriginalValues'
|
|
6
|
+
import { normalizeValueWithProperty } from './normalizeValueWithProperty'
|
|
7
|
+
import { getDynamicEnv, isStyledDynamic } from './styledDynamic'
|
|
8
|
+
|
|
9
|
+
export function resolveVariantStyle(
|
|
10
|
+
state: GetStyleState,
|
|
11
|
+
variants: Record<string, any>,
|
|
12
|
+
key: string,
|
|
13
|
+
value: any,
|
|
14
|
+
parentKey = key,
|
|
15
|
+
parentCondition?: unknown
|
|
16
|
+
) {
|
|
17
|
+
const definition = variants[key]
|
|
18
|
+
// bare styled.dynamic<T>(): the prop is typed and consumed here; its style
|
|
19
|
+
// comes from a component resolver reading it off props
|
|
20
|
+
if (typeof definition !== 'function' && isStyledDynamic(definition)) {
|
|
21
|
+
return
|
|
22
|
+
}
|
|
23
|
+
if (
|
|
24
|
+
!(
|
|
25
|
+
typeof value === 'string' &&
|
|
26
|
+
definition &&
|
|
27
|
+
typeof definition === 'object' &&
|
|
28
|
+
value in definition
|
|
29
|
+
) &&
|
|
30
|
+
walkConditionalValue(state, key, value, parentCondition, (payload, condition) =>
|
|
31
|
+
resolveSelection(state, variants, key, payload, parentKey, condition || undefined)
|
|
32
|
+
)
|
|
33
|
+
) {
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
resolveSelection(state, variants, key, value, parentKey, parentCondition)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function resolveSelection(
|
|
40
|
+
state: GetStyleState,
|
|
41
|
+
variants: Record<string, any>,
|
|
42
|
+
key: string,
|
|
43
|
+
value: any,
|
|
44
|
+
parentKey: string,
|
|
45
|
+
condition?: unknown
|
|
46
|
+
) {
|
|
47
|
+
const definition = variants[key]
|
|
48
|
+
let output
|
|
49
|
+
if (isStyledDynamic(definition) && typeof definition === 'function') {
|
|
50
|
+
// styled.dynamic(fn): pure function of the (per-clause) value + env
|
|
51
|
+
output = definition(value, getDynamicEnv(state))
|
|
52
|
+
} else if (definition && typeof definition === 'object' && value !== undefined) {
|
|
53
|
+
output = definition[value]
|
|
54
|
+
}
|
|
55
|
+
if (!isObj(output)) return
|
|
56
|
+
|
|
57
|
+
const originals = styleOriginalValues.get(output)
|
|
58
|
+
for (const outputKey in output) {
|
|
59
|
+
if (!state.styleProps.noSkip && outputKey in skipProps) continue
|
|
60
|
+
const raw = output[outputKey]
|
|
61
|
+
// A dynamic's static shape is allowed to use undefined values for
|
|
62
|
+
// conditionals. They are absent, matching resolver output semantics, and
|
|
63
|
+
// must not normalize into an "undefined" atomic rule.
|
|
64
|
+
if (raw == null) continue
|
|
65
|
+
const value = state.styleProps.noNormalize
|
|
66
|
+
? raw
|
|
67
|
+
: normalizeValueWithProperty(raw, state.conf.shorthands[outputKey] || outputKey)
|
|
68
|
+
emitVariantStyle(
|
|
69
|
+
state,
|
|
70
|
+
outputKey,
|
|
71
|
+
value,
|
|
72
|
+
originals?.[outputKey] ?? raw,
|
|
73
|
+
condition,
|
|
74
|
+
parentKey === key && outputKey === key
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -64,6 +64,8 @@ export type FrontendClassPlan =
|
|
|
64
64
|
preserveRawClass: boolean
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
export type FrontendClassSink = (entry: FrontendClassPlanEntry) => void
|
|
68
|
+
|
|
67
69
|
/**
|
|
68
70
|
* A component's authoring syntax. It is chosen by the package the component was
|
|
69
71
|
* imported from and frozen onto its static config when the component is created:
|
|
@@ -77,11 +79,12 @@ export type FrontendClassPlan =
|
|
|
77
79
|
* contribution, merging, web lowering, and native evaluation all stay in core.
|
|
78
80
|
*/
|
|
79
81
|
export type StyleFrontend = {
|
|
80
|
-
/**
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
/** resolves one class candidate and sends claimed entries to the shared cursor */
|
|
83
|
+
resolveClassName?: (
|
|
84
|
+
candidate: string,
|
|
85
|
+
config: StyleFrontendConfig,
|
|
86
|
+
sink: FrontendClassSink
|
|
87
|
+
) => boolean | null
|
|
85
88
|
|
|
86
89
|
/**
|
|
87
90
|
* Resolves frontend-specific static style input (a class-string base, string
|
|
@@ -1,88 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { StaticConfig, TamaguiInternalConfig } from '../types'
|
|
1
|
+
import type { StaticConfig, StylePiece, TamaguiInternalConfig } from '../types'
|
|
3
2
|
import { getConfigRevisionState } from './grammarConfig'
|
|
4
3
|
|
|
5
4
|
export type StyleStaticConfig = {
|
|
6
5
|
baseStyle: Record<string, any> | undefined
|
|
7
6
|
baseVariantProps: Record<string, any> | undefined
|
|
7
|
+
baseStylePiece: StylePiece | undefined
|
|
8
|
+
baseStylePieces: Record<string, StylePiece> | undefined
|
|
8
9
|
defaultProps: Record<string, any> | undefined
|
|
9
10
|
styledContextKeys: Set<string> | null
|
|
10
11
|
variants: StaticConfig['variants']
|
|
12
|
+
variantStyleResolver: any
|
|
11
13
|
passthroughClassName: string | undefined
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
const styleStaticConfigCache = new WeakMap<
|
|
15
|
-
StaticConfig,
|
|
16
|
-
WeakMap<TamaguiInternalConfig, { revision: number; value: StyleStaticConfig }>
|
|
17
|
-
>()
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* styled() takes styles and props in one options object. The styles belong to the
|
|
21
|
-
* base layer the style pass writes before any prop, so call-site props and
|
|
22
|
-
* variants always land on top of them; everything else stays a prop.
|
|
23
|
-
*
|
|
24
|
-
* Split lazily rather than in styled(), because classifying a key needs
|
|
25
|
-
* `conf.shorthands` and styled() runs at module scope before createTamagui.
|
|
26
|
-
*/
|
|
27
16
|
export function getStyleStaticConfig(
|
|
28
17
|
staticConfig: StaticConfig,
|
|
29
18
|
conf: TamaguiInternalConfig
|
|
30
19
|
): StyleStaticConfig {
|
|
31
|
-
|
|
32
|
-
const revision = getConfigRevisionState(conf).revision
|
|
33
|
-
const cached = configCache?.get(conf)
|
|
34
|
-
if (cached?.revision === revision) return cached.value
|
|
35
|
-
|
|
36
|
-
const normalized = staticConfig.styleFrontend?.normalizeStaticConfig?.(
|
|
37
|
-
staticConfig,
|
|
38
|
-
conf
|
|
39
|
-
)
|
|
40
|
-
const variants = normalized ? normalized.variants : staticConfig.variants
|
|
41
|
-
const authoredBaseStyle = normalized ? normalized.baseStyle : staticConfig.baseStyle
|
|
42
|
-
const authoredDefaultProps = staticConfig.defaultProps
|
|
43
|
-
let baseStyle: Record<string, any> | undefined
|
|
44
|
-
let baseVariantProps: Record<string, any> | undefined
|
|
45
|
-
let defaultProps: Record<string, any> | undefined
|
|
46
|
-
if (authoredDefaultProps) {
|
|
47
|
-
const validStyles =
|
|
48
|
-
staticConfig.validStyles ||
|
|
49
|
-
(staticConfig.isText || staticConfig.isInput ? stylePropsText : validStylesView)
|
|
50
|
-
for (const key in authoredDefaultProps) {
|
|
51
|
-
const isVariant = Boolean(variants?.[key])
|
|
52
|
-
// transition selects an animation driver preset. It stays a prop even
|
|
53
|
-
// though the web style table recognizes the CSS property spelling.
|
|
54
|
-
const isStyle =
|
|
55
|
-
key !== 'transition' && (key in validStyles || key in conf.shorthands)
|
|
56
|
-
if (isVariant || isStyle) {
|
|
57
|
-
;(baseStyle ||= authoredBaseStyle ? { ...authoredBaseStyle } : {})[key] =
|
|
58
|
-
authoredDefaultProps[key]
|
|
59
|
-
}
|
|
60
|
-
// variants also stay in the merged props for context and HOC forwarding,
|
|
61
|
-
// while their style contribution runs at its authored base position
|
|
62
|
-
if (isVariant || !isStyle) {
|
|
63
|
-
;(defaultProps ||= {})[key] = authoredDefaultProps[key]
|
|
64
|
-
}
|
|
65
|
-
if (isVariant) {
|
|
66
|
-
;(baseVariantProps ||= {})[key] = authoredDefaultProps[key]
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
const keys = staticConfig.contextProps || staticConfig.context?.propKeys
|
|
71
|
-
const value: StyleStaticConfig = {
|
|
72
|
-
baseStyle: baseStyle || authoredBaseStyle,
|
|
73
|
-
baseVariantProps,
|
|
74
|
-
defaultProps,
|
|
75
|
-
styledContextKeys: keys ? new Set(keys) : null,
|
|
76
|
-
variants,
|
|
77
|
-
passthroughClassName: normalized
|
|
78
|
-
? normalized.passthroughClassName
|
|
79
|
-
: staticConfig.passthroughClassName,
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (!configCache) {
|
|
83
|
-
configCache = new WeakMap()
|
|
84
|
-
styleStaticConfigCache.set(staticConfig, configCache)
|
|
85
|
-
}
|
|
86
|
-
configCache.set(conf, { revision, value })
|
|
87
|
-
return value
|
|
20
|
+
return getConfigRevisionState(conf).styleStaticConfig(staticConfig, conf)
|
|
88
21
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import {
|
|
2
|
+
stylePropsInput,
|
|
3
|
+
stylePropsText,
|
|
4
|
+
validStyles as validStylesView,
|
|
5
|
+
} from '@tamagui/helpers'
|
|
6
|
+
import type { StaticConfig, StylePiece, TamaguiInternalConfig } from '../types'
|
|
7
|
+
import { createStylePiece } from '../style'
|
|
8
|
+
import type { StyleStaticConfig } from './styleStaticConfig'
|
|
9
|
+
|
|
10
|
+
const styleStaticConfigCache = new WeakMap<
|
|
11
|
+
StaticConfig,
|
|
12
|
+
WeakMap<TamaguiInternalConfig, { revision: number; value: StyleStaticConfig }>
|
|
13
|
+
>()
|
|
14
|
+
|
|
15
|
+
export function resolveStyleStaticConfig(
|
|
16
|
+
staticConfig: StaticConfig,
|
|
17
|
+
conf: TamaguiInternalConfig,
|
|
18
|
+
revision: number
|
|
19
|
+
): StyleStaticConfig {
|
|
20
|
+
let configCache = styleStaticConfigCache.get(staticConfig)
|
|
21
|
+
const cached = configCache?.get(conf)
|
|
22
|
+
if (cached?.revision === revision) return cached.value
|
|
23
|
+
|
|
24
|
+
const normalized = staticConfig.styleFrontend?.normalizeStaticConfig?.(
|
|
25
|
+
staticConfig,
|
|
26
|
+
conf
|
|
27
|
+
)
|
|
28
|
+
const variants = normalized ? normalized.variants : staticConfig.variants
|
|
29
|
+
const authoredBaseStyle = normalized ? normalized.baseStyle : staticConfig.baseStyle
|
|
30
|
+
const authoredDefaultProps = staticConfig.defaultProps
|
|
31
|
+
let baseStyle: Record<string, any> | undefined
|
|
32
|
+
let baseVariantProps: Record<string, any> | undefined
|
|
33
|
+
let defaultProps: Record<string, any> | undefined
|
|
34
|
+
const validStyles =
|
|
35
|
+
staticConfig.validStyles ||
|
|
36
|
+
(staticConfig.isInput
|
|
37
|
+
? stylePropsInput
|
|
38
|
+
: staticConfig.isText
|
|
39
|
+
? stylePropsText
|
|
40
|
+
: validStylesView)
|
|
41
|
+
if (authoredDefaultProps) {
|
|
42
|
+
for (const key in authoredDefaultProps) {
|
|
43
|
+
const isVariant = Boolean(variants?.[key])
|
|
44
|
+
const isStyle =
|
|
45
|
+
key !== 'transition' && (key in validStyles || key in conf.shorthands)
|
|
46
|
+
if (isVariant || isStyle) {
|
|
47
|
+
;(baseStyle ||= authoredBaseStyle ? { ...authoredBaseStyle } : {})[key] =
|
|
48
|
+
authoredDefaultProps[key]
|
|
49
|
+
}
|
|
50
|
+
if (isVariant || !isStyle) {
|
|
51
|
+
;(defaultProps ||= {})[key] = authoredDefaultProps[key]
|
|
52
|
+
}
|
|
53
|
+
if (isVariant) {
|
|
54
|
+
;(baseVariantProps ||= {})[key] = authoredDefaultProps[key]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const resolvedBaseStyle = baseStyle || authoredBaseStyle
|
|
59
|
+
let baseStylePiece
|
|
60
|
+
let baseStylePieces: Record<string, StylePiece> | undefined
|
|
61
|
+
if (resolvedBaseStyle && !(staticConfig as any).disableBaseStylePiece) {
|
|
62
|
+
let directBaseStyle: Record<string, any> | undefined
|
|
63
|
+
let directBaseKeys: string[] | undefined
|
|
64
|
+
const flushDirectBaseStyle = () => {
|
|
65
|
+
if (!directBaseStyle || !directBaseKeys) return
|
|
66
|
+
const piece = createStylePiece(directBaseStyle, 'base')
|
|
67
|
+
baseStylePiece ||= piece
|
|
68
|
+
baseStylePieces ||= {}
|
|
69
|
+
for (const key of directBaseKeys) {
|
|
70
|
+
baseStylePieces[key] = piece
|
|
71
|
+
}
|
|
72
|
+
directBaseStyle = undefined
|
|
73
|
+
directBaseKeys = undefined
|
|
74
|
+
}
|
|
75
|
+
for (const key in resolvedBaseStyle) {
|
|
76
|
+
const expanded = conf.shorthands[key] || key
|
|
77
|
+
if (key !== 'transition' && !variants?.[key] && expanded in validStyles) {
|
|
78
|
+
;(directBaseStyle ||= {})[key] = resolvedBaseStyle[key]
|
|
79
|
+
;(directBaseKeys ||= []).push(key)
|
|
80
|
+
} else {
|
|
81
|
+
// A default variant between direct declarations must run at that exact
|
|
82
|
+
// authored position. Keeping separate contiguous pieces preserves the
|
|
83
|
+
// base layer's ordinary last-write order while still precompiling it.
|
|
84
|
+
flushDirectBaseStyle()
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
flushDirectBaseStyle()
|
|
88
|
+
}
|
|
89
|
+
const keys = staticConfig.contextProps || staticConfig.context?.propKeys
|
|
90
|
+
const value: StyleStaticConfig = {
|
|
91
|
+
baseStyle: resolvedBaseStyle,
|
|
92
|
+
baseVariantProps,
|
|
93
|
+
baseStylePiece,
|
|
94
|
+
baseStylePieces,
|
|
95
|
+
defaultProps,
|
|
96
|
+
styledContextKeys: keys ? new Set(keys) : null,
|
|
97
|
+
variants,
|
|
98
|
+
variantStyleResolver: (staticConfig as any).variantStyleResolver,
|
|
99
|
+
passthroughClassName: normalized
|
|
100
|
+
? normalized.passthroughClassName
|
|
101
|
+
: staticConfig.passthroughClassName,
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (!configCache) {
|
|
105
|
+
configCache = new WeakMap()
|
|
106
|
+
styleStaticConfigCache.set(staticConfig, configCache)
|
|
107
|
+
}
|
|
108
|
+
configCache.set(conf, { revision, value })
|
|
109
|
+
return value
|
|
110
|
+
}
|