@tamagui/web 3.0.0-beta.922.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_withNativeStyle.cjs +3 -0
- package/dist/cjs/_withNativeStyle.native.cjs +3 -0
- package/dist/cjs/_withNativeStyle.native.js +3 -0
- package/dist/cjs/_withNativeStyle.native.js.map +1 -1
- package/dist/cjs/_withStableStyle.native.cjs +1 -5
- package/dist/cjs/_withStableStyle.native.js +1 -5
- package/dist/cjs/_withStableStyle.native.js.map +1 -1
- package/dist/cjs/config.cjs +6 -3
- package/dist/cjs/config.native.cjs +7 -5
- package/dist/cjs/config.native.js +7 -5
- package/dist/cjs/config.native.js.map +1 -1
- package/dist/cjs/contexts/ComponentContext.cjs +1 -0
- package/dist/cjs/contexts/ComponentContext.native.cjs +8 -0
- package/dist/cjs/contexts/ComponentContext.native.js +8 -0
- package/dist/cjs/contexts/ComponentContext.native.js.map +1 -1
- package/dist/cjs/createComponent.cjs +46 -32
- package/dist/cjs/createComponent.native.cjs +92 -72
- package/dist/cjs/createComponent.native.js +92 -72
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/createTamagui.cjs +32 -14
- package/dist/cjs/createTamagui.native.cjs +33 -19
- package/dist/cjs/createTamagui.native.js +33 -19
- package/dist/cjs/createTamagui.native.js.map +1 -1
- package/dist/cjs/createTokens.native.cjs +1 -5
- package/dist/cjs/createTokens.native.js +1 -5
- package/dist/cjs/createTokens.native.js.map +1 -1
- package/dist/cjs/createVariable.native.cjs +1 -5
- package/dist/cjs/createVariable.native.js +1 -5
- package/dist/cjs/createVariable.native.js.map +1 -1
- package/dist/cjs/createVariables.native.cjs +2 -6
- package/dist/cjs/createVariables.native.js +2 -6
- package/dist/cjs/createVariables.native.js.map +1 -1
- package/dist/cjs/dom/html.cjs +87 -329
- package/dist/cjs/dom/html.native.cjs +53 -2
- package/dist/cjs/dom/html.native.js +53 -2
- package/dist/cjs/dom/html.native.js.map +1 -1
- package/dist/cjs/{helpers/timer.native.js → dom/htmlReset.cjs} +6 -12
- package/dist/cjs/{helpers/timer.native.cjs → dom/htmlReset.native.cjs} +6 -8
- package/dist/cjs/dom/htmlReset.native.js +30 -0
- package/dist/cjs/dom/htmlReset.native.js.map +1 -0
- package/dist/cjs/dom/htmlRuntime.native.cjs +4 -0
- package/dist/cjs/dom/htmlRuntime.native.js +4 -0
- package/dist/cjs/dom/htmlRuntime.native.js.map +1 -1
- package/dist/cjs/dom/htmlStaticConfig.cjs +44 -0
- package/dist/cjs/dom/htmlStaticConfig.native.cjs +46 -0
- package/dist/cjs/dom/htmlStaticConfig.native.js +48 -0
- package/dist/cjs/dom/htmlStaticConfig.native.js.map +1 -0
- package/dist/cjs/dom/primitives.native.cjs +81 -34
- package/dist/cjs/dom/primitives.native.js +81 -34
- package/dist/cjs/dom/primitives.native.js.map +1 -1
- package/dist/cjs/eventHandling.cjs +10 -4
- package/dist/cjs/eventHandling.native.cjs +52 -16
- package/dist/cjs/eventHandling.native.js +52 -16
- package/dist/cjs/eventHandling.native.js.map +1 -1
- package/dist/cjs/helpers/NativeTextBinding.cjs +36 -0
- package/dist/cjs/helpers/NativeTextBinding.native.cjs +39 -0
- package/dist/cjs/helpers/NativeTextBinding.native.js +41 -0
- package/dist/cjs/helpers/NativeTextBinding.native.js.map +1 -0
- package/dist/cjs/helpers/configVariables.native.cjs +2 -6
- package/dist/cjs/helpers/configVariables.native.js +2 -6
- package/dist/cjs/helpers/configVariables.native.js.map +1 -1
- package/dist/cjs/helpers/createDesignSystem.cjs +14 -10
- package/dist/cjs/helpers/createDesignSystem.native.cjs +5 -4
- package/dist/cjs/helpers/createDesignSystem.native.js +5 -4
- package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -1
- package/dist/cjs/helpers/createStyledContext.native.cjs +1 -5
- package/dist/cjs/helpers/createStyledContext.native.js +1 -5
- package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
- package/dist/cjs/helpers/expandStyle.cjs +45 -1
- package/dist/cjs/helpers/expandStyle.native.cjs +38 -2
- package/dist/cjs/helpers/expandStyle.native.js +38 -2
- package/dist/cjs/helpers/expandStyle.native.js.map +1 -1
- package/dist/cjs/helpers/expandStyles.cjs +15 -3
- package/dist/cjs/helpers/expandStyles.native.cjs +14 -8
- package/dist/cjs/helpers/expandStyles.native.js +14 -8
- package/dist/cjs/helpers/expandStyles.native.js.map +1 -1
- package/dist/cjs/helpers/fluid.cjs +56 -0
- package/dist/cjs/helpers/fluid.native.cjs +58 -0
- package/dist/cjs/helpers/fluid.native.js +60 -0
- package/dist/cjs/helpers/fluid.native.js.map +1 -0
- package/dist/cjs/helpers/formatDiagnostic.native.cjs +2 -6
- package/dist/cjs/helpers/formatDiagnostic.native.js +2 -6
- package/dist/cjs/helpers/formatDiagnostic.native.js.map +1 -1
- package/dist/cjs/helpers/getCSSStylesAtomic.cjs +6 -6
- package/dist/cjs/helpers/getSplitStyles.cjs +366 -150
- package/dist/cjs/helpers/getSplitStyles.native.cjs +584 -184
- package/dist/cjs/helpers/getSplitStyles.native.js +584 -184
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/cjs/helpers/getThemeCSSRules.cjs +37 -25
- package/dist/cjs/helpers/grammarConfig.cjs +6 -14
- package/dist/cjs/helpers/grammarConfig.native.cjs +32 -22
- package/dist/cjs/helpers/grammarConfig.native.js +32 -22
- package/dist/cjs/helpers/grammarConfig.native.js.map +1 -1
- package/dist/cjs/helpers/insertStyleRule.cjs +11 -4
- package/dist/cjs/helpers/insertStyleRule.native.cjs +8 -11
- package/dist/cjs/helpers/insertStyleRule.native.js +8 -11
- package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
- package/dist/cjs/helpers/isObj.native.cjs +1 -5
- package/dist/cjs/helpers/isObj.native.js +1 -5
- package/dist/cjs/helpers/isObj.native.js.map +1 -1
- package/dist/cjs/helpers/mainThreadPressEvents.native.cjs +48 -100
- package/dist/cjs/helpers/mainThreadPressEvents.native.js +48 -100
- package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
- package/dist/cjs/helpers/mergeProps.cjs +18 -21
- package/dist/cjs/helpers/mergeProps.native.cjs +20 -23
- package/dist/cjs/helpers/mergeProps.native.js +20 -23
- package/dist/cjs/helpers/mergeProps.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/nativeTextMetrics.cjs +74 -0
- package/dist/cjs/helpers/nativeTextMetrics.native.cjs +77 -0
- package/dist/cjs/helpers/nativeTextMetrics.native.js +79 -0
- package/dist/cjs/helpers/nativeTextMetrics.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeColor.native.cjs +17 -2
- package/dist/cjs/helpers/normalizeColor.native.js +17 -2
- package/dist/cjs/helpers/normalizeColor.native.js.map +1 -1
- package/dist/cjs/helpers/normalizeValueWithProperty.cjs +2 -1
- package/dist/cjs/helpers/normalizeValueWithProperty.native.cjs +3 -6
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js +3 -6
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
- package/dist/cjs/helpers/objectIdentityKey.native.cjs +1 -5
- package/dist/cjs/helpers/objectIdentityKey.native.js +1 -5
- package/dist/cjs/helpers/objectIdentityKey.native.js.map +1 -1
- package/dist/cjs/helpers/parseNativeStyle.cjs +187 -0
- package/dist/cjs/helpers/parseNativeStyle.native.cjs +6 -4
- package/dist/cjs/helpers/parseNativeStyle.native.js +6 -4
- package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -1
- package/dist/cjs/helpers/proxyThemeToParents.cjs +9 -2
- package/dist/cjs/helpers/proxyThemeToParents.native.cjs +28 -2
- package/dist/cjs/helpers/proxyThemeToParents.native.js +28 -2
- package/dist/cjs/helpers/proxyThemeToParents.native.js.map +1 -1
- package/dist/cjs/helpers/resolveAnimationDriver.native.cjs +1 -5
- package/dist/cjs/helpers/resolveAnimationDriver.native.js +1 -5
- package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -1
- package/dist/cjs/helpers/{timer.cjs → resolveNativeUnits.cjs} +12 -8
- package/dist/cjs/helpers/resolveNativeUnits.native.cjs +205 -0
- package/dist/cjs/helpers/resolveNativeUnits.native.js +207 -0
- package/dist/cjs/helpers/resolveNativeUnits.native.js.map +1 -0
- package/dist/cjs/helpers/resolveRem.native.cjs +18 -21
- package/dist/cjs/helpers/resolveRem.native.js +18 -21
- package/dist/cjs/helpers/resolveRem.native.js.map +1 -1
- package/dist/cjs/helpers/resolveSizing.cjs +124 -0
- package/dist/cjs/helpers/resolveSizing.native.cjs +133 -0
- package/dist/cjs/helpers/resolveSizing.native.js +135 -0
- package/dist/cjs/helpers/resolveSizing.native.js.map +1 -0
- package/dist/cjs/helpers/resolveVariableValue.cjs +7 -7
- package/dist/cjs/helpers/resolveVariableValue.native.cjs +7 -9
- package/dist/cjs/helpers/resolveVariableValue.native.js +7 -9
- package/dist/cjs/helpers/resolveVariableValue.native.js.map +1 -1
- package/dist/cjs/helpers/resolveVariantStyle.native.cjs +2 -6
- package/dist/cjs/helpers/resolveVariantStyle.native.js +2 -6
- package/dist/cjs/helpers/resolveVariantStyle.native.js.map +1 -1
- package/dist/cjs/helpers/skipProps.cjs +0 -1
- package/dist/cjs/helpers/skipProps.native.cjs +0 -1
- package/dist/cjs/helpers/skipProps.native.js +0 -1
- package/dist/cjs/helpers/skipProps.native.js.map +1 -1
- package/dist/cjs/helpers/styleFrontend.cjs +23 -1
- package/dist/cjs/helpers/styleFrontend.native.cjs +23 -1
- package/dist/cjs/helpers/styleFrontend.native.js +23 -1
- package/dist/cjs/helpers/styleFrontend.native.js.map +1 -1
- package/dist/cjs/helpers/styleStaticConfigCore.cjs +5 -4
- package/dist/cjs/helpers/styleStaticConfigCore.native.cjs +7 -4
- package/dist/cjs/helpers/styleStaticConfigCore.native.js +7 -4
- package/dist/cjs/helpers/styleStaticConfigCore.native.js.map +1 -1
- package/dist/cjs/helpers/styledDynamic.cjs +5 -0
- package/dist/cjs/helpers/styledDynamic.native.cjs +8 -7
- package/dist/cjs/helpers/styledDynamic.native.js +8 -7
- package/dist/cjs/helpers/styledDynamic.native.js.map +1 -1
- package/dist/cjs/helpers/subscribeToContextGroup.cjs +16 -7
- package/dist/cjs/helpers/subscribeToContextGroup.native.cjs +18 -8
- package/dist/cjs/helpers/subscribeToContextGroup.native.js +18 -8
- package/dist/cjs/helpers/subscribeToContextGroup.native.js.map +1 -1
- package/dist/cjs/helpers/themeRef.native.cjs +1 -5
- package/dist/cjs/helpers/themeRef.native.js +1 -5
- package/dist/cjs/helpers/themeRef.native.js.map +1 -1
- package/dist/cjs/helpers/themes.cjs +26 -11
- package/dist/cjs/helpers/themes.native.cjs +26 -11
- package/dist/cjs/helpers/themes.native.js +26 -11
- package/dist/cjs/helpers/themes.native.js.map +1 -1
- package/dist/cjs/helpers/tokenCategories.cjs +2 -2
- package/dist/cjs/helpers/tokenCategories.native.cjs +2 -2
- package/dist/cjs/helpers/tokenCategories.native.js +2 -2
- package/dist/cjs/helpers/tokenCategories.native.js.map +1 -1
- package/dist/cjs/helpers/variables.cjs +1 -1
- package/dist/cjs/helpers/variables.native.cjs +4 -8
- package/dist/cjs/helpers/variables.native.js +4 -8
- package/dist/cjs/helpers/variables.native.js.map +1 -1
- package/dist/cjs/helpers/warnOnce.cjs +6 -0
- package/dist/cjs/helpers/warnOnce.native.cjs +6 -0
- package/dist/cjs/helpers/warnOnce.native.js +6 -0
- package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
- package/dist/cjs/helpers/webPropsToSkip.native.cjs +3 -3
- package/dist/cjs/helpers/webPropsToSkip.native.js +3 -3
- package/dist/cjs/helpers/webPropsToSkip.native.js.map +1 -1
- package/dist/cjs/helpers/wrapStyleTags.cjs +1 -1
- package/dist/cjs/helpers/wrapStyleTags.native.cjs +1 -1
- package/dist/cjs/helpers/wrapStyleTags.native.js +1 -1
- package/dist/cjs/helpers/wrapStyleTags.native.js.map +1 -1
- package/dist/cjs/hooks/useComponentState.native.cjs +1 -5
- package/dist/cjs/hooks/useComponentState.native.js +1 -5
- package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
- package/dist/cjs/hooks/useMedia.cjs +27 -34
- package/dist/cjs/hooks/useMedia.native.cjs +45 -51
- package/dist/cjs/hooks/useMedia.native.js +45 -51
- package/dist/cjs/hooks/useMedia.native.js.map +1 -1
- package/dist/cjs/hooks/useSplitStyles.cjs +1 -1
- package/dist/cjs/hooks/useSplitStyles.native.cjs +1 -1
- package/dist/cjs/hooks/useSplitStyles.native.js +1 -1
- package/dist/cjs/hooks/useSplitStyles.native.js.map +1 -1
- package/dist/cjs/hooks/useThemeState.cjs +37 -47
- package/dist/cjs/hooks/useThemeState.native.cjs +44 -50
- package/dist/cjs/hooks/useThemeState.native.js +44 -50
- package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -0
- package/dist/cjs/index.native.cjs +7 -0
- package/dist/cjs/index.native.js +7 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/internal-runtime.cjs +22 -0
- package/dist/cjs/internal-runtime.native.cjs +22 -0
- package/dist/cjs/internal-runtime.native.js +22 -0
- package/dist/cjs/internal-runtime.native.js.map +1 -1
- package/dist/cjs/static-resolve.native.cjs +2 -9
- package/dist/cjs/static-resolve.native.js +2 -9
- package/dist/cjs/static-resolve.native.js.map +1 -1
- package/dist/cjs/style.cjs +1 -1
- package/dist/cjs/style.native.cjs +4 -7
- package/dist/cjs/style.native.js +4 -7
- package/dist/cjs/style.native.js.map +1 -1
- package/dist/cjs/views/Theme.cjs +10 -17
- package/dist/cjs/views/Theme.native.cjs +9 -11
- package/dist/cjs/views/Theme.native.js +9 -11
- package/dist/cjs/views/Theme.native.js.map +1 -1
- package/dist/cjs/views/ThemeDebug.cjs +1 -1
- package/dist/cjs/views/ThemeUpdate.cjs +1 -1
- package/dist/cjs/views/ThemeUpdate.native.cjs +1 -1
- package/dist/cjs/views/ThemeUpdate.native.js +1 -1
- package/dist/cjs/views/ThemeUpdate.native.js.map +1 -1
- package/dist/esm/_withNativeStyle.mjs +4 -1
- package/dist/esm/_withNativeStyle.mjs.map +1 -1
- package/dist/esm/_withNativeStyle.native.js +4 -1
- package/dist/esm/_withNativeStyle.native.js.map +1 -1
- package/dist/esm/_withStableStyle.native.js +1 -5
- package/dist/esm/_withStableStyle.native.js.map +1 -1
- package/dist/esm/config.mjs +6 -3
- package/dist/esm/config.mjs.map +1 -1
- package/dist/esm/config.native.js +7 -5
- package/dist/esm/config.native.js.map +1 -1
- package/dist/esm/contexts/ComponentContext.mjs +9 -9
- package/dist/esm/contexts/ComponentContext.mjs.map +1 -1
- package/dist/esm/contexts/ComponentContext.native.js +16 -9
- package/dist/esm/contexts/ComponentContext.native.js.map +1 -1
- package/dist/esm/createComponent.mjs +45 -42
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +93 -82
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/createTamagui.mjs +33 -15
- package/dist/esm/createTamagui.mjs.map +1 -1
- package/dist/esm/createTamagui.native.js +34 -20
- package/dist/esm/createTamagui.native.js.map +1 -1
- package/dist/esm/createTokens.native.js +1 -5
- package/dist/esm/createTokens.native.js.map +1 -1
- package/dist/esm/createVariable.native.js +1 -5
- package/dist/esm/createVariable.native.js.map +1 -1
- package/dist/esm/createVariables.native.js +2 -6
- package/dist/esm/createVariables.native.js.map +1 -1
- package/dist/esm/dom/html.mjs +87 -329
- package/dist/esm/dom/html.mjs.map +1 -1
- package/dist/esm/dom/html.native.js +53 -2
- package/dist/esm/dom/html.native.js.map +1 -1
- package/dist/esm/dom/htmlReset.mjs +6 -0
- package/dist/esm/dom/htmlReset.mjs.map +1 -0
- package/dist/esm/dom/htmlReset.native.js +6 -0
- package/dist/esm/dom/htmlReset.native.js.map +1 -0
- package/dist/esm/dom/htmlRuntime.native.js +4 -0
- package/dist/esm/dom/htmlRuntime.native.js.map +1 -1
- package/dist/esm/dom/htmlStaticConfig.mjs +22 -0
- package/dist/esm/dom/htmlStaticConfig.mjs.map +1 -0
- package/dist/esm/dom/htmlStaticConfig.native.js +22 -0
- package/dist/esm/dom/htmlStaticConfig.native.js.map +1 -0
- package/dist/esm/dom/primitives.native.js +81 -34
- package/dist/esm/dom/primitives.native.js.map +1 -1
- package/dist/esm/eventHandling.mjs +10 -4
- package/dist/esm/eventHandling.mjs.map +1 -1
- package/dist/esm/eventHandling.native.js +52 -16
- package/dist/esm/eventHandling.native.js.map +1 -1
- package/dist/esm/helpers/NativeTextBinding.mjs +17 -0
- package/dist/esm/helpers/NativeTextBinding.mjs.map +1 -0
- package/dist/esm/helpers/NativeTextBinding.native.js +18 -0
- package/dist/esm/helpers/NativeTextBinding.native.js.map +1 -0
- package/dist/esm/helpers/configVariables.native.js +2 -6
- package/dist/esm/helpers/configVariables.native.js.map +1 -1
- package/dist/esm/helpers/createDesignSystem.mjs +14 -10
- package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
- package/dist/esm/helpers/createDesignSystem.native.js +4 -4
- package/dist/esm/helpers/createDesignSystem.native.js.map +1 -1
- package/dist/esm/helpers/createStyledContext.native.js +1 -5
- package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
- package/dist/esm/helpers/expandStyle.mjs +41 -1
- package/dist/esm/helpers/expandStyle.mjs.map +1 -1
- package/dist/esm/helpers/expandStyle.native.js +36 -3
- package/dist/esm/helpers/expandStyle.native.js.map +1 -1
- package/dist/esm/helpers/expandStyles.mjs +15 -3
- package/dist/esm/helpers/expandStyles.mjs.map +1 -1
- package/dist/esm/helpers/expandStyles.native.js +14 -8
- package/dist/esm/helpers/expandStyles.native.js.map +1 -1
- package/dist/esm/helpers/fluid.mjs +36 -0
- package/dist/esm/helpers/fluid.mjs.map +1 -0
- package/dist/esm/helpers/fluid.native.js +36 -0
- package/dist/esm/helpers/fluid.native.js.map +1 -0
- package/dist/esm/helpers/formatDiagnostic.native.js +2 -6
- package/dist/esm/helpers/formatDiagnostic.native.js.map +1 -1
- package/dist/esm/helpers/getCSSStylesAtomic.mjs +6 -6
- package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.mjs +364 -150
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.native.js +588 -188
- package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/esm/helpers/getThemeCSSRules.mjs +37 -25
- package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
- package/dist/esm/helpers/grammarConfig.mjs +6 -14
- package/dist/esm/helpers/grammarConfig.mjs.map +1 -1
- package/dist/esm/helpers/grammarConfig.native.js +32 -22
- package/dist/esm/helpers/grammarConfig.native.js.map +1 -1
- package/dist/esm/helpers/insertStyleRule.mjs +11 -4
- package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
- package/dist/esm/helpers/insertStyleRule.native.js +4 -4
- package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
- package/dist/esm/helpers/isObj.native.js +1 -5
- package/dist/esm/helpers/isObj.native.js.map +1 -1
- package/dist/esm/helpers/mainThreadPressEvents.native.js +48 -100
- package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
- package/dist/esm/helpers/mergeProps.mjs +18 -21
- package/dist/esm/helpers/mergeProps.mjs.map +1 -1
- package/dist/esm/helpers/mergeProps.native.js +20 -23
- package/dist/esm/helpers/mergeProps.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/nativeTextMetrics.mjs +55 -0
- package/dist/esm/helpers/nativeTextMetrics.mjs.map +1 -0
- package/dist/esm/helpers/nativeTextMetrics.native.js +56 -0
- package/dist/esm/helpers/nativeTextMetrics.native.js.map +1 -0
- package/dist/esm/helpers/normalizeColor.native.js +17 -2
- package/dist/esm/helpers/normalizeColor.native.js.map +1 -1
- package/dist/esm/helpers/normalizeValueWithProperty.mjs +2 -1
- package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
- package/dist/esm/helpers/normalizeValueWithProperty.native.js +3 -6
- package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
- package/dist/esm/helpers/objectIdentityKey.native.js +1 -5
- package/dist/esm/helpers/objectIdentityKey.native.js.map +1 -1
- package/dist/esm/helpers/parseNativeStyle.mjs +168 -0
- package/dist/esm/helpers/parseNativeStyle.mjs.map +1 -0
- package/dist/esm/helpers/parseNativeStyle.native.js +4 -1
- package/dist/esm/helpers/parseNativeStyle.native.js.map +1 -1
- package/dist/esm/helpers/proxyThemeToParents.mjs +10 -2
- package/dist/esm/helpers/proxyThemeToParents.mjs.map +1 -1
- package/dist/esm/helpers/proxyThemeToParents.native.js +29 -2
- package/dist/esm/helpers/proxyThemeToParents.native.js.map +1 -1
- package/dist/esm/helpers/resolveAnimationDriver.native.js +1 -5
- package/dist/esm/helpers/resolveAnimationDriver.native.js.map +1 -1
- package/dist/esm/helpers/resolveNativeUnits.mjs +9 -0
- package/dist/esm/helpers/resolveNativeUnits.mjs.map +1 -0
- package/dist/esm/helpers/resolveNativeUnits.native.js +178 -0
- package/dist/esm/helpers/resolveNativeUnits.native.js.map +1 -0
- package/dist/esm/helpers/resolveRem.native.js +18 -21
- package/dist/esm/helpers/resolveRem.native.js.map +1 -1
- package/dist/esm/helpers/resolveSizing.mjs +102 -0
- package/dist/esm/helpers/resolveSizing.mjs.map +1 -0
- package/dist/esm/helpers/resolveSizing.native.js +109 -0
- package/dist/esm/helpers/resolveSizing.native.js.map +1 -0
- package/dist/esm/helpers/resolveVariableValue.mjs +7 -7
- package/dist/esm/helpers/resolveVariableValue.mjs.map +1 -1
- package/dist/esm/helpers/resolveVariableValue.native.js +7 -9
- package/dist/esm/helpers/resolveVariableValue.native.js.map +1 -1
- package/dist/esm/helpers/resolveVariantStyle.native.js +2 -6
- package/dist/esm/helpers/resolveVariantStyle.native.js.map +1 -1
- package/dist/esm/helpers/skipProps.mjs +0 -1
- package/dist/esm/helpers/skipProps.mjs.map +1 -1
- package/dist/esm/helpers/skipProps.native.js +0 -1
- package/dist/esm/helpers/skipProps.native.js.map +1 -1
- package/dist/esm/helpers/styleFrontend.mjs +20 -1
- package/dist/esm/helpers/styleFrontend.mjs.map +1 -1
- package/dist/esm/helpers/styleFrontend.native.js +20 -1
- package/dist/esm/helpers/styleFrontend.native.js.map +1 -1
- package/dist/esm/helpers/styleStaticConfigCore.mjs +5 -4
- package/dist/esm/helpers/styleStaticConfigCore.mjs.map +1 -1
- package/dist/esm/helpers/styleStaticConfigCore.native.js +7 -4
- package/dist/esm/helpers/styleStaticConfigCore.native.js.map +1 -1
- package/dist/esm/helpers/styledDynamic.mjs +5 -0
- package/dist/esm/helpers/styledDynamic.mjs.map +1 -1
- package/dist/esm/helpers/styledDynamic.native.js +8 -7
- package/dist/esm/helpers/styledDynamic.native.js.map +1 -1
- package/dist/esm/helpers/subscribeToContextGroup.mjs +16 -7
- package/dist/esm/helpers/subscribeToContextGroup.mjs.map +1 -1
- package/dist/esm/helpers/subscribeToContextGroup.native.js +18 -8
- package/dist/esm/helpers/subscribeToContextGroup.native.js.map +1 -1
- package/dist/esm/helpers/themeRef.native.js +1 -5
- package/dist/esm/helpers/themeRef.native.js.map +1 -1
- package/dist/esm/helpers/themes.mjs +20 -11
- package/dist/esm/helpers/themes.mjs.map +1 -1
- package/dist/esm/helpers/themes.native.js +20 -11
- package/dist/esm/helpers/themes.native.js.map +1 -1
- package/dist/esm/helpers/tokenCategories.mjs +2 -2
- package/dist/esm/helpers/tokenCategories.mjs.map +1 -1
- package/dist/esm/helpers/tokenCategories.native.js +2 -2
- package/dist/esm/helpers/tokenCategories.native.js.map +1 -1
- package/dist/esm/helpers/variables.mjs +1 -1
- package/dist/esm/helpers/variables.mjs.map +1 -1
- package/dist/esm/helpers/variables.native.js +4 -8
- package/dist/esm/helpers/variables.native.js.map +1 -1
- package/dist/esm/helpers/warnOnce.mjs +6 -1
- package/dist/esm/helpers/warnOnce.mjs.map +1 -1
- package/dist/esm/helpers/warnOnce.native.js +6 -1
- package/dist/esm/helpers/warnOnce.native.js.map +1 -1
- package/dist/esm/helpers/webPropsToSkip.native.js +3 -3
- package/dist/esm/helpers/webPropsToSkip.native.js.map +1 -1
- package/dist/esm/helpers/wrapStyleTags.mjs +1 -1
- package/dist/esm/helpers/wrapStyleTags.mjs.map +1 -1
- package/dist/esm/helpers/wrapStyleTags.native.js +1 -1
- package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -1
- package/dist/esm/hooks/useComponentState.native.js +1 -5
- package/dist/esm/hooks/useComponentState.native.js.map +1 -1
- package/dist/esm/hooks/useMedia.mjs +27 -34
- package/dist/esm/hooks/useMedia.mjs.map +1 -1
- package/dist/esm/hooks/useMedia.native.js +45 -51
- package/dist/esm/hooks/useMedia.native.js.map +1 -1
- package/dist/esm/hooks/useSplitStyles.mjs +1 -1
- package/dist/esm/hooks/useSplitStyles.mjs.map +1 -1
- package/dist/esm/hooks/useSplitStyles.native.js +1 -1
- package/dist/esm/hooks/useSplitStyles.native.js.map +1 -1
- package/dist/esm/hooks/useThemeState.mjs +36 -48
- package/dist/esm/hooks/useThemeState.mjs.map +1 -1
- package/dist/esm/hooks/useThemeState.native.js +44 -50
- package/dist/esm/hooks/useThemeState.native.js.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.mjs +4 -1
- package/dist/esm/index.native.js +4 -1
- package/dist/esm/internal-runtime.mjs +22 -3
- package/dist/esm/internal-runtime.mjs.map +1 -1
- package/dist/esm/internal-runtime.native.js +22 -3
- package/dist/esm/internal-runtime.native.js.map +1 -1
- package/dist/esm/static-resolve.native.js +2 -9
- package/dist/esm/static-resolve.native.js.map +1 -1
- package/dist/esm/style.mjs +1 -1
- package/dist/esm/style.mjs.map +1 -1
- package/dist/esm/style.native.js +4 -7
- package/dist/esm/style.native.js.map +1 -1
- package/dist/esm/views/Theme.mjs +15 -14
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +15 -15
- package/dist/esm/views/Theme.native.js.map +1 -1
- package/dist/esm/views/ThemeDebug.mjs +1 -1
- package/dist/esm/views/ThemeDebug.mjs.map +1 -1
- package/dist/esm/views/ThemeUpdate.mjs +1 -1
- package/dist/esm/views/ThemeUpdate.mjs.map +1 -1
- package/dist/esm/views/ThemeUpdate.native.js +1 -1
- package/dist/esm/views/ThemeUpdate.native.js.map +1 -1
- package/package.json +20 -18
- package/reset.css +11 -0
- package/src/_withNativeStyle.tsx +6 -1
- package/src/config.ts +6 -6
- package/src/contexts/ComponentContext.tsx +8 -0
- package/src/createComponent.tsx +177 -57
- package/src/createStyledHOC.tsx +25 -26
- package/src/createTamagui.ts +47 -28
- package/src/dom/contract.ts +4 -1
- package/src/dom/html.native.tsx +55 -2
- package/src/dom/html.tsx +189 -388
- package/src/dom/htmlReset.ts +15 -0
- package/src/dom/htmlRuntime.native.tsx +5 -0
- package/src/dom/htmlStaticConfig.ts +40 -0
- package/src/dom/primitives.native.tsx +138 -33
- package/src/dom/standalone.ts +2 -1
- package/src/dom/styleTypes.ts +82 -92
- package/src/eventHandling.native.ts +61 -11
- package/src/eventHandling.ts +19 -4
- package/src/helpers/NativeTextBinding.tsx +26 -0
- package/src/helpers/createDesignSystem.ts +24 -8
- package/src/helpers/expandStyle.ts +88 -4
- package/src/helpers/expandStyles.ts +6 -11
- package/src/helpers/fluid.ts +66 -0
- package/src/helpers/getCSSStylesAtomic.ts +11 -6
- package/src/helpers/getSplitStyles.tsx +1032 -296
- package/src/helpers/getThemeCSSRules.ts +73 -35
- package/src/helpers/grammarConfig.ts +23 -8
- package/src/helpers/insertStyleRule.tsx +14 -8
- package/src/helpers/mainThreadPressEvents.native.ts +65 -141
- package/src/helpers/mergeProps.ts +29 -62
- package/src/helpers/nativeOnlyProps.ts +0 -1
- package/src/helpers/nativeTextMetrics.ts +77 -0
- package/src/helpers/normalizeColor.native.ts +29 -4
- package/src/helpers/normalizeValueWithProperty.ts +2 -1
- package/src/helpers/{parseNativeStyle.native.ts → parseNativeStyle.ts} +8 -1
- package/src/helpers/proxyThemeToParents.ts +13 -2
- package/src/helpers/resolveNativeUnits.native.ts +247 -0
- package/src/helpers/resolveNativeUnits.ts +10 -0
- package/src/helpers/resolveRem.native.ts +25 -26
- package/src/helpers/resolveSizing.ts +167 -0
- package/src/helpers/resolveVariableValue.ts +21 -17
- package/src/helpers/skipProps.ts +0 -1
- package/src/helpers/styleFrontend.ts +39 -0
- package/src/helpers/styleProvenance.ts +1 -1
- package/src/helpers/styleStaticConfigCore.ts +15 -4
- package/src/helpers/styledDynamic.ts +3 -1
- package/src/helpers/subscribeToContextGroup.tsx +16 -7
- package/src/helpers/themes.ts +27 -11
- package/src/helpers/tokenCategories.ts +15 -3
- package/src/helpers/variables.ts +2 -2
- package/src/helpers/warnOnce.ts +6 -0
- package/src/helpers/webPropsToSkip.native.ts +9 -3
- package/src/helpers/wrapStyleTags.tsx +4 -1
- package/src/hooks/useMedia.tsx +36 -47
- package/src/hooks/useSplitStyles.tsx +4 -1
- package/src/hooks/useThemeState.ts +69 -74
- package/src/index.ts +13 -0
- package/src/interfaces/RNExclusiveTypes.ts +1 -3
- package/src/internal-runtime.ts +43 -2
- package/src/style.ts +4 -1
- package/src/styled.tsx +34 -3
- package/src/types.tsx +412 -132
- package/src/views/Theme.tsx +18 -21
- package/src/views/ThemeDebug.tsx +1 -1
- package/src/views/ThemeUpdate.tsx +1 -1
- package/types/_withNativeStyle.d.ts.map +1 -1
- package/types/config.d.ts.map +1 -1
- package/types/contexts/ComponentContext.d.ts +1 -1
- package/types/contexts/ComponentContext.d.ts.map +1 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/createStyledHOC.d.ts +5 -2
- package/types/createStyledHOC.d.ts.map +1 -1
- package/types/createTamagui.d.ts.map +1 -1
- package/types/dom/contract.d.ts +4 -1
- package/types/dom/contract.d.ts.map +1 -1
- package/types/dom/html.d.ts +60 -51
- package/types/dom/html.d.ts.map +1 -1
- package/types/dom/html.native.d.ts.map +1 -1
- package/types/dom/htmlReset.d.ts +10 -0
- package/types/dom/htmlReset.d.ts.map +1 -0
- package/types/dom/htmlRuntime.native.d.ts.map +1 -1
- package/types/dom/htmlStaticConfig.d.ts +22 -0
- package/types/dom/htmlStaticConfig.d.ts.map +1 -0
- package/types/dom/primitives.native.d.ts.map +1 -1
- package/types/dom/standalone.d.ts +2 -1
- package/types/dom/standalone.d.ts.map +1 -1
- package/types/dom/styleTypes.d.ts +63 -84
- package/types/dom/styleTypes.d.ts.map +1 -1
- package/types/eventHandling.d.ts +12 -4
- package/types/eventHandling.d.ts.map +1 -1
- package/types/eventHandling.native.d.ts.map +1 -1
- package/types/helpers/NativeTextBinding.d.ts +11 -0
- package/types/helpers/NativeTextBinding.d.ts.map +1 -0
- package/types/helpers/createDesignSystem.d.ts.map +1 -1
- package/types/helpers/expandStyle.d.ts +1 -0
- package/types/helpers/expandStyle.d.ts.map +1 -1
- package/types/helpers/expandStyles.d.ts.map +1 -1
- package/types/helpers/fluid.d.ts +21 -0
- package/types/helpers/fluid.d.ts.map +1 -0
- package/types/helpers/getCSSStylesAtomic.d.ts +3 -1
- package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts +2 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
- package/types/helpers/grammarConfig.d.ts.map +1 -1
- package/types/helpers/insertStyleRule.d.ts.map +1 -1
- package/types/helpers/mainThreadPressEvents.native.d.ts +0 -7
- package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
- package/types/helpers/mergeProps.d.ts +1 -15
- package/types/helpers/mergeProps.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/nativeTextMetrics.d.ts +16 -0
- package/types/helpers/nativeTextMetrics.d.ts.map +1 -0
- package/types/helpers/normalizeColor.native.d.ts +4 -1
- package/types/helpers/normalizeColor.native.d.ts.map +1 -1
- package/types/helpers/normalizeShadow.native.d.ts +3 -1
- package/types/helpers/normalizeShadow.native.d.ts.map +1 -1
- package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
- package/types/helpers/{parseNativeStyle.native.d.ts → parseNativeStyle.d.ts} +1 -1
- package/types/helpers/parseNativeStyle.d.ts.map +1 -0
- package/types/helpers/proxyThemeToParents.d.ts +1 -1
- package/types/helpers/proxyThemeToParents.d.ts.map +1 -1
- package/types/helpers/resolveNativeUnits.d.ts +6 -0
- package/types/helpers/resolveNativeUnits.d.ts.map +1 -0
- package/types/helpers/resolveNativeUnits.native.d.ts +16 -0
- package/types/helpers/resolveNativeUnits.native.d.ts.map +1 -0
- package/types/helpers/resolveRem.native.d.ts +6 -4
- package/types/helpers/resolveRem.native.d.ts.map +1 -1
- package/types/helpers/resolveSizing.d.ts +90 -0
- package/types/helpers/resolveSizing.d.ts.map +1 -0
- package/types/helpers/resolveVariableValue.d.ts.map +1 -1
- package/types/helpers/skipProps.d.ts +0 -1
- package/types/helpers/skipProps.d.ts.map +1 -1
- package/types/helpers/styleFrontend.d.ts +21 -0
- package/types/helpers/styleFrontend.d.ts.map +1 -1
- package/types/helpers/styleProvenance.d.ts +1 -1
- package/types/helpers/styleProvenance.d.ts.map +1 -1
- package/types/helpers/styleStaticConfigCore.d.ts.map +1 -1
- package/types/helpers/styledDynamic.d.ts +1 -1
- package/types/helpers/styledDynamic.d.ts.map +1 -1
- package/types/helpers/themes.d.ts +4 -0
- package/types/helpers/themes.d.ts.map +1 -1
- package/types/helpers/tokenCategories.d.ts +1 -1
- package/types/helpers/tokenCategories.d.ts.map +1 -1
- package/types/helpers/warnOnce.d.ts +1 -0
- package/types/helpers/warnOnce.d.ts.map +1 -1
- package/types/helpers/webPropsToSkip.native.d.ts +6 -2
- package/types/helpers/webPropsToSkip.native.d.ts.map +1 -1
- package/types/helpers/wrapStyleTags.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts +5 -2
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useSplitStyles.d.ts.map +1 -1
- package/types/hooks/useThemeState.d.ts.map +1 -1
- package/types/index.d.ts +4 -1
- package/types/index.d.ts.map +1 -1
- package/types/interfaces/RNExclusiveTypes.d.ts +2 -3
- package/types/interfaces/RNExclusiveTypes.d.ts.map +1 -1
- package/types/internal-runtime.d.ts +12 -1
- package/types/internal-runtime.d.ts.map +1 -1
- package/types/style.d.ts.map +1 -1
- package/types/styled.d.ts +7 -4
- package/types/styled.d.ts.map +1 -1
- package/types/types.d.ts +258 -102
- package/types/types.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
- package/dist/cjs/helpers/timer.native.js.map +0 -1
- package/dist/esm/helpers/timer.mjs +0 -13
- package/dist/esm/helpers/timer.mjs.map +0 -1
- package/dist/esm/helpers/timer.native.js +0 -13
- package/dist/esm/helpers/timer.native.js.map +0 -1
- package/src/helpers/timer.ts +0 -9
- package/types/helpers/parseNativeStyle.native.d.ts.map +0 -1
- package/types/helpers/timer.d.ts +0 -2
- package/types/helpers/timer.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeUpdate.js","names":[],"sources":["esm/views/ThemeUpdate.js"],"sourcesContent":["import { createRefComponent } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport React from \"react\";\nimport { getConfig } from \"../config\";\nimport { insertStyleRules, shouldInsertStyleRules, updateRules } from \"../helpers/insertStyleRule\";\nimport { getInlineValuesFromProps, getInlineValuesKey, getMergedInlineTheme, getVariablesCSSRules } from \"../helpers/variables\";\nimport { Theme } from \"./Theme\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst useInsertEffectCompat = isWeb ? React.useInsertionEffect || useIsomorphicLayoutEffect : () => {};\nconst updateStates = /* @__PURE__ */ new WeakMap();\nfunction createThemeUpdateState(values, className) {\n\tconst cached = updateStates.get(values);\n\tif (cached) return cached;\n\tconst state = {\n\t\tkey: getInlineValuesKey(values),\n\t\tclassName,\n\t\tvalues,\n\t\tgetTheme(parentTheme, themeName, config) {\n\t\t\treturn getMergedInlineTheme(parentTheme, values, themeName, config);\n\t\t}\n\t};\n\tupdateStates.set(values, state);\n\treturn state;\n}\nconst ThemeUpdate = createRefComponent(function ThemeUpdate2(props, ref) {\n\t\"use no memo\";\n\tconst config = getConfig();\n\tconst values = getInlineValuesFromProps(props, config);\n\tconst css = process.env.
|
|
1
|
+
{"version":3,"file":"ThemeUpdate.js","names":[],"sources":["esm/views/ThemeUpdate.js"],"sourcesContent":["import { createRefComponent } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport React from \"react\";\nimport { getConfig } from \"../config\";\nimport { insertStyleRules, shouldInsertStyleRules, updateRules } from \"../helpers/insertStyleRule\";\nimport { getInlineValuesFromProps, getInlineValuesKey, getMergedInlineTheme, getVariablesCSSRules } from \"../helpers/variables\";\nimport { Theme } from \"./Theme\";\nimport { jsx } from \"react/jsx-runtime\";\n\nconst useInsertEffectCompat = isWeb ? React.useInsertionEffect || useIsomorphicLayoutEffect : () => {};\nconst updateStates = /* @__PURE__ */ new WeakMap();\nfunction createThemeUpdateState(values, className) {\n\tconst cached = updateStates.get(values);\n\tif (cached) return cached;\n\tconst state = {\n\t\tkey: getInlineValuesKey(values),\n\t\tclassName,\n\t\tvalues,\n\t\tgetTheme(parentTheme, themeName, config) {\n\t\t\treturn getMergedInlineTheme(parentTheme, values, themeName, config);\n\t\t}\n\t};\n\tupdateStates.set(values, state);\n\treturn state;\n}\nconst ThemeUpdate = createRefComponent(function ThemeUpdate2(props, ref) {\n\t\"use no memo\";\n\tconst config = getConfig();\n\tconst values = getInlineValuesFromProps(props, config);\n\tconst css = process.env.TAMAGUI_RUNTIME === \"island\" || !values ? null : getVariablesCSSRules(values, config);\n\tlet rulesToInsert = null;\n\tif (css && shouldInsertStyleRules(css.identifier)) {\n\t\tupdateRules(css.identifier, css.rules);\n\t\trulesToInsert = { [css.identifier]: [\n\t\t\t\"variables\",\n\t\t\t\"\",\n\t\t\tcss.identifier,\n\t\t\tvoid 0,\n\t\t\tcss.rules\n\t\t] };\n\t}\n\tuseInsertEffectCompat(() => {\n\t\tif (rulesToInsert) insertStyleRules(rulesToInsert);\n\t}, [css?.identifier]);\n\tif (!values) return props.children;\n\treturn /* @__PURE__ */ jsx(Theme, {\n\t\tref,\n\t\t_themeUpdate: createThemeUpdateState(values, css?.identifier),\n\t\tchildren: props.children\n\t});\n});\n\nexport { ThemeUpdate, createThemeUpdateState };"],"mappings":";;;;;;;;;;AASA,MAAM,wBAAwB,QAAQ,MAAM,sBAAsB,kCAAkC,CAAC;AACrG,MAAM,+BAA+B,IAAI,QAAQ;AACjD,SAAS,uBAAuB,QAAQ,WAAW;CAClD,MAAM,SAAS,aAAa,IAAI,MAAM;CACtC,IAAI,QAAQ,OAAO;CACnB,MAAM,QAAQ;EACb,KAAK,mBAAmB,MAAM;EAC9B;EACA;EACA,SAAS,aAAa,WAAW,QAAQ;GACxC,OAAO,qBAAqB,aAAa,QAAQ,WAAW,MAAM;EACnE;CACD;CACA,aAAa,IAAI,QAAQ,KAAK;CAC9B,OAAO;AACR;AACA,MAAM,cAAc,mBAAmB,SAAS,aAAa,OAAO,KAAK;CACxE;CACA,MAAM,SAAS,UAAU;CACzB,MAAM,SAAS,yBAAyB,OAAO,MAAM;CACrD,MAAM,MAAM,QAAQ,IAAI,oBAAoB,YAAY,CAAC,SAAS,OAAO,qBAAqB,QAAQ,MAAM;CAC5G,IAAI,gBAAgB;CACpB,IAAI,OAAO,uBAAuB,IAAI,UAAU,GAAG;EAClD,YAAY,IAAI,YAAY,IAAI,KAAK;EACrC,gBAAgB,GAAG,IAAI,aAAa;GACnC;GACA;GACA,IAAI;GACJ,KAAK;GACL,IAAI;EACL,EAAE;CACH;CACA,4BAA4B;EAC3B,IAAI,eAAe,iBAAiB,aAAa;CAClD,GAAG,CAAC,KAAK,UAAU,CAAC;CACpB,IAAI,CAAC,QAAQ,OAAO,MAAM;CAC1B,OAAuB,oBAAI,OAAO;EACjC;EACA,cAAc,uBAAuB,QAAQ,KAAK,UAAU;EAC5D,UAAU,MAAM;CACjB,CAAC;AACF,CAAC"}
|
|
@@ -26,7 +26,7 @@ function createThemeUpdateState(values, className) {
|
|
|
26
26
|
var ThemeUpdate = createRefComponent(function ThemeUpdate2(props, ref) {
|
|
27
27
|
"use no memo";
|
|
28
28
|
var values = getInlineValuesFromProps(props, getConfig());
|
|
29
|
-
var css = (process.env.
|
|
29
|
+
var css = (process.env.TAMAGUI_RUNTIME, null);
|
|
30
30
|
var rulesToInsert = null;
|
|
31
31
|
if (css && shouldInsertStyleRules(css.identifier)) {
|
|
32
32
|
updateRules(css.identifier, css.rules);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeUpdate.native.js","names":[],"sources":["esm/views/ThemeUpdate.native.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nimport { createRefComponent } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport React from \"react\";\nimport { getConfig } from \"../config\";\nimport { insertStyleRules, shouldInsertStyleRules, updateRules } from \"../helpers/insertStyleRule\";\nimport { getInlineValuesFromProps, getInlineValuesKey, getMergedInlineTheme } from \"../helpers/variables\";\nimport { Theme } from \"./Theme\";\n\nvar useInsertEffectCompat = isWeb ? React.useInsertionEffect || useIsomorphicLayoutEffect : function() {};\nvar updateStates = /* @__PURE__ */ new WeakMap();\nfunction createThemeUpdateState(values, className) {\n\tvar cached = updateStates.get(values);\n\tif (cached) return cached;\n\tvar state = {\n\t\tkey: getInlineValuesKey(values),\n\t\tclassName,\n\t\tvalues,\n\t\tgetTheme(parentTheme, themeName, config) {\n\t\t\treturn getMergedInlineTheme(parentTheme, values, themeName, config);\n\t\t}\n\t};\n\tupdateStates.set(values, state);\n\treturn state;\n}\nvar ThemeUpdate = createRefComponent(function ThemeUpdate2(props, ref) {\n\t\"use no memo\";\n\tvar values = getInlineValuesFromProps(props, getConfig());\n\tvar css = (process.env.
|
|
1
|
+
{"version":3,"file":"ThemeUpdate.native.js","names":[],"sources":["esm/views/ThemeUpdate.native.js"],"sourcesContent":["import { jsx } from \"react/jsx-runtime\";\nimport { createRefComponent } from \"@tamagui/compose-refs\";\nimport { isWeb, useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport React from \"react\";\nimport { getConfig } from \"../config\";\nimport { insertStyleRules, shouldInsertStyleRules, updateRules } from \"../helpers/insertStyleRule\";\nimport { getInlineValuesFromProps, getInlineValuesKey, getMergedInlineTheme } from \"../helpers/variables\";\nimport { Theme } from \"./Theme\";\n\nvar useInsertEffectCompat = isWeb ? React.useInsertionEffect || useIsomorphicLayoutEffect : function() {};\nvar updateStates = /* @__PURE__ */ new WeakMap();\nfunction createThemeUpdateState(values, className) {\n\tvar cached = updateStates.get(values);\n\tif (cached) return cached;\n\tvar state = {\n\t\tkey: getInlineValuesKey(values),\n\t\tclassName,\n\t\tvalues,\n\t\tgetTheme(parentTheme, themeName, config) {\n\t\t\treturn getMergedInlineTheme(parentTheme, values, themeName, config);\n\t\t}\n\t};\n\tupdateStates.set(values, state);\n\treturn state;\n}\nvar ThemeUpdate = createRefComponent(function ThemeUpdate2(props, ref) {\n\t\"use no memo\";\n\tvar values = getInlineValuesFromProps(props, getConfig());\n\tvar css = (process.env.TAMAGUI_RUNTIME, null);\n\tvar rulesToInsert = null;\n\tif (css && shouldInsertStyleRules(css.identifier)) {\n\t\tupdateRules(css.identifier, css.rules);\n\t\trulesToInsert = { [css.identifier]: [\n\t\t\t\"variables\",\n\t\t\t\"\",\n\t\t\tcss.identifier,\n\t\t\tvoid 0,\n\t\t\tcss.rules\n\t\t] };\n\t}\n\tuseInsertEffectCompat(function() {\n\t\tif (rulesToInsert) insertStyleRules(rulesToInsert);\n\t}, [css === null || css === void 0 ? void 0 : css.identifier]);\n\tif (!values) return props.children;\n\treturn /* @__PURE__ */ jsx(Theme, {\n\t\tref,\n\t\t_themeUpdate: createThemeUpdateState(values, css === null || css === void 0 ? void 0 : css.identifier),\n\t\tchildren: props.children\n\t});\n});\n\nexport { ThemeUpdate, createThemeUpdateState };"],"mappings":";;;;;;;;;;AASA,IAAI,wBAAwB,QAAQ,MAAM,sBAAsB,4BAA4B,WAAW,CAAC;AACxG,IAAI,+BAA+B,IAAI,QAAQ;AAC/C,SAAS,uBAAuB,QAAQ,WAAW;CAClD,IAAI,SAAS,aAAa,IAAI,MAAM;CACpC,IAAI,QAAQ,OAAO;CACnB,IAAI,QAAQ;EACX,KAAK,mBAAmB,MAAM;EAC9B;EACA;EACA,SAAS,aAAa,WAAW,QAAQ;GACxC,OAAO,qBAAqB,aAAa,QAAQ,WAAW,MAAM;EACnE;CACD;CACA,aAAa,IAAI,QAAQ,KAAK;CAC9B,OAAO;AACR;AACA,IAAI,cAAc,mBAAmB,SAAS,aAAa,OAAO,KAAK;CACtE;CACA,IAAI,SAAS,yBAAyB,OAAO,UAAU,CAAC;CACxD,IAAI,OAAO,QAAQ,IAAI,iBAAiB;CACxC,IAAI,gBAAgB;CACpB,IAAI,OAAO,uBAAuB,IAAI,UAAU,GAAG;EAClD,YAAY,IAAI,YAAY,IAAI,KAAK;EACrC,gBAAgB,GAAG,IAAI,aAAa;GACnC;GACA;GACA,IAAI;GACJ,KAAK;GACL,IAAI;EACL,EAAE;CACH;CACA,sBAAsB,WAAW;EAChC,IAAI,eAAe,iBAAiB,aAAa;CAClD,GAAG,CAAC,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,UAAU,CAAC;CAC7D,IAAI,CAAC,QAAQ,OAAO,MAAM;CAC1B,OAAuB,oBAAI,OAAO;EACjC;EACA,cAAc,uBAAuB,QAAQ,QAAQ,QAAQ,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,UAAU;EACrG,UAAU,MAAM;CACjB,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/web",
|
|
3
|
-
"version": "3.0.0
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Nate Wienert"
|
|
@@ -100,32 +100,34 @@
|
|
|
100
100
|
"test:web": "vitest --typecheck --run"
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@tamagui/
|
|
104
|
-
"@tamagui/
|
|
105
|
-
"@tamagui/
|
|
106
|
-
"@tamagui/
|
|
107
|
-
"@tamagui/
|
|
108
|
-
"@tamagui/
|
|
109
|
-
"@tamagui/
|
|
110
|
-
"@tamagui/
|
|
111
|
-
"@tamagui/
|
|
112
|
-
"@tamagui/
|
|
113
|
-
"@tamagui/
|
|
114
|
-
"@tamagui/use-
|
|
115
|
-
"@tamagui/use-
|
|
103
|
+
"@tamagui/animation-helpers": "3.0.0",
|
|
104
|
+
"@tamagui/compose-refs": "3.0.0",
|
|
105
|
+
"@tamagui/constants": "3.0.0",
|
|
106
|
+
"@tamagui/dom": "3.0.0",
|
|
107
|
+
"@tamagui/helpers": "3.0.0",
|
|
108
|
+
"@tamagui/is-equal-shallow": "3.0.0",
|
|
109
|
+
"@tamagui/native": "3.0.0",
|
|
110
|
+
"@tamagui/normalize-css-color": "3.0.0",
|
|
111
|
+
"@tamagui/react-native-types": "3.0.0",
|
|
112
|
+
"@tamagui/style-grammar": "3.0.0",
|
|
113
|
+
"@tamagui/types": "3.0.0",
|
|
114
|
+
"@tamagui/use-did-finish-ssr": "3.0.0",
|
|
115
|
+
"@tamagui/use-event": "3.0.0",
|
|
116
|
+
"@tamagui/use-force-update": "3.0.0"
|
|
116
117
|
},
|
|
117
118
|
"devDependencies": {
|
|
118
|
-
"@tamagui/build": "3.0.0
|
|
119
|
+
"@tamagui/build": "3.0.0",
|
|
119
120
|
"@testing-library/react": "^16.1.0",
|
|
120
121
|
"csstype": "^3.0.10",
|
|
121
122
|
"react": "19.2.3",
|
|
122
123
|
"react-dom": "19.2.3",
|
|
123
|
-
"react-native": "0.
|
|
124
|
-
"typescript": "
|
|
124
|
+
"react-native": "0.87.1",
|
|
125
|
+
"typescript": "7.0.2",
|
|
125
126
|
"vitest": "4.1.0"
|
|
126
127
|
},
|
|
127
128
|
"peerDependencies": {
|
|
128
129
|
"react": ">=19",
|
|
129
130
|
"react-dom": "*"
|
|
130
|
-
}
|
|
131
|
+
},
|
|
132
|
+
"releaseSourceCommit": "15fbca480b143f876f6975601e23a17d3f90d2ee"
|
|
131
133
|
}
|
package/reset.css
CHANGED
|
@@ -45,6 +45,17 @@ button,
|
|
|
45
45
|
box-sizing: border-box;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/* `all: unset` above also unsets display, and this rule and the design
|
|
49
|
+
system's `:where(.is_View)` base are both zero specificity, so whichever
|
|
50
|
+
sheet loads last wins. Restate the base display so a tamagui-rendered
|
|
51
|
+
<button> or <p> keeps its layout however the sheets are ordered. */
|
|
52
|
+
:where(.is_View) {
|
|
53
|
+
display: flex;
|
|
54
|
+
}
|
|
55
|
+
:where(.is_Text) {
|
|
56
|
+
display: inline;
|
|
57
|
+
}
|
|
58
|
+
|
|
48
59
|
a.tm-button,
|
|
49
60
|
.tm-anchor:has(.tm-button) {
|
|
50
61
|
text-decoration: none;
|
package/src/_withNativeStyle.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setRef } from '@tamagui/compose-refs'
|
|
2
|
-
import React, { useCallback, useContext, useRef } from 'react'
|
|
2
|
+
import React, { useCallback, useContext, useRef, useState } from 'react'
|
|
3
3
|
import { _withStableStyle } from './_withStableStyle'
|
|
4
4
|
import {
|
|
5
5
|
getNativeStyleEngine,
|
|
@@ -38,6 +38,9 @@ export const _withNativeStyle = (
|
|
|
38
38
|
}) {
|
|
39
39
|
const { ref, _expressions: _ignoredExpressions, ...rest } = props
|
|
40
40
|
const link = useRef<NativeStyleEngineLinkHandle | null>(null)
|
|
41
|
+
// a host the engine refuses (a nitro view) never gets theme pushes, so
|
|
42
|
+
// this view renders through the theme-subscribed fallback instead
|
|
43
|
+
const [refused, setRefused] = useState(false)
|
|
41
44
|
const themeState = getThemeState(_scopeId)
|
|
42
45
|
const stateName = themeState?.name
|
|
43
46
|
const theme = themeState?.theme
|
|
@@ -55,10 +58,12 @@ export const _withNativeStyle = (
|
|
|
55
58
|
stateName,
|
|
56
59
|
theme
|
|
57
60
|
)
|
|
61
|
+
if (!link.current) setRefused(true)
|
|
58
62
|
}
|
|
59
63
|
},
|
|
60
64
|
[ref, _scopeId, stateName, theme]
|
|
61
65
|
)
|
|
66
|
+
if (refused) return <Fallback {...props} />
|
|
62
67
|
const stateStyle =
|
|
63
68
|
stateName && theme
|
|
64
69
|
? resolveNativeStyleMapping(themeStyleKeys, stateName, theme)
|
package/src/config.ts
CHANGED
|
@@ -37,6 +37,7 @@ const getConfigFromGlobalOrLocal = (): TamaguiInternalConfig | null => {
|
|
|
37
37
|
// if it never runs, it's a true duplicate (warn)
|
|
38
38
|
if (
|
|
39
39
|
process.env.NODE_ENV === 'development' &&
|
|
40
|
+
globalThis.__tamaguiEvaluationConfig !== globalThis.__tamaguiConfig &&
|
|
40
41
|
!globalThis.__tamaguiHasWarnedGlobalFallback &&
|
|
41
42
|
!globalThis.__tamaguiPendingCheck
|
|
42
43
|
) {
|
|
@@ -71,16 +72,12 @@ export const getSetting = <Key extends keyof GenericTamaguiSettings>(
|
|
|
71
72
|
if (process.env.NODE_ENV === 'development') {
|
|
72
73
|
if (!config) throw new Error(haventCalledErrorMessage)
|
|
73
74
|
}
|
|
74
|
-
return
|
|
75
|
-
config!.settings[key] ??
|
|
76
|
-
// @ts-expect-error
|
|
77
|
-
config[key]
|
|
78
|
-
)
|
|
75
|
+
return config!.settings[key]
|
|
79
76
|
}
|
|
80
77
|
|
|
81
78
|
export function getStyleCompat(): StyleCompat {
|
|
82
79
|
const config = getConfigFromGlobalOrLocal()
|
|
83
|
-
return
|
|
80
|
+
return config?.settings?.styleCompat || 'web'
|
|
84
81
|
}
|
|
85
82
|
|
|
86
83
|
export const setConfig = (next: TamaguiInternalConfig) => {
|
|
@@ -91,6 +88,9 @@ export const setConfig = (next: TamaguiInternalConfig) => {
|
|
|
91
88
|
if (conf !== previous || globalThis.__tamaguiConfig !== previousGlobal) return
|
|
92
89
|
conf = next
|
|
93
90
|
globalThis.__tamaguiConfig = next
|
|
91
|
+
if (process.env.TAMAGUI_ENVIRONMENT === 'tamagui') {
|
|
92
|
+
globalThis.__tamaguiEvaluationConfig = next
|
|
93
|
+
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
export const setConfigFont = (name: string, font: any, fontParsed: any) => {
|
|
@@ -5,6 +5,9 @@ import type { ComponentContextI } from '../types'
|
|
|
5
5
|
const componentContextKeys = [
|
|
6
6
|
'disableSSR',
|
|
7
7
|
'inText',
|
|
8
|
+
...(process.env.TAMAGUI_TARGET === 'native'
|
|
9
|
+
? (['parentFontSize', 'parentLineHeight', 'animatedText'] as const)
|
|
10
|
+
: []),
|
|
8
11
|
'language',
|
|
9
12
|
'animationDriver',
|
|
10
13
|
'setParentFocusState',
|
|
@@ -18,6 +21,11 @@ export const ComponentContext = createStyledContext<
|
|
|
18
21
|
{
|
|
19
22
|
disableSSR: undefined,
|
|
20
23
|
inText: false,
|
|
24
|
+
...(process.env.TAMAGUI_TARGET === 'native' && {
|
|
25
|
+
parentFontSize: undefined,
|
|
26
|
+
parentLineHeight: undefined,
|
|
27
|
+
animatedText: null,
|
|
28
|
+
}),
|
|
21
29
|
language: null,
|
|
22
30
|
animationDriver: null,
|
|
23
31
|
setParentFocusState: null,
|
package/src/createComponent.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { composeRefs } from '@tamagui/compose-refs'
|
|
1
|
+
import { composeRefs, setRef } from '@tamagui/compose-refs'
|
|
2
2
|
import {
|
|
3
3
|
getPlatformDriver,
|
|
4
4
|
isAndroid,
|
|
@@ -21,6 +21,8 @@ import { defaultComponentStateMounted } from './defaultComponentState'
|
|
|
21
21
|
import { getWebEvents, useEvents, wrapWithGestureDetector } from './eventHandling'
|
|
22
22
|
import { componentDisplayName } from './helpers/componentDisplayName'
|
|
23
23
|
import { getSplitStyles } from './helpers/getSplitStyles'
|
|
24
|
+
import { isTamaguiElement } from './helpers/isTamaguiElement'
|
|
25
|
+
import { NativeTextBinding } from './helpers/NativeTextBinding'
|
|
24
26
|
import { getConfigRevisionState } from './helpers/grammarConfig'
|
|
25
27
|
import { getStyleStaticConfig, type StyleStaticConfig } from './helpers/styleStaticConfig'
|
|
26
28
|
import {
|
|
@@ -91,7 +93,6 @@ const avoidReRenderKeys = new Set([
|
|
|
91
93
|
'focus',
|
|
92
94
|
'focusWithin',
|
|
93
95
|
'media',
|
|
94
|
-
'group',
|
|
95
96
|
])
|
|
96
97
|
|
|
97
98
|
const groupPseudoKeys = [
|
|
@@ -309,10 +310,15 @@ export function createComponent<
|
|
|
309
310
|
resolvedStyleStaticConfig = nextStyleStaticConfig
|
|
310
311
|
resolvedDefaultProps = nextStyleStaticConfig.defaultProps
|
|
311
312
|
// the relative-position default is a style, so it joins the base layer
|
|
312
|
-
// under everything the call site writes
|
|
313
|
+
// under everything the call site writes. a styled HOC skips it: the
|
|
314
|
+
// frame its render mounts owns the host element and its own default,
|
|
315
|
+
// and a wrapper's base reaches that frame as call-site className, where
|
|
316
|
+
// it would beat the frame's authored position (an absolute background
|
|
317
|
+
// collapsing to relative)
|
|
313
318
|
if (
|
|
314
319
|
isWeb &&
|
|
315
320
|
!staticConfig.isText &&
|
|
321
|
+
!staticConfig.isStyledHOC &&
|
|
316
322
|
config.settings.defaultPosition === 'relative' &&
|
|
317
323
|
nextStyleStaticConfig.baseStyle?.position === undefined
|
|
318
324
|
) {
|
|
@@ -385,16 +391,6 @@ export function createComponent<
|
|
|
385
391
|
React.useContext(NativeMenuContext)
|
|
386
392
|
: false
|
|
387
393
|
|
|
388
|
-
if (
|
|
389
|
-
!process.env.TAMAGUI_IS_CORE_NODE &&
|
|
390
|
-
process.env.NODE_ENV === 'development' &&
|
|
391
|
-
debugProp === 'profile' &&
|
|
392
|
-
!time
|
|
393
|
-
) {
|
|
394
|
-
const timer = require('@tamagui/timer').timer()
|
|
395
|
-
time = timer.start()
|
|
396
|
-
globalThis['time'] = time
|
|
397
|
-
}
|
|
398
394
|
// pick up globalThis.time if set externally (e.g. by a profiling harness)
|
|
399
395
|
if (process.env.NODE_ENV === 'development' && !time && (globalThis as any).time) {
|
|
400
396
|
time = (globalThis as any).time
|
|
@@ -635,11 +631,27 @@ export function createComponent<
|
|
|
635
631
|
elementType = animationDriver[isText ? 'Text' : 'View'] || elementType
|
|
636
632
|
}
|
|
637
633
|
|
|
638
|
-
// internal use only
|
|
634
|
+
// internal use only. it says "a theme is already mounted above you, don't
|
|
635
|
+
// read one again", which a styled HOC sets on everything its render
|
|
636
|
+
// forwards props to. a `theme` key still wins: the HOC strips the caller's
|
|
637
|
+
// theme before rendering, so one arriving here was set by the component
|
|
638
|
+
// itself (Checkbox's activeTheme, Tabs' selected tab) and is the whole
|
|
639
|
+
// reason that element exists. it is the presence of the key, never its
|
|
640
|
+
// value, because the disabled path skips hooks and a component that swaps
|
|
641
|
+
// `theme` between null and a name across renders must not change hook order
|
|
639
642
|
const disableThemeProp =
|
|
640
|
-
process.env.TAMAGUI_TARGET === 'native'
|
|
641
|
-
|
|
642
|
-
|
|
643
|
+
process.env.TAMAGUI_TARGET === 'native'
|
|
644
|
+
? false
|
|
645
|
+
: props['data-disable-theme'] && !('theme' in props)
|
|
646
|
+
|
|
647
|
+
// a styled HOC leaves theming to the component it wraps and hands it the
|
|
648
|
+
// theme prop. on native the HOC's own styles resolve to values here, before
|
|
649
|
+
// that, so an HOC given a theme themes itself and the wrapped component
|
|
650
|
+
// inherits it instead of applying it a second time. keyed on presence, like
|
|
651
|
+
// disableThemeProp, so hook order never changes across renders
|
|
652
|
+
const hocThemesSelf =
|
|
653
|
+
process.env.TAMAGUI_TARGET === 'native' && isHOC && 'theme' in props
|
|
654
|
+
const disableTheme = disableThemeProp || (isHOC && !hocThemesSelf)
|
|
643
655
|
|
|
644
656
|
if (process.env.NODE_ENV === 'development' && time) time`theme-props`
|
|
645
657
|
|
|
@@ -746,7 +758,7 @@ export function createComponent<
|
|
|
746
758
|
|
|
747
759
|
// stateRef.current is this instance's key into useMedia's per-component
|
|
748
760
|
// States map (setMediaShouldUpdate below writes under the same key)
|
|
749
|
-
const mediaState = useMedia(
|
|
761
|
+
const mediaState = useMedia(stateRef.current, debugProp, stateRef.current)
|
|
750
762
|
|
|
751
763
|
setDidGetVariableValue(false)
|
|
752
764
|
|
|
@@ -769,6 +781,7 @@ export function createComponent<
|
|
|
769
781
|
canPlatformPseudo: componentState.platformPseudo,
|
|
770
782
|
displayName,
|
|
771
783
|
styledContext: styledContextValue,
|
|
784
|
+
prevStyle: isWeb ? undefined : stateRef.current.prevStyle,
|
|
772
785
|
} as const
|
|
773
786
|
|
|
774
787
|
const themeName = themeState?.name || ''
|
|
@@ -1151,7 +1164,10 @@ export function createComponent<
|
|
|
1151
1164
|
useStyleListener(
|
|
1152
1165
|
(nextStyles?.style || {}) as any,
|
|
1153
1166
|
effectiveTransition,
|
|
1154
|
-
hasActivePseudo
|
|
1167
|
+
hasActivePseudo,
|
|
1168
|
+
process.env.TAMAGUI_TARGET === 'native'
|
|
1169
|
+
? nextStyles?.nativeTextMetrics
|
|
1170
|
+
: undefined
|
|
1155
1171
|
)
|
|
1156
1172
|
}
|
|
1157
1173
|
|
|
@@ -1173,31 +1189,22 @@ export function createComponent<
|
|
|
1173
1189
|
}
|
|
1174
1190
|
}
|
|
1175
1191
|
|
|
1176
|
-
//
|
|
1177
|
-
//
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
//
|
|
1182
|
-
|
|
1183
|
-
const
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
}
|
|
1191
|
-
}
|
|
1192
|
-
|
|
1193
|
-
componentContext.mediaEmit =
|
|
1194
|
-
componentContext.mediaEmit ||
|
|
1195
|
-
((next) => {
|
|
1196
|
-
// notify all registered components
|
|
1197
|
-
for (const listener of componentContext.mediaEmitListeners!) {
|
|
1198
|
-
listener(next)
|
|
1199
|
-
}
|
|
1192
|
+
// a media change restyles only this instance: its useMedia emits through
|
|
1193
|
+
// this state ref. a context-wide emitter made every component in the
|
|
1194
|
+
// provider restyle on every other component's media change (quadratic).
|
|
1195
|
+
// one dimension change fires one update per changed media key, so like
|
|
1196
|
+
// nativeMediaUpdate this coalesces to a single restyle per event turn,
|
|
1197
|
+
// against the media state every key has settled to by then
|
|
1198
|
+
stateRef.current.mediaEmit ||= (next) => {
|
|
1199
|
+
const sr = stateRef.current
|
|
1200
|
+
sr.nextMedia = next
|
|
1201
|
+
if (sr.mediaEmitQueued) return
|
|
1202
|
+
sr.mediaEmitQueued = true
|
|
1203
|
+
queueMicrotask(() => {
|
|
1204
|
+
sr.mediaEmitQueued = false
|
|
1205
|
+
sr.updateStyleListener?.()
|
|
1200
1206
|
})
|
|
1207
|
+
}
|
|
1201
1208
|
|
|
1202
1209
|
stateRef.current.setStateShallow = (nextOrGetNext) => {
|
|
1203
1210
|
const prev = stateRef.current.nextState || state
|
|
@@ -1302,13 +1309,18 @@ export function createComponent<
|
|
|
1302
1309
|
} = splitStyles || {}
|
|
1303
1310
|
const groupSetRevision = useGroupSetRevision(pseudoGroups, mediaGroups)
|
|
1304
1311
|
|
|
1312
|
+
// native style stability: persist the resolved style for next render's
|
|
1313
|
+
// inline comparison (see getSplitStyles prevStyle tracking)
|
|
1314
|
+
if (!isWeb) {
|
|
1315
|
+
stateRef.current.prevStyle = splitStylesStyle || null
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1305
1318
|
const propsWithAnimation = props as UseAnimationProps
|
|
1306
1319
|
|
|
1307
1320
|
const {
|
|
1308
1321
|
asChild,
|
|
1309
1322
|
children,
|
|
1310
1323
|
themeShallow,
|
|
1311
|
-
spaceDirection: _spaceDirection,
|
|
1312
1324
|
onPress,
|
|
1313
1325
|
onLongPress,
|
|
1314
1326
|
onPressIn,
|
|
@@ -1340,7 +1352,7 @@ export function createComponent<
|
|
|
1340
1352
|
}
|
|
1341
1353
|
|
|
1342
1354
|
if (isHOC) {
|
|
1343
|
-
if (typeof _themeProp !== 'undefined') {
|
|
1355
|
+
if (typeof _themeProp !== 'undefined' && !hocThemesSelf) {
|
|
1344
1356
|
viewProps.theme = _themeProp
|
|
1345
1357
|
}
|
|
1346
1358
|
if (typeof passThrough !== 'undefined') {
|
|
@@ -1368,6 +1380,14 @@ export function createComponent<
|
|
|
1368
1380
|
// once you set animation prop don't remove it, you can set to undefined/false
|
|
1369
1381
|
// reason is animations are heavy - no way around it, and must be run inline here (🙅 loading as a sub-component)
|
|
1370
1382
|
let animationStyles: any
|
|
1383
|
+
let animatedText =
|
|
1384
|
+
process.env.TAMAGUI_TARGET === 'native'
|
|
1385
|
+
? isText &&
|
|
1386
|
+
splitStyles?.nativeTextMetrics &&
|
|
1387
|
+
!splitStyles.nativeTextMetrics.inheritsFontSize
|
|
1388
|
+
? null
|
|
1389
|
+
: componentContext.animatedText
|
|
1390
|
+
: null
|
|
1371
1391
|
const shouldUseAnimation =
|
|
1372
1392
|
// if it supports css vars we run it on server too to get matching initial style
|
|
1373
1393
|
(inputStyle === 'css' ? willBeAnimatedClient : willBeAnimated) &&
|
|
@@ -1398,6 +1418,11 @@ export function createComponent<
|
|
|
1398
1418
|
stateRef.current.prevPseudoState = extractPseudoState(state)
|
|
1399
1419
|
|
|
1400
1420
|
const animations = useAnimations({
|
|
1421
|
+
...(process.env.TAMAGUI_TARGET === 'native' && {
|
|
1422
|
+
inheritedText: splitStyles?.nativeTextMetrics?.inheritsFontSize
|
|
1423
|
+
? componentContext.animatedText
|
|
1424
|
+
: null,
|
|
1425
|
+
}),
|
|
1401
1426
|
props: propsWithAnimation,
|
|
1402
1427
|
// clone style to prevent animation driver mutations from leaking to viewProps
|
|
1403
1428
|
// during SSR/pre-hydration (CSS driver mutates style.transition in place)
|
|
@@ -1415,6 +1440,7 @@ export function createComponent<
|
|
|
1415
1440
|
})
|
|
1416
1441
|
|
|
1417
1442
|
if (animations) {
|
|
1443
|
+
if (process.env.TAMAGUI_TARGET === 'native') animatedText = animations.textChannel
|
|
1418
1444
|
if (animations.ref) {
|
|
1419
1445
|
// @ts-ignore
|
|
1420
1446
|
animatedRef = animations.ref
|
|
@@ -1476,6 +1502,13 @@ export function createComponent<
|
|
|
1476
1502
|
stateRef.current.willHydrate
|
|
1477
1503
|
) || nonTamaguiProps
|
|
1478
1504
|
|
|
1505
|
+
// the composed ref keeps one identity for the life of the component so react
|
|
1506
|
+
// never detaches and reattaches the host mid-life. that means it can't close
|
|
1507
|
+
// over forwardedRef, which would pin the first render's ref forever - read it
|
|
1508
|
+
// off stateRef instead, and record what it actually attached to so a swapped
|
|
1509
|
+
// ref can be handed the host below (#4031)
|
|
1510
|
+
stateRef.current.composedForwardedRef = forwardedRef
|
|
1511
|
+
|
|
1479
1512
|
if (!stateRef.current.composedRef) {
|
|
1480
1513
|
stateRef.current.composedRef = composeRefs<TamaguiElement>(
|
|
1481
1514
|
(x) => {
|
|
@@ -1483,8 +1516,10 @@ export function createComponent<
|
|
|
1483
1516
|
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
1484
1517
|
updateNativeStyleLink(stateRef.current, x)
|
|
1485
1518
|
}
|
|
1519
|
+
const current = stateRef.current.composedForwardedRef
|
|
1520
|
+
stateRef.current.attachedForwardedRef = x ? current : undefined
|
|
1521
|
+
setRef<TamaguiElement>(current, x as TamaguiElement)
|
|
1486
1522
|
},
|
|
1487
|
-
forwardedRef,
|
|
1488
1523
|
setElementProps,
|
|
1489
1524
|
animatedRef
|
|
1490
1525
|
)
|
|
@@ -1503,6 +1538,22 @@ export function createComponent<
|
|
|
1503
1538
|
viewProps.onClick = onClick
|
|
1504
1539
|
}
|
|
1505
1540
|
|
|
1541
|
+
// react only re-runs a ref callback when its identity changes, and ours never
|
|
1542
|
+
// does, so hand the host over by hand when a parent swaps the forwarded ref -
|
|
1543
|
+
// react-hook-form re-registering a field after reset() is the common case.
|
|
1544
|
+
// the comparison reads what the ref callback attached, never a value written
|
|
1545
|
+
// during render: a render-phase "previous" pointer reads back its own write
|
|
1546
|
+
// on react's second pass and the handover silently no-ops under StrictMode
|
|
1547
|
+
useIsomorphicLayoutEffect(() => {
|
|
1548
|
+
const attached = stateRef.current.attachedForwardedRef
|
|
1549
|
+
if (attached === forwardedRef) return
|
|
1550
|
+
if (attached) setRef<TamaguiElement | null>(attached, null)
|
|
1551
|
+
stateRef.current.attachedForwardedRef = forwardedRef
|
|
1552
|
+
if (stateRef.current.host) {
|
|
1553
|
+
setRef<TamaguiElement>(forwardedRef, stateRef.current.host)
|
|
1554
|
+
}
|
|
1555
|
+
}, [forwardedRef])
|
|
1556
|
+
|
|
1506
1557
|
// handle pointer events (native: maps to touch events, web: no-op)
|
|
1507
1558
|
usePointerEvents(props, viewProps)
|
|
1508
1559
|
|
|
@@ -1588,16 +1639,10 @@ export function createComponent<
|
|
|
1588
1639
|
|
|
1589
1640
|
// unmount-only cleanup. this must NOT live on the enter effect above: that
|
|
1590
1641
|
// effect re-runs on every unmounted transition (true -> 'should-enter' ->
|
|
1591
|
-
// false), and a cleanup
|
|
1592
|
-
// mediaEmit listener right after mount for value-input avoidReRenders
|
|
1593
|
-
// drivers, with no re-registration (render only registers while
|
|
1594
|
-
// mediaEmitCleanup is unset), so media styles silently stopped applying
|
|
1642
|
+
// false), and a cleanup there would run mid-lifecycle
|
|
1595
1643
|
useIsomorphicLayoutEffect(() => {
|
|
1596
1644
|
return () => {
|
|
1597
1645
|
componentSetStates.delete(setState)
|
|
1598
|
-
stateRef.current.mediaEmitCleanup?.()
|
|
1599
|
-
// clear so a render after a simulated unmount (StrictMode dev) can re-register
|
|
1600
|
-
stateRef.current.mediaEmitCleanup = undefined
|
|
1601
1646
|
}
|
|
1602
1647
|
}, [])
|
|
1603
1648
|
|
|
@@ -1833,6 +1878,23 @@ export function createComponent<
|
|
|
1833
1878
|
}
|
|
1834
1879
|
: null
|
|
1835
1880
|
|
|
1881
|
+
// press plumbing detached mid-press (a conditional pressStyle/onPress removed
|
|
1882
|
+
// by the same tap's re-render racing the touch-up, e.g. a selection flip):
|
|
1883
|
+
// the release then lands on detached handlers and press latches true,
|
|
1884
|
+
// sticking the press wash with no recovery on native. with no handlers
|
|
1885
|
+
// attached no future event can clear it, so any active press is
|
|
1886
|
+
// definitionally stale — drop it. group subscribers keep theirs: their press
|
|
1887
|
+
// may be parent-driven, and the group channel still delivers its release.
|
|
1888
|
+
useIsomorphicLayoutEffect(() => {
|
|
1889
|
+
const hadPressPlumbing = stateRef.current.hadAttachPress
|
|
1890
|
+
stateRef.current.hadAttachPress = attachPress
|
|
1891
|
+
if (hadPressPlumbing && !attachPress && !pseudoGroups?.size) {
|
|
1892
|
+
const clearPress =
|
|
1893
|
+
stateRef.current.setStateShallow ?? stateRef.current.baseSetStateShallow
|
|
1894
|
+
clearPress?.({ press: false, pressIn: false })
|
|
1895
|
+
}
|
|
1896
|
+
}, [attachPress, pseudoGroups])
|
|
1897
|
+
|
|
1836
1898
|
if (process.env.TAMAGUI_TARGET === 'native' && events && !asChild) {
|
|
1837
1899
|
// replicating TouchableWithoutFeedback
|
|
1838
1900
|
Object.assign(events, {
|
|
@@ -1907,6 +1969,8 @@ export function createComponent<
|
|
|
1907
1969
|
onMouseDown,
|
|
1908
1970
|
onMouseEnter,
|
|
1909
1971
|
onMouseLeave,
|
|
1972
|
+
onFocus,
|
|
1973
|
+
onBlur,
|
|
1910
1974
|
},
|
|
1911
1975
|
webStyleEvents
|
|
1912
1976
|
)
|
|
@@ -1983,6 +2047,26 @@ export function createComponent<
|
|
|
1983
2047
|
}
|
|
1984
2048
|
|
|
1985
2049
|
content = React.createElement(elementType, viewProps, content || children)
|
|
2050
|
+
if (
|
|
2051
|
+
process.env.TAMAGUI_TARGET === 'native' &&
|
|
2052
|
+
!shouldUseAnimation &&
|
|
2053
|
+
!isHOC &&
|
|
2054
|
+
!staticConfig.isDOM &&
|
|
2055
|
+
!asChild &&
|
|
2056
|
+
splitStyles?.nativeTextMetrics?.inheritsFontSize &&
|
|
2057
|
+
componentContext.animatedText &&
|
|
2058
|
+
animationDriver?.useTextMetrics
|
|
2059
|
+
) {
|
|
2060
|
+
content = (
|
|
2061
|
+
<NativeTextBinding
|
|
2062
|
+
element={content as ReactElement<any>}
|
|
2063
|
+
useTextMetrics={animationDriver.useTextMetrics}
|
|
2064
|
+
inheritedText={componentContext.animatedText}
|
|
2065
|
+
lineHeight={splitStyles.nativeTextMetrics.lineHeight}
|
|
2066
|
+
isInput={staticConfig.isInput}
|
|
2067
|
+
/>
|
|
2068
|
+
)
|
|
2069
|
+
}
|
|
1986
2070
|
}
|
|
1987
2071
|
|
|
1988
2072
|
if (process.env.NODE_ENV === 'development' && time) time`use-children`
|
|
@@ -1998,7 +2082,7 @@ export function createComponent<
|
|
|
1998
2082
|
stateRef,
|
|
1999
2083
|
isHOC,
|
|
2000
2084
|
isCompositeComponent,
|
|
2001
|
-
hasRealPressEvents
|
|
2085
|
+
hasRealPressEvents && !isInsideNativeMenu
|
|
2002
2086
|
)
|
|
2003
2087
|
}
|
|
2004
2088
|
|
|
@@ -2030,7 +2114,7 @@ export function createComponent<
|
|
|
2030
2114
|
|
|
2031
2115
|
if (process.env.NODE_ENV === 'development' && time) time`create-element`
|
|
2032
2116
|
|
|
2033
|
-
if (conditionalStates?.has('focus-within')) {
|
|
2117
|
+
if (process.env.TAMAGUI_TARGET === 'web' && conditionalStates?.has('focus-within')) {
|
|
2034
2118
|
content = (
|
|
2035
2119
|
<ComponentContext.Provider
|
|
2036
2120
|
{...componentContext}
|
|
@@ -2050,7 +2134,43 @@ export function createComponent<
|
|
|
2050
2134
|
)
|
|
2051
2135
|
}
|
|
2052
2136
|
|
|
2053
|
-
|
|
2137
|
+
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
2138
|
+
const textMetrics =
|
|
2139
|
+
!staticConfig.isDOM &&
|
|
2140
|
+
!isHOC &&
|
|
2141
|
+
isText &&
|
|
2142
|
+
!(asChild && isTamaguiElement(children))
|
|
2143
|
+
? splitStyles?.nativeTextMetrics
|
|
2144
|
+
: undefined
|
|
2145
|
+
const provideText =
|
|
2146
|
+
!!textMetrics &&
|
|
2147
|
+
children !== null &&
|
|
2148
|
+
typeof children === 'object' &&
|
|
2149
|
+
(!componentContext.inText ||
|
|
2150
|
+
textMetrics.fontSize !== componentContext.parentFontSize ||
|
|
2151
|
+
textMetrics.lineHeight !== componentContext.parentLineHeight ||
|
|
2152
|
+
animatedText !== componentContext.animatedText)
|
|
2153
|
+
const provideFocus = conditionalStates?.has('focus-within')
|
|
2154
|
+
if (provideText || provideFocus) {
|
|
2155
|
+
content = (
|
|
2156
|
+
<ComponentContext.Provider
|
|
2157
|
+
{...componentContext}
|
|
2158
|
+
inText={provideText || componentContext.inText}
|
|
2159
|
+
parentFontSize={textMetrics?.fontSize ?? componentContext.parentFontSize}
|
|
2160
|
+
parentLineHeight={
|
|
2161
|
+
textMetrics ? textMetrics.lineHeight : componentContext.parentLineHeight
|
|
2162
|
+
}
|
|
2163
|
+
animatedText={animatedText}
|
|
2164
|
+
setParentFocusState={
|
|
2165
|
+
provideFocus ? setStateShallow : componentContext.setParentFocusState
|
|
2166
|
+
}
|
|
2167
|
+
>
|
|
2168
|
+
{content}
|
|
2169
|
+
</ComponentContext.Provider>
|
|
2170
|
+
)
|
|
2171
|
+
}
|
|
2172
|
+
}
|
|
2173
|
+
|
|
2054
2174
|
if (process.env.TAMAGUI_TARGET === 'web' && !asChild && isText && !hasTextAncestor) {
|
|
2055
2175
|
content = (
|
|
2056
2176
|
<ComponentContext.Provider {...componentContext} inText={true}>
|
|
@@ -2090,7 +2210,7 @@ export function createComponent<
|
|
|
2090
2210
|
// SSR style support - for non compiled styles we render them inline until client takes over
|
|
2091
2211
|
// on client we then switch over to our global sheet insert, because rendering inline is expensive
|
|
2092
2212
|
if (
|
|
2093
|
-
|
|
2213
|
+
process.env.TAMAGUI_RUNTIME !== 'island' &&
|
|
2094
2214
|
process.env.TAMAGUI_TARGET === 'web' &&
|
|
2095
2215
|
startedUnhydrated &&
|
|
2096
2216
|
splitStyles
|