@tamagui/core 1.0.0-alpha.2 → 1.0.0-alpha.20
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/constants/constants.js +50 -0
- package/{_ → dist/cjs}/constants/constants.js.map +2 -2
- package/dist/cjs/constants/platform.js +43 -0
- package/dist/cjs/constants/platform.js.map +7 -0
- package/dist/cjs/constants/pseudos.js +25 -0
- package/dist/{constants → cjs/constants}/pseudos.js.map +2 -2
- package/dist/cjs/constants/rnw.js +28 -0
- package/{_ → dist/cjs}/constants/rnw.js.map +2 -2
- package/dist/cjs/createComponent.js +532 -0
- package/dist/cjs/createComponent.js.map +7 -0
- package/dist/cjs/createFont.js +50 -0
- package/dist/cjs/createFont.js.map +7 -0
- package/dist/cjs/createShorthands.js +16 -0
- package/{_ → dist/cjs}/createShorthands.js.map +2 -2
- package/dist/cjs/createTamagui.js +208 -0
- package/dist/cjs/createTamagui.js.map +7 -0
- package/dist/cjs/createTheme.js +44 -0
- package/dist/cjs/createTheme.js.map +7 -0
- package/dist/cjs/createTokens.js +55 -0
- package/dist/cjs/createTokens.js.map +7 -0
- package/dist/cjs/createVariable.js +47 -0
- package/dist/cjs/createVariable.js.map +7 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js +79 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js.map +7 -0
- package/dist/cjs/helpers/createMediaStyle.js +56 -0
- package/dist/{helpers → cjs/helpers}/createMediaStyle.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +197 -0
- package/dist/cjs/helpers/createPropMapper.js.map +7 -0
- package/dist/cjs/helpers/createTamaguiProvider.js +74 -0
- package/dist/cjs/helpers/createTamaguiProvider.js.map +7 -0
- package/dist/cjs/helpers/extendStaticConfig.js +82 -0
- package/dist/cjs/helpers/extendStaticConfig.js.map +7 -0
- package/dist/cjs/helpers/fixNativeShadow.js +14 -0
- package/dist/cjs/helpers/fixNativeShadow.js.map +7 -0
- package/dist/cjs/helpers/fixNativeShadow.native.js +36 -0
- package/{_ → dist/cjs}/helpers/fixNativeShadow.native.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +180 -0
- package/dist/cjs/helpers/getSplitStyles.js.map +7 -0
- package/dist/cjs/helpers/getStylesAtomic.js +117 -0
- package/{_ → dist/cjs}/helpers/getStylesAtomic.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.native.js +16 -0
- package/dist/cjs/helpers/getStylesAtomic.native.js.map +7 -0
- package/dist/cjs/helpers/insertStyleRule.js +46 -0
- package/dist/{helpers → cjs/helpers}/insertStyleRule.js.map +2 -2
- package/dist/cjs/helpers/isObj.js +13 -0
- package/dist/cjs/helpers/isObj.js.map +7 -0
- package/dist/cjs/helpers/isTamaguiElement.js +33 -0
- package/dist/cjs/helpers/isTamaguiElement.js.map +7 -0
- package/dist/cjs/helpers/matchMedia.js +24 -0
- package/dist/cjs/helpers/matchMedia.js.map +7 -0
- package/dist/cjs/helpers/matchMedia.native.js +31 -0
- package/dist/cjs/helpers/matchMedia.native.js.map +7 -0
- package/dist/cjs/helpers/themeable.js +78 -0
- package/{_ → dist/cjs}/helpers/themeable.js.map +2 -2
- package/dist/cjs/helpers/validate.js +82 -0
- package/dist/cjs/helpers/validate.js.map +7 -0
- package/dist/cjs/hooks/useConstant.js +37 -0
- package/dist/{hooks → cjs/hooks}/useConstant.js.map +2 -2
- package/dist/cjs/hooks/useFeatures.js +100 -0
- package/dist/cjs/hooks/useFeatures.js.map +7 -0
- package/dist/cjs/hooks/useMedia.js +207 -0
- package/dist/cjs/hooks/useMedia.js.map +7 -0
- package/dist/cjs/hooks/usePressable.js +50 -0
- package/{_ → dist/cjs}/hooks/usePressable.js.map +2 -2
- package/dist/cjs/hooks/useTheme.js +112 -0
- package/dist/cjs/hooks/useTheme.js.map +7 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/static/postProcessStyles.js +40 -0
- package/dist/{static → cjs/static}/postProcessStyles.js.map +2 -2
- package/dist/cjs/static.js +34 -0
- package/dist/cjs/static.js.map +7 -0
- package/dist/cjs/styled.js +72 -0
- package/dist/cjs/styled.js.map +7 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +7 -0
- package/dist/cjs/views/Animated.js +129 -0
- package/dist/{views → cjs/views}/Animated.js.map +2 -2
- package/dist/cjs/views/Stack.js +51 -0
- package/dist/{views → cjs/views}/Stack.js.map +2 -2
- package/dist/cjs/views/Text.js +93 -0
- package/dist/cjs/views/Text.js.map +7 -0
- package/dist/cjs/views/TextAncestorContext.js +40 -0
- package/dist/cjs/views/TextAncestorContext.js.map +7 -0
- package/dist/cjs/views/Theme.js +91 -0
- package/dist/cjs/views/Theme.js.map +7 -0
- package/dist/cjs/views/ThemeContext.js +29 -0
- package/dist/{views → cjs/views}/ThemeContext.js.map +2 -2
- package/dist/cjs/views/ThemeInverse.js +48 -0
- package/dist/{views → cjs/views}/ThemeInverse.js.map +3 -3
- package/dist/cjs/views/ThemeManagerContext.js +84 -0
- package/dist/cjs/views/ThemeManagerContext.js.map +7 -0
- package/dist/cjs/views/ThemeProvider.js +67 -0
- package/dist/{views → cjs/views}/ThemeProvider.js.map +2 -2
- package/{_ → dist/esm}/constants/constants.js +0 -0
- package/dist/{constants → esm/constants}/constants.js.map +1 -1
- package/dist/{constants → esm/constants}/platform.js +0 -0
- package/dist/{constants → esm/constants}/platform.js.map +1 -1
- package/{_ → dist/esm}/constants/pseudos.js +0 -0
- package/{_ → dist/esm}/constants/pseudos.js.map +1 -1
- package/{_ → dist/esm}/constants/rnw.js +0 -0
- package/dist/{constants → esm/constants}/rnw.js.map +1 -1
- package/dist/{createComponent.js → esm/createComponent.js} +51 -32
- package/dist/esm/createComponent.js.map +7 -0
- package/dist/{createFont.js → esm/createFont.js} +4 -0
- package/dist/esm/createFont.js.map +7 -0
- package/{_ → dist/esm}/createShorthands.js +0 -0
- package/dist/{createShorthands.js.map → esm/createShorthands.js.map} +1 -1
- package/dist/{createTamagui.js → esm/createTamagui.js} +13 -2
- package/dist/esm/createTamagui.js.map +7 -0
- package/dist/{createTheme.js → esm/createTheme.js} +2 -0
- package/dist/esm/createTheme.js.map +7 -0
- package/dist/{createTokens.js → esm/createTokens.js} +4 -0
- package/dist/esm/createTokens.js.map +7 -0
- package/dist/{createVariable.js → esm/createVariable.js} +3 -0
- package/dist/{createVariable.js.map → esm/createVariable.js.map} +3 -3
- package/dist/{helpers → esm/helpers}/addStylesUsingClassname.js +0 -0
- package/dist/{helpers → esm/helpers}/addStylesUsingClassname.js.map +1 -1
- package/{_ → dist/esm}/helpers/createMediaStyle.js +0 -0
- package/{_ → dist/esm}/helpers/createMediaStyle.js.map +1 -1
- package/dist/{helpers → esm/helpers}/createPropMapper.js +16 -9
- package/dist/esm/helpers/createPropMapper.js.map +7 -0
- package/dist/{helpers → esm/helpers}/createTamaguiProvider.js +0 -0
- package/dist/{helpers → esm/helpers}/createTamaguiProvider.js.map +1 -1
- package/dist/{helpers → esm/helpers}/extendStaticConfig.js +0 -0
- package/dist/{helpers → esm/helpers}/extendStaticConfig.js.map +1 -1
- package/{_ → dist/esm}/helpers/fixNativeShadow.js +0 -0
- package/dist/{helpers → esm/helpers}/fixNativeShadow.js.map +1 -1
- package/{_ → dist/esm}/helpers/fixNativeShadow.native.js +0 -0
- package/dist/{helpers → esm/helpers}/fixNativeShadow.native.js.map +1 -1
- package/dist/{helpers → esm/helpers}/getSplitStyles.js +13 -23
- package/dist/esm/helpers/getSplitStyles.js.map +7 -0
- package/dist/{helpers → esm/helpers}/getStylesAtomic.js +0 -0
- package/dist/{helpers → esm/helpers}/getStylesAtomic.js.map +1 -1
- package/{_ → dist/esm}/helpers/getStylesAtomic.native.js +0 -0
- package/{_ → dist/esm}/helpers/getStylesAtomic.native.js.map +1 -1
- package/{_ → dist/esm}/helpers/insertStyleRule.js +0 -0
- package/{_ → dist/esm}/helpers/insertStyleRule.js.map +1 -1
- package/dist/{helpers → esm/helpers}/isObj.js +0 -0
- package/dist/{helpers → esm/helpers}/isObj.js.map +1 -1
- package/dist/esm/helpers/isTamaguiElement.js +10 -0
- package/dist/esm/helpers/isTamaguiElement.js.map +7 -0
- package/{_ → dist/esm}/helpers/matchMedia.js +3 -0
- package/dist/esm/helpers/matchMedia.js.map +7 -0
- package/dist/{helpers → esm/helpers}/matchMedia.native.js +1 -0
- package/{_ → dist/esm}/helpers/matchMedia.native.js.map +3 -3
- package/dist/{helpers → esm/helpers}/themeable.js +0 -0
- package/dist/{helpers → esm/helpers}/themeable.js.map +1 -1
- package/dist/esm/helpers/validate.js +60 -0
- package/dist/esm/helpers/validate.js.map +7 -0
- package/{_ → dist/esm}/hooks/useConstant.js +0 -0
- package/{_ → dist/esm}/hooks/useConstant.js.map +1 -1
- package/{_ → dist/esm}/hooks/useFeatures.js +39 -51
- package/dist/esm/hooks/useFeatures.js.map +7 -0
- package/dist/{hooks → esm/hooks}/useMedia.js +6 -4
- package/dist/esm/hooks/useMedia.js.map +7 -0
- package/dist/{hooks → esm/hooks}/usePressable.js +0 -0
- package/dist/{hooks → esm/hooks}/usePressable.js.map +1 -1
- package/dist/{hooks → esm/hooks}/useTheme.js +7 -10
- package/dist/esm/hooks/useTheme.js.map +7 -0
- package/dist/{index.js → esm/index.js} +1 -2
- package/dist/{index.js.map → esm/index.js.map} +3 -3
- package/{_ → dist/esm}/static/postProcessStyles.js +0 -0
- package/{_ → dist/esm}/static/postProcessStyles.js.map +1 -1
- package/dist/{static.js → esm/static.js} +0 -0
- package/dist/{static.js.map → esm/static.js.map} +1 -1
- package/dist/{styled.js → esm/styled.js} +0 -0
- package/dist/{styled.js.map → esm/styled.js.map} +1 -1
- package/{_ → dist/esm}/types.js +0 -0
- package/{_ → dist/esm}/types.js.map +0 -0
- package/{_ → dist/esm}/views/Animated.js +0 -0
- package/{_ → dist/esm}/views/Animated.js.map +1 -1
- package/{_ → dist/esm}/views/Stack.js +0 -0
- package/{_ → dist/esm}/views/Stack.js.map +1 -1
- package/dist/{views → esm/views}/Text.js +1 -1
- package/dist/esm/views/Text.js.map +7 -0
- package/{_ → dist/esm}/views/TextAncestorContext.js +7 -9
- package/dist/esm/views/TextAncestorContext.js.map +7 -0
- package/dist/{views → esm/views}/Theme.js +25 -13
- package/dist/esm/views/Theme.js.map +7 -0
- package/{_ → dist/esm}/views/ThemeContext.js +0 -0
- package/{_ → dist/esm}/views/ThemeContext.js.map +1 -1
- package/{_ → dist/esm}/views/ThemeInverse.js +0 -1
- package/{_ → dist/esm}/views/ThemeInverse.js.map +3 -3
- package/dist/{views → esm/views}/ThemeManagerContext.js +11 -5
- package/dist/esm/views/ThemeManagerContext.js.map +7 -0
- package/{_ → dist/esm}/views/ThemeProvider.js +0 -0
- package/{_ → dist/esm}/views/ThemeProvider.js.map +1 -1
- package/dist/{constants → jsx/constants}/constants.js +0 -1
- package/{_ → dist/jsx}/constants/platform.js +1 -3
- package/dist/{constants → jsx/constants}/pseudos.js +0 -1
- package/dist/{constants → jsx/constants}/rnw.js +0 -1
- package/{_ → dist/jsx}/createComponent.js +114 -83
- package/dist/jsx/createFont.js +27 -0
- package/dist/{createShorthands.js → jsx/createShorthands.js} +0 -1
- package/{_ → dist/jsx}/createTamagui.js +63 -16
- package/{_ → dist/jsx}/createTheme.js +2 -1
- package/{_ → dist/jsx}/createTokens.js +4 -1
- package/{_ → dist/jsx}/createVariable.js +3 -1
- package/dist/jsx/helpers/addStylesUsingClassname.js +56 -0
- package/dist/{helpers → jsx/helpers}/createMediaStyle.js +0 -1
- package/dist/jsx/helpers/createPropMapper.js +159 -0
- package/dist/jsx/helpers/createTamaguiProvider.js +19 -0
- package/dist/jsx/helpers/extendStaticConfig.js +58 -0
- package/dist/{helpers → jsx/helpers}/fixNativeShadow.js +0 -1
- package/dist/{helpers → jsx/helpers}/fixNativeShadow.native.js +0 -1
- package/{_ → dist/jsx}/helpers/getSplitStyles.js +18 -29
- package/{_ → dist/jsx}/helpers/getStylesAtomic.js +1 -3
- package/dist/{helpers → jsx/helpers}/getStylesAtomic.native.js +0 -1
- package/dist/{helpers → jsx/helpers}/insertStyleRule.js +0 -1
- package/dist/jsx/helpers/isObj.js +6 -0
- package/dist/jsx/helpers/isTamaguiElement.js +9 -0
- package/dist/{helpers → jsx/helpers}/matchMedia.js +3 -1
- package/{_ → dist/jsx}/helpers/matchMedia.native.js +1 -1
- package/{_ → dist/jsx}/helpers/themeable.js +3 -6
- package/dist/jsx/helpers/validate.js +59 -0
- package/dist/{hooks → jsx/hooks}/useConstant.js +0 -1
- package/dist/jsx/hooks/useFeatures.js +57 -0
- package/{_ → dist/jsx}/hooks/useMedia.js +8 -9
- package/{_ → dist/jsx}/hooks/usePressable.js +1 -3
- package/{_ → dist/jsx}/hooks/useTheme.js +8 -13
- package/{_ → dist/jsx}/index.js +3 -2
- package/dist/{static → jsx/static}/postProcessStyles.js +0 -1
- package/{_ → dist/jsx}/static.js +3 -1
- package/{_ → dist/jsx}/styled.js +2 -3
- package/dist/jsx/types.js +0 -0
- package/dist/{views → jsx/views}/Animated.js +2 -7
- package/dist/{views → jsx/views}/Stack.js +0 -1
- package/{_ → dist/jsx}/views/Text.js +1 -2
- package/dist/{views → jsx/views}/TextAncestorContext.js +5 -9
- package/dist/jsx/views/Theme.js +62 -0
- package/dist/{views → jsx/views}/ThemeContext.js +0 -1
- package/dist/{views → jsx/views}/ThemeInverse.js +1 -6
- package/{_ → dist/jsx}/views/ThemeManagerContext.js +12 -8
- package/dist/{views → jsx/views}/ThemeProvider.js +2 -8
- package/package.json +18 -10
- package/src/createComponent.tsx +59 -42
- package/src/createFont.ts +5 -0
- package/src/createTamagui.ts +12 -1
- package/src/createTheme.ts +4 -1
- package/src/createTokens.ts +6 -1
- package/src/createVariable.ts +4 -0
- package/src/helpers/createPropMapper.ts +16 -8
- package/src/helpers/getSplitStyles.tsx +16 -26
- package/src/helpers/isTamaguiElement.tsx +5 -0
- package/src/helpers/matchMedia.native.ts +3 -0
- package/src/helpers/matchMedia.ts +9 -1
- package/src/helpers/validate.ts +59 -0
- package/src/hooks/useFeatures.tsx +54 -53
- package/src/hooks/useMedia.tsx +6 -4
- package/src/hooks/useTheme.tsx +9 -9
- package/src/index.ts +1 -2
- package/src/types.tsx +9 -8
- package/src/views/Text.tsx +2 -1
- package/src/views/TextAncestorContext.tsx +5 -6
- package/src/views/Theme.tsx +42 -21
- package/src/views/ThemeInverse.tsx +0 -1
- package/src/views/ThemeManagerContext.tsx +18 -6
- package/{dist/packages/core/src → types}/constants/constants.d.ts +0 -0
- package/types/constants/constants.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/constants/platform.d.ts +0 -0
- package/types/constants/platform.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/constants/pseudos.d.ts +0 -0
- package/types/constants/pseudos.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/constants/rnw.d.ts +0 -0
- package/types/constants/rnw.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/createComponent.d.ts +3 -2
- package/types/createComponent.d.ts.map +1 -0
- package/types/createFont.d.ts +3 -0
- package/types/createFont.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/createShorthands.d.ts +0 -0
- package/types/createShorthands.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/createTamagui.d.ts +18 -1
- package/types/createTamagui.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/createTheme.d.ts +1 -1
- package/types/createTheme.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/createTokens.d.ts +24 -14
- package/types/createTokens.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/createVariable.d.ts +1 -0
- package/types/createVariable.d.ts.map +1 -0
- package/types/helpers/addStylesUsingClassname.d.ts +3 -0
- package/types/helpers/addStylesUsingClassname.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/createMediaStyle.d.ts +0 -1
- package/types/helpers/createMediaStyle.d.ts.map +1 -0
- package/types/helpers/createPropMapper.d.ts +3 -0
- package/types/helpers/createPropMapper.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/createTamaguiProvider.d.ts +0 -0
- package/types/helpers/createTamaguiProvider.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/extendStaticConfig.d.ts +1 -1
- package/types/helpers/extendStaticConfig.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/fixNativeShadow.d.ts +0 -0
- package/types/helpers/fixNativeShadow.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/fixNativeShadow.native.d.ts +0 -0
- package/types/helpers/fixNativeShadow.native.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/getSplitStyles.d.ts +0 -0
- package/types/helpers/getSplitStyles.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/getStylesAtomic.d.ts +0 -1
- package/types/helpers/getStylesAtomic.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/getStylesAtomic.native.d.ts +0 -0
- package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/insertStyleRule.d.ts +0 -0
- package/types/helpers/insertStyleRule.d.ts.map +1 -0
- package/types/helpers/isObj.d.ts +2 -0
- package/types/helpers/isObj.d.ts.map +1 -0
- package/types/helpers/isTamaguiElement.d.ts +3 -0
- package/types/helpers/isTamaguiElement.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/matchMedia.d.ts +0 -0
- package/types/helpers/matchMedia.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/matchMedia.native.d.ts +0 -0
- package/types/helpers/matchMedia.native.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/helpers/themeable.d.ts +0 -0
- package/types/helpers/themeable.d.ts.map +1 -0
- package/types/helpers/validate.d.ts +4 -0
- package/types/helpers/validate.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/hooks/useConstant.d.ts +0 -0
- package/types/hooks/useConstant.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/hooks/useFeatures.d.ts +0 -0
- package/types/hooks/useFeatures.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/hooks/useMedia.d.ts +0 -0
- package/types/hooks/useMedia.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/hooks/usePressable.d.ts +0 -0
- package/types/hooks/usePressable.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/hooks/useTheme.d.ts +3 -1
- package/types/hooks/useTheme.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/index.d.ts +3 -1
- package/types/index.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/static/postProcessStyles.d.ts +0 -0
- package/types/static/postProcessStyles.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/static.d.ts +3 -0
- package/types/static.d.ts.map +1 -0
- package/types/styled.d.ts +21 -0
- package/types/styled.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/types.d.ts +71 -70
- package/types/types.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/views/Animated.d.ts +0 -0
- package/types/views/Animated.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/views/Stack.d.ts +0 -0
- package/types/views/Stack.d.ts.map +1 -0
- package/types/views/Text.d.ts +3 -0
- package/types/views/Text.d.ts.map +1 -0
- package/types/views/TextAncestorContext.d.ts +5 -0
- package/types/views/TextAncestorContext.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/views/Theme.d.ts +1 -1
- package/types/views/Theme.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/views/ThemeContext.d.ts +0 -0
- package/types/views/ThemeContext.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/views/ThemeInverse.d.ts +0 -0
- package/types/views/ThemeInverse.d.ts.map +1 -0
- package/types/views/ThemeManagerContext.d.ts +22 -0
- package/types/views/ThemeManagerContext.d.ts.map +1 -0
- package/{dist/packages/core/src → types}/views/ThemeProvider.d.ts +0 -0
- package/types/views/ThemeProvider.d.ts.map +1 -0
- package/.ultra.cache.json +0 -1
- package/_/constants/platform.js.map +0 -7
- package/_/createComponent.js.map +0 -7
- package/_/createTamagui.js.map +0 -7
- package/_/createTheme.js.map +0 -7
- package/_/createTokens.js.map +0 -7
- package/_/createVariable.js.map +0 -7
- package/_/helpers/addStylesUsingClassname.js +0 -32
- package/_/helpers/addStylesUsingClassname.js.map +0 -7
- package/_/helpers/createTamaguiProvider.js +0 -42
- package/_/helpers/createTamaguiProvider.js.map +0 -7
- package/_/helpers/extendStaticConfig.js +0 -176
- package/_/helpers/extendStaticConfig.js.map +0 -7
- package/_/helpers/fixNativeShadow.js.map +0 -7
- package/_/helpers/getSplitStyles.js.map +0 -7
- package/_/helpers/matchMedia.js.map +0 -7
- package/_/hooks/useFeatures.js.map +0 -7
- package/_/hooks/useForceUpdate.js +0 -28
- package/_/hooks/useForceUpdate.js.map +0 -7
- package/_/hooks/useMedia.js.map +0 -7
- package/_/hooks/useTheme.js.map +0 -7
- package/_/index.js.map +0 -7
- package/_/static.js.map +0 -7
- package/_/styled.js.map +0 -7
- package/_/views/Text.js.map +0 -7
- package/_/views/TextAncestorContext.js.map +0 -7
- package/_/views/Theme.js +0 -57
- package/_/views/Theme.js.map +0 -7
- package/_/views/ThemeManagerContext.js.map +0 -7
- package/dist/constants/styleConstants.js +0 -46
- package/dist/constants/styleConstants.js.map +0 -7
- package/dist/createComponent.js.map +0 -7
- package/dist/createFont.js.map +0 -7
- package/dist/createTamagui.js.map +0 -7
- package/dist/createTheme.js.map +0 -7
- package/dist/createTokens.js.map +0 -7
- package/dist/helpers/createPropMapper.js.map +0 -7
- package/dist/helpers/getSplitStyles.js.map +0 -7
- package/dist/helpers/getStylesAtomic.native.js.map +0 -7
- package/dist/helpers/matchMedia.js.map +0 -7
- package/dist/helpers/matchMedia.native.js.map +0 -7
- package/dist/helpers/pseudos.js +0 -1
- package/dist/helpers/pseudos.js.map +0 -7
- package/dist/hooks/useFeatures.js +0 -75
- package/dist/hooks/useFeatures.js.map +0 -7
- package/dist/hooks/useForceUpdate.js +0 -28
- package/dist/hooks/useForceUpdate.js.map +0 -7
- package/dist/hooks/useMedia.js.map +0 -7
- package/dist/hooks/useTheme.js.map +0 -7
- package/dist/index.cjs +0 -2125
- package/dist/index.cjs.map +0 -7
- package/dist/packages/core/src/constants/constants.d.ts.map +0 -1
- package/dist/packages/core/src/constants/platform.d.ts.map +0 -1
- package/dist/packages/core/src/constants/pseudos.d.ts.map +0 -1
- package/dist/packages/core/src/constants/rnw.d.ts.map +0 -1
- package/dist/packages/core/src/createComponent.d.ts.map +0 -1
- package/dist/packages/core/src/createShorthands.d.ts.map +0 -1
- package/dist/packages/core/src/createTamagui.d.ts.map +0 -1
- package/dist/packages/core/src/createTheme.d.ts.map +0 -1
- package/dist/packages/core/src/createTokens.d.ts.map +0 -1
- package/dist/packages/core/src/createVariable.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/addStylesUsingClassname.d.ts +0 -2
- package/dist/packages/core/src/helpers/addStylesUsingClassname.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/createMediaStyle.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/createTamaguiProvider.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/extendStaticConfig.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/fixNativeShadow.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/fixNativeShadow.native.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/getSplitStyles.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/getStylesAtomic.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/getStylesAtomic.native.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/insertStyleRule.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/matchMedia.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/matchMedia.native.d.ts.map +0 -1
- package/dist/packages/core/src/helpers/themeable.d.ts.map +0 -1
- package/dist/packages/core/src/hooks/useConstant.d.ts.map +0 -1
- package/dist/packages/core/src/hooks/useFeatures.d.ts.map +0 -1
- package/dist/packages/core/src/hooks/useForceUpdate.d.ts +0 -2
- package/dist/packages/core/src/hooks/useForceUpdate.d.ts.map +0 -1
- package/dist/packages/core/src/hooks/useMedia.d.ts.map +0 -1
- package/dist/packages/core/src/hooks/usePressable.d.ts.map +0 -1
- package/dist/packages/core/src/hooks/useTheme.d.ts.map +0 -1
- package/dist/packages/core/src/index.d.ts.map +0 -1
- package/dist/packages/core/src/static/postProcessStyles.d.ts.map +0 -1
- package/dist/packages/core/src/static.d.ts.map +0 -1
- package/dist/packages/core/src/styled.d.ts +0 -16
- package/dist/packages/core/src/styled.d.ts.map +0 -1
- package/dist/packages/core/src/types.d.ts.map +0 -1
- package/dist/packages/core/src/views/Animated.d.ts.map +0 -1
- package/dist/packages/core/src/views/Stack.d.ts.map +0 -1
- package/dist/packages/core/src/views/Text.d.ts +0 -3
- package/dist/packages/core/src/views/Text.d.ts.map +0 -1
- package/dist/packages/core/src/views/TextAncestorContext.d.ts +0 -3
- package/dist/packages/core/src/views/TextAncestorContext.d.ts.map +0 -1
- package/dist/packages/core/src/views/Theme.d.ts.map +0 -1
- package/dist/packages/core/src/views/ThemeContext.d.ts.map +0 -1
- package/dist/packages/core/src/views/ThemeInverse.d.ts.map +0 -1
- package/dist/packages/core/src/views/ThemeManagerContext.d.ts +0 -15
- package/dist/packages/core/src/views/ThemeManagerContext.d.ts.map +0 -1
- package/dist/packages/core/src/views/ThemeProvider.d.ts.map +0 -1
- package/dist/packages/helpers/src/AllRules.d.ts +0 -3
- package/dist/packages/helpers/src/AllRules.d.ts.map +0 -1
- package/dist/packages/helpers/src/concatClassName.d.ts +0 -2
- package/dist/packages/helpers/src/concatClassName.d.ts.map +0 -1
- package/dist/packages/helpers/src/index.d.ts +0 -5
- package/dist/packages/helpers/src/index.d.ts.map +0 -1
- package/dist/packages/helpers/src/types.d.ts +0 -8
- package/dist/packages/helpers/src/types.d.ts.map +0 -1
- package/dist/packages/helpers/src/validStyleProps.d.ts +0 -475
- package/dist/packages/helpers/src/validStyleProps.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +0 -7
- package/dist/views/SafeAreaProvider.js +0 -30
- package/dist/views/SafeAreaProvider.js.map +0 -7
- package/dist/views/Text.js.map +0 -7
- package/dist/views/TextAncestorContext.js.map +0 -7
- package/dist/views/Theme.js.map +0 -7
- package/dist/views/ThemeManagerContext.js.map +0 -7
- package/src/hooks/useForceUpdate.tsx +0 -26
- package/src/views/SafeAreaProvider.tsx +0 -33
- package/tsconfig.json +0 -8
- package/types.d.ts +0 -558
package/src/createComponent.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { concatClassName, stylePropsView } from '@tamagui/helpers'
|
|
2
|
+
import { useForceUpdate } from '@tamagui/use-force-update'
|
|
2
3
|
import React, {
|
|
3
4
|
Children,
|
|
4
5
|
Fragment,
|
|
@@ -20,7 +21,6 @@ import { addStylesUsingClassname, useStylesAsClassname } from './helpers/addStyl
|
|
|
20
21
|
import { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'
|
|
21
22
|
import { getSplitStyles } from './helpers/getSplitStyles'
|
|
22
23
|
import { useFeatures } from './hooks/useFeatures'
|
|
23
|
-
import { useForceUpdate } from './hooks/useForceUpdate'
|
|
24
24
|
import { usePressable } from './hooks/usePressable'
|
|
25
25
|
import {
|
|
26
26
|
SpaceTokens,
|
|
@@ -68,6 +68,46 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
68
68
|
// see onConfiguredOnce below which attaches a name then to this component
|
|
69
69
|
|
|
70
70
|
const component = forwardRef<View, A>((props: any, forwardedRef) => {
|
|
71
|
+
const forceUpdate = useForceUpdate()
|
|
72
|
+
const features = useFeatures(props, { forceUpdate })
|
|
73
|
+
const manager = useContext(ThemeManagerContext)
|
|
74
|
+
const [state, set_] = useState(() => ({
|
|
75
|
+
hover: false,
|
|
76
|
+
press: false,
|
|
77
|
+
pressIn: false,
|
|
78
|
+
theme: manager.name,
|
|
79
|
+
}))
|
|
80
|
+
const set = (next: Partial<typeof state>) =>
|
|
81
|
+
set_((prev) => {
|
|
82
|
+
for (const key in next) {
|
|
83
|
+
if (prev[key] !== next[key]) {
|
|
84
|
+
return { ...prev, ...next }
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return prev
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
// from react-native-web
|
|
91
|
+
if (process.env.NODE_ENV === 'development' && !isText && isWeb) {
|
|
92
|
+
Children.toArray(props.children).forEach((item) => {
|
|
93
|
+
if (typeof item === 'string') {
|
|
94
|
+
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false
|
|
100
|
+
const hostRef = useRef(null)
|
|
101
|
+
|
|
102
|
+
const theme = (manager.theme as any) || initialTheme
|
|
103
|
+
|
|
104
|
+
const {
|
|
105
|
+
viewProps: viewPropsIn,
|
|
106
|
+
pseudos,
|
|
107
|
+
style,
|
|
108
|
+
classNames,
|
|
109
|
+
} = getSplitStyles(props, staticConfig, theme)
|
|
110
|
+
|
|
71
111
|
const {
|
|
72
112
|
tag,
|
|
73
113
|
hitSlop,
|
|
@@ -101,40 +141,19 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
101
141
|
onStartShouldSetResponderCapture,
|
|
102
142
|
onMouseDown,
|
|
103
143
|
onClick,
|
|
104
|
-
// TODO feature load layou hook
|
|
105
|
-
onLayout,
|
|
106
|
-
} = props
|
|
107
144
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const manager = useContext(ThemeManagerContext)
|
|
111
|
-
const [state, set_] = useState(() => ({
|
|
112
|
-
hover: false,
|
|
113
|
-
press: false,
|
|
114
|
-
pressIn: false,
|
|
115
|
-
theme: manager.name,
|
|
116
|
-
}))
|
|
117
|
-
const set = (next: Partial<typeof state>) =>
|
|
118
|
-
set_((prev) => {
|
|
119
|
-
for (const key in next) {
|
|
120
|
-
if (prev[key] !== next[key]) {
|
|
121
|
-
return { ...prev, ...next }
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return prev
|
|
125
|
-
})
|
|
145
|
+
accessible,
|
|
146
|
+
accessibilityRole,
|
|
126
147
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)
|
|
132
|
-
}
|
|
133
|
-
})
|
|
134
|
-
}
|
|
148
|
+
// TODO feature load layout hook
|
|
149
|
+
onLayout,
|
|
150
|
+
...viewProps
|
|
151
|
+
} = viewPropsIn
|
|
135
152
|
|
|
136
|
-
|
|
137
|
-
|
|
153
|
+
if (!isWeb) {
|
|
154
|
+
if (accessible) viewProps.accessible = accessible
|
|
155
|
+
if (accessibilityRole) viewProps.accessibilityRole = accessibilityRole
|
|
156
|
+
}
|
|
138
157
|
|
|
139
158
|
if (isWeb) {
|
|
140
159
|
// from react-native-web
|
|
@@ -160,12 +179,6 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
160
179
|
|
|
161
180
|
const isTracking = useRef(false)
|
|
162
181
|
|
|
163
|
-
const { viewProps, pseudos, style, classNames } = getSplitStyles(
|
|
164
|
-
props,
|
|
165
|
-
staticConfig,
|
|
166
|
-
(manager.theme as any) || initialTheme
|
|
167
|
-
)
|
|
168
|
-
|
|
169
182
|
// hasEverHadEvents prevents repareting if you remove onPress or similar...
|
|
170
183
|
const internal = useRef<{ isMounted: boolean; hasEverHadEvents?: boolean }>()
|
|
171
184
|
if (!internal.current) {
|
|
@@ -228,7 +241,7 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
228
241
|
]
|
|
229
242
|
: [defaultsClassName, props.className, classNames, stylesClassNames]
|
|
230
243
|
|
|
231
|
-
// @ts-
|
|
244
|
+
// @ts-ignore we are optimizing using arguments
|
|
232
245
|
const className = concatClassName(...classList)
|
|
233
246
|
if (process.env.NODE_ENV === 'development') {
|
|
234
247
|
if (props['debug']) {
|
|
@@ -466,7 +479,7 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
466
479
|
} else {
|
|
467
480
|
if (!hasWarnedOnce) {
|
|
468
481
|
hasWarnedOnce = true
|
|
469
|
-
console.log('⚠️
|
|
482
|
+
console.log('⚠️ TODO account for default styles for media queries')
|
|
470
483
|
}
|
|
471
484
|
}
|
|
472
485
|
// @ts-ignore
|
|
@@ -489,10 +502,14 @@ export function createComponent<A extends Object = DefaultProps>(
|
|
|
489
502
|
const res = component as any as StaticComponent<A, void>
|
|
490
503
|
|
|
491
504
|
// add extractable HoC
|
|
492
|
-
res['extractable'] = (Component: any) => {
|
|
505
|
+
res['extractable'] = (Component: any, conf?: StaticConfig) => {
|
|
493
506
|
Component['staticConfig'] = extendStaticConfig(res, {
|
|
507
|
+
...conf,
|
|
494
508
|
neverFlatten: true,
|
|
495
|
-
defaultProps:
|
|
509
|
+
defaultProps: {
|
|
510
|
+
...Component.defaultProps,
|
|
511
|
+
...conf?.defaultProps,
|
|
512
|
+
},
|
|
496
513
|
})
|
|
497
514
|
return Component
|
|
498
515
|
}
|
package/src/createFont.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { validateFont } from './helpers/validate'
|
|
1
2
|
import { GenericFont } from './types'
|
|
2
3
|
|
|
3
4
|
export const createFont = <A extends GenericFont>(font: A): A => {
|
|
5
|
+
if (process.env.NODE_ENV === 'development') {
|
|
6
|
+
validateFont(font)
|
|
7
|
+
}
|
|
8
|
+
|
|
4
9
|
// fills in any missing values based on size keys being standard
|
|
5
10
|
const sizeKeys = Object.keys(font.size)
|
|
6
11
|
|
package/src/createTamagui.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { getStyleRules } from '@tamagui/helpers'
|
|
|
2
2
|
|
|
3
3
|
import { Variable, createVariable, isVariable } from './createVariable'
|
|
4
4
|
import { createTamaguiProvider } from './helpers/createTamaguiProvider'
|
|
5
|
+
import { validateConfig } from './helpers/validate'
|
|
5
6
|
import { configureMedia } from './hooks/useMedia'
|
|
6
7
|
import {
|
|
7
8
|
CreateTamaguiConfig,
|
|
@@ -27,7 +28,10 @@ export type CreateTamaguiProps = TamaguiProviderProps &
|
|
|
27
28
|
let conf: TamaguiInternalConfig | null
|
|
28
29
|
|
|
29
30
|
export const getHasConfigured = () => !!conf
|
|
30
|
-
|
|
31
|
+
|
|
32
|
+
export const getTamagui = () => conf!
|
|
33
|
+
export const getTokens = () => conf!.tokensParsed
|
|
34
|
+
export const getThemes = () => conf!.themes
|
|
31
35
|
|
|
32
36
|
type ConfigListener = (conf: TamaguiInternalConfig) => void
|
|
33
37
|
const configListeners = new Set<ConfigListener>()
|
|
@@ -46,6 +50,12 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
46
50
|
): Conf extends CreateTamaguiConfig<infer A, infer B, infer C, infer D>
|
|
47
51
|
? TamaguiInternalConfig<A, B, C, D>
|
|
48
52
|
: unknown {
|
|
53
|
+
if (process.env.NODE_ENV === 'development') {
|
|
54
|
+
// config is re-run by the @tamagui/static, dont double validate
|
|
55
|
+
if (!config['parsed']) {
|
|
56
|
+
validateConfig(config)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
49
59
|
// test env loads a few times as it runs diff tests
|
|
50
60
|
if (conf) {
|
|
51
61
|
console.warn('Called createTamagui twice! Should never do so')
|
|
@@ -157,6 +167,7 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
157
167
|
themeConfig,
|
|
158
168
|
themeParsed,
|
|
159
169
|
tokensParsed,
|
|
170
|
+
parsed: true,
|
|
160
171
|
getCSS() {
|
|
161
172
|
return `${themeConfig.css}\n${[...getStyleRules()].join('\n')}`
|
|
162
173
|
},
|
package/src/createTheme.ts
CHANGED
|
@@ -3,7 +3,8 @@ import { Variable, createVariable } from './createVariable'
|
|
|
3
3
|
export const createTheme = <Theme extends { [key: string]: string | Variable }>(
|
|
4
4
|
theme: Theme
|
|
5
5
|
): {
|
|
6
|
-
|
|
6
|
+
// allow string | Variable
|
|
7
|
+
[key in keyof Theme]: Variable | string
|
|
7
8
|
} => {
|
|
8
9
|
const res = {} as any
|
|
9
10
|
for (const key in theme) {
|
|
@@ -13,6 +14,8 @@ export const createTheme = <Theme extends { [key: string]: string | Variable }>(
|
|
|
13
14
|
name: key,
|
|
14
15
|
val,
|
|
15
16
|
})
|
|
17
|
+
} else {
|
|
18
|
+
res[key] = val
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
return res
|
package/src/createTokens.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { Variable, createVariable } from './createVariable'
|
|
2
|
+
import { validateTokens } from './helpers/validate'
|
|
2
3
|
import { CreateTokens } from './types'
|
|
3
4
|
|
|
4
|
-
// tokens.color.dark.red ===>{ var: `color-dark-red`, val: '' }
|
|
5
|
+
// tokens.color.dark.red ===> { var: `color-dark-red`, val: '' }
|
|
5
6
|
|
|
6
7
|
export function createTokens<T extends CreateTokens>(tokens: T): MakeTokens<T> {
|
|
8
|
+
if (process.env.NODE_ENV === 'development') {
|
|
9
|
+
validateTokens(tokens)
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
return setupTokens(tokens) as any
|
|
8
13
|
}
|
|
9
14
|
|
package/src/createVariable.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isWeb } from '../constants/platform'
|
|
2
|
+
import { getTamagui } from '../createTamagui'
|
|
2
3
|
import { Variable } from '../createVariable'
|
|
3
4
|
import { StaticConfig, TamaguiInternalConfig } from '../types'
|
|
4
5
|
import { isObj } from './isObj'
|
|
@@ -9,7 +10,7 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
9
10
|
const defaultProps = c.defaultProps || {}
|
|
10
11
|
|
|
11
12
|
return (key: string, value: any, theme: any, props: any) => {
|
|
12
|
-
const conf =
|
|
13
|
+
const conf = getTamagui()
|
|
13
14
|
if (!conf) {
|
|
14
15
|
console.trace('no conf! err')
|
|
15
16
|
return
|
|
@@ -37,7 +38,7 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
37
38
|
: val
|
|
38
39
|
|
|
39
40
|
if (isObj(res)) {
|
|
40
|
-
resolveTokens(res, conf, fontFamily)
|
|
41
|
+
resolveTokens(res, conf, theme, fontFamily)
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
return res
|
|
@@ -53,7 +54,7 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
53
54
|
|
|
54
55
|
if (value && value[0] === '$') {
|
|
55
56
|
shouldReturn = true
|
|
56
|
-
value = getToken(key, value, conf, fontFamily)
|
|
57
|
+
value = getToken(key, value, conf, theme, fontFamily)
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
if (value instanceof Variable) {
|
|
@@ -69,19 +70,19 @@ export const createPropMapper = (c: StaticConfig) => {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
const resolveTokens = (res: any, conf: TamaguiInternalConfig, fontFamily: any) => {
|
|
73
|
+
const resolveTokens = (res: any, conf: TamaguiInternalConfig, theme: any, fontFamily: any) => {
|
|
73
74
|
for (const rKey in res) {
|
|
74
75
|
const fKey = conf.shorthands[rKey] || rKey
|
|
75
76
|
const val = res[rKey]
|
|
76
77
|
if (val instanceof Variable) {
|
|
77
78
|
res[fKey] = val.variable
|
|
78
79
|
} else if (typeof val === 'string') {
|
|
79
|
-
const fVal = val[0] === '$' ? getToken(fKey, val, conf, fontFamily) : val
|
|
80
|
+
const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily) : val
|
|
80
81
|
res[fKey] = fVal
|
|
81
82
|
} else {
|
|
82
83
|
if (isObj(val)) {
|
|
83
84
|
// for things like shadowOffset which is a sub-object
|
|
84
|
-
resolveTokens(val, conf, fontFamily)
|
|
85
|
+
resolveTokens(val, conf, theme, fontFamily)
|
|
85
86
|
}
|
|
86
87
|
// nullish values cant be tokens so need no exrta parsing
|
|
87
88
|
}
|
|
@@ -92,10 +93,17 @@ const getToken = (
|
|
|
92
93
|
key: string,
|
|
93
94
|
value: string,
|
|
94
95
|
{ tokensParsed, themeParsed }: TamaguiInternalConfig,
|
|
96
|
+
theme: any,
|
|
95
97
|
fontFamily: string | undefined = '$body'
|
|
96
98
|
) => {
|
|
97
99
|
if (themeParsed[value]) {
|
|
98
|
-
|
|
100
|
+
if (isWeb && themeParsed[value].variable) {
|
|
101
|
+
return themeParsed[value].variable
|
|
102
|
+
} else {
|
|
103
|
+
if (value && value[0] === '$') {
|
|
104
|
+
return theme[`${value.slice(1)}`]?.val || themeParsed[value]?.val
|
|
105
|
+
}
|
|
106
|
+
}
|
|
99
107
|
}
|
|
100
108
|
let valOrVar: any
|
|
101
109
|
if (key === 'fontFamily') {
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import { ViewStyle } from 'react-native'
|
|
9
9
|
|
|
10
10
|
import { isWeb } from '../constants/platform'
|
|
11
|
-
import { mediaQueryConfig } from '../hooks/useMedia'
|
|
11
|
+
import { mediaQueryConfig, mediaState } from '../hooks/useMedia'
|
|
12
12
|
import { StaticConfigParsed, ThemeObject } from '../types'
|
|
13
13
|
import { createMediaStyle } from './createMediaStyle'
|
|
14
14
|
import { fixNativeShadow } from './fixNativeShadow'
|
|
@@ -28,7 +28,6 @@ export const getSplitStyles = (
|
|
|
28
28
|
const validStyleProps = staticConfig.isText ? stylePropsText : validStyles
|
|
29
29
|
const viewProps: Record<string, any> = {}
|
|
30
30
|
const style: any[] = []
|
|
31
|
-
const blacklistProps = isSplittingDefaultProps ? blacklistDefaultProps : blacklistFinalProps
|
|
32
31
|
|
|
33
32
|
let pseudos: { hoverStyle?: ViewStyle; pressStyle?: ViewStyle } | null = null
|
|
34
33
|
let cur: ViewStyle | null = null
|
|
@@ -54,14 +53,15 @@ export const getSplitStyles = (
|
|
|
54
53
|
const mediaProps = { ...props, ...valInit }
|
|
55
54
|
// TODO media + hover
|
|
56
55
|
const mediaStyle = getSubStyle(valInit, staticConfig, theme, props)
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
|
|
57
|
+
if (isWeb) {
|
|
58
|
+
const mediaStyles = getStylesAtomic(mediaStyle)
|
|
59
|
+
if (process.env.NODE_ENV === 'development') {
|
|
60
|
+
if (props['debug']) {
|
|
61
|
+
console.log('mediaStyles', keyInit, { mediaProps, mediaStyle, mediaStyles })
|
|
62
|
+
}
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
for (const style of mediaStyles) {
|
|
64
|
-
if (isWeb) {
|
|
64
|
+
for (const style of mediaStyles) {
|
|
65
65
|
const out = createMediaStyle(style, mediaKey, mediaQueryConfig)
|
|
66
66
|
classNames = classNames || []
|
|
67
67
|
classNames.push(out.identifier)
|
|
@@ -70,8 +70,10 @@ export const getSplitStyles = (
|
|
|
70
70
|
if (process.env.NODE_ENV === 'development' && props['debug']) {
|
|
71
71
|
console.log('mediaProp', style.identifier, out, mediaProps, mediaStyle, mediaStyles)
|
|
72
72
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
if (mediaState[mediaKey]) {
|
|
76
|
+
style.push(mediaStyle)
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
continue
|
|
@@ -130,8 +132,9 @@ export const getSplitStyles = (
|
|
|
130
132
|
cur[key] = val
|
|
131
133
|
continue
|
|
132
134
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
|
|
136
|
+
// pass to view props
|
|
137
|
+
if (!staticConfig.variants || !(key in staticConfig.variants)) {
|
|
135
138
|
viewProps[key] = val
|
|
136
139
|
}
|
|
137
140
|
}
|
|
@@ -181,19 +184,6 @@ const getSubStyle = (
|
|
|
181
184
|
return styleOut
|
|
182
185
|
}
|
|
183
186
|
|
|
184
|
-
const blacklistDefaultProps = {
|
|
185
|
-
...validStyles,
|
|
186
|
-
...stylePropsText,
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
const blacklistFinalProps = {
|
|
190
|
-
...blacklistDefaultProps,
|
|
191
|
-
tag: true,
|
|
192
|
-
debug: true,
|
|
193
|
-
space: true,
|
|
194
|
-
hitSlop: true,
|
|
195
|
-
}
|
|
196
|
-
|
|
197
187
|
const mapTransformKeys = {
|
|
198
188
|
x: 'translateX',
|
|
199
189
|
y: 'translateY',
|
|
@@ -2,7 +2,15 @@ export const matchMedia =
|
|
|
2
2
|
(typeof window !== 'undefined' && window.matchMedia) ||
|
|
3
3
|
(function matchMediaFallback(query: string) {
|
|
4
4
|
return {
|
|
5
|
-
addListener() {
|
|
5
|
+
addListener() {
|
|
6
|
+
if (
|
|
7
|
+
process.env.NODE_ENV === 'development' &&
|
|
8
|
+
!process.env.IS_STATIC &&
|
|
9
|
+
process.env.TAMAGUI_TARGET !== 'web'
|
|
10
|
+
) {
|
|
11
|
+
console.log('warning: matchMedia not loading! Is native picking up .native.js files?')
|
|
12
|
+
}
|
|
13
|
+
},
|
|
6
14
|
removeListener() {},
|
|
7
15
|
matches: false,
|
|
8
16
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// published a patched version that works on native
|
|
2
|
+
import ow from '@tamagui/ow'
|
|
3
|
+
|
|
4
|
+
export const validateConfig = (conf: any) => {
|
|
5
|
+
if (!conf) {
|
|
6
|
+
console.warn('no conf?')
|
|
7
|
+
return
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
ow(conf, validConfig)
|
|
11
|
+
} catch (err: any) {
|
|
12
|
+
console.log('Given config:\n', JSON.stringify(conf, null, 2))
|
|
13
|
+
throw err
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const validConfig = ow.object.exactShape({
|
|
18
|
+
defaultTheme: ow.optional.string,
|
|
19
|
+
disableRootThemeClass: ow.optional.boolean,
|
|
20
|
+
shorthands: ow.optional.object.valuesOfType(ow.string),
|
|
21
|
+
themes: ow.object.valuesOfType(ow.object),
|
|
22
|
+
tokens: ow.object.valuesOfType(ow.object),
|
|
23
|
+
media: ow.object.valuesOfType(ow.object),
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
const validFont = ow.object.exactShape({
|
|
27
|
+
family: ow.string,
|
|
28
|
+
size: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
29
|
+
lineHeight: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
30
|
+
weight: ow.object.nonEmpty.valuesOfType(ow.string),
|
|
31
|
+
letterSpacing: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
const validTokens = ow.object.exactShape({
|
|
35
|
+
font: ow.object.valuesOfType(validFont),
|
|
36
|
+
size: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
37
|
+
space: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
38
|
+
zIndex: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
39
|
+
radius: ow.object.nonEmpty.valuesOfType(ow.number),
|
|
40
|
+
color: ow.object.nonEmpty.valuesOfType(ow.string),
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
export const validateTokens = (tokens: any) => {
|
|
44
|
+
try {
|
|
45
|
+
ow(tokens, validTokens)
|
|
46
|
+
} catch (err: any) {
|
|
47
|
+
console.log('Given tokens:\n', JSON.stringify(tokens, null, 2))
|
|
48
|
+
throw err
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const validateFont = (font: any) => {
|
|
53
|
+
try {
|
|
54
|
+
ow(font, validFont)
|
|
55
|
+
} catch (err: any) {
|
|
56
|
+
console.log('Given font:\n', JSON.stringify(font, null, 2))
|
|
57
|
+
throw err
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,51 +1,66 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
|
|
3
3
|
import { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'
|
|
4
|
-
import { addMediaQueryListener, removeMediaQueryListener } from './useMedia'
|
|
4
|
+
import { addMediaQueryListener, mediaState, removeMediaQueryListener } from './useMedia'
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
type FeatureDefinition = {
|
|
7
|
+
isEnabled: (props: any) => boolean
|
|
8
|
+
Component: any
|
|
9
|
+
}
|
|
8
10
|
|
|
9
|
-
const createDefinition = ({
|
|
11
|
+
const createDefinition = ({
|
|
12
|
+
Component,
|
|
13
|
+
propNames,
|
|
14
|
+
}: {
|
|
15
|
+
Component: any
|
|
16
|
+
propNames: string[]
|
|
17
|
+
}): FeatureDefinition => ({
|
|
10
18
|
isEnabled: (props: any) => propNames.some((name) => !!props[name]),
|
|
11
19
|
Component,
|
|
12
20
|
})
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
'$xs',
|
|
16
|
-
'$sm',
|
|
17
|
-
'$md',
|
|
18
|
-
'$lg',
|
|
19
|
-
'$xl',
|
|
20
|
-
'$xxl',
|
|
21
|
-
'$pointerCoarse',
|
|
22
|
-
'$hoverNone',
|
|
23
|
-
'$tall',
|
|
24
|
-
'$short',
|
|
25
|
-
'$gtSm',
|
|
26
|
-
'$notXs',
|
|
27
|
-
'$gtMd',
|
|
28
|
-
'$gtLg',
|
|
29
|
-
]
|
|
22
|
+
let featureDefinitions: Record<string, FeatureDefinition> | null = null
|
|
30
23
|
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
export const useFeatures = (props: any, utils?: { forceUpdate?: Function }) => {
|
|
25
|
+
if (!featureDefinitions) {
|
|
26
|
+
featureDefinitions = loadFeatures()
|
|
27
|
+
}
|
|
28
|
+
const features: JSX.Element[] = []
|
|
29
|
+
for (const name in featureDefinitions) {
|
|
30
|
+
const { isEnabled, Component } = featureDefinitions[name]
|
|
31
|
+
if (isEnabled(props) && Component) {
|
|
32
|
+
features.push(<Component key={name} {...props} _utils={utils} />)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return features
|
|
36
|
+
}
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
function loadFeatures(): Record<string, FeatureDefinition> {
|
|
39
|
+
return {
|
|
40
|
+
// TODO
|
|
41
|
+
// measureLayout: createDefinition({
|
|
42
|
+
// Component: (props) => {
|
|
43
|
+
// console.log('measure', props)
|
|
44
|
+
// return null
|
|
45
|
+
// },
|
|
46
|
+
// propNames: ['onLayout'],
|
|
47
|
+
// }),
|
|
48
|
+
|
|
49
|
+
// will update the parent whenever media query changes
|
|
50
|
+
// no need on web, media queries are inserted and run in css
|
|
51
|
+
...(!isWeb && {
|
|
52
|
+
mediaQuery: loadMediaQueryFeature(),
|
|
53
|
+
}),
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function loadMediaQueryFeature() {
|
|
58
|
+
const mediaPropNames = Object.keys(mediaState)
|
|
59
|
+
|
|
60
|
+
return createDefinition({
|
|
61
|
+
Component: (props: any) => {
|
|
62
|
+
const keys = mediaPropNames.flatMap((x) => (x in props ? x.slice(1) : []))
|
|
47
63
|
|
|
48
|
-
const keys = mediaQueryPropNames.flatMap((x) => (x in props ? x.slice(1) : []))
|
|
49
64
|
useIsomorphicLayoutEffect(() => {
|
|
50
65
|
for (const key of keys) {
|
|
51
66
|
addMediaQueryListener(key, props._utils.forceUpdate)
|
|
@@ -56,23 +71,9 @@ const featureDefinitions = {
|
|
|
56
71
|
}
|
|
57
72
|
}
|
|
58
73
|
}, [keys.join(',')])
|
|
74
|
+
|
|
59
75
|
return null
|
|
60
76
|
},
|
|
61
|
-
propNames:
|
|
62
|
-
})
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const featureNames = Object.keys(featureDefinitions)
|
|
66
|
-
const numFeatures = featureNames.length
|
|
67
|
-
|
|
68
|
-
export const useFeatures = (props: any, utils?: { forceUpdate?: Function }) => {
|
|
69
|
-
const features: JSX.Element[] = []
|
|
70
|
-
for (let i = 0; i < numFeatures; i++) {
|
|
71
|
-
const name = featureNames[i]
|
|
72
|
-
const { isEnabled, Component } = featureDefinitions[name] as any //FeatureDefinition
|
|
73
|
-
if (isEnabled(props) && Component) {
|
|
74
|
-
features.push(<Component key={name} {...props} _utils={utils} />)
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return features
|
|
77
|
+
propNames: mediaPropNames,
|
|
78
|
+
})
|
|
78
79
|
}
|
package/src/hooks/useMedia.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useForceUpdate } from '@tamagui/use-force-update'
|
|
1
2
|
import { useRef } from 'react'
|
|
2
3
|
|
|
3
4
|
import { useIsomorphicLayoutEffect } from '../constants/platform'
|
|
@@ -9,7 +10,6 @@ import {
|
|
|
9
10
|
MediaQueryState,
|
|
10
11
|
} from '../types'
|
|
11
12
|
import { useConstant } from './useConstant'
|
|
12
|
-
import { useForceUpdate } from './useForceUpdate'
|
|
13
13
|
|
|
14
14
|
export const mediaState: { [key in keyof MediaQueryState]: boolean } = {} as any
|
|
15
15
|
const mediaQueryListeners: { [key: string]: Set<Function> } = {}
|
|
@@ -20,7 +20,7 @@ export const addMediaQueryListener = (key: string, cb: any) => {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export const removeMediaQueryListener = (key: string, cb: any) => {
|
|
23
|
-
mediaQueryListeners[key]
|
|
23
|
+
mediaQueryListeners[key]?.delete(cb)
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
let conf: MediaQueries | null = null
|
|
@@ -28,13 +28,15 @@ let conf: MediaQueries | null = null
|
|
|
28
28
|
export const mediaQueryConfig = new Proxy<MediaQueries>({} as any, {
|
|
29
29
|
get(target, key) {
|
|
30
30
|
if (!conf) {
|
|
31
|
-
|
|
31
|
+
console.warn('Warning: accessing media query before init')
|
|
32
|
+
return null
|
|
32
33
|
}
|
|
33
34
|
return Reflect.get(conf, key)
|
|
34
35
|
},
|
|
35
36
|
ownKeys() {
|
|
36
37
|
if (!conf) {
|
|
37
|
-
|
|
38
|
+
console.warn('Warning: accessing media query before init')
|
|
39
|
+
return []
|
|
38
40
|
}
|
|
39
41
|
return Object.keys(conf)
|
|
40
42
|
},
|