@tamagui/web 2.0.0-rc.3 → 2.0.0-rc.30
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/.turbo/turbo-build.log +2 -0
- package/.turbo/turbo-test$colon$web.log +15 -0
- package/dist/cjs/Tamagui.cjs +2 -2
- package/dist/cjs/Tamagui.native.js +2 -2
- package/dist/cjs/Tamagui.native.js.map +1 -1
- package/dist/cjs/_withStableStyle.cjs +17 -6
- package/dist/cjs/_withStableStyle.native.js +18 -5
- package/dist/cjs/_withStableStyle.native.js.map +1 -1
- package/dist/cjs/animationDriverTypes.test-d.cjs +11 -0
- package/dist/cjs/animationDriverTypes.test-d.native.js +11 -0
- package/dist/cjs/animationDriverTypes.test-d.native.js.map +1 -1
- package/dist/cjs/config.cjs +5 -1
- package/dist/cjs/config.native.js +5 -1
- package/dist/cjs/config.native.js.map +1 -1
- package/dist/cjs/constants/constants.cjs +2 -16
- package/dist/cjs/constants/constants.native.js +1 -14
- package/dist/cjs/constants/constants.native.js.map +1 -1
- package/dist/cjs/createComponent.cjs +92 -79
- package/dist/cjs/createComponent.native.js +112 -88
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/createTamagui.cjs +38 -37
- package/dist/cjs/createTamagui.native.js +41 -37
- package/dist/cjs/createTamagui.native.js.map +1 -1
- package/dist/cjs/createVariable.native.js.map +1 -1
- package/dist/cjs/eventHandling.cjs +1 -1
- package/dist/cjs/eventHandling.native.js +84 -57
- package/dist/cjs/eventHandling.native.js.map +1 -1
- package/dist/cjs/helpers/createDesignSystem.cjs +44 -7
- package/dist/cjs/helpers/createDesignSystem.native.js +36 -6
- package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -1
- package/dist/cjs/helpers/createMediaStyle.cjs +8 -5
- package/dist/cjs/helpers/createMediaStyle.native.js +10 -7
- package/dist/cjs/helpers/createMediaStyle.native.js.map +1 -1
- package/dist/cjs/helpers/createStyledContext.cjs +11 -7
- package/dist/cjs/helpers/createStyledContext.native.js +50 -46
- package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
- package/dist/cjs/helpers/defaultAnimationDriver.cjs +0 -2
- package/dist/cjs/helpers/defaultAnimationDriver.native.js +0 -2
- package/dist/cjs/helpers/defaultAnimationDriver.native.js.map +1 -1
- package/dist/cjs/helpers/expandStyle.cjs +2 -1
- package/dist/cjs/helpers/expandStyle.native.js +9 -0
- package/dist/cjs/helpers/expandStyle.native.js.map +1 -1
- package/dist/cjs/helpers/getCSSStylesAtomic.cjs +8 -8
- package/dist/cjs/helpers/getDefaultProps.cjs +3 -9
- package/dist/cjs/helpers/getDefaultProps.native.js +3 -4
- package/dist/cjs/helpers/getDefaultProps.native.js.map +1 -1
- package/dist/cjs/helpers/getGroupPropParts.cjs +2 -2
- package/dist/cjs/helpers/getGroupPropParts.native.js +2 -2
- package/dist/cjs/helpers/getGroupPropParts.native.js.map +1 -1
- package/dist/cjs/helpers/getSplitStyles.cjs +59 -28
- package/dist/cjs/helpers/getSplitStyles.native.js +114 -77
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/cjs/helpers/getThemeCSSRules.cjs +17 -9
- package/dist/cjs/helpers/getTokenForKey.cjs +127 -0
- package/dist/cjs/helpers/getTokenForKey.native.js +145 -0
- package/dist/cjs/helpers/getTokenForKey.native.js.map +1 -0
- package/dist/cjs/helpers/insertStyleRule.cjs +1 -1
- package/dist/cjs/helpers/insertStyleRule.native.js +1 -1
- package/dist/cjs/helpers/mainThreadPressEvents.native.js +1 -1
- package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
- package/dist/cjs/helpers/mediaObjectToString.cjs +35 -0
- package/dist/cjs/helpers/mediaObjectToString.native.js +43 -0
- package/dist/cjs/helpers/mediaObjectToString.native.js.map +1 -0
- package/dist/cjs/helpers/mediaState.cjs +45 -0
- package/dist/cjs/helpers/mediaState.native.js +50 -0
- package/dist/cjs/helpers/mediaState.native.js.map +1 -0
- package/dist/cjs/helpers/normalizeColor.cjs +6 -1
- package/dist/cjs/helpers/normalizeValueWithProperty.cjs +2 -1
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js +2 -1
- package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
- package/dist/cjs/helpers/parseNativeStyle.cjs +133 -0
- package/dist/cjs/helpers/parseNativeStyle.native.js +151 -0
- package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -0
- package/dist/cjs/{createTheme.cjs → helpers/parseOutlineShorthand.cjs} +5 -5
- package/dist/cjs/helpers/parseOutlineShorthand.native.js +58 -0
- package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -0
- package/dist/cjs/helpers/platformResolveValue.cjs +33 -0
- package/dist/cjs/helpers/platformResolveValue.native.js +62 -0
- package/dist/cjs/helpers/platformResolveValue.native.js.map +1 -0
- package/dist/cjs/helpers/propMapper.cjs +26 -96
- package/dist/cjs/helpers/propMapper.native.js +61 -108
- package/dist/cjs/helpers/propMapper.native.js.map +1 -1
- package/dist/cjs/helpers/pseudoTransitions.cjs +65 -0
- package/dist/cjs/helpers/pseudoTransitions.native.js +72 -0
- package/dist/cjs/helpers/pseudoTransitions.native.js.map +1 -0
- package/dist/cjs/{constants/webToNativeProps.cjs → helpers/resolveAnimationDriver.cjs} +7 -7
- package/dist/cjs/{views/Stack.native.js → helpers/resolveAnimationDriver.native.js} +9 -14
- package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -0
- package/dist/cjs/{views/Stack.cjs → helpers/resolveCompoundTokens.cjs} +16 -13
- package/dist/cjs/helpers/resolveCompoundTokens.native.js +40 -0
- package/dist/cjs/helpers/resolveCompoundTokens.native.js.map +1 -0
- package/dist/cjs/helpers/skipProps.cjs +1 -0
- package/dist/cjs/helpers/skipProps.native.js +1 -0
- package/dist/cjs/helpers/skipProps.native.js.map +1 -1
- package/dist/cjs/helpers/themeable.cjs +4 -2
- package/dist/cjs/helpers/themeable.native.js +4 -2
- package/dist/cjs/helpers/themeable.native.js.map +1 -1
- package/dist/cjs/helpers/useRenderElement.native.js +1 -1
- package/dist/cjs/helpers/useRenderElement.native.js.map +1 -1
- package/dist/cjs/hooks/useComponentState.cjs +9 -5
- package/dist/cjs/hooks/useComponentState.native.js +10 -6
- package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
- package/dist/cjs/hooks/useMedia.cjs +25 -48
- package/dist/cjs/hooks/useMedia.native.js +25 -55
- package/dist/cjs/hooks/useMedia.native.js.map +1 -1
- package/dist/cjs/hooks/useProps.cjs +3 -2
- package/dist/cjs/hooks/useProps.native.js +3 -2
- package/dist/cjs/hooks/useProps.native.js.map +1 -1
- package/dist/cjs/hooks/useTheme.cjs +4 -0
- package/dist/cjs/hooks/useTheme.native.js +4 -0
- package/dist/cjs/hooks/useTheme.native.js.map +1 -1
- package/dist/cjs/hooks/useThemeState.cjs +30 -12
- package/dist/cjs/hooks/useThemeState.native.js +28 -12
- package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
- package/dist/cjs/index.cjs +9 -5
- package/dist/cjs/index.js +86 -74
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +9 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/styled.native.js.map +1 -1
- package/dist/cjs/views/TamaguiProvider.cjs +20 -33
- package/dist/cjs/views/TamaguiProvider.native.js +28 -39
- package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
- package/dist/cjs/views/TamaguiRoot.cjs +68 -0
- package/dist/cjs/{createTheme.native.js → views/TamaguiRoot.native.js} +8 -8
- package/dist/cjs/views/TamaguiRoot.native.js.map +1 -0
- package/dist/cjs/views/Text.cjs +2 -10
- package/dist/cjs/views/Text.native.js +0 -1
- package/dist/cjs/views/Text.native.js.map +1 -1
- package/dist/cjs/views/Theme.cjs +2 -0
- package/dist/cjs/views/Theme.native.js +2 -0
- package/dist/cjs/views/Theme.native.js.map +1 -1
- package/dist/cjs/views/ThemeProvider.cjs +3 -1
- package/dist/cjs/views/ThemeProvider.native.js +2 -0
- package/dist/cjs/views/ThemeProvider.native.js.map +1 -1
- package/dist/cjs/views/View.cjs +0 -2
- package/dist/cjs/views/View.native.js +0 -2
- package/dist/cjs/views/View.native.js.map +1 -1
- package/dist/esm/Tamagui.mjs +1 -1
- package/dist/esm/Tamagui.native.js +1 -1
- package/dist/esm/_withStableStyle.mjs +18 -7
- package/dist/esm/_withStableStyle.mjs.map +1 -1
- package/dist/esm/_withStableStyle.native.js +19 -6
- package/dist/esm/_withStableStyle.native.js.map +1 -1
- package/dist/esm/animationDriverTypes.test-d.mjs +11 -0
- package/dist/esm/animationDriverTypes.test-d.mjs.map +1 -1
- package/dist/esm/animationDriverTypes.test-d.native.js +11 -0
- package/dist/esm/animationDriverTypes.test-d.native.js.map +1 -1
- package/dist/esm/config.mjs +5 -1
- package/dist/esm/config.mjs.map +1 -1
- package/dist/esm/config.native.js +5 -1
- package/dist/esm/config.native.js.map +1 -1
- package/dist/esm/constants/constants.mjs +2 -14
- package/dist/esm/constants/constants.mjs.map +1 -1
- package/dist/esm/constants/constants.native.js +1 -12
- package/dist/esm/constants/constants.native.js.map +1 -1
- package/dist/esm/createComponent.mjs +91 -79
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +112 -89
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/createTamagui.mjs +38 -37
- package/dist/esm/createTamagui.mjs.map +1 -1
- package/dist/esm/createTamagui.native.js +41 -37
- package/dist/esm/createTamagui.native.js.map +1 -1
- package/dist/esm/createVariable.mjs.map +1 -1
- package/dist/esm/eventHandling.mjs +1 -1
- package/dist/esm/eventHandling.mjs.map +1 -1
- package/dist/esm/eventHandling.native.js +84 -57
- package/dist/esm/eventHandling.native.js.map +1 -1
- package/dist/esm/helpers/createDesignSystem.mjs +43 -7
- package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
- package/dist/esm/helpers/createDesignSystem.native.js +35 -7
- package/dist/esm/helpers/createDesignSystem.native.js.map +1 -1
- package/dist/esm/helpers/createMediaStyle.mjs +7 -4
- package/dist/esm/helpers/createMediaStyle.mjs.map +1 -1
- package/dist/esm/helpers/createMediaStyle.native.js +9 -6
- package/dist/esm/helpers/createMediaStyle.native.js.map +1 -1
- package/dist/esm/helpers/createStyledContext.mjs +12 -8
- package/dist/esm/helpers/createStyledContext.mjs.map +1 -1
- package/dist/esm/helpers/createStyledContext.native.js +11 -7
- package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
- package/dist/esm/helpers/defaultAnimationDriver.mjs +0 -2
- package/dist/esm/helpers/defaultAnimationDriver.mjs.map +1 -1
- package/dist/esm/helpers/defaultAnimationDriver.native.js +0 -2
- package/dist/esm/helpers/defaultAnimationDriver.native.js.map +1 -1
- package/dist/esm/helpers/expandStyle.mjs +0 -1
- package/dist/esm/helpers/expandStyle.mjs.map +1 -1
- package/dist/esm/helpers/expandStyle.native.js +9 -1
- package/dist/esm/helpers/expandStyle.native.js.map +1 -1
- package/dist/esm/helpers/getCSSStylesAtomic.mjs +8 -8
- package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
- package/dist/esm/helpers/getDefaultProps.mjs +3 -9
- package/dist/esm/helpers/getDefaultProps.mjs.map +1 -1
- package/dist/esm/helpers/getDefaultProps.native.js +3 -4
- package/dist/esm/helpers/getDefaultProps.native.js.map +1 -1
- package/dist/esm/helpers/getGroupPropParts.mjs +1 -1
- package/dist/esm/helpers/getGroupPropParts.native.js +1 -1
- package/dist/esm/helpers/getSplitStyles.mjs +59 -29
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.native.js +113 -77
- package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/esm/helpers/getThemeCSSRules.mjs +17 -9
- package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
- package/dist/esm/helpers/getTokenForKey.mjs +101 -0
- package/dist/esm/helpers/getTokenForKey.mjs.map +1 -0
- package/dist/esm/helpers/getTokenForKey.native.js +116 -0
- package/dist/esm/helpers/getTokenForKey.native.js.map +1 -0
- package/dist/esm/helpers/insertStyleRule.mjs +1 -1
- package/dist/esm/helpers/insertStyleRule.native.js +1 -1
- package/dist/esm/helpers/mainThreadPressEvents.native.js +1 -1
- package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
- package/dist/esm/helpers/mediaObjectToString.mjs +12 -0
- package/dist/esm/helpers/mediaObjectToString.mjs.map +1 -0
- package/dist/esm/helpers/mediaObjectToString.native.js +17 -0
- package/dist/esm/helpers/mediaObjectToString.native.js.map +1 -0
- package/dist/esm/helpers/mediaState.mjs +18 -0
- package/dist/esm/helpers/mediaState.mjs.map +1 -0
- package/dist/esm/helpers/mediaState.native.js +20 -0
- package/dist/esm/helpers/mediaState.native.js.map +1 -0
- package/dist/esm/helpers/normalizeColor.mjs +6 -1
- package/dist/esm/helpers/normalizeColor.mjs.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 +2 -1
- package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
- package/dist/esm/helpers/parseNativeStyle.mjs +110 -0
- package/dist/esm/helpers/parseNativeStyle.mjs.map +1 -0
- package/dist/esm/helpers/parseNativeStyle.native.js +125 -0
- package/dist/esm/helpers/parseNativeStyle.native.js.map +1 -0
- package/dist/esm/helpers/parseOutlineShorthand.mjs +3 -0
- package/dist/esm/helpers/parseOutlineShorthand.mjs.map +1 -0
- package/dist/esm/helpers/parseOutlineShorthand.native.js +32 -0
- package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -0
- package/dist/esm/helpers/platformResolveValue.mjs +10 -0
- package/dist/esm/helpers/platformResolveValue.mjs.map +1 -0
- package/dist/esm/helpers/platformResolveValue.native.js +36 -0
- package/dist/esm/helpers/platformResolveValue.native.js.map +1 -0
- package/dist/esm/helpers/propMapper.mjs +24 -96
- package/dist/esm/helpers/propMapper.mjs.map +1 -1
- package/dist/esm/helpers/propMapper.native.js +60 -107
- package/dist/esm/helpers/propMapper.native.js.map +1 -1
- package/dist/esm/helpers/pseudoTransitions.mjs +41 -0
- package/dist/esm/helpers/pseudoTransitions.mjs.map +1 -0
- package/dist/esm/helpers/pseudoTransitions.native.js +45 -0
- package/dist/esm/helpers/pseudoTransitions.native.js.map +1 -0
- package/dist/esm/helpers/resolveAnimationDriver.mjs +5 -0
- package/dist/esm/helpers/resolveAnimationDriver.mjs.map +1 -0
- package/dist/esm/helpers/resolveAnimationDriver.native.js +6 -0
- package/dist/esm/helpers/resolveAnimationDriver.native.js.map +1 -0
- package/dist/esm/helpers/resolveCompoundTokens.mjs +14 -0
- package/dist/esm/helpers/resolveCompoundTokens.mjs.map +1 -0
- package/dist/esm/helpers/resolveCompoundTokens.native.js +14 -0
- package/dist/esm/helpers/resolveCompoundTokens.native.js.map +1 -0
- package/dist/esm/helpers/skipProps.mjs +1 -1
- package/dist/esm/helpers/skipProps.mjs.map +1 -1
- package/dist/esm/helpers/skipProps.native.js +1 -1
- package/dist/esm/helpers/skipProps.native.js.map +1 -1
- package/dist/esm/helpers/themeable.mjs +4 -2
- package/dist/esm/helpers/themeable.mjs.map +1 -1
- package/dist/esm/helpers/themeable.native.js +4 -2
- package/dist/esm/helpers/themeable.native.js.map +1 -1
- package/dist/esm/helpers/useRenderElement.mjs.map +1 -1
- package/dist/esm/helpers/useRenderElement.native.js +1 -1
- package/dist/esm/helpers/useRenderElement.native.js.map +1 -1
- package/dist/esm/helpers/wrapStyleTags.native.js +0 -2
- package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -1
- package/dist/esm/hooks/getThemeProxied.mjs +0 -3
- package/dist/esm/hooks/getThemeProxied.mjs.map +1 -1
- package/dist/esm/hooks/useComponentState.mjs +9 -5
- package/dist/esm/hooks/useComponentState.mjs.map +1 -1
- package/dist/esm/hooks/useComponentState.native.js +10 -6
- package/dist/esm/hooks/useComponentState.native.js.map +1 -1
- package/dist/esm/hooks/useMedia.mjs +21 -39
- package/dist/esm/hooks/useMedia.mjs.map +1 -1
- package/dist/esm/hooks/useMedia.native.js +22 -47
- package/dist/esm/hooks/useMedia.native.js.map +1 -1
- package/dist/esm/hooks/useProps.mjs +2 -1
- package/dist/esm/hooks/useProps.mjs.map +1 -1
- package/dist/esm/hooks/useProps.native.js +2 -1
- package/dist/esm/hooks/useProps.native.js.map +1 -1
- package/dist/esm/hooks/useTheme.mjs +4 -0
- package/dist/esm/hooks/useTheme.mjs.map +1 -1
- package/dist/esm/hooks/useTheme.native.js +4 -0
- package/dist/esm/hooks/useTheme.native.js.map +1 -1
- package/dist/esm/hooks/useThemeState.mjs +30 -13
- package/dist/esm/hooks/useThemeState.mjs.map +1 -1
- package/dist/esm/hooks/useThemeState.native.js +28 -12
- package/dist/esm/hooks/useThemeState.native.js.map +1 -1
- package/dist/esm/index.js +67 -107
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/index.mjs +5 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +5 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/insertFont.native.js +0 -1
- package/dist/esm/insertFont.native.js.map +1 -1
- package/dist/esm/styled.mjs.map +1 -1
- package/dist/esm/styled.native.js.map +1 -1
- package/dist/esm/views/TamaguiProvider.mjs +21 -34
- package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
- package/dist/esm/views/TamaguiProvider.native.js +28 -40
- package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
- package/dist/esm/views/TamaguiRoot.mjs +34 -0
- package/dist/esm/views/TamaguiRoot.mjs.map +1 -0
- package/dist/esm/views/TamaguiRoot.native.js +5 -0
- package/dist/esm/views/TamaguiRoot.native.js.map +1 -0
- package/dist/esm/views/Text.mjs +1 -9
- package/dist/esm/views/Text.mjs.map +1 -1
- package/dist/esm/views/Text.native.js +0 -1
- package/dist/esm/views/Text.native.js.map +1 -1
- package/dist/esm/views/Theme.mjs +2 -0
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +2 -0
- package/dist/esm/views/Theme.native.js.map +1 -1
- package/dist/esm/views/ThemeProvider.mjs +3 -1
- package/dist/esm/views/ThemeProvider.mjs.map +1 -1
- package/dist/esm/views/ThemeProvider.native.js +2 -2
- package/dist/esm/views/ThemeProvider.native.js.map +1 -1
- package/dist/esm/views/View.mjs +0 -2
- package/dist/esm/views/View.mjs.map +1 -1
- package/dist/esm/views/View.native.js +0 -2
- package/dist/esm/views/View.native.js.map +1 -1
- package/inject-styles/index.cjs +2 -0
- package/inject-styles/index.js +2 -0
- package/inject-styles.cjs +1 -0
- package/package.json +21 -27
- package/src/Tamagui.ts +1 -1
- package/src/_withStableStyle.tsx +44 -16
- package/src/animationDriverTypes.test-d.ts +76 -0
- package/src/config.ts +5 -1
- package/src/constants/constants.ts +0 -17
- package/src/createComponent.tsx +224 -93
- package/src/createTamagui.ts +20 -11
- package/src/createVariable.ts +1 -1
- package/src/eventHandling.native.ts +78 -50
- package/src/eventHandling.ts +2 -1
- package/src/helpers/createDesignSystem.ts +77 -6
- package/src/helpers/createMediaStyle.ts +12 -4
- package/src/helpers/createStyledContext.tsx +27 -18
- package/src/helpers/defaultAnimationDriver.tsx +0 -2
- package/src/helpers/expandStyle.ts +11 -0
- package/src/helpers/getCSSStylesAtomic.ts +13 -14
- package/src/helpers/getDefaultProps.ts +4 -15
- package/src/helpers/getGroupPropParts.ts +1 -1
- package/src/helpers/getSplitStyles.tsx +174 -40
- package/src/helpers/getThemeCSSRules.ts +16 -14
- package/src/helpers/getTokenForKey.ts +223 -0
- package/src/helpers/insertStyleRule.tsx +1 -1
- package/src/helpers/mainThreadPressEvents.native.ts +2 -1
- package/src/helpers/mediaObjectToString.ts +30 -0
- package/src/helpers/mediaState.ts +32 -0
- package/src/helpers/normalizeColor.ts +12 -8
- package/src/helpers/normalizeValueWithProperty.ts +8 -1
- package/src/helpers/parseNativeStyle.ts +193 -0
- package/src/helpers/parseOutlineShorthand.native.ts +62 -0
- package/src/helpers/parseOutlineShorthand.ts +6 -0
- package/src/helpers/platformResolveValue.native.ts +72 -0
- package/src/helpers/platformResolveValue.ts +22 -0
- package/src/helpers/propMapper.ts +65 -221
- package/src/helpers/pseudoTransitions.ts +97 -0
- package/src/helpers/resolveAnimationDriver.ts +23 -0
- package/src/helpers/resolveCompoundTokens.ts +28 -0
- package/src/helpers/skipProps.ts +1 -0
- package/src/helpers/themeable.tsx +7 -5
- package/src/helpers/useRenderElement.tsx +7 -0
- package/src/hooks/useComponentState.ts +11 -8
- package/src/hooks/useMedia.tsx +28 -75
- package/src/hooks/useProps.tsx +2 -1
- package/src/hooks/useTheme.tsx +4 -0
- package/src/hooks/useThemeState.ts +57 -14
- package/src/index.ts +4 -4
- package/src/styled.tsx +2 -2
- package/src/types.tsx +205 -57
- package/src/views/TamaguiProvider.tsx +35 -54
- package/src/views/TamaguiRoot.native.tsx +9 -0
- package/src/views/TamaguiRoot.tsx +64 -0
- package/src/views/Text.tsx +1 -9
- package/src/views/Theme.tsx +2 -0
- package/src/views/ThemeProvider.tsx +3 -1
- package/src/views/View.tsx +0 -2
- package/tsconfig.json +44 -0
- package/tsconfig.test.json +9 -0
- package/types/_withStableStyle.d.ts +1 -1
- package/types/_withStableStyle.d.ts.map +1 -1
- package/types/config.d.ts.map +1 -1
- package/types/constants/constants.d.ts +0 -3
- package/types/constants/constants.d.ts.map +1 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/createTamagui.d.ts.map +1 -1
- package/types/createVariable.d.ts +1 -1
- package/types/createVariable.d.ts.map +1 -1
- package/types/eventHandling.d.ts +1 -1
- package/types/eventHandling.d.ts.map +1 -1
- package/types/eventHandling.native.d.ts +1 -1
- package/types/eventHandling.native.d.ts.map +1 -1
- package/types/helpers/createDesignSystem.d.ts +5 -2
- package/types/helpers/createDesignSystem.d.ts.map +1 -1
- package/types/helpers/createMediaStyle.d.ts.map +1 -1
- package/types/helpers/createStyledContext.d.ts +1 -1
- package/types/helpers/createStyledContext.d.ts.map +1 -1
- package/types/helpers/defaultAnimationDriver.d.ts.map +1 -1
- package/types/helpers/expandStyle.d.ts.map +1 -1
- package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
- package/types/helpers/getDefaultProps.d.ts +1 -1
- package/types/helpers/getDefaultProps.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts +2 -2
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
- package/types/helpers/getTokenForKey.d.ts +6 -0
- package/types/helpers/getTokenForKey.d.ts.map +1 -0
- package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
- package/types/helpers/mediaObjectToString.d.ts +3 -0
- package/types/helpers/mediaObjectToString.d.ts.map +1 -0
- package/types/helpers/mediaState.d.ts +7 -0
- package/types/helpers/mediaState.d.ts.map +1 -0
- package/types/helpers/normalizeColor.d.ts +1 -1
- package/types/helpers/normalizeColor.d.ts.map +1 -1
- package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
- package/types/helpers/parseNativeStyle.d.ts +14 -0
- package/types/helpers/parseNativeStyle.d.ts.map +1 -0
- package/types/helpers/parseOutlineShorthand.d.ts +3 -0
- package/types/helpers/parseOutlineShorthand.d.ts.map +1 -0
- package/types/helpers/parseOutlineShorthand.native.d.ts +3 -0
- package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -0
- package/types/helpers/platformResolveValue.d.ts +6 -0
- package/types/helpers/platformResolveValue.d.ts.map +1 -0
- package/types/helpers/platformResolveValue.native.d.ts +7 -0
- package/types/helpers/platformResolveValue.native.d.ts.map +1 -0
- package/types/helpers/propMapper.d.ts +2 -2
- package/types/helpers/propMapper.d.ts.map +1 -1
- package/types/helpers/pseudoTransitions.d.ts +29 -0
- package/types/helpers/pseudoTransitions.d.ts.map +1 -0
- package/types/helpers/resolveAnimationDriver.d.ts +7 -0
- package/types/helpers/resolveAnimationDriver.d.ts.map +1 -0
- package/types/helpers/resolveCompoundTokens.d.ts +9 -0
- package/types/helpers/resolveCompoundTokens.d.ts.map +1 -0
- package/types/helpers/skipProps.d.ts +1 -0
- package/types/helpers/skipProps.d.ts.map +1 -1
- package/types/helpers/themeable.d.ts.map +1 -1
- package/types/helpers/useRenderElement.d.ts.map +1 -1
- package/types/helpers/webPropsToSkip.native.d.ts +20 -20
- package/types/hooks/useComponentState.d.ts +2 -1
- package/types/hooks/useComponentState.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts +1 -6
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useProps.d.ts.map +1 -1
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/hooks/useThemeState.d.ts.map +1 -1
- package/types/index.d.ts +5 -1
- package/types/index.d.ts.map +1 -1
- package/types/styled.d.ts +2 -2
- package/types/styled.d.ts.map +1 -1
- package/types/types.d.ts +105 -30
- package/types/types.d.ts.map +1 -1
- package/types/views/TamaguiProvider.d.ts +1 -4
- package/types/views/TamaguiProvider.d.ts.map +1 -1
- package/types/views/TamaguiRoot.d.ts +15 -0
- package/types/views/TamaguiRoot.d.ts.map +1 -0
- package/types/views/TamaguiRoot.native.d.ts +7 -0
- package/types/views/TamaguiRoot.native.d.ts.map +1 -0
- package/types/views/Text.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
- package/types/views/ThemeProvider.d.ts.map +1 -1
- package/types/views/View.d.ts.map +1 -1
- package/vitest.config.d.ts +3 -0
- package/vitest.config.d.ts.map +1 -0
- package/vitest.config.ts +14 -0
- package/dist/cjs/Tamagui.js +0 -56
- package/dist/cjs/Tamagui.js.map +0 -6
- package/dist/cjs/_withStableStyle.js +0 -33
- package/dist/cjs/_withStableStyle.js.map +0 -6
- package/dist/cjs/animationDriverTypes.test-d.js +0 -51
- package/dist/cjs/animationDriverTypes.test-d.js.map +0 -6
- package/dist/cjs/config.js +0 -109
- package/dist/cjs/config.js.map +0 -6
- package/dist/cjs/constants/accessibilityDirectMap.js +0 -25
- package/dist/cjs/constants/accessibilityDirectMap.js.map +0 -6
- package/dist/cjs/constants/constants.js +0 -43
- package/dist/cjs/constants/constants.js.map +0 -6
- package/dist/cjs/constants/isDevTools.js +0 -28
- package/dist/cjs/constants/isDevTools.js.map +0 -6
- package/dist/cjs/constants/webToNativeProps.js +0 -22
- package/dist/cjs/constants/webToNativeProps.js.map +0 -6
- package/dist/cjs/constants/webToNativeProps.native.js +0 -115
- package/dist/cjs/constants/webToNativeProps.native.js.map +0 -1
- package/dist/cjs/contexts/ComponentContext.js +0 -30
- package/dist/cjs/contexts/ComponentContext.js.map +0 -6
- package/dist/cjs/contexts/GroupContext.js +0 -22
- package/dist/cjs/contexts/GroupContext.js.map +0 -6
- package/dist/cjs/createComponent.js +0 -697
- package/dist/cjs/createComponent.js.map +0 -6
- package/dist/cjs/createFont.js +0 -53
- package/dist/cjs/createFont.js.map +0 -6
- package/dist/cjs/createShorthands.js +0 -23
- package/dist/cjs/createShorthands.js.map +0 -6
- package/dist/cjs/createTamagui.js +0 -190
- package/dist/cjs/createTamagui.js.map +0 -6
- package/dist/cjs/createTheme.js +0 -21
- package/dist/cjs/createTheme.js.map +0 -6
- package/dist/cjs/createTheme.native.js.map +0 -1
- package/dist/cjs/createTokens.js +0 -24
- package/dist/cjs/createTokens.js.map +0 -6
- package/dist/cjs/createVariable.js +0 -89
- package/dist/cjs/createVariable.js.map +0 -6
- package/dist/cjs/createVariables.js +0 -56
- package/dist/cjs/createVariables.js.map +0 -6
- package/dist/cjs/defaultComponentState.js +0 -38
- package/dist/cjs/defaultComponentState.js.map +0 -6
- package/dist/cjs/eventHandling.js +0 -41
- package/dist/cjs/eventHandling.js.map +0 -6
- package/dist/cjs/helpers/createDesignSystem.js +0 -120
- package/dist/cjs/helpers/createDesignSystem.js.map +0 -6
- package/dist/cjs/helpers/createMediaStyle.js +0 -74
- package/dist/cjs/helpers/createMediaStyle.js.map +0 -6
- package/dist/cjs/helpers/createStyledContext.js +0 -52
- package/dist/cjs/helpers/createStyledContext.js.map +0 -6
- package/dist/cjs/helpers/defaultAnimationDriver.js +0 -39
- package/dist/cjs/helpers/defaultAnimationDriver.js.map +0 -6
- package/dist/cjs/helpers/defaultOffset.js +0 -21
- package/dist/cjs/helpers/defaultOffset.js.map +0 -6
- package/dist/cjs/helpers/expandStyle.js +0 -73
- package/dist/cjs/helpers/expandStyle.js.map +0 -6
- package/dist/cjs/helpers/expandStyles.js +0 -34
- package/dist/cjs/helpers/expandStyles.js.map +0 -6
- package/dist/cjs/helpers/getCSSStylesAtomic.js +0 -156
- package/dist/cjs/helpers/getCSSStylesAtomic.js.map +0 -6
- package/dist/cjs/helpers/getDefaultProps.js +0 -31
- package/dist/cjs/helpers/getDefaultProps.js.map +0 -6
- package/dist/cjs/helpers/getDynamicVal.js +0 -62
- package/dist/cjs/helpers/getDynamicVal.js.map +0 -6
- package/dist/cjs/helpers/getExpandedShorthands.js +0 -34
- package/dist/cjs/helpers/getExpandedShorthands.js.map +0 -6
- package/dist/cjs/helpers/getFontLanguage.js +0 -21
- package/dist/cjs/helpers/getFontLanguage.js.map +0 -6
- package/dist/cjs/helpers/getGroupPropParts.js +0 -34
- package/dist/cjs/helpers/getGroupPropParts.js.map +0 -6
- package/dist/cjs/helpers/getShorthandValue.js +0 -23
- package/dist/cjs/helpers/getShorthandValue.js.map +0 -6
- package/dist/cjs/helpers/getSplitStyles.js +0 -630
- package/dist/cjs/helpers/getSplitStyles.js.map +0 -6
- package/dist/cjs/helpers/getThemeCSSRules.js +0 -89
- package/dist/cjs/helpers/getThemeCSSRules.js.map +0 -6
- package/dist/cjs/helpers/getVariantExtras.js +0 -59
- package/dist/cjs/helpers/getVariantExtras.js.map +0 -6
- package/dist/cjs/helpers/insertStyleRule.js +0 -196
- package/dist/cjs/helpers/insertStyleRule.js.map +0 -6
- package/dist/cjs/helpers/isActivePlatform.js +0 -31
- package/dist/cjs/helpers/isActivePlatform.js.map +0 -6
- package/dist/cjs/helpers/isActiveTheme.js +0 -24
- package/dist/cjs/helpers/isActiveTheme.js.map +0 -6
- package/dist/cjs/helpers/isObj.js +0 -21
- package/dist/cjs/helpers/isObj.js.map +0 -6
- package/dist/cjs/helpers/isTamaguiComponent.js +0 -24
- package/dist/cjs/helpers/isTamaguiComponent.js.map +0 -6
- package/dist/cjs/helpers/isTamaguiElement.js +0 -30
- package/dist/cjs/helpers/isTamaguiElement.js.map +0 -6
- package/dist/cjs/helpers/log.js +0 -33
- package/dist/cjs/helpers/log.js.map +0 -6
- package/dist/cjs/helpers/mainThreadPressEvents.js +0 -22
- package/dist/cjs/helpers/mainThreadPressEvents.js.map +0 -6
- package/dist/cjs/helpers/matchMedia.js +0 -34
- package/dist/cjs/helpers/matchMedia.js.map +0 -6
- package/dist/cjs/helpers/mergeProps.js +0 -55
- package/dist/cjs/helpers/mergeProps.js.map +0 -6
- package/dist/cjs/helpers/mergeRenderElementProps.js +0 -25
- package/dist/cjs/helpers/mergeRenderElementProps.js.map +0 -6
- package/dist/cjs/helpers/mergeSlotStyleProps.js +0 -29
- package/dist/cjs/helpers/mergeSlotStyleProps.js.map +0 -6
- package/dist/cjs/helpers/mergeVariants.js +0 -38
- package/dist/cjs/helpers/mergeVariants.js.map +0 -6
- package/dist/cjs/helpers/nativeOnlyProps.js +0 -55
- package/dist/cjs/helpers/nativeOnlyProps.js.map +0 -6
- package/dist/cjs/helpers/normalizeColor.js +0 -26
- package/dist/cjs/helpers/normalizeColor.js.map +0 -6
- package/dist/cjs/helpers/normalizeShadow.js +0 -40
- package/dist/cjs/helpers/normalizeShadow.js.map +0 -6
- package/dist/cjs/helpers/normalizeStyle.js +0 -36
- package/dist/cjs/helpers/normalizeStyle.js.map +0 -6
- package/dist/cjs/helpers/normalizeStylePropKeys.js +0 -21
- package/dist/cjs/helpers/normalizeStylePropKeys.js.map +0 -6
- package/dist/cjs/helpers/normalizeValueWithProperty.js +0 -32
- package/dist/cjs/helpers/normalizeValueWithProperty.js.map +0 -6
- package/dist/cjs/helpers/objectIdentityKey.js +0 -38
- package/dist/cjs/helpers/objectIdentityKey.js.map +0 -6
- package/dist/cjs/helpers/parseBorderShorthand.js +0 -22
- package/dist/cjs/helpers/parseBorderShorthand.js.map +0 -6
- package/dist/cjs/helpers/pointerEvents.js +0 -22
- package/dist/cjs/helpers/pointerEvents.js.map +0 -6
- package/dist/cjs/helpers/propMapper.js +0 -257
- package/dist/cjs/helpers/propMapper.js.map +0 -6
- package/dist/cjs/helpers/proxyThemeToParents.js +0 -40
- package/dist/cjs/helpers/proxyThemeToParents.js.map +0 -6
- package/dist/cjs/helpers/proxyThemeVariables.js +0 -31
- package/dist/cjs/helpers/proxyThemeVariables.js.map +0 -6
- package/dist/cjs/helpers/pseudoDescriptors.js +0 -72
- package/dist/cjs/helpers/pseudoDescriptors.js.map +0 -6
- package/dist/cjs/helpers/registerCSSVariable.js +0 -47
- package/dist/cjs/helpers/registerCSSVariable.js.map +0 -6
- package/dist/cjs/helpers/resolveRem.js +0 -27
- package/dist/cjs/helpers/resolveRem.js.map +0 -6
- package/dist/cjs/helpers/resolveSafeArea.js +0 -29
- package/dist/cjs/helpers/resolveSafeArea.js.map +0 -6
- package/dist/cjs/helpers/setElementProps.js +0 -24
- package/dist/cjs/helpers/setElementProps.js.map +0 -6
- package/dist/cjs/helpers/skipProps.js +0 -38
- package/dist/cjs/helpers/skipProps.js.map +0 -6
- package/dist/cjs/helpers/sortString.js +0 -21
- package/dist/cjs/helpers/sortString.js.map +0 -6
- package/dist/cjs/helpers/subscribeToContextGroup.js +0 -74
- package/dist/cjs/helpers/subscribeToContextGroup.js.map +0 -6
- package/dist/cjs/helpers/themeable.js +0 -56
- package/dist/cjs/helpers/themeable.js.map +0 -6
- package/dist/cjs/helpers/themes.js +0 -33
- package/dist/cjs/helpers/themes.js.map +0 -6
- package/dist/cjs/helpers/timer.js +0 -27
- package/dist/cjs/helpers/timer.js.map +0 -6
- package/dist/cjs/helpers/transformsToString.js +0 -33
- package/dist/cjs/helpers/transformsToString.js.map +0 -6
- package/dist/cjs/helpers/useRenderElement.js +0 -42
- package/dist/cjs/helpers/useRenderElement.js.map +0 -6
- package/dist/cjs/helpers/webPropsToSkip.js +0 -21
- package/dist/cjs/helpers/webPropsToSkip.js.map +0 -6
- package/dist/cjs/helpers/wrapStyleTags.js +0 -38
- package/dist/cjs/helpers/wrapStyleTags.js.map +0 -6
- package/dist/cjs/hooks/doesRootSchemeMatchSystem.js +0 -23
- package/dist/cjs/hooks/doesRootSchemeMatchSystem.js.map +0 -6
- package/dist/cjs/hooks/getThemeProxied.js +0 -56
- package/dist/cjs/hooks/getThemeProxied.js.map +0 -6
- package/dist/cjs/hooks/useComponentState.js +0 -96
- package/dist/cjs/hooks/useComponentState.js.map +0 -6
- package/dist/cjs/hooks/useDisableSSR.js +0 -24
- package/dist/cjs/hooks/useDisableSSR.js.map +0 -6
- package/dist/cjs/hooks/useIsTouchDevice.js +0 -22
- package/dist/cjs/hooks/useIsTouchDevice.js.map +0 -6
- package/dist/cjs/hooks/useMedia.js +0 -183
- package/dist/cjs/hooks/useMedia.js.map +0 -6
- package/dist/cjs/hooks/useProps.js +0 -106
- package/dist/cjs/hooks/useProps.js.map +0 -6
- package/dist/cjs/hooks/useTheme.js +0 -35
- package/dist/cjs/hooks/useTheme.js.map +0 -6
- package/dist/cjs/hooks/useThemeName.js +0 -25
- package/dist/cjs/hooks/useThemeName.js.map +0 -6
- package/dist/cjs/hooks/useThemeState.js +0 -218
- package/dist/cjs/hooks/useThemeState.js.map +0 -6
- package/dist/cjs/inject-styles.js +0 -28
- package/dist/cjs/inject-styles.js.map +0 -6
- package/dist/cjs/insertFont.js +0 -68
- package/dist/cjs/insertFont.js.map +0 -6
- package/dist/cjs/interfaces/CSSColorNames.js +0 -14
- package/dist/cjs/interfaces/CSSColorNames.js.map +0 -6
- package/dist/cjs/interfaces/GetRef.js +0 -14
- package/dist/cjs/interfaces/GetRef.js.map +0 -6
- package/dist/cjs/interfaces/RNExclusiveTypes.js +0 -14
- package/dist/cjs/interfaces/RNExclusiveTypes.js.map +0 -6
- package/dist/cjs/interfaces/TamaguiComponentEvents.js +0 -14
- package/dist/cjs/interfaces/TamaguiComponentEvents.js.map +0 -6
- package/dist/cjs/interfaces/TamaguiComponentPropsBaseBase.js +0 -14
- package/dist/cjs/interfaces/TamaguiComponentPropsBaseBase.js.map +0 -6
- package/dist/cjs/setupHooks.js +0 -25
- package/dist/cjs/setupHooks.js.map +0 -6
- package/dist/cjs/setupReactNative.js +0 -43
- package/dist/cjs/setupReactNative.js.map +0 -6
- package/dist/cjs/styled.js +0 -116
- package/dist/cjs/styled.js.map +0 -6
- package/dist/cjs/styledHtml.test-d.js +0 -136
- package/dist/cjs/styledHtml.test-d.js.map +0 -6
- package/dist/cjs/type-utils.js +0 -14
- package/dist/cjs/type-utils.js.map +0 -6
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/cjs/views/Configuration.js +0 -33
- package/dist/cjs/views/Configuration.js.map +0 -6
- package/dist/cjs/views/FontLanguage.js +0 -32
- package/dist/cjs/views/FontLanguage.js.map +0 -6
- package/dist/cjs/views/Slot.js +0 -55
- package/dist/cjs/views/Slot.js.map +0 -6
- package/dist/cjs/views/Stack.js +0 -27
- package/dist/cjs/views/Stack.js.map +0 -6
- package/dist/cjs/views/Stack.native.js.map +0 -1
- package/dist/cjs/views/TamaguiProvider.js +0 -93
- package/dist/cjs/views/TamaguiProvider.js.map +0 -6
- package/dist/cjs/views/Text.js +0 -59
- package/dist/cjs/views/Text.js.map +0 -6
- package/dist/cjs/views/Theme.js +0 -124
- package/dist/cjs/views/Theme.js.map +0 -6
- package/dist/cjs/views/ThemeDebug.js +0 -81
- package/dist/cjs/views/ThemeDebug.js.map +0 -6
- package/dist/cjs/views/ThemeProvider.js +0 -42
- package/dist/cjs/views/ThemeProvider.js.map +0 -6
- package/dist/cjs/views/View.js +0 -26
- package/dist/cjs/views/View.js.map +0 -6
- package/dist/esm/Tamagui.js +0 -35
- package/dist/esm/Tamagui.js.map +0 -6
- package/dist/esm/_withStableStyle.js +0 -12
- package/dist/esm/_withStableStyle.js.map +0 -6
- package/dist/esm/animationDriverTypes.test-d.js +0 -51
- package/dist/esm/animationDriverTypes.test-d.js.map +0 -6
- package/dist/esm/config.js +0 -94
- package/dist/esm/config.js.map +0 -6
- package/dist/esm/constants/accessibilityDirectMap.js +0 -9
- package/dist/esm/constants/accessibilityDirectMap.js.map +0 -6
- package/dist/esm/constants/constants.js +0 -27
- package/dist/esm/constants/constants.js.map +0 -6
- package/dist/esm/constants/isDevTools.js +0 -12
- package/dist/esm/constants/isDevTools.js.map +0 -6
- package/dist/esm/constants/webToNativeProps.js +0 -6
- package/dist/esm/constants/webToNativeProps.js.map +0 -6
- package/dist/esm/constants/webToNativeProps.mjs +0 -4
- package/dist/esm/constants/webToNativeProps.mjs.map +0 -1
- package/dist/esm/constants/webToNativeProps.native.js +0 -88
- package/dist/esm/constants/webToNativeProps.native.js.map +0 -1
- package/dist/esm/contexts/ComponentContext.js +0 -15
- package/dist/esm/contexts/ComponentContext.js.map +0 -6
- package/dist/esm/contexts/GroupContext.js +0 -6
- package/dist/esm/contexts/GroupContext.js.map +0 -6
- package/dist/esm/createComponent.js +0 -702
- package/dist/esm/createComponent.js.map +0 -6
- package/dist/esm/createFont.js +0 -37
- package/dist/esm/createFont.js.map +0 -6
- package/dist/esm/createShorthands.js +0 -7
- package/dist/esm/createShorthands.js.map +0 -6
- package/dist/esm/createTamagui.js +0 -189
- package/dist/esm/createTamagui.js.map +0 -6
- package/dist/esm/createTheme.js +0 -5
- package/dist/esm/createTheme.js.map +0 -6
- package/dist/esm/createTheme.mjs +0 -3
- package/dist/esm/createTheme.mjs.map +0 -1
- package/dist/esm/createTheme.native.js +0 -5
- package/dist/esm/createTheme.native.js.map +0 -1
- package/dist/esm/createTokens.js +0 -8
- package/dist/esm/createTokens.js.map +0 -6
- package/dist/esm/createVariable.js +0 -75
- package/dist/esm/createVariable.js.map +0 -6
- package/dist/esm/createVariables.js +0 -42
- package/dist/esm/createVariables.js.map +0 -6
- package/dist/esm/defaultComponentState.js +0 -22
- package/dist/esm/defaultComponentState.js.map +0 -6
- package/dist/esm/eventHandling.js +0 -25
- package/dist/esm/eventHandling.js.map +0 -6
- package/dist/esm/helpers/createDesignSystem.js +0 -107
- package/dist/esm/helpers/createDesignSystem.js.map +0 -6
- package/dist/esm/helpers/createMediaStyle.js +0 -60
- package/dist/esm/helpers/createMediaStyle.js.map +0 -6
- package/dist/esm/helpers/createStyledContext.js +0 -31
- package/dist/esm/helpers/createStyledContext.js.map +0 -6
- package/dist/esm/helpers/defaultAnimationDriver.js +0 -23
- package/dist/esm/helpers/defaultAnimationDriver.js.map +0 -6
- package/dist/esm/helpers/defaultOffset.js +0 -5
- package/dist/esm/helpers/defaultOffset.js.map +0 -6
- package/dist/esm/helpers/expandStyle.js +0 -59
- package/dist/esm/helpers/expandStyle.js.map +0 -6
- package/dist/esm/helpers/expandStyles.js +0 -19
- package/dist/esm/helpers/expandStyles.js.map +0 -6
- package/dist/esm/helpers/getCSSStylesAtomic.js +0 -147
- package/dist/esm/helpers/getCSSStylesAtomic.js.map +0 -6
- package/dist/esm/helpers/getDefaultProps.js +0 -15
- package/dist/esm/helpers/getDefaultProps.js.map +0 -6
- package/dist/esm/helpers/getDynamicVal.js +0 -46
- package/dist/esm/helpers/getDynamicVal.js.map +0 -6
- package/dist/esm/helpers/getExpandedShorthands.js +0 -18
- package/dist/esm/helpers/getExpandedShorthands.js.map +0 -6
- package/dist/esm/helpers/getFontLanguage.js +0 -5
- package/dist/esm/helpers/getFontLanguage.js.map +0 -6
- package/dist/esm/helpers/getGroupPropParts.js +0 -19
- package/dist/esm/helpers/getGroupPropParts.js.map +0 -6
- package/dist/esm/helpers/getShorthandValue.js +0 -7
- package/dist/esm/helpers/getShorthandValue.js.map +0 -6
- package/dist/esm/helpers/getSplitStyles.js +0 -650
- package/dist/esm/helpers/getSplitStyles.js.map +0 -6
- package/dist/esm/helpers/getThemeCSSRules.js +0 -78
- package/dist/esm/helpers/getThemeCSSRules.js.map +0 -6
- package/dist/esm/helpers/getVariantExtras.js +0 -44
- package/dist/esm/helpers/getVariantExtras.js.map +0 -6
- package/dist/esm/helpers/insertStyleRule.js +0 -181
- package/dist/esm/helpers/insertStyleRule.js.map +0 -6
- package/dist/esm/helpers/isActivePlatform.js +0 -15
- package/dist/esm/helpers/isActivePlatform.js.map +0 -6
- package/dist/esm/helpers/isActiveTheme.js +0 -8
- package/dist/esm/helpers/isActiveTheme.js.map +0 -6
- package/dist/esm/helpers/isObj.js +0 -5
- package/dist/esm/helpers/isObj.js.map +0 -6
- package/dist/esm/helpers/isTamaguiComponent.js +0 -8
- package/dist/esm/helpers/isTamaguiComponent.js.map +0 -6
- package/dist/esm/helpers/isTamaguiElement.js +0 -7
- package/dist/esm/helpers/isTamaguiElement.js.map +0 -6
- package/dist/esm/helpers/log.js +0 -17
- package/dist/esm/helpers/log.js.map +0 -6
- package/dist/esm/helpers/mainThreadPressEvents.js +0 -6
- package/dist/esm/helpers/mainThreadPressEvents.js.map +0 -6
- package/dist/esm/helpers/matchMedia.js +0 -18
- package/dist/esm/helpers/matchMedia.js.map +0 -6
- package/dist/esm/helpers/mergeProps.js +0 -39
- package/dist/esm/helpers/mergeProps.js.map +0 -6
- package/dist/esm/helpers/mergeRenderElementProps.js +0 -9
- package/dist/esm/helpers/mergeRenderElementProps.js.map +0 -6
- package/dist/esm/helpers/mergeSlotStyleProps.js +0 -14
- package/dist/esm/helpers/mergeSlotStyleProps.js.map +0 -6
- package/dist/esm/helpers/mergeVariants.js +0 -22
- package/dist/esm/helpers/mergeVariants.js.map +0 -6
- package/dist/esm/helpers/nativeOnlyProps.js +0 -39
- package/dist/esm/helpers/nativeOnlyProps.js.map +0 -6
- package/dist/esm/helpers/normalizeColor.js +0 -10
- package/dist/esm/helpers/normalizeColor.js.map +0 -6
- package/dist/esm/helpers/normalizeShadow.js +0 -24
- package/dist/esm/helpers/normalizeShadow.js.map +0 -6
- package/dist/esm/helpers/normalizeStyle.js +0 -24
- package/dist/esm/helpers/normalizeStyle.js.map +0 -6
- package/dist/esm/helpers/normalizeStylePropKeys.js +0 -5
- package/dist/esm/helpers/normalizeStylePropKeys.js.map +0 -6
- package/dist/esm/helpers/normalizeValueWithProperty.js +0 -17
- package/dist/esm/helpers/normalizeValueWithProperty.js.map +0 -6
- package/dist/esm/helpers/objectIdentityKey.js +0 -22
- package/dist/esm/helpers/objectIdentityKey.js.map +0 -6
- package/dist/esm/helpers/parseBorderShorthand.js +0 -6
- package/dist/esm/helpers/parseBorderShorthand.js.map +0 -6
- package/dist/esm/helpers/pointerEvents.js +0 -6
- package/dist/esm/helpers/pointerEvents.js.map +0 -6
- package/dist/esm/helpers/propMapper.js +0 -251
- package/dist/esm/helpers/propMapper.js.map +0 -6
- package/dist/esm/helpers/proxyThemeToParents.js +0 -24
- package/dist/esm/helpers/proxyThemeToParents.js.map +0 -6
- package/dist/esm/helpers/proxyThemeVariables.js +0 -15
- package/dist/esm/helpers/proxyThemeVariables.js.map +0 -6
- package/dist/esm/helpers/pseudoDescriptors.js +0 -56
- package/dist/esm/helpers/pseudoDescriptors.js.map +0 -6
- package/dist/esm/helpers/registerCSSVariable.js +0 -31
- package/dist/esm/helpers/registerCSSVariable.js.map +0 -6
- package/dist/esm/helpers/resolveRem.js +0 -11
- package/dist/esm/helpers/resolveRem.js.map +0 -6
- package/dist/esm/helpers/resolveSafeArea.js +0 -13
- package/dist/esm/helpers/resolveSafeArea.js.map +0 -6
- package/dist/esm/helpers/setElementProps.js +0 -8
- package/dist/esm/helpers/setElementProps.js.map +0 -6
- package/dist/esm/helpers/skipProps.js +0 -23
- package/dist/esm/helpers/skipProps.js.map +0 -6
- package/dist/esm/helpers/sortString.js +0 -5
- package/dist/esm/helpers/sortString.js.map +0 -6
- package/dist/esm/helpers/subscribeToContextGroup.js +0 -59
- package/dist/esm/helpers/subscribeToContextGroup.js.map +0 -6
- package/dist/esm/helpers/themeable.js +0 -35
- package/dist/esm/helpers/themeable.js.map +0 -6
- package/dist/esm/helpers/themes.js +0 -17
- package/dist/esm/helpers/themes.js.map +0 -6
- package/dist/esm/helpers/timer.js +0 -11
- package/dist/esm/helpers/timer.js.map +0 -6
- package/dist/esm/helpers/transformsToString.js +0 -17
- package/dist/esm/helpers/transformsToString.js.map +0 -6
- package/dist/esm/helpers/useRenderElement.js +0 -28
- package/dist/esm/helpers/useRenderElement.js.map +0 -6
- package/dist/esm/helpers/webPropsToSkip.js +0 -5
- package/dist/esm/helpers/webPropsToSkip.js.map +0 -6
- package/dist/esm/helpers/wrapStyleTags.js +0 -23
- package/dist/esm/helpers/wrapStyleTags.js.map +0 -6
- package/dist/esm/hooks/doesRootSchemeMatchSystem.js +0 -7
- package/dist/esm/hooks/doesRootSchemeMatchSystem.js.map +0 -6
- package/dist/esm/hooks/getThemeProxied.js +0 -44
- package/dist/esm/hooks/getThemeProxied.js.map +0 -6
- package/dist/esm/hooks/useComponentState.js +0 -91
- package/dist/esm/hooks/useComponentState.js.map +0 -6
- package/dist/esm/hooks/useDisableSSR.js +0 -8
- package/dist/esm/hooks/useDisableSSR.js.map +0 -6
- package/dist/esm/hooks/useIsTouchDevice.js +0 -7
- package/dist/esm/hooks/useIsTouchDevice.js.map +0 -6
- package/dist/esm/hooks/useMedia.js +0 -172
- package/dist/esm/hooks/useMedia.js.map +0 -6
- package/dist/esm/hooks/useProps.js +0 -92
- package/dist/esm/hooks/useProps.js.map +0 -6
- package/dist/esm/hooks/useTheme.js +0 -21
- package/dist/esm/hooks/useTheme.js.map +0 -6
- package/dist/esm/hooks/useThemeName.js +0 -9
- package/dist/esm/hooks/useThemeName.js.map +0 -6
- package/dist/esm/hooks/useThemeState.js +0 -212
- package/dist/esm/hooks/useThemeState.js.map +0 -6
- package/dist/esm/inject-styles.js +0 -12
- package/dist/esm/inject-styles.js.map +0 -6
- package/dist/esm/insertFont.js +0 -56
- package/dist/esm/insertFont.js.map +0 -6
- package/dist/esm/interfaces/CSSColorNames.js +0 -1
- package/dist/esm/interfaces/CSSColorNames.js.map +0 -6
- package/dist/esm/interfaces/GetRef.js +0 -1
- package/dist/esm/interfaces/GetRef.js.map +0 -6
- package/dist/esm/interfaces/RNExclusiveTypes.js +0 -1
- package/dist/esm/interfaces/RNExclusiveTypes.js.map +0 -6
- package/dist/esm/interfaces/TamaguiComponentEvents.js +0 -1
- package/dist/esm/interfaces/TamaguiComponentEvents.js.map +0 -6
- package/dist/esm/interfaces/TamaguiComponentPropsBaseBase.js +0 -1
- package/dist/esm/interfaces/TamaguiComponentPropsBaseBase.js.map +0 -6
- package/dist/esm/setupHooks.js +0 -9
- package/dist/esm/setupHooks.js.map +0 -6
- package/dist/esm/setupReactNative.js +0 -27
- package/dist/esm/setupReactNative.js.map +0 -6
- package/dist/esm/styled.js +0 -102
- package/dist/esm/styled.js.map +0 -6
- package/dist/esm/styledHtml.test-d.js +0 -137
- package/dist/esm/styledHtml.test-d.js.map +0 -6
- package/dist/esm/type-utils.js +0 -1
- package/dist/esm/type-utils.js.map +0 -6
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
- package/dist/esm/views/Configuration.js +0 -12
- package/dist/esm/views/Configuration.js.map +0 -6
- package/dist/esm/views/FontLanguage.js +0 -16
- package/dist/esm/views/FontLanguage.js.map +0 -6
- package/dist/esm/views/Slot.js +0 -43
- package/dist/esm/views/Slot.js.map +0 -6
- package/dist/esm/views/Stack.js +0 -13
- package/dist/esm/views/Stack.js.map +0 -6
- package/dist/esm/views/Stack.mjs +0 -11
- package/dist/esm/views/Stack.mjs.map +0 -1
- package/dist/esm/views/Stack.native.js +0 -11
- package/dist/esm/views/Stack.native.js.map +0 -1
- package/dist/esm/views/TamaguiProvider.js +0 -77
- package/dist/esm/views/TamaguiProvider.js.map +0 -6
- package/dist/esm/views/Text.js +0 -44
- package/dist/esm/views/Text.js.map +0 -6
- package/dist/esm/views/Theme.js +0 -110
- package/dist/esm/views/Theme.js.map +0 -6
- package/dist/esm/views/ThemeDebug.js +0 -69
- package/dist/esm/views/ThemeDebug.js.map +0 -6
- package/dist/esm/views/ThemeProvider.js +0 -31
- package/dist/esm/views/ThemeProvider.js.map +0 -6
- package/dist/esm/views/View.js +0 -12
- package/dist/esm/views/View.js.map +0 -6
- package/types/constants/webToNativeProps.d.ts.map +0 -1
- package/types/constants/webToNativeProps.native.d.ts.map +0 -1
- package/types/createTheme.d.ts.map +0 -1
- package/types/helpers/expandStyle.native.d.ts.map +0 -1
- package/types/helpers/propMapper.native.d.ts.map +0 -1
- package/types/views/Stack.d.ts.map +0 -1
package/src/createComponent.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { composeRefs } from '@tamagui/compose-refs'
|
|
2
2
|
import { isClient, isServer, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
|
|
3
|
+
import { NativeMenuContext } from '@tamagui/native'
|
|
3
4
|
import { composeEventHandlers } from '@tamagui/helpers'
|
|
4
5
|
import { isEqualShallow } from '@tamagui/is-equal-shallow'
|
|
5
|
-
import React, { useMemo } from 'react'
|
|
6
|
+
import React, { ReactElement, ReactNode, useMemo } from 'react'
|
|
6
7
|
import { devConfig, getConfig } from './config'
|
|
7
8
|
import { isDevTools } from './constants/isDevTools'
|
|
8
9
|
import { ComponentContext } from './contexts/ComponentContext'
|
|
@@ -11,12 +12,17 @@ import { didGetVariableValue, setDidGetVariableValue } from './createVariable'
|
|
|
11
12
|
import { defaultComponentStateMounted } from './defaultComponentState'
|
|
12
13
|
import { getWebEvents, useEvents, wrapWithGestureDetector } from './eventHandling'
|
|
13
14
|
import { getDefaultProps } from './helpers/getDefaultProps'
|
|
15
|
+
import { resolveAnimationDriver } from './helpers/resolveAnimationDriver'
|
|
14
16
|
import { getSplitStyles, useSplitStyles } from './helpers/getSplitStyles'
|
|
15
17
|
import { log } from './helpers/log'
|
|
16
|
-
import { usePointerEvents } from './helpers/pointerEvents'
|
|
17
18
|
import { type GenericProps, mergeComponentProps } from './helpers/mergeProps'
|
|
18
19
|
import { mergeRenderElementProps } from './helpers/mergeRenderElementProps'
|
|
19
20
|
import { objectIdentityKey } from './helpers/objectIdentityKey'
|
|
21
|
+
import { usePointerEvents } from './helpers/pointerEvents'
|
|
22
|
+
import {
|
|
23
|
+
extractPseudoState,
|
|
24
|
+
resolveEffectivePseudoTransition,
|
|
25
|
+
} from './helpers/pseudoTransitions'
|
|
20
26
|
import { setElementProps } from './helpers/setElementProps'
|
|
21
27
|
import { subscribeToContextGroup } from './helpers/subscribeToContextGroup'
|
|
22
28
|
import { themeable } from './helpers/themeable'
|
|
@@ -46,9 +52,9 @@ import type {
|
|
|
46
52
|
UseStyleEmitter,
|
|
47
53
|
UseThemeWithStateProps,
|
|
48
54
|
} from './types'
|
|
49
|
-
import type { ViewProps } from './views/View'
|
|
50
55
|
import { Slot } from './views/Slot'
|
|
51
56
|
import { getThemedChildren } from './views/Theme'
|
|
57
|
+
import type { ViewProps } from './views/View'
|
|
52
58
|
|
|
53
59
|
/**
|
|
54
60
|
* All things that need one-time setup after createTamagui is called
|
|
@@ -229,7 +235,9 @@ export function createComponent<
|
|
|
229
235
|
const { Component, isText, isHOC } = staticConfig
|
|
230
236
|
|
|
231
237
|
const component = React.forwardRef<Ref, ComponentPropTypes>((propsIn, forwardedRef) => {
|
|
232
|
-
|
|
238
|
+
'use no memo'
|
|
239
|
+
|
|
240
|
+
config = config || getConfig()
|
|
233
241
|
|
|
234
242
|
const internalID = process.env.NODE_ENV === 'development' ? React.useId() : ''
|
|
235
243
|
|
|
@@ -255,7 +263,8 @@ export function createComponent<
|
|
|
255
263
|
// test only
|
|
256
264
|
if (process.env.NODE_ENV === 'test') {
|
|
257
265
|
if (propsIn['data-test-renders']) {
|
|
258
|
-
propsIn['data-test-renders']['current']
|
|
266
|
+
propsIn['data-test-renders']['current'] =
|
|
267
|
+
propsIn['data-test-renders']['current'] ?? 0
|
|
259
268
|
propsIn['data-test-renders']['current'] += 1
|
|
260
269
|
}
|
|
261
270
|
}
|
|
@@ -273,6 +282,14 @@ export function createComponent<
|
|
|
273
282
|
const componentContext = React.useContext(ComponentContext)
|
|
274
283
|
const hasTextAncestor = !!(isWeb && isText ? componentContext.inText : false)
|
|
275
284
|
|
|
285
|
+
// On Android, skip RNGH GestureDetector inside native menus (zeego) and use
|
|
286
|
+
// direct press events instead — GestureDetector consumes touches before they
|
|
287
|
+
// reach MenuView's native handler, preventing the menu from opening
|
|
288
|
+
const isInsideNativeMenu =
|
|
289
|
+
process.env.TAMAGUI_TARGET === 'native'
|
|
290
|
+
? React.useContext(NativeMenuContext)
|
|
291
|
+
: false
|
|
292
|
+
|
|
276
293
|
if (
|
|
277
294
|
!process.env.TAMAGUI_IS_CORE_NODE &&
|
|
278
295
|
process.env.NODE_ENV === 'development' &&
|
|
@@ -283,6 +300,10 @@ export function createComponent<
|
|
|
283
300
|
time = timer.start()
|
|
284
301
|
globalThis['time'] = time
|
|
285
302
|
}
|
|
303
|
+
// pick up globalThis.time if set externally (e.g. by a profiling harness)
|
|
304
|
+
if (process.env.NODE_ENV === 'development' && !time && (globalThis as any).time) {
|
|
305
|
+
time = (globalThis as any).time
|
|
306
|
+
}
|
|
286
307
|
if (process.env.NODE_ENV === 'development' && time) time`non-tamagui time (ignore)`
|
|
287
308
|
|
|
288
309
|
// React inserts default props after your props for some reason...
|
|
@@ -292,11 +313,7 @@ export function createComponent<
|
|
|
292
313
|
const componentName = props.componentName || staticConfig.componentName
|
|
293
314
|
|
|
294
315
|
// merge both default props and styled context props - ensure order is preserved
|
|
295
|
-
const defaultProps = getDefaultProps(
|
|
296
|
-
staticConfig,
|
|
297
|
-
props.componentName,
|
|
298
|
-
isText && hasTextAncestor
|
|
299
|
-
)
|
|
316
|
+
const defaultProps = getDefaultProps(staticConfig, props.componentName)
|
|
300
317
|
|
|
301
318
|
// merge styled context props over defaults, ensure order is preserved
|
|
302
319
|
const [nextProps, overrides] = mergeComponentProps(
|
|
@@ -361,7 +378,7 @@ export function createComponent<
|
|
|
361
378
|
}
|
|
362
379
|
}
|
|
363
380
|
|
|
364
|
-
debugKeyListeners
|
|
381
|
+
debugKeyListeners = debugKeyListeners || new Set()
|
|
365
382
|
debugKeyListeners.add(debugVisualizerHandler)
|
|
366
383
|
|
|
367
384
|
return () => {
|
|
@@ -373,20 +390,26 @@ export function createComponent<
|
|
|
373
390
|
|
|
374
391
|
const groupContextParent = React.useContext(GroupContext)
|
|
375
392
|
|
|
376
|
-
// Get animation driver - either from animatedBy prop lookup or context
|
|
393
|
+
// Get animation driver - either from animatedBy prop lookup or context/config fallback
|
|
377
394
|
const animationDriver = (() => {
|
|
378
|
-
if (props.animatedBy && config
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
if ('default' in animations) {
|
|
395
|
+
if (props.animatedBy && config) {
|
|
396
|
+
// check animationDrivers for multi-driver config
|
|
397
|
+
if (config.animationDrivers) {
|
|
382
398
|
return (
|
|
383
|
-
(
|
|
399
|
+
(config.animationDrivers as Record<string, any>)[props.animatedBy] ??
|
|
400
|
+
config.animations
|
|
384
401
|
)
|
|
385
402
|
}
|
|
386
|
-
//
|
|
387
|
-
return props.animatedBy === 'default' ? animations : null
|
|
403
|
+
// single driver config - only 'default' makes sense
|
|
404
|
+
return props.animatedBy === 'default' ? config.animations : null
|
|
388
405
|
}
|
|
389
|
-
|
|
406
|
+
// fall back to context driver, then config.animations
|
|
407
|
+
// resolveAnimationDriver validates it's a real driver (not a raw multi-driver object)
|
|
408
|
+
return (
|
|
409
|
+
resolveAnimationDriver(componentContext.animationDriver) ??
|
|
410
|
+
resolveAnimationDriver(config?.animations) ??
|
|
411
|
+
null
|
|
412
|
+
)
|
|
390
413
|
})()
|
|
391
414
|
|
|
392
415
|
const useAnimations = animationDriver?.useAnimations as UseAnimationHook | undefined
|
|
@@ -412,7 +435,8 @@ export function createComponent<
|
|
|
412
435
|
noClass,
|
|
413
436
|
state,
|
|
414
437
|
stateRef,
|
|
415
|
-
|
|
438
|
+
inputStyle,
|
|
439
|
+
outputStyle,
|
|
416
440
|
willBeAnimated,
|
|
417
441
|
willBeAnimatedClient,
|
|
418
442
|
startedUnhydrated,
|
|
@@ -478,25 +502,27 @@ export function createComponent<
|
|
|
478
502
|
|
|
479
503
|
if (process.env.NODE_ENV === 'development' && time) time`use-state`
|
|
480
504
|
|
|
481
|
-
|
|
505
|
+
// web-only - string-style not valid for native
|
|
482
506
|
const renderProp = props.render
|
|
507
|
+
const isRenderString = !Component || typeof Component === 'string'
|
|
508
|
+
|
|
483
509
|
// default to render prop, fallback to component (when both strings)
|
|
484
|
-
const element = isWeb
|
|
510
|
+
const element = isWeb
|
|
511
|
+
? isRenderString
|
|
512
|
+
? renderProp || Component
|
|
513
|
+
: Component
|
|
514
|
+
: Component
|
|
485
515
|
|
|
486
516
|
const BaseTextComponent = BaseText || element || 'span'
|
|
487
517
|
const BaseViewComponent = BaseView || element || (hasTextAncestor ? 'span' : 'div')
|
|
518
|
+
const BaseComponent = isText ? BaseTextComponent : BaseViewComponent
|
|
488
519
|
|
|
489
|
-
let elementType =
|
|
520
|
+
let elementType = BaseComponent
|
|
490
521
|
|
|
491
|
-
|
|
492
|
-
animationDriver &&
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
// "needsWebStyles" basically with motion we just animate a plain div, but
|
|
496
|
-
// we still have animated.View/Text for Sheet which wants to control
|
|
497
|
-
// things declaratively
|
|
498
|
-
!animationDriver.needsWebStyles
|
|
499
|
-
) {
|
|
522
|
+
const isAnimatedCustomComponent =
|
|
523
|
+
animationDriver && isAnimated && animationDriver.needsCustomComponent
|
|
524
|
+
|
|
525
|
+
if (isAnimatedCustomComponent) {
|
|
500
526
|
elementType = animationDriver[isText ? 'Text' : 'View'] || elementType
|
|
501
527
|
}
|
|
502
528
|
|
|
@@ -563,7 +589,7 @@ export function createComponent<
|
|
|
563
589
|
if (isWeb) {
|
|
564
590
|
console.info(`%c ${banner}`, 'background: green; color: white;')
|
|
565
591
|
if (isServer) {
|
|
566
|
-
log({ noClass, isAnimated, isWeb,
|
|
592
|
+
log({ noClass, isAnimated, isWeb, inputStyle })
|
|
567
593
|
} else {
|
|
568
594
|
// if strict mode or something messes with our nesting this fixes:
|
|
569
595
|
console.groupEnd()
|
|
@@ -586,7 +612,7 @@ export function createComponent<
|
|
|
586
612
|
)
|
|
587
613
|
log(`children:`, props.children)
|
|
588
614
|
log({ overriddenContextProps, styledContextValue })
|
|
589
|
-
log({ noClass, isAnimated, isWeb,
|
|
615
|
+
log({ noClass, isAnimated, isWeb, inputStyle })
|
|
590
616
|
}
|
|
591
617
|
}
|
|
592
618
|
}
|
|
@@ -608,7 +634,7 @@ export function createComponent<
|
|
|
608
634
|
|
|
609
635
|
const resolveValues =
|
|
610
636
|
// if HOC + mounted + has animation prop, resolve as value so it passes non-variable to child
|
|
611
|
-
(isAnimated &&
|
|
637
|
+
(isAnimated && inputStyle !== 'css') ||
|
|
612
638
|
(isHOC && state.unmounted == false && hasAnimationProp)
|
|
613
639
|
? 'value'
|
|
614
640
|
: 'auto'
|
|
@@ -639,7 +665,8 @@ export function createComponent<
|
|
|
639
665
|
allGroupContexts,
|
|
640
666
|
elementType,
|
|
641
667
|
startedUnhydrated,
|
|
642
|
-
debugProp
|
|
668
|
+
debugProp,
|
|
669
|
+
animationDriver
|
|
643
670
|
)
|
|
644
671
|
|
|
645
672
|
const isPassthrough = !splitStyles
|
|
@@ -656,7 +683,7 @@ export function createComponent<
|
|
|
656
683
|
staticConfig.context || staticConfig.parentStaticConfig?.context
|
|
657
684
|
if (contextForProps) {
|
|
658
685
|
for (const key in splitStyles.overriddenContextProps) {
|
|
659
|
-
overriddenContextProps
|
|
686
|
+
overriddenContextProps = overriddenContextProps || {}
|
|
660
687
|
overriddenContextProps[key] = splitStyles.overriddenContextProps[key]
|
|
661
688
|
}
|
|
662
689
|
// Use parent's context if this component doesn't have its own
|
|
@@ -689,10 +716,21 @@ export function createComponent<
|
|
|
689
716
|
|
|
690
717
|
// avoids re-rendering if animation driver supports it
|
|
691
718
|
// TODO believe we need to set some sort of "pendingState" in case it re-renders
|
|
719
|
+
// CRITICAL: Skip avoidReRenders for components with enter/exit transitions
|
|
720
|
+
// The exit state comes from AnimatePresence context, not local state, so
|
|
721
|
+
// updateStyleListener can fire before the component re-renders with the new
|
|
722
|
+
// presence value, causing wrong animation timing (e.g., using enter timing for exit)
|
|
723
|
+
const hasEnterExitTransition =
|
|
724
|
+
props.transition &&
|
|
725
|
+
typeof props.transition === 'object' &&
|
|
726
|
+
!Array.isArray(props.transition) &&
|
|
727
|
+
('enter' in props.transition || 'exit' in props.transition)
|
|
728
|
+
|
|
692
729
|
if (
|
|
693
730
|
!isPassthrough &&
|
|
694
731
|
(hasAnimationProp || groupName) &&
|
|
695
|
-
animationDriver?.avoidReRenders
|
|
732
|
+
animationDriver?.avoidReRenders &&
|
|
733
|
+
!hasEnterExitTransition
|
|
696
734
|
) {
|
|
697
735
|
const ogSetStateShallow = setStateShallow
|
|
698
736
|
|
|
@@ -725,10 +763,22 @@ export function createComponent<
|
|
|
725
763
|
allGroupContexts,
|
|
726
764
|
elementType,
|
|
727
765
|
startedUnhydrated,
|
|
728
|
-
debugProp
|
|
766
|
+
debugProp,
|
|
767
|
+
animationDriver
|
|
729
768
|
)
|
|
730
769
|
|
|
731
|
-
|
|
770
|
+
// compute effective transition based on entering/exiting pseudo states
|
|
771
|
+
const effectiveTransition = resolveEffectivePseudoTransition(
|
|
772
|
+
stateRef.current.prevPseudoState,
|
|
773
|
+
updatedState,
|
|
774
|
+
nextStyles?.pseudoTransitions,
|
|
775
|
+
props.transition
|
|
776
|
+
)
|
|
777
|
+
|
|
778
|
+
// update prev state for next comparison (includes group states)
|
|
779
|
+
stateRef.current.prevPseudoState = extractPseudoState(updatedState)
|
|
780
|
+
|
|
781
|
+
useStyleListener((nextStyles?.style || {}) as any, effectiveTransition)
|
|
732
782
|
}
|
|
733
783
|
|
|
734
784
|
function updateGroupListeners() {
|
|
@@ -751,7 +801,8 @@ export function createComponent<
|
|
|
751
801
|
|
|
752
802
|
// don't change this ever or else you break ComponentContext and cause re-rendering
|
|
753
803
|
// use a Set of listeners so multiple components can register
|
|
754
|
-
componentContext.mediaEmitListeners
|
|
804
|
+
componentContext.mediaEmitListeners =
|
|
805
|
+
componentContext.mediaEmitListeners || new Set()
|
|
755
806
|
|
|
756
807
|
// only register once per component instance
|
|
757
808
|
if (!stateRef.current.mediaEmitCleanup) {
|
|
@@ -765,12 +816,14 @@ export function createComponent<
|
|
|
765
816
|
}
|
|
766
817
|
}
|
|
767
818
|
|
|
768
|
-
componentContext.mediaEmit
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
819
|
+
componentContext.mediaEmit =
|
|
820
|
+
componentContext.mediaEmit ||
|
|
821
|
+
((next) => {
|
|
822
|
+
// notify all registered components
|
|
823
|
+
for (const listener of componentContext.mediaEmitListeners!) {
|
|
824
|
+
listener(next)
|
|
825
|
+
}
|
|
826
|
+
})
|
|
774
827
|
|
|
775
828
|
stateRef.current.setStateShallow = (nextOrGetNext) => {
|
|
776
829
|
const prev = stateRef.current.nextState || state
|
|
@@ -835,7 +888,7 @@ export function createComponent<
|
|
|
835
888
|
props.untilMeasured === 'hide' &&
|
|
836
889
|
!stateRef.current.hasMeasured
|
|
837
890
|
) {
|
|
838
|
-
splitStyles.style
|
|
891
|
+
splitStyles.style = splitStyles.style || {}
|
|
839
892
|
splitStyles.style.opacity = 0
|
|
840
893
|
}
|
|
841
894
|
|
|
@@ -903,7 +956,7 @@ export function createComponent<
|
|
|
903
956
|
// so the type is pretty loose
|
|
904
957
|
let viewProps = nonTamaguiProps
|
|
905
958
|
|
|
906
|
-
if (
|
|
959
|
+
if (props.forceStyle) {
|
|
907
960
|
viewProps.forceStyle = props.forceStyle
|
|
908
961
|
}
|
|
909
962
|
|
|
@@ -916,16 +969,14 @@ export function createComponent<
|
|
|
916
969
|
}
|
|
917
970
|
}
|
|
918
971
|
|
|
919
|
-
if (renderProp && elementType['acceptTagProp']) {
|
|
920
|
-
viewProps.render = renderProp
|
|
921
|
-
}
|
|
922
|
-
|
|
923
972
|
// once you set animation prop don't remove it, you can set to undefined/false
|
|
924
973
|
// reason is animations are heavy - no way around it, and must be run inline here (🙅 loading as a sub-component)
|
|
925
974
|
let animationStyles: any
|
|
926
975
|
const shouldUseAnimation =
|
|
927
976
|
// if it supports css vars we run it on server too to get matching initial style
|
|
928
|
-
(
|
|
977
|
+
(inputStyle === 'css' ? willBeAnimatedClient : willBeAnimated) &&
|
|
978
|
+
useAnimations &&
|
|
979
|
+
!isHOC
|
|
929
980
|
|
|
930
981
|
let animatedRef
|
|
931
982
|
|
|
@@ -936,10 +987,29 @@ export function createComponent<
|
|
|
936
987
|
}
|
|
937
988
|
: undefined
|
|
938
989
|
|
|
990
|
+
// compute effective transition once here (single source of truth)
|
|
991
|
+
// avoidReRenders path also computes this in updateStyleListener
|
|
992
|
+
const effectiveTransition = resolveEffectivePseudoTransition(
|
|
993
|
+
stateRef.current.prevPseudoState,
|
|
994
|
+
state,
|
|
995
|
+
splitStyles?.pseudoTransitions,
|
|
996
|
+
props.transition
|
|
997
|
+
)
|
|
998
|
+
|
|
999
|
+
// add effectiveTransition to splitStyles for drivers to consume
|
|
1000
|
+
if (splitStyles) {
|
|
1001
|
+
splitStyles.effectiveTransition = effectiveTransition
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
// update prev state for next comparison (needed for non-avoidReRenders drivers like CSS)
|
|
1005
|
+
// avoidReRenders path also updates this in updateStyleListener
|
|
1006
|
+
stateRef.current.prevPseudoState = extractPseudoState(state)
|
|
1007
|
+
|
|
939
1008
|
const animations = useAnimations({
|
|
940
1009
|
props: propsWithAnimation,
|
|
941
|
-
//
|
|
942
|
-
style
|
|
1010
|
+
// clone style to prevent animation driver mutations from leaking to viewProps
|
|
1011
|
+
// during SSR/pre-hydration (CSS driver mutates style.transition in place)
|
|
1012
|
+
style: isHydrated ? splitStylesStyle || {} : { ...splitStylesStyle },
|
|
943
1013
|
// @ts-ignore
|
|
944
1014
|
styleState: splitStyles,
|
|
945
1015
|
useStyleEmitter,
|
|
@@ -1087,7 +1157,7 @@ export function createComponent<
|
|
|
1087
1157
|
// For CSS transitions, we need browser to paint enterStyle before removing it.
|
|
1088
1158
|
// Double RAF guarantees paint: first RAF schedules after current frame,
|
|
1089
1159
|
// second RAF schedules after that frame completes (including paint).
|
|
1090
|
-
if (
|
|
1160
|
+
if (inputStyle === 'css') {
|
|
1091
1161
|
let cancelled = false
|
|
1092
1162
|
requestAnimationFrame(() => {
|
|
1093
1163
|
if (cancelled) return
|
|
@@ -1108,7 +1178,7 @@ export function createComponent<
|
|
|
1108
1178
|
componentSetStates.delete(setState)
|
|
1109
1179
|
stateRef.current.mediaEmitCleanup?.()
|
|
1110
1180
|
}
|
|
1111
|
-
}, [state.unmounted,
|
|
1181
|
+
}, [state.unmounted, inputStyle])
|
|
1112
1182
|
|
|
1113
1183
|
useIsomorphicLayoutEffect(() => {
|
|
1114
1184
|
if (disabled) return
|
|
@@ -1281,6 +1351,7 @@ export function createComponent<
|
|
|
1281
1351
|
onFocus: (e) => {
|
|
1282
1352
|
const next: Partial<typeof state> = {}
|
|
1283
1353
|
if (componentContext.setParentFocusState) {
|
|
1354
|
+
componentContext.setParentFocusState({ focusWithin: true })
|
|
1284
1355
|
next.focusWithin = true
|
|
1285
1356
|
}
|
|
1286
1357
|
if (pseudos?.focusVisibleStyle) {
|
|
@@ -1338,13 +1409,11 @@ export function createComponent<
|
|
|
1338
1409
|
// Skip gesture setup for HOC components - they may return null which crashes GestureDetector
|
|
1339
1410
|
const pressGesture =
|
|
1340
1411
|
process.env.TAMAGUI_TARGET === 'native'
|
|
1341
|
-
? useEvents(events, viewProps, stateRef, staticConfig, isHOC)
|
|
1412
|
+
? useEvents(events, viewProps, stateRef, staticConfig, isHOC, isInsideNativeMenu)
|
|
1342
1413
|
: null
|
|
1343
1414
|
|
|
1344
1415
|
if (process.env.NODE_ENV === 'development' && time) time`hooks`
|
|
1345
1416
|
|
|
1346
|
-
let content = children
|
|
1347
|
-
|
|
1348
1417
|
if (asChild) {
|
|
1349
1418
|
elementType = Slot
|
|
1350
1419
|
// on native this is already merged into viewProps in useEvents
|
|
@@ -1371,43 +1440,53 @@ export function createComponent<
|
|
|
1371
1440
|
|
|
1372
1441
|
if (process.env.NODE_ENV === 'development' && time) time`spaced-as-child`
|
|
1373
1442
|
|
|
1443
|
+
let content: ReactNode | undefined
|
|
1444
|
+
|
|
1374
1445
|
if (isPassthrough) {
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1446
|
+
// avoid re-parenting but avoid layout changes
|
|
1447
|
+
content = React.createElement(
|
|
1448
|
+
BaseComponent,
|
|
1449
|
+
{
|
|
1450
|
+
style: {
|
|
1451
|
+
display: 'contents',
|
|
1452
|
+
},
|
|
1380
1453
|
},
|
|
1454
|
+
propsIn.children
|
|
1455
|
+
)
|
|
1456
|
+
} else {
|
|
1457
|
+
// here elementType is either the custom animated driver view, or base view
|
|
1458
|
+
if (hooks.useChildren) {
|
|
1459
|
+
// ONLY native:
|
|
1460
|
+
content = hooks.useChildren(elementType, content || children, viewProps)
|
|
1381
1461
|
}
|
|
1382
|
-
}
|
|
1383
1462
|
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1463
|
+
const isRenderPropString = typeof renderProp === 'string'
|
|
1464
|
+
|
|
1465
|
+
// this ONLY handles the case where render is NOT a string
|
|
1466
|
+
// either direct JSX, or a function that returns JSX, we always clone
|
|
1467
|
+
if (renderProp && !isRenderPropString) {
|
|
1468
|
+
const out = getCustomRender(
|
|
1469
|
+
renderProp,
|
|
1470
|
+
content || children,
|
|
1471
|
+
viewProps,
|
|
1472
|
+
componentState
|
|
1473
|
+
)
|
|
1474
|
+
if (out) {
|
|
1475
|
+
viewProps = out.viewProps
|
|
1476
|
+
elementType = out.elementType
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1388
1479
|
|
|
1389
|
-
|
|
1480
|
+
if (!content) {
|
|
1481
|
+
// web-only, handle render === string passing to custom animated component
|
|
1482
|
+
if (isRenderPropString) {
|
|
1483
|
+
viewProps.render === renderProp
|
|
1484
|
+
}
|
|
1390
1485
|
|
|
1391
|
-
|
|
1392
|
-
content = useChildrenResult
|
|
1393
|
-
} else {
|
|
1394
|
-
// Handle render prop variants: function, JSX element, or string
|
|
1395
|
-
if (typeof renderProp === 'function') {
|
|
1396
|
-
// Render function: full control with props and state
|
|
1397
|
-
const renderProps = { ...viewProps, children: content }
|
|
1398
|
-
content = renderProp(renderProps, state)
|
|
1399
|
-
} else if (
|
|
1400
|
-
renderProp &&
|
|
1401
|
-
typeof renderProp === 'object' &&
|
|
1402
|
-
React.isValidElement(renderProp)
|
|
1403
|
-
) {
|
|
1404
|
-
// JSX element: clone with merged props
|
|
1405
|
-
const elementProps = (renderProp as React.ReactElement).props || {}
|
|
1406
|
-
const mergedProps = mergeRenderElementProps(elementProps, viewProps, content)
|
|
1407
|
-
content = React.cloneElement(renderProp as React.ReactElement, mergedProps)
|
|
1408
|
-
} else {
|
|
1409
|
-
content = React.createElement(elementType, viewProps, content)
|
|
1486
|
+
content = React.createElement(elementType, viewProps, content || children)
|
|
1410
1487
|
}
|
|
1488
|
+
|
|
1489
|
+
if (process.env.NODE_ENV === 'development' && time) time`use-children`
|
|
1411
1490
|
}
|
|
1412
1491
|
|
|
1413
1492
|
// wrap with GestureDetector for RNGH press handling (native only, no-op on web)
|
|
@@ -1442,7 +1521,7 @@ export function createComponent<
|
|
|
1442
1521
|
|
|
1443
1522
|
if (process.env.NODE_ENV === 'development' && time) time`create-element`
|
|
1444
1523
|
|
|
1445
|
-
if ('focusWithinStyle' in propsIn) {
|
|
1524
|
+
if ('focusWithinStyle' in propsIn || pseudos?.focusWithinStyle) {
|
|
1446
1525
|
content = (
|
|
1447
1526
|
<ComponentContext.Provider
|
|
1448
1527
|
{...componentContext}
|
|
@@ -1673,3 +1752,55 @@ const fromPx = (val?: any): number => {
|
|
|
1673
1752
|
if (typeof val === 'string') return +val.replace('px', '')
|
|
1674
1753
|
return 0
|
|
1675
1754
|
}
|
|
1755
|
+
|
|
1756
|
+
// handles all render logic - returns a new component
|
|
1757
|
+
const getCustomRender = (
|
|
1758
|
+
renderProp: ViewProps['render'],
|
|
1759
|
+
content: ReactNode,
|
|
1760
|
+
viewProps: Record<string, unknown>,
|
|
1761
|
+
state: any
|
|
1762
|
+
):
|
|
1763
|
+
| undefined
|
|
1764
|
+
| {
|
|
1765
|
+
viewProps: Record<string, any>
|
|
1766
|
+
elementType: any
|
|
1767
|
+
} => {
|
|
1768
|
+
// Handle render prop variants: function, JSX element, or string
|
|
1769
|
+
if (typeof renderProp === 'function') {
|
|
1770
|
+
// Render function: full control with props and state
|
|
1771
|
+
const out = renderProp(viewProps, state)
|
|
1772
|
+
renderProp = getRenderElementForPlatform(out)
|
|
1773
|
+
}
|
|
1774
|
+
|
|
1775
|
+
if (renderProp) {
|
|
1776
|
+
if (typeof renderProp === 'object' && React.isValidElement(renderProp)) {
|
|
1777
|
+
// JSX element: clone with merged props
|
|
1778
|
+
const renderElement = getRenderElementForPlatform(renderProp)
|
|
1779
|
+
if (renderElement) {
|
|
1780
|
+
const elementProps = renderProp.props as Record<string, any> | undefined
|
|
1781
|
+
const mergedProps = elementProps
|
|
1782
|
+
? mergeRenderElementProps(elementProps, viewProps, content)
|
|
1783
|
+
: viewProps
|
|
1784
|
+
|
|
1785
|
+
return {
|
|
1786
|
+
elementType: renderProp.type,
|
|
1787
|
+
viewProps: mergedProps,
|
|
1788
|
+
}
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
// avoid passing web-only elements to native
|
|
1795
|
+
function getRenderElementForPlatform(potential: ReactElement) {
|
|
1796
|
+
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
1797
|
+
if (isHTMLElement(potential)) {
|
|
1798
|
+
return
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
return potential
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
function isHTMLElement(el: ReactElement) {
|
|
1805
|
+
return typeof el['type'] === 'string' && el['type'][0] === el['type'][0].toLowerCase()
|
|
1806
|
+
}
|
package/src/createTamagui.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { isWeb } from '@tamagui/constants'
|
|
2
1
|
import { getConfigMaybe, setConfig, setTokens } from './config'
|
|
3
2
|
import type { DeepVariableObject } from './createVariables'
|
|
4
3
|
import { createVariables } from './createVariables'
|
|
5
4
|
import { defaultAnimationDriver } from './helpers/defaultAnimationDriver'
|
|
5
|
+
import { resolveAnimationDriver } from './helpers/resolveAnimationDriver'
|
|
6
6
|
import {
|
|
7
7
|
buildCSSRuleSets,
|
|
8
8
|
createFontCSS,
|
|
@@ -182,9 +182,8 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
182
182
|
const defaultPositionSetting = configIn.settings?.defaultPosition || 'static'
|
|
183
183
|
|
|
184
184
|
const defaultProps = configIn.defaultProps || {}
|
|
185
|
-
//
|
|
186
|
-
|
|
187
|
-
if (process.env.TAMAGUI_TARGET === 'web') {
|
|
185
|
+
// apply defaultPosition via defaultProps when not static
|
|
186
|
+
if (process.env.TAMAGUI_TARGET === 'web' && defaultPositionSetting !== 'static') {
|
|
188
187
|
defaultProps.View = {
|
|
189
188
|
...defaultProps.View,
|
|
190
189
|
position: defaultPositionSetting,
|
|
@@ -194,20 +193,30 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
194
193
|
// ensure prefixed with $
|
|
195
194
|
const defaultFontToken = defaultFont ? `$${defaultFont}` : ''
|
|
196
195
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
196
|
+
// Text inherits font from root via CSS, no need for default fontFamily
|
|
197
|
+
// only explicit fontFamily prop should add font_* class
|
|
198
|
+
|
|
199
|
+
// normalize multi-driver animation config to default driver
|
|
200
|
+
// supports format: { default: motionDriver, css: cssDriver }
|
|
201
|
+
// stores full config in animationDrivers for component-level selection via animatedBy
|
|
202
|
+
const inputAnimations = configIn.animations
|
|
203
|
+
const resolvedDriver = resolveAnimationDriver(inputAnimations)
|
|
204
|
+
// multi-driver when resolveAnimationDriver extracted .default (returned different ref)
|
|
205
|
+
const isMultiDriver = resolvedDriver !== null && resolvedDriver !== inputAnimations
|
|
206
|
+
const resolvedAnimations = resolvedDriver ?? inputAnimations
|
|
207
|
+
const animationDrivers = isMultiDriver
|
|
208
|
+
? (inputAnimations as Record<string, any>)
|
|
209
|
+
: undefined
|
|
203
210
|
|
|
204
211
|
const config: TamaguiInternalConfig = {
|
|
205
212
|
fonts: {},
|
|
206
213
|
onlyAllowShorthands: false,
|
|
207
214
|
fontLanguages: [],
|
|
208
|
-
animations: defaultAnimationDriver,
|
|
209
215
|
media: {},
|
|
210
216
|
...configIn,
|
|
217
|
+
// normalized animations (resolved from multi-driver format if needed)
|
|
218
|
+
animations: resolvedAnimations ?? defaultAnimationDriver,
|
|
219
|
+
animationDrivers,
|
|
211
220
|
defaultProps,
|
|
212
221
|
settings: {
|
|
213
222
|
webContainerType: 'inline-size',
|
package/src/createVariable.ts
CHANGED
|
@@ -90,7 +90,7 @@ export function getVariableName(v: Variable | any) {
|
|
|
90
90
|
return v
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
export function getVariableVariable(v: Variable |
|
|
93
|
+
export function getVariableVariable(v: Variable | string | undefined) {
|
|
94
94
|
if (isVariable(v)) return v.variable
|
|
95
95
|
return v
|
|
96
96
|
}
|