@tamagui/core 1.0.0-alpha.0 → 1.0.0-alpha.12
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/LICENSE +21 -0
- package/dist/cjs/constants/constants.js +50 -0
- package/dist/cjs/constants/constants.js.map +7 -0
- 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/cjs/constants/pseudos.js.map +7 -0
- package/dist/cjs/constants/rnw.js +28 -0
- package/dist/cjs/constants/rnw.js.map +7 -0
- 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 +7 -0
- package/dist/cjs/createTamagui.js +206 -0
- package/dist/cjs/createTamagui.js.map +7 -0
- package/dist/cjs/createTheme.js +42 -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/cjs/helpers/createMediaStyle.js.map +7 -0
- 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 +7 -0
- 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 +7 -0
- 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/cjs/helpers/insertStyleRule.js.map +7 -0
- 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 +7 -0
- 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/cjs/hooks/useConstant.js.map +7 -0
- package/dist/cjs/hooks/useFeatures.js +100 -0
- package/dist/cjs/hooks/useFeatures.js.map +7 -0
- package/dist/cjs/hooks/useMedia.js +206 -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 +7 -0
- package/dist/cjs/hooks/useTheme.js +111 -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/cjs/static/postProcessStyles.js.map +7 -0
- 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/cjs/views/Animated.js.map +7 -0
- package/dist/cjs/views/Stack.js +51 -0
- package/dist/cjs/views/Stack.js.map +7 -0
- package/dist/cjs/views/Text.js +93 -0
- package/dist/cjs/views/Text.js.map +7 -0
- package/dist/cjs/views/TextAncestorContext.js +41 -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/cjs/views/ThemeContext.js.map +7 -0
- package/dist/cjs/views/ThemeInverse.js +48 -0
- package/dist/cjs/views/ThemeInverse.js.map +7 -0
- 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/cjs/views/ThemeProvider.js.map +7 -0
- package/dist/constants/platform.js +1 -1
- package/dist/constants/platform.js.map +2 -2
- package/dist/createComponent.js +51 -32
- package/dist/createComponent.js.map +2 -2
- package/dist/createFont.js +4 -0
- package/dist/createFont.js.map +2 -2
- package/dist/createTamagui.js +11 -2
- package/dist/createTamagui.js.map +2 -2
- package/dist/createTokens.js +4 -0
- package/dist/createTokens.js.map +2 -2
- package/dist/createVariable.js +3 -0
- package/dist/createVariable.js.map +2 -2
- package/{_ → dist/esm}/constants/constants.js +0 -0
- package/{_ → dist/esm}/constants/constants.js.map +1 -1
- package/{_ → dist/esm}/constants/platform.js +1 -2
- package/dist/esm/constants/platform.js.map +7 -0
- 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/esm}/constants/rnw.js.map +1 -1
- package/{_ → dist/esm}/createComponent.js +115 -78
- package/dist/esm/createComponent.js.map +7 -0
- package/dist/esm/createFont.js +28 -0
- package/dist/esm/createFont.js.map +7 -0
- package/{_ → dist/esm}/createShorthands.js +0 -0
- package/{_ → dist/esm}/createShorthands.js.map +1 -1
- package/{_ → dist/esm}/createTamagui.js +61 -15
- package/dist/esm/createTamagui.js.map +7 -0
- package/{_ → dist/esm}/createTheme.js +0 -0
- package/{_ → dist/esm}/createTheme.js.map +1 -1
- package/{_ → dist/esm}/createTokens.js +4 -0
- package/dist/esm/createTokens.js.map +7 -0
- package/{_ → dist/esm}/createVariable.js +3 -0
- package/{_ → dist/esm}/createVariable.js.map +3 -3
- package/dist/esm/helpers/addStylesUsingClassname.js +57 -0
- package/dist/esm/helpers/addStylesUsingClassname.js.map +7 -0
- package/{_ → dist/esm}/helpers/createMediaStyle.js +0 -0
- package/{_ → dist/esm}/helpers/createMediaStyle.js.map +1 -1
- package/dist/esm/helpers/createPropMapper.js +160 -0
- package/dist/esm/helpers/createPropMapper.js.map +7 -0
- package/{_ → dist/esm}/helpers/createTamaguiProvider.js +2 -19
- package/dist/esm/helpers/createTamaguiProvider.js.map +7 -0
- package/dist/esm/helpers/extendStaticConfig.js +59 -0
- package/dist/esm/helpers/extendStaticConfig.js.map +7 -0
- package/{_ → dist/esm}/helpers/fixNativeShadow.js +0 -0
- package/{_ → dist/esm}/helpers/fixNativeShadow.js.map +1 -1
- package/{_ → dist/esm}/helpers/fixNativeShadow.native.js +0 -0
- package/{_ → dist/esm}/helpers/fixNativeShadow.native.js.map +1 -1
- package/{_ → dist/esm}/helpers/getSplitStyles.js +18 -28
- package/dist/esm/helpers/getSplitStyles.js.map +7 -0
- package/{_ → dist/esm}/helpers/getStylesAtomic.js +1 -2
- package/{_ → dist/esm}/helpers/getStylesAtomic.js.map +2 -2
- 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/esm/helpers/isObj.js +7 -0
- package/dist/esm/helpers/isObj.js.map +7 -0
- 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/esm}/helpers/matchMedia.native.js +1 -0
- package/{_ → dist/esm}/helpers/matchMedia.native.js.map +3 -3
- package/{_ → dist/esm}/helpers/themeable.js +1 -1
- package/{_ → dist/esm}/helpers/themeable.js.map +2 -2
- 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/esm}/hooks/useMedia.js +7 -7
- package/dist/esm/hooks/useMedia.js.map +7 -0
- package/{_ → dist/esm}/hooks/usePressable.js +1 -2
- package/{_ → dist/esm}/hooks/usePressable.js.map +2 -2
- package/{_ → dist/esm}/hooks/useTheme.js +6 -11
- package/dist/esm/hooks/useTheme.js.map +7 -0
- package/{_ → dist/esm}/index.js +3 -1
- package/dist/esm/index.js.map +7 -0
- package/{_ → dist/esm}/static/postProcessStyles.js +0 -0
- package/{_ → dist/esm}/static/postProcessStyles.js.map +1 -1
- package/{_ → dist/esm}/static.js +3 -0
- package/dist/esm/static.js.map +7 -0
- package/{_ → dist/esm}/styled.js +2 -2
- package/dist/esm/styled.js.map +7 -0
- 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/esm}/views/Text.js +0 -0
- package/{_ → dist/esm}/views/Text.js.map +1 -1
- package/{_ → dist/esm}/views/TextAncestorContext.js +1 -2
- package/{_ → dist/esm}/views/TextAncestorContext.js.map +2 -2
- package/{_ → dist/esm}/views/Theme.js +25 -14
- 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/esm}/views/ThemeManagerContext.js +12 -7
- 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/helpers/createPropMapper.js +16 -9
- package/dist/helpers/createPropMapper.js.map +2 -2
- package/dist/helpers/getSplitStyles.js +13 -23
- package/dist/helpers/getSplitStyles.js.map +2 -2
- package/dist/helpers/isComponent.js +10 -0
- package/dist/helpers/isComponent.js.map +7 -0
- package/dist/helpers/isTamaguiComponent.js +10 -0
- package/dist/helpers/isTamaguiComponent.js.map +7 -0
- package/dist/helpers/isTamaguiElement.js +10 -0
- package/dist/helpers/isTamaguiElement.js.map +7 -0
- package/dist/helpers/matchMedia.js +3 -0
- package/dist/helpers/matchMedia.js.map +2 -2
- package/dist/helpers/matchMedia.native.js +1 -0
- package/dist/helpers/matchMedia.native.js.map +2 -2
- package/dist/helpers/validate.js +60 -0
- package/dist/helpers/validate.js.map +7 -0
- package/dist/helpers/validateConfig.js +46 -0
- package/dist/helpers/validateConfig.js.map +7 -0
- package/dist/helpers/validateTokens.js +29 -0
- package/dist/helpers/validateTokens.js.map +7 -0
- package/dist/hooks/useFeatures.js +39 -51
- package/dist/hooks/useFeatures.js.map +2 -2
- package/dist/hooks/useMedia.js +5 -3
- package/dist/hooks/useMedia.js.map +2 -2
- package/dist/hooks/useTheme.js +5 -9
- package/dist/hooks/useTheme.js.map +2 -2
- package/dist/index.cjs +274 -197
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +1 -2
- package/dist/index.js.map +2 -2
- package/dist/jsx/constants/constants.js +13 -0
- package/dist/jsx/constants/platform.js +18 -0
- package/dist/jsx/constants/pseudos.js +17 -0
- package/dist/jsx/constants/rnw.js +21 -0
- package/dist/jsx/createComponent.js +458 -0
- package/dist/jsx/createFont.js +27 -0
- package/dist/jsx/createShorthands.js +9 -0
- package/dist/jsx/createTamagui.js +167 -0
- package/dist/jsx/createTheme.js +19 -0
- package/dist/jsx/createTokens.js +32 -0
- package/dist/jsx/createVariable.js +24 -0
- package/dist/jsx/helpers/addStylesUsingClassname.js +56 -0
- package/dist/jsx/helpers/createMediaStyle.js +33 -0
- 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/jsx/helpers/fixNativeShadow.js +7 -0
- package/dist/jsx/helpers/fixNativeShadow.native.js +29 -0
- package/dist/jsx/helpers/getSplitStyles.js +149 -0
- package/dist/jsx/helpers/getStylesAtomic.js +82 -0
- package/dist/jsx/helpers/getStylesAtomic.native.js +9 -0
- package/dist/jsx/helpers/insertStyleRule.js +23 -0
- package/dist/jsx/helpers/isObj.js +6 -0
- package/dist/jsx/helpers/isTamaguiElement.js +9 -0
- package/dist/jsx/helpers/matchMedia.js +17 -0
- package/dist/jsx/helpers/matchMedia.native.js +8 -0
- package/dist/jsx/helpers/themeable.js +23 -0
- package/dist/jsx/helpers/validate.js +59 -0
- package/dist/jsx/hooks/useConstant.js +14 -0
- package/dist/jsx/hooks/useFeatures.js +57 -0
- package/dist/jsx/hooks/useMedia.js +172 -0
- package/dist/jsx/hooks/usePressable.js +12 -0
- package/dist/jsx/hooks/useTheme.js +88 -0
- package/dist/jsx/index.js +31 -0
- package/dist/jsx/static/postProcessStyles.js +17 -0
- package/dist/jsx/static.js +14 -0
- package/dist/jsx/styled.js +20 -0
- package/dist/jsx/types.js +0 -0
- package/dist/jsx/views/Animated.js +74 -0
- package/dist/jsx/views/Stack.js +11 -0
- package/dist/jsx/views/Text.js +59 -0
- package/dist/jsx/views/TextAncestorContext.js +14 -0
- package/dist/jsx/views/Theme.js +62 -0
- package/dist/jsx/views/ThemeContext.js +5 -0
- package/dist/jsx/views/ThemeInverse.js +22 -0
- package/dist/jsx/views/ThemeManagerContext.js +60 -0
- package/dist/jsx/views/ThemeProvider.js +39 -0
- package/dist/views/Theme.js +25 -13
- package/dist/views/Theme.js.map +2 -2
- package/dist/views/ThemeInverse.js +0 -1
- package/dist/views/ThemeInverse.js.map +2 -2
- package/dist/views/ThemeManagerContext.js +11 -5
- package/dist/views/ThemeManagerContext.js.map +2 -2
- package/package.json +17 -9
- package/src/constants/platform.ts +1 -1
- package/src/createComponent.tsx +59 -41
- package/src/createFont.ts +5 -0
- package/src/createTamagui.ts +11 -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 +5 -3
- package/src/hooks/useTheme.tsx +7 -8
- package/src/index.ts +1 -2
- package/src/types.tsx +9 -8
- package/src/views/Text.tsx +2 -1
- package/src/views/Theme.tsx +42 -21
- package/src/views/ThemeInverse.tsx +0 -1
- package/src/views/ThemeManagerContext.tsx +18 -6
- package/types/constants/constants.d.ts +8 -0
- package/types/constants/constants.d.ts.map +1 -0
- package/types/constants/platform.d.ts +9 -0
- package/types/constants/platform.d.ts.map +1 -0
- package/types/constants/pseudos.d.ts +15 -0
- package/types/constants/pseudos.d.ts.map +1 -0
- package/types/constants/rnw.d.ts +2 -0
- package/types/constants/rnw.d.ts.map +1 -0
- package/types/createComponent.d.ts +17 -0
- package/types/createComponent.d.ts.map +1 -0
- package/types/createFont.d.ts +3 -0
- package/types/createFont.d.ts.map +1 -0
- package/types/createShorthands.d.ts +2 -0
- package/types/createShorthands.d.ts.map +1 -0
- package/types/createTamagui.d.ts +38 -0
- package/types/createTamagui.d.ts.map +1 -0
- package/types/createTheme.d.ts +5 -0
- package/types/createTheme.d.ts.map +1 -0
- package/types/createTokens.d.ts +55 -0
- package/types/createTokens.d.ts.map +1 -0
- package/types/createVariable.d.ts +15 -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/types/helpers/createMediaStyle.d.ts +8 -0
- 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/types/helpers/createTamaguiProvider.d.ts +5 -0
- package/types/helpers/createTamaguiProvider.d.ts.map +1 -0
- package/types/helpers/extendStaticConfig.d.ts +5 -0
- package/types/helpers/extendStaticConfig.d.ts.map +1 -0
- package/types/helpers/fixNativeShadow.d.ts +2 -0
- package/types/helpers/fixNativeShadow.d.ts.map +1 -0
- package/types/helpers/fixNativeShadow.native.d.ts +2 -0
- package/types/helpers/fixNativeShadow.native.d.ts.map +1 -0
- package/types/helpers/getSplitStyles.d.ts +15 -0
- package/types/helpers/getSplitStyles.d.ts.map +1 -0
- package/types/helpers/getStylesAtomic.d.ts +3 -0
- package/types/helpers/getStylesAtomic.d.ts.map +1 -0
- package/types/helpers/getStylesAtomic.native.d.ts +2 -0
- package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
- package/types/helpers/insertStyleRule.d.ts +2 -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/types/helpers/matchMedia.d.ts +2 -0
- package/types/helpers/matchMedia.d.ts.map +1 -0
- package/types/helpers/matchMedia.native.d.ts +3 -0
- package/types/helpers/matchMedia.native.d.ts.map +1 -0
- package/types/helpers/themeable.d.ts +10 -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/types/hooks/useConstant.d.ts +2 -0
- package/types/hooks/useConstant.d.ts.map +1 -0
- package/types/hooks/useFeatures.d.ts +5 -0
- package/types/hooks/useFeatures.d.ts.map +1 -0
- package/types/hooks/useMedia.d.ts +16 -0
- package/types/hooks/useMedia.d.ts.map +1 -0
- package/types/hooks/usePressable.d.ts +3 -0
- package/types/hooks/usePressable.d.ts.map +1 -0
- package/types/hooks/useTheme.d.ts +20 -0
- package/types/hooks/useTheme.d.ts.map +1 -0
- package/types/index.d.ts +29 -0
- package/types/index.d.ts.map +1 -0
- package/types/static/postProcessStyles.d.ts +7 -0
- package/types/static/postProcessStyles.d.ts.map +1 -0
- package/types/static.d.ts +15 -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/types/types.d.ts +306 -0
- package/types/types.d.ts.map +1 -0
- package/types/views/Animated.d.ts +15 -0
- package/types/views/Animated.d.ts.map +1 -0
- package/types/views/Stack.d.ts +3 -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 +3 -0
- package/types/views/TextAncestorContext.d.ts.map +1 -0
- package/types/views/Theme.d.ts +8 -0
- package/types/views/Theme.d.ts.map +1 -0
- package/types/views/ThemeContext.d.ts +18 -0
- package/types/views/ThemeContext.d.ts.map +1 -0
- package/types/views/ThemeInverse.d.ts +10 -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/types/views/ThemeProvider.d.ts +10 -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/_/createTokens.js.map +0 -7
- package/_/helpers/addStylesUsingClassname.js +0 -32
- package/_/helpers/addStylesUsingClassname.js.map +0 -7
- package/_/helpers/createTamaguiProvider.js.map +0 -7
- package/_/helpers/extendStaticConfig.js +0 -176
- package/_/helpers/extendStaticConfig.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/Theme.js.map +0 -7
- package/_/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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/views/Theme.tsx"],
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useState } from 'react'\n\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getThemeParentClassName } from '../createTamagui'\nimport { useConstant } from '../hooks/useConstant'\nimport { ThemeName } from '../types'\nimport { ThemeContext } from './ThemeContext'\nimport { ThemeManager, ThemeManagerContext } from './ThemeManagerContext'\n\nexport type ThemeProps = {\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n children?: any\n}\n\nexport const Theme = (props: ThemeProps) => {\n const parent = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const [parentName, setParentName] = useState(parent.name || 'light')\n if (!themes) {\n console.warn('Error, no themes in context', props)\n return props.children\n }\n\n const nextNameParent = `${props.name}-${parentName}`\n const nextNameParentParent = `${props.name}-${parent.parentName}`\n const name = !props.name\n ? null\n : props.name in themes\n ? props.name\n : nextNameParent in themes\n ? nextNameParent\n : nextNameParentParent in themes\n ? nextNameParentParent\n : null\n const theme = name ? themes[name] : null\n const themeManager = useConstant<ThemeManager | null>(() => {\n if (!theme) {\n return null\n }\n const manager = new ThemeManager()\n if (name) {\n manager.setActiveTheme({ name, theme: themes[name], parentName })\n }\n return manager\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!themeManager) {\n return\n }\n if (name) {\n themeManager.setActiveTheme({ name, theme, parentName })\n }\n return parent.onChangeTheme((next) => {\n if (next) {\n themeManager.setActiveTheme({ name: next, theme: themes[next], parentName })\n setParentName(next)\n }\n })\n }, [themes, name, parentName])\n\n if (!name || !theme) {\n return props.children\n }\n\n const contents = themeManager ? (\n <ThemeManagerContext.Provider value={themeManager}>\n {props.children}\n </ThemeManagerContext.Provider>\n ) : (\n props.children\n )\n\n if (isWeb) {\n if (props.disableThemeClass) {\n return contents\n }\n if (name) {\n const color = themes[name]?.['color']?.['variable']\n return (\n <div\n className={getThemeParentClassName(props.name)}\n // in order to provide currentColor, set color by default\n style={{ display: 'contents', color }}\n >\n {contents}\n </div>\n )\n }\n }\n\n return contents\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,mBAA4C;AAE5C,sBAAiD;AACjD,2BAAwC;AACxC,yBAA4B;AAE5B,0BAA6B;AAC7B,iCAAkD;AAQ3C,MAAM,QAAQ,wBAAC,UAAsB;AAf5C;AAgBE,QAAM,SAAS,6BAAW;AAC1B,QAAM,SAAS,6BAAW;AAC1B,QAAM,CAAC,YAAY,iBAAiB,2BAAS,OAAO,QAAQ;AAC5D,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,+BAA+B;AAC5C,WAAO,MAAM;AAAA;AAGf,QAAM,iBAAiB,GAAG,MAAM,QAAQ;AACxC,QAAM,uBAAuB,GAAG,MAAM,QAAQ,OAAO;AACrD,QAAM,OAAO,CAAC,MAAM,OAChB,OACA,MAAM,QAAQ,SACd,MAAM,OACN,kBAAkB,SAClB,iBACA,wBAAwB,SACxB,uBACA;AACJ,QAAM,QAAQ,OAAO,OAAO,QAAQ;AACpC,QAAM,eAAe,oCAAiC,MAAM;AAC1D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA;AAET,UAAM,UAAU,IAAI;AACpB,QAAI,MAAM;AACR,cAAQ,eAAe,EAAE,MAAM,OAAO,OAAO,OAAO;AAAA;AAEtD,WAAO;AAAA;AAGT,iDAA0B,MAAM;AAC9B,QAAI,CAAC,cAAc;AACjB;AAAA;AAEF,QAAI,MAAM;AACR,mBAAa,eAAe,EAAE,MAAM,OAAO;AAAA;AAE7C,WAAO,OAAO,cAAc,CAAC,SAAS;AACpC,UAAI,MAAM;AACR,qBAAa,eAAe,EAAE,MAAM,MAAM,OAAO,OAAO,OAAO;AAC/D,sBAAc;AAAA;AAAA;AAAA,KAGjB,CAAC,QAAQ,MAAM;AAElB,MAAI,CAAC,QAAQ,CAAC,OAAO;AACnB,WAAO,MAAM;AAAA;AAGf,QAAM,WAAW,eACf,mDAAC,+CAAoB,UAArB;AAAA,IAA8B,OAAO;AAAA,KAClC,MAAM,YAGT,MAAM;AAGR,MAAI,uBAAO;AACT,QAAI,MAAM,mBAAmB;AAC3B,aAAO;AAAA;AAET,QAAI,MAAM;AACR,YAAM,QAAQ,mBAAO,UAAP,mBAAe,aAAf,mBAA0B;AACxC,aACE,mDAAC,OAAD;AAAA,QACE,WAAW,kDAAwB,MAAM;AAAA,QAEzC,OAAO,EAAE,SAAS,YAAY;AAAA,SAE7B;AAAA;AAAA;AAMT,SAAO;AAAA,GA7EY;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
__markAsModule(target);
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, module2, desc) => {
|
|
14
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(module2))
|
|
16
|
+
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
17
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return target;
|
|
20
|
+
};
|
|
21
|
+
var __toModule = (module2) => {
|
|
22
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
23
|
+
};
|
|
24
|
+
__export(exports, {
|
|
25
|
+
ThemeContext: () => ThemeContext
|
|
26
|
+
});
|
|
27
|
+
var import_react = __toModule(require("react"));
|
|
28
|
+
const ThemeContext = (0, import_react.createContext)(null);
|
|
29
|
+
//# sourceMappingURL=ThemeContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/views/ThemeContext.tsx"],
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\nimport { Themes } from '../types'\n\nexport const ThemeContext = createContext<Themes>(null as any)\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAIvB,MAAM,eAAe,gCAAsB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
__markAsModule(target);
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, module2, desc) => {
|
|
15
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(module2))
|
|
17
|
+
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
18
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return target;
|
|
21
|
+
};
|
|
22
|
+
var __toModule = (module2) => {
|
|
23
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
24
|
+
};
|
|
25
|
+
__export(exports, {
|
|
26
|
+
ThemeInverse: () => ThemeInverse,
|
|
27
|
+
setThemeInversions: () => setThemeInversions
|
|
28
|
+
});
|
|
29
|
+
var import_react = __toModule(require("react"));
|
|
30
|
+
var import_useTheme = __toModule(require("../hooks/useTheme"));
|
|
31
|
+
var import_Theme = __toModule(require("./Theme"));
|
|
32
|
+
let inversions = {
|
|
33
|
+
light: "dark",
|
|
34
|
+
dark: "light"
|
|
35
|
+
};
|
|
36
|
+
function setThemeInversions(next) {
|
|
37
|
+
inversions = next;
|
|
38
|
+
}
|
|
39
|
+
__name(setThemeInversions, "setThemeInversions");
|
|
40
|
+
const ThemeInverse = /* @__PURE__ */ __name((props) => {
|
|
41
|
+
const themeName = (0, import_useTheme.useThemeName)();
|
|
42
|
+
const defaultTheme = (0, import_useTheme.useDefaultThemeName)();
|
|
43
|
+
const name = inversions[themeName] || inversions[defaultTheme] || null;
|
|
44
|
+
return /* @__PURE__ */ import_react.default.createElement(import_Theme.Theme, {
|
|
45
|
+
name
|
|
46
|
+
}, props.children);
|
|
47
|
+
}, "ThemeInverse");
|
|
48
|
+
//# sourceMappingURL=ThemeInverse.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/views/ThemeInverse.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\n\nimport { useDefaultThemeName, useThemeName } from '../hooks/useTheme'\nimport { Theme } from './Theme'\n\ntype StringRecord = { [key: string]: string }\n\nlet inversions: StringRecord = {\n light: 'dark',\n dark: 'light',\n}\n\nexport function setThemeInversions(next: StringRecord) {\n inversions = next\n}\n\nexport const ThemeInverse = (props: { children: any }) => {\n const themeName = useThemeName()\n const defaultTheme = useDefaultThemeName()\n const name = inversions[themeName] || inversions[defaultTheme] || null\n return <Theme name={name}>{props.children}</Theme>\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,sBAAkD;AAClD,mBAAsB;AAItB,IAAI,aAA2B;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA;AAGD,4BAA4B,MAAoB;AACrD,eAAa;AAAA;AADC;AAIT,MAAM,eAAe,wBAAC,UAA6B;AACxD,QAAM,YAAY;AAClB,QAAM,eAAe;AACrB,QAAM,OAAO,WAAW,cAAc,WAAW,iBAAiB;AAClE,SAAO,mDAAC,oBAAD;AAAA,IAAO;AAAA,KAAa,MAAM;AAAA,GAJP;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
__markAsModule(target);
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, module2, desc) => {
|
|
15
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(module2))
|
|
17
|
+
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
18
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return target;
|
|
21
|
+
};
|
|
22
|
+
var __toModule = (module2) => {
|
|
23
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
24
|
+
};
|
|
25
|
+
__export(exports, {
|
|
26
|
+
ThemeManager: () => ThemeManager,
|
|
27
|
+
ThemeManagerContext: () => ThemeManagerContext
|
|
28
|
+
});
|
|
29
|
+
var import_react = __toModule(require("react"));
|
|
30
|
+
class ThemeManager {
|
|
31
|
+
constructor() {
|
|
32
|
+
this.name = "light";
|
|
33
|
+
this.parentName = null;
|
|
34
|
+
this.keys = new Map();
|
|
35
|
+
this.listeners = new Map();
|
|
36
|
+
this.themeListeners = new Set();
|
|
37
|
+
this.theme = null;
|
|
38
|
+
}
|
|
39
|
+
setActiveTheme({
|
|
40
|
+
name,
|
|
41
|
+
theme,
|
|
42
|
+
parentName
|
|
43
|
+
}) {
|
|
44
|
+
if (name === this.name)
|
|
45
|
+
return;
|
|
46
|
+
this.name = name;
|
|
47
|
+
this.theme = theme;
|
|
48
|
+
this.parentName = parentName || null;
|
|
49
|
+
this.update();
|
|
50
|
+
}
|
|
51
|
+
track(uuid, keys) {
|
|
52
|
+
if (!this.name)
|
|
53
|
+
return;
|
|
54
|
+
this.keys.set(uuid, keys);
|
|
55
|
+
}
|
|
56
|
+
update() {
|
|
57
|
+
var _a;
|
|
58
|
+
if (!this.name) {
|
|
59
|
+
this.keys.clear();
|
|
60
|
+
}
|
|
61
|
+
for (const [uuid, keys] of this.keys.entries()) {
|
|
62
|
+
if (keys.size) {
|
|
63
|
+
(_a = this.listeners.get(uuid)) == null ? void 0 : _a();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.themeListeners.forEach((cb) => cb(this.name, this));
|
|
67
|
+
}
|
|
68
|
+
onChangeTheme(cb) {
|
|
69
|
+
this.themeListeners.add(cb);
|
|
70
|
+
return () => {
|
|
71
|
+
this.themeListeners.delete(cb);
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
onUpdate(uuid, cb) {
|
|
75
|
+
this.listeners.set(uuid, cb);
|
|
76
|
+
return () => {
|
|
77
|
+
this.listeners.delete(uuid);
|
|
78
|
+
this.keys.delete(uuid);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
__name(ThemeManager, "ThemeManager");
|
|
83
|
+
const ThemeManagerContext = (0, import_react.createContext)(new ThemeManager());
|
|
84
|
+
//# sourceMappingURL=ThemeManagerContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/views/ThemeManagerContext.tsx"],
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\ntype ThemeListener = (name: string | null, themeManager: ThemeManager) => void\n\nexport class ThemeManager {\n name: string | null = 'light'\n parentName: string | null = null\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n themeListeners = new Set<ThemeListener>()\n theme = null\n\n setActiveTheme({\n name,\n theme,\n parentName,\n }: {\n parentName?: string | null\n name: string | null\n theme?: any\n }) {\n if (name === this.name) return\n this.name = name\n this.theme = theme\n this.parentName = parentName || null\n this.update()\n }\n\n track(uuid: any, keys: Set<string>) {\n if (!this.name) return\n this.keys.set(uuid, keys)\n }\n\n update() {\n if (!this.name) {\n this.keys.clear()\n }\n for (const [uuid, keys] of this.keys.entries()) {\n if (keys.size) {\n this.listeners.get(uuid)?.()\n }\n }\n this.themeListeners.forEach((cb) => cb(this.name, this))\n }\n\n onChangeTheme(cb: ThemeListener) {\n this.themeListeners.add(cb)\n return () => {\n this.themeListeners.delete(cb)\n }\n }\n\n onUpdate(uuid: any, cb: Function) {\n this.listeners.set(uuid, cb)\n return () => {\n this.listeners.delete(uuid)\n this.keys.delete(uuid)\n }\n }\n}\n\nexport const ThemeManagerContext = createContext<ThemeManager>(new ThemeManager())\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8B;AAIvB,mBAAmB;AAAA,EAAnB,cAJP;AAKE,gBAAsB;AACtB,sBAA4B;AAC5B,gBAAO,IAAI;AACX,qBAAY,IAAI;AAChB,0BAAiB,IAAI;AACrB,iBAAQ;AAAA;AAAA,EAER,eAAe;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,KAKC;AACD,QAAI,SAAS,KAAK;AAAM;AACxB,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,aAAa,cAAc;AAChC,SAAK;AAAA;AAAA,EAGP,MAAM,MAAW,MAAmB;AAClC,QAAI,CAAC,KAAK;AAAM;AAChB,SAAK,KAAK,IAAI,MAAM;AAAA;AAAA,EAGtB,SAAS;AAjCX;AAkCI,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,KAAK;AAAA;AAEZ,eAAW,CAAC,MAAM,SAAS,KAAK,KAAK,WAAW;AAC9C,UAAI,KAAK,MAAM;AACb,mBAAK,UAAU,IAAI,UAAnB;AAAA;AAAA;AAGJ,SAAK,eAAe,QAAQ,CAAC,OAAO,GAAG,KAAK,MAAM;AAAA;AAAA,EAGpD,cAAc,IAAmB;AAC/B,SAAK,eAAe,IAAI;AACxB,WAAO,MAAM;AACX,WAAK,eAAe,OAAO;AAAA;AAAA;AAAA,EAI/B,SAAS,MAAW,IAAc;AAChC,SAAK,UAAU,IAAI,MAAM;AACzB,WAAO,MAAM;AACX,WAAK,UAAU,OAAO;AACtB,WAAK,KAAK,OAAO;AAAA;AAAA;AAAA;AApDhB;AAyDA,MAAM,sBAAsB,gCAA4B,IAAI;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
__markAsModule(target);
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, module2, desc) => {
|
|
15
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(module2))
|
|
17
|
+
if (!__hasOwnProp.call(target, key) && key !== "default")
|
|
18
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return target;
|
|
21
|
+
};
|
|
22
|
+
var __toModule = (module2) => {
|
|
23
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
24
|
+
};
|
|
25
|
+
__export(exports, {
|
|
26
|
+
GET_DEFAULT_THEME: () => GET_DEFAULT_THEME,
|
|
27
|
+
ThemeProvider: () => ThemeProvider
|
|
28
|
+
});
|
|
29
|
+
var import_react = __toModule(require("react"));
|
|
30
|
+
var import_platform = __toModule(require("../constants/platform"));
|
|
31
|
+
var import_createTamagui = __toModule(require("../createTamagui"));
|
|
32
|
+
var import_Theme = __toModule(require("./Theme"));
|
|
33
|
+
var import_ThemeContext = __toModule(require("./ThemeContext"));
|
|
34
|
+
const GET_DEFAULT_THEME = "___TGUI";
|
|
35
|
+
const ThemeProvider = /* @__PURE__ */ __name((props) => {
|
|
36
|
+
if (!(0, import_createTamagui.getHasConfigured)()) {
|
|
37
|
+
throw new Error(`Missing configureThemes() call, add to your root file`);
|
|
38
|
+
}
|
|
39
|
+
(0, import_platform.useIsomorphicLayoutEffect)(() => {
|
|
40
|
+
if (props.disableRootThemeClass) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (typeof document !== "undefined") {
|
|
44
|
+
const cns = (0, import_createTamagui.getThemeParentClassName)(`${props.defaultTheme}`).split(" ");
|
|
45
|
+
cns.forEach((cn) => document.body.classList.add(cn));
|
|
46
|
+
return () => {
|
|
47
|
+
cns.forEach((cn) => document.body.classList.remove(cn));
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}, []);
|
|
51
|
+
const themeContext = (0, import_react.useMemo)(() => {
|
|
52
|
+
return new Proxy(props.themes, {
|
|
53
|
+
get(target, key) {
|
|
54
|
+
if (key === GET_DEFAULT_THEME)
|
|
55
|
+
return props.defaultTheme;
|
|
56
|
+
return Reflect.get(target, key);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}, [props.themes]);
|
|
60
|
+
return /* @__PURE__ */ import_react.default.createElement(import_ThemeContext.ThemeContext.Provider, {
|
|
61
|
+
value: themeContext
|
|
62
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_Theme.Theme, {
|
|
63
|
+
name: props.defaultTheme,
|
|
64
|
+
disableThemeClass: props.disableRootThemeClass
|
|
65
|
+
}, props.children));
|
|
66
|
+
}, "ThemeProvider");
|
|
67
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/views/ThemeProvider.tsx"],
|
|
4
|
+
"sourcesContent": ["import React, { useMemo } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getHasConfigured, getThemeParentClassName } from '../createTamagui'\nimport { Theme } from './Theme'\nimport { ThemeContext } from './ThemeContext'\n\nexport type ThemeProviderProps = {\n themes: any\n defaultTheme: string\n disableRootThemeClass?: boolean\n children?: any\n}\n\nexport const GET_DEFAULT_THEME = '___TGUI'\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n if (!getHasConfigured()) {\n throw new Error(`Missing configureThemes() call, add to your root file`)\n }\n\n // ensure theme is attached to root body node as well to work with modals by default\n useIsomorphicLayoutEffect(() => {\n if (props.disableRootThemeClass) {\n return\n }\n if (typeof document !== 'undefined') {\n const cns = getThemeParentClassName(`${props.defaultTheme}`).split(' ')\n cns.forEach((cn) => document.body.classList.add(cn))\n return () => {\n cns.forEach((cn) => document.body.classList.remove(cn))\n }\n }\n }, [])\n\n const themeContext = useMemo(() => {\n return new Proxy(props.themes, {\n get(target, key) {\n if (key === GET_DEFAULT_THEME) return props.defaultTheme\n return Reflect.get(target, key)\n },\n })\n }, [props.themes])\n\n return (\n <ThemeContext.Provider value={themeContext}>\n <Theme name={props.defaultTheme} disableThemeClass={props.disableRootThemeClass}>\n {props.children}\n </Theme>\n </ThemeContext.Provider>\n )\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+B;AAE/B,sBAA0C;AAC1C,2BAA0D;AAC1D,mBAAsB;AACtB,0BAA6B;AAStB,MAAM,oBAAoB;AAE1B,MAAM,gBAAgB,wBAAC,UAA8B;AAC1D,MAAI,CAAC,8CAAoB;AACvB,UAAM,IAAI,MAAM;AAAA;AAIlB,iDAA0B,MAAM;AAC9B,QAAI,MAAM,uBAAuB;AAC/B;AAAA;AAEF,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,MAAM,kDAAwB,GAAG,MAAM,gBAAgB,MAAM;AACnE,UAAI,QAAQ,CAAC,OAAO,SAAS,KAAK,UAAU,IAAI;AAChD,aAAO,MAAM;AACX,YAAI,QAAQ,CAAC,OAAO,SAAS,KAAK,UAAU,OAAO;AAAA;AAAA;AAAA,KAGtD;AAEH,QAAM,eAAe,0BAAQ,MAAM;AACjC,WAAO,IAAI,MAAM,MAAM,QAAQ;AAAA,MAC7B,IAAI,QAAQ,KAAK;AACf,YAAI,QAAQ;AAAmB,iBAAO,MAAM;AAC5C,eAAO,QAAQ,IAAI,QAAQ;AAAA;AAAA;AAAA,KAG9B,CAAC,MAAM;AAEV,SACE,mDAAC,iCAAa,UAAd;AAAA,IAAuB,OAAO;AAAA,KAC5B,mDAAC,oBAAD;AAAA,IAAO,MAAM,MAAM;AAAA,IAAc,mBAAmB,MAAM;AAAA,KACvD,MAAM;AAAA,GA/Bc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useLayoutEffect } from "react";
|
|
2
2
|
import { Platform } from "react-native";
|
|
3
|
-
const isWeb = process.env.TAMAGUI_TARGET
|
|
3
|
+
const isWeb = process.env.TAMAGUI_TARGET === "web" ? true : Platform?.OS === "web";
|
|
4
4
|
const isSSR = isWeb && typeof window === "undefined";
|
|
5
5
|
const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;
|
|
6
6
|
const isChrome = typeof navigator !== "undefined" && /Chrome/.test(navigator.userAgent || "");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/platform.ts"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useLayoutEffect } from 'react'\nimport { Platform } from 'react-native'\n\nexport const isWeb = process.env.TAMAGUI_TARGET
|
|
5
|
-
"mappings": "AAAA;AACA;AAEO,MAAM,QAAQ,QAAQ,IAAI,mBAAmB,QAAQ,
|
|
4
|
+
"sourcesContent": ["import { useEffect, useLayoutEffect } from 'react'\nimport { Platform } from 'react-native'\n\nexport const isWeb = process.env.TAMAGUI_TARGET === 'web' ? true : Platform?.OS === 'web'\nexport const isSSR = isWeb && typeof window === 'undefined'\nexport const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect\nexport const isChrome = typeof navigator !== 'undefined' && /Chrome/.test(navigator.userAgent || '')\nexport const supportsTouchWeb = typeof window !== 'undefined' && 'ontouchstart' in window\nexport const isTouchDevice = !isWeb || supportsTouchWeb\nexport const isWebIOS =\n isWeb &&\n typeof navigator !== 'undefined' &&\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !window['MSStream']\n"],
|
|
5
|
+
"mappings": "AAAA;AACA;AAEO,MAAM,QAAQ,QAAQ,IAAI,mBAAmB,QAAQ,OAAO,UAAU,OAAO;AAC7E,MAAM,QAAQ,SAAS,OAAO,WAAW;AACzC,MAAM,4BAA4B,QAAQ,YAAY;AACtD,MAAM,WAAW,OAAO,cAAc,eAAe,SAAS,KAAK,UAAU,aAAa;AAC1F,MAAM,mBAAmB,OAAO,WAAW,eAAe,kBAAkB;AAC5E,MAAM,gBAAgB,CAAC,SAAS;AAChC,MAAM,WACX,SACA,OAAO,cAAc,eACpB,oBAAmB,KAAK,UAAU,aAChC,UAAU,aAAa,cAAc,UAAU,iBAAiB,MACnE,CAAC,OAAO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/createComponent.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
import { concatClassName, stylePropsView } from "@tamagui/helpers";
|
|
4
|
+
import { useForceUpdate } from "@tamagui/use-force-update";
|
|
4
5
|
import React, {
|
|
5
6
|
Children,
|
|
6
7
|
Fragment,
|
|
@@ -21,7 +22,6 @@ import { addStylesUsingClassname, useStylesAsClassname } from "./helpers/addStyl
|
|
|
21
22
|
import { extendStaticConfig, parseStaticConfig } from "./helpers/extendStaticConfig";
|
|
22
23
|
import { getSplitStyles } from "./helpers/getSplitStyles";
|
|
23
24
|
import { useFeatures } from "./hooks/useFeatures";
|
|
24
|
-
import { useForceUpdate } from "./hooks/useForceUpdate";
|
|
25
25
|
import { usePressable } from "./hooks/usePressable";
|
|
26
26
|
import { TextAncestorContext } from "./views/TextAncestorContext";
|
|
27
27
|
import { ThemeManagerContext } from "./views/ThemeManagerContext";
|
|
@@ -47,6 +47,39 @@ function createComponent(configIn) {
|
|
|
47
47
|
let defaultsClassName = "";
|
|
48
48
|
let initialTheme;
|
|
49
49
|
const component = forwardRef((props, forwardedRef) => {
|
|
50
|
+
const forceUpdate = useForceUpdate();
|
|
51
|
+
const features = useFeatures(props, { forceUpdate });
|
|
52
|
+
const manager = useContext(ThemeManagerContext);
|
|
53
|
+
const [state, set_] = useState(() => ({
|
|
54
|
+
hover: false,
|
|
55
|
+
press: false,
|
|
56
|
+
pressIn: false,
|
|
57
|
+
theme: manager.name
|
|
58
|
+
}));
|
|
59
|
+
const set = /* @__PURE__ */ __name((next) => set_((prev) => {
|
|
60
|
+
for (const key in next) {
|
|
61
|
+
if (prev[key] !== next[key]) {
|
|
62
|
+
return { ...prev, ...next };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return prev;
|
|
66
|
+
}), "set");
|
|
67
|
+
if (process.env.NODE_ENV === "development" && !isText && isWeb) {
|
|
68
|
+
Children.toArray(props.children).forEach((item) => {
|
|
69
|
+
if (typeof item === "string") {
|
|
70
|
+
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false;
|
|
75
|
+
const hostRef = useRef(null);
|
|
76
|
+
const theme = manager.theme || initialTheme;
|
|
77
|
+
const {
|
|
78
|
+
viewProps: viewPropsIn,
|
|
79
|
+
pseudos,
|
|
80
|
+
style,
|
|
81
|
+
classNames
|
|
82
|
+
} = getSplitStyles(props, staticConfig, theme);
|
|
50
83
|
const {
|
|
51
84
|
tag,
|
|
52
85
|
hitSlop,
|
|
@@ -80,34 +113,17 @@ function createComponent(configIn) {
|
|
|
80
113
|
onStartShouldSetResponderCapture,
|
|
81
114
|
onMouseDown,
|
|
82
115
|
onClick,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}));
|
|
94
|
-
const set = /* @__PURE__ */ __name((next) => set_((prev) => {
|
|
95
|
-
for (const key in next) {
|
|
96
|
-
if (prev[key] !== next[key]) {
|
|
97
|
-
return { ...prev, ...next };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return prev;
|
|
101
|
-
}), "set");
|
|
102
|
-
if (process.env.NODE_ENV === "development" && !isText && isWeb) {
|
|
103
|
-
Children.toArray(props.children).forEach((item) => {
|
|
104
|
-
if (typeof item === "string") {
|
|
105
|
-
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
116
|
+
accessible,
|
|
117
|
+
accessibilityRole,
|
|
118
|
+
onLayout,
|
|
119
|
+
...viewProps
|
|
120
|
+
} = viewPropsIn;
|
|
121
|
+
if (!isWeb) {
|
|
122
|
+
if (accessible)
|
|
123
|
+
viewProps.accessible = accessible;
|
|
124
|
+
if (accessibilityRole)
|
|
125
|
+
viewProps.accessibilityRole = accessibilityRole;
|
|
108
126
|
}
|
|
109
|
-
const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false;
|
|
110
|
-
const hostRef = useRef(null);
|
|
111
127
|
if (isWeb) {
|
|
112
128
|
rnw.useResponderEvents(hostRef, {
|
|
113
129
|
onMoveShouldSetResponder,
|
|
@@ -129,7 +145,6 @@ function createComponent(configIn) {
|
|
|
129
145
|
});
|
|
130
146
|
}
|
|
131
147
|
const isTracking = useRef(false);
|
|
132
|
-
const { viewProps, pseudos, style, classNames } = getSplitStyles(props, staticConfig, manager.theme || initialTheme);
|
|
133
148
|
const internal = useRef();
|
|
134
149
|
if (!internal.current) {
|
|
135
150
|
internal.current = {
|
|
@@ -331,7 +346,7 @@ function createComponent(configIn) {
|
|
|
331
346
|
} else {
|
|
332
347
|
if (!hasWarnedOnce) {
|
|
333
348
|
hasWarnedOnce = true;
|
|
334
|
-
console.log("\u26A0\uFE0F
|
|
349
|
+
console.log("\u26A0\uFE0F TODO account for default styles for media queries");
|
|
335
350
|
}
|
|
336
351
|
}
|
|
337
352
|
component.defaultProps = {
|
|
@@ -349,10 +364,14 @@ function createComponent(configIn) {
|
|
|
349
364
|
...staticConfig
|
|
350
365
|
};
|
|
351
366
|
const res = component;
|
|
352
|
-
res["extractable"] = (Component2) => {
|
|
367
|
+
res["extractable"] = (Component2, conf) => {
|
|
353
368
|
Component2["staticConfig"] = extendStaticConfig(res, {
|
|
369
|
+
...conf,
|
|
354
370
|
neverFlatten: true,
|
|
355
|
-
defaultProps:
|
|
371
|
+
defaultProps: {
|
|
372
|
+
...Component2.defaultProps,
|
|
373
|
+
...conf?.defaultProps
|
|
374
|
+
}
|
|
356
375
|
});
|
|
357
376
|
return Component2;
|
|
358
377
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/createComponent.tsx"],
|
|
4
|
-
"sourcesContent": ["import { concatClassName, stylePropsView } from '@tamagui/helpers'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { stackDefaultStyles } from './constants/constants'\nimport { isTouchDevice, isWeb } from './constants/platform'\nimport { rnw } from './constants/rnw'\nimport { onConfiguredOnce } from './createTamagui'\nimport { addStylesUsingClassname, useStylesAsClassname } from './helpers/addStylesUsingClassname'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { getSplitStyles } from './helpers/getSplitStyles'\nimport { useFeatures } from './hooks/useFeatures'\nimport { useForceUpdate } from './hooks/useForceUpdate'\nimport { usePressable } from './hooks/usePressable'\nimport {\n SpaceTokens,\n StaticComponent,\n StaticConfig,\n StaticConfigParsed,\n TamaguiInternalConfig,\n} from './types'\nimport { TextAncestorContext } from './views/TextAncestorContext'\nimport { ThemeManagerContext } from './views/ThemeManagerContext'\n\nexport const mouseUps = new Set<Function>()\n\nif (typeof document !== 'undefined') {\n document.addEventListener('mouseup', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n}\n\ntype DefaultProps = {}\n\nexport function createComponent<A extends Object = DefaultProps>(\n configIn: Partial<StaticConfig> | StaticConfigParsed\n) {\n let staticConfig: StaticConfigParsed\n if ('parsed' in configIn) {\n staticConfig = configIn\n } else {\n staticConfig = parseStaticConfig(configIn)\n }\n\n const { Component, validStyles, isText, isZStack } = staticConfig\n const validStyleProps = validStyles ?? stylePropsView\n\n // split out default styles vs props so we can assign it to component.defaultProps\n let defaultProps = null as any\n let tamaguiConfig: TamaguiInternalConfig\n\n // web uses className, native uses style\n let defaultsStyle: any\n let defaultsClassName = ''\n let initialTheme: any\n\n // see onConfiguredOnce below which attaches a name then to this component\n\n const component = forwardRef<View, A>((props: any, forwardedRef) => {\n const {\n tag,\n hitSlop,\n children,\n pointerEvents,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n space,\n disabled,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n onMouseDown,\n onClick,\n // TODO feature load layou hook\n onLayout,\n } = props\n\n const forceUpdate = useForceUpdate()\n const features = useFeatures(props, { forceUpdate })\n const manager = useContext(ThemeManagerContext)\n const [state, set_] = useState(() => ({\n hover: false,\n press: false,\n pressIn: false,\n theme: manager.name,\n }))\n const set = (next: Partial<typeof state>) =>\n set_((prev) => {\n for (const key in next) {\n if (prev[key] !== next[key]) {\n return { ...prev, ...next }\n }\n }\n return prev\n })\n\n // from react-native-web\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false\n const hostRef = useRef(null)\n\n if (isWeb) {\n // from react-native-web\n rnw.useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n })\n }\n\n const isTracking = useRef(false)\n\n const { viewProps, pseudos, style, classNames } = getSplitStyles(\n props,\n staticConfig,\n (manager.theme as any) || initialTheme\n )\n\n // hasEverHadEvents prevents repareting if you remove onPress or similar...\n const internal = useRef<{ isMounted: boolean; hasEverHadEvents?: boolean }>()\n if (!internal.current) {\n internal.current = {\n isMounted: true,\n }\n }\n\n useEffect(() => {\n internal.current!.isMounted = true\n const dispose = manager?.onChangeTheme((name) => {\n if (isTracking.current) {\n set({ theme: name })\n }\n })\n return () => {\n dispose()\n mouseUps.delete(unPress)\n isTracking.current = false\n internal.current!.isMounted = false\n }\n }, [manager])\n\n // element\n const element = isWeb\n ? !Component || typeof Component === 'string'\n ? // default to tag, fallback to component (when both strings)\n tag || Component\n : Component\n : Component\n const ReactView = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n const ReactText = !isWeb ? Text : element || 'span'\n const ViewComponent = isText ? ReactText : ReactView\n\n // styles\n const isHovering = !isTouchDevice && !disabled && pseudos && state.hover\n const isPressing = !disabled && pseudos && state.press\n\n const styles = [\n // parity w react-native-web, only for text in text\n // TODO this should be able to be done w css to replicate after extraction:\n // (.text .text { display: inline-flex; }) (but if they set display we'd need stronger precendence)\n // isText && hasTextAncestor && isWeb ? { display: 'inline-flex' } : null,\n style,\n isHovering ? pseudos.hoverStyle || null : null,\n isPressing ? pseudos.pressStyle || null : null,\n ]\n\n if (isWeb) {\n const stylesClassNames = useStylesAsClassname(styles)\n const classList = isText\n ? [\n defaultsClassName,\n // hasTextAncestor === true && cssText.textHasAncestor,\n // TODO MOVE TO VARIANTS [number] [any]\n // numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,\n classNames,\n stylesClassNames,\n props.className,\n ]\n : [defaultsClassName, props.className, classNames, stylesClassNames]\n\n const className = concatClassName(...classList)\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log('\uD83E\uDD5A className', { style, styles, classList, stylesClassNames, className })\n }\n }\n viewProps.className = className\n } else {\n viewProps.style = styles\n }\n\n if (pointerEvents) {\n viewProps.pointerEvents = pointerEvents\n }\n\n if (isWeb) {\n // from react-native-web\n const platformMethodsRef = rnw.usePlatformMethods(viewProps)\n const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef)\n viewProps.ref = setRef\n if (props.href != null && hrefAttrs != null) {\n const { download, rel, target } = hrefAttrs\n if (download != null) {\n viewProps.download = download\n }\n if (rel != null) {\n viewProps.rel = rel\n }\n if (typeof target === 'string') {\n viewProps.target = target.charAt(0) !== '_' ? '_' + target : target\n }\n }\n } else {\n if (forwardedRef) {\n viewProps.ref = forwardedRef\n }\n }\n\n const attachPress = !!(\n (pseudos && pseudos.pressStyle) ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n const attachHover =\n isWeb &&\n !isTouchDevice &&\n !!((pseudos && pseudos.hoverStyle) || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n // check presence to prevent reparenting bugs, allows for onPress={x ? function : undefined} usage\n // while avoiding reparenting...\n // once proper reparenting is supported, we can remove this and use that...\n const shouldAttach =\n internal.current.hasEverHadEvents ||\n attachPress ||\n attachHover ||\n 'pressStyle' in props ||\n 'onPress' in props ||\n 'onPressIn' in props ||\n 'onPressOut' in props ||\n (isWeb &&\n ('hoverStyle' in props ||\n 'onClick' in props ||\n 'onHoverIn' in props ||\n 'onHoverOut' in props ||\n 'onMouseEnter' in props ||\n 'onMouseLeave' in props))\n\n // never remove events as we wrap in a div (for now, may be able to remove..)\n if (shouldAttach) {\n internal.current.hasEverHadEvents = true\n }\n\n const unPress = useCallback(() => {\n if (!internal.current!.isMounted) return\n set({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events = shouldAttach\n ? {\n ...(!isWeb && {\n // non web\n onPressOut: (e) => {\n unPress()\n onPressOut?.(e)\n },\n }),\n ...(isWeb &&\n !isTouchDevice && {\n onMouseEnter:\n attachHover || attachPress\n ? (e) => {\n let next: Partial<typeof state> = {}\n if (attachHover) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (Object.keys(next).length) {\n set(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave:\n attachHover || attachPress\n ? (e) => {\n let next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (attachHover) {\n next.hover = false\n }\n if (state.pressIn) {\n next.press = false\n next.pressIn = false\n }\n if (Object.keys(next).length) {\n set(next)\n }\n onHoverOut?.(e)\n onMouseLeave?.(e)\n }\n : undefined,\n }),\n onMouseDown: attachPress\n ? (e) => {\n set({\n press: true,\n pressIn: true,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n }\n : (onPressIn as any),\n onClick: attachPress\n ? (e) => {\n // this caused issue with next.js passing href\n // e.preventDefault()\n onPress?.(e)\n onClick?.(e)\n unPress()\n onPressOut?.(e)\n }\n : (onPressOut as any),\n }\n : null\n\n if (events) {\n if (typeof ViewComponent !== 'string') {\n // TODO once we do the above we can then rely entirely on pressStyle returned here isntead of above pressStyle logic\n const [pressProps] = usePressable({\n disabled,\n hitSlop,\n onPressIn: events.onMouseDown,\n onPressOut: events.onPressOut,\n onPress: events.onClick,\n })\n Object.assign(viewProps, pressProps)\n } else {\n Object.assign(viewProps, events)\n }\n }\n\n const childEls = spacedChildren({\n children,\n space,\n flexDirection: props.flexDirection || defaultProps?.flexDirection,\n isZStack: isZStack,\n })\n\n let content: any\n\n // replicate react-native-web's `createElement`\n if (isWeb && rnw) {\n const domProps = rnw.createDOMProps(viewProps)\n const className =\n domProps.className && domProps.className !== viewProps.className\n ? `${domProps.className} ${viewProps.className}`\n : viewProps.className\n Object.assign(viewProps, domProps)\n viewProps.className = className\n content = createElement(ViewComponent, viewProps, childEls)\n } else {\n content = createElement(ViewComponent, viewProps, childEls)\n }\n\n const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n if (shouldWrapTextAncestor) {\n // from react-native-web\n // @ts-ignore\n content = createElement(TextAncestorContext.Provider, { value: true }, content)\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n viewProps['debug'] = true\n console.log('\uD83E\uDD5A props in:', props)\n console.log('\uD83E\uDD5A props out:', viewProps)\n console.log(props.onClick?.toString())\n // prettier-ignore\n console.log('\uD83E\uDD5A etc:', { shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls })\n // only on browser because node expands it huge\n if (isWeb) {\n console.log('\uD83E\uDD5A component info', { staticConfig, tamaguiConfig })\n }\n }\n }\n\n return (\n <>\n {features}\n {content}\n </>\n )\n })\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n tamaguiConfig = conf\n initialTheme = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]\n const next = getSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, true)\n if (isWeb) {\n if (next.classNames) {\n defaultsClassName += next.classNames + ' '\n }\n defaultsClassName += addStylesUsingClassname([next.style, next.pseudos])\n } else {\n if (!hasWarnedOnce) {\n hasWarnedOnce = true\n console.log('\u26A0\uFE0F we need to account for default styles for media queries')\n }\n }\n // @ts-ignore\n component.defaultProps = {\n ...next.viewProps,\n ...component.defaultProps,\n }\n if (process.env.NODE_ENV === 'development') {\n if (staticConfig.defaultProps?.debug) {\n console.log('tamagui debug component:', next, defaultsClassName, component.defaultProps)\n }\n }\n })\n\n component['staticConfig'] = {\n validStyles: validStyleProps,\n ...staticConfig,\n }\n\n const res = component as any as StaticComponent<A, void>\n\n // add extractable HoC\n res['extractable'] = (Component: any) => {\n Component['staticConfig'] = extendStaticConfig(res, {\n neverFlatten: true,\n defaultProps: Component.defaultProps,\n })\n return Component\n }\n\n return res\n}\n\nlet hasWarnedOnce = false\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<{ size?: number | SpaceTokens; flex?: boolean | number }>({\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n return {\n width: tokens.size[size] ?? size,\n height: tokens.size[size] ?? size,\n }\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n },\n vertical: {\n width: 0,\n },\n },\n },\n})\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n flexDirection,\n}: {\n isZStack?: boolean\n children: any\n space?: any\n flexDirection?: ViewStyle['flexDirection']\n}) {\n if (!space && !isZStack) {\n return children\n }\n const childrenList = Children.toArray(children)\n const len = childrenList.length\n if (len === 1) {\n return children\n }\n const next: any[] = []\n for (const [index, child] of childrenList.entries()) {\n if (child === null || child === undefined) {\n continue\n }\n\n const key = `${child?.['key'] ?? index}`\n\n next.push(<Fragment key={key}>{isZStack ? <Absolute>{child}</Absolute> : child}</Fragment>)\n\n // allows for custom visually hidden components that dont insert spacing\n if (child?.['type']?.['isVisuallyHidden']) {\n continue\n }\n\n if (index !== len - 1) {\n if (space) {\n next.push(\n <Spacer\n key={`${key}_spacer`}\n // @ts-ignore TODO\n direction={\n flexDirection === 'row' || flexDirection === 'row-reverse' ? 'horizontal' : 'vertical'\n }\n size={space}\n />\n )\n }\n }\n }\n return next\n}\n\n// for now not so \"tamagui-y\"\nconst Absolute = ({ children }) => <View style={sheet.fullscreen}>{children}</View>\nconst sheet = StyleSheet.create({\n fullscreen: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n})\n"],
|
|
5
|
-
"mappings": ";;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;
|
|
4
|
+
"sourcesContent": ["import { concatClassName, stylePropsView } from '@tamagui/helpers'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { stackDefaultStyles } from './constants/constants'\nimport { isTouchDevice, isWeb } from './constants/platform'\nimport { rnw } from './constants/rnw'\nimport { onConfiguredOnce } from './createTamagui'\nimport { addStylesUsingClassname, useStylesAsClassname } from './helpers/addStylesUsingClassname'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { getSplitStyles } from './helpers/getSplitStyles'\nimport { useFeatures } from './hooks/useFeatures'\nimport { usePressable } from './hooks/usePressable'\nimport {\n SpaceTokens,\n StaticComponent,\n StaticConfig,\n StaticConfigParsed,\n TamaguiInternalConfig,\n} from './types'\nimport { TextAncestorContext } from './views/TextAncestorContext'\nimport { ThemeManagerContext } from './views/ThemeManagerContext'\n\nexport const mouseUps = new Set<Function>()\n\nif (typeof document !== 'undefined') {\n document.addEventListener('mouseup', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n}\n\ntype DefaultProps = {}\n\nexport function createComponent<A extends Object = DefaultProps>(\n configIn: Partial<StaticConfig> | StaticConfigParsed\n) {\n let staticConfig: StaticConfigParsed\n if ('parsed' in configIn) {\n staticConfig = configIn\n } else {\n staticConfig = parseStaticConfig(configIn)\n }\n\n const { Component, validStyles, isText, isZStack } = staticConfig\n const validStyleProps = validStyles ?? stylePropsView\n\n // split out default styles vs props so we can assign it to component.defaultProps\n let defaultProps = null as any\n let tamaguiConfig: TamaguiInternalConfig\n\n // web uses className, native uses style\n let defaultsStyle: any\n let defaultsClassName = ''\n let initialTheme: any\n\n // see onConfiguredOnce below which attaches a name then to this component\n\n const component = forwardRef<View, A>((props: any, forwardedRef) => {\n const forceUpdate = useForceUpdate()\n const features = useFeatures(props, { forceUpdate })\n const manager = useContext(ThemeManagerContext)\n const [state, set_] = useState(() => ({\n hover: false,\n press: false,\n pressIn: false,\n theme: manager.name,\n }))\n const set = (next: Partial<typeof state>) =>\n set_((prev) => {\n for (const key in next) {\n if (prev[key] !== next[key]) {\n return { ...prev, ...next }\n }\n }\n return prev\n })\n\n // from react-native-web\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false\n const hostRef = useRef(null)\n\n const theme = (manager.theme as any) || initialTheme\n\n const {\n viewProps: viewPropsIn,\n pseudos,\n style,\n classNames,\n } = getSplitStyles(props, staticConfig, theme)\n\n const {\n tag,\n hitSlop,\n children,\n pointerEvents,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n space,\n disabled,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n onMouseDown,\n onClick,\n\n accessible,\n accessibilityRole,\n\n // TODO feature load layout hook\n onLayout,\n ...viewProps\n } = viewPropsIn\n\n if (!isWeb) {\n if (accessible) viewProps.accessible = accessible\n if (accessibilityRole) viewProps.accessibilityRole = accessibilityRole\n }\n\n if (isWeb) {\n // from react-native-web\n rnw.useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n })\n }\n\n const isTracking = useRef(false)\n\n // hasEverHadEvents prevents repareting if you remove onPress or similar...\n const internal = useRef<{ isMounted: boolean; hasEverHadEvents?: boolean }>()\n if (!internal.current) {\n internal.current = {\n isMounted: true,\n }\n }\n\n useEffect(() => {\n internal.current!.isMounted = true\n const dispose = manager?.onChangeTheme((name) => {\n if (isTracking.current) {\n set({ theme: name })\n }\n })\n return () => {\n dispose()\n mouseUps.delete(unPress)\n isTracking.current = false\n internal.current!.isMounted = false\n }\n }, [manager])\n\n // element\n const element = isWeb\n ? !Component || typeof Component === 'string'\n ? // default to tag, fallback to component (when both strings)\n tag || Component\n : Component\n : Component\n const ReactView = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n const ReactText = !isWeb ? Text : element || 'span'\n const ViewComponent = isText ? ReactText : ReactView\n\n // styles\n const isHovering = !isTouchDevice && !disabled && pseudos && state.hover\n const isPressing = !disabled && pseudos && state.press\n\n const styles = [\n // parity w react-native-web, only for text in text\n // TODO this should be able to be done w css to replicate after extraction:\n // (.text .text { display: inline-flex; }) (but if they set display we'd need stronger precendence)\n // isText && hasTextAncestor && isWeb ? { display: 'inline-flex' } : null,\n style,\n isHovering ? pseudos.hoverStyle || null : null,\n isPressing ? pseudos.pressStyle || null : null,\n ]\n\n if (isWeb) {\n const stylesClassNames = useStylesAsClassname(styles)\n const classList = isText\n ? [\n defaultsClassName,\n // hasTextAncestor === true && cssText.textHasAncestor,\n // TODO MOVE TO VARIANTS [number] [any]\n // numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,\n classNames,\n stylesClassNames,\n props.className,\n ]\n : [defaultsClassName, props.className, classNames, stylesClassNames]\n\n // @ts-expect-error\n const className = concatClassName(...classList)\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log('\uD83E\uDD5A className', { style, styles, classList, stylesClassNames, className })\n }\n }\n viewProps.className = className\n } else {\n viewProps.style = styles\n }\n\n if (pointerEvents) {\n viewProps.pointerEvents = pointerEvents\n }\n\n if (isWeb) {\n // from react-native-web\n const platformMethodsRef = rnw.usePlatformMethods(viewProps)\n const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef)\n viewProps.ref = setRef\n if (props.href != null && hrefAttrs != null) {\n const { download, rel, target } = hrefAttrs\n if (download != null) {\n viewProps.download = download\n }\n if (rel != null) {\n viewProps.rel = rel\n }\n if (typeof target === 'string') {\n viewProps.target = target.charAt(0) !== '_' ? '_' + target : target\n }\n }\n } else {\n if (forwardedRef) {\n viewProps.ref = forwardedRef\n }\n }\n\n const attachPress = !!(\n (pseudos && pseudos.pressStyle) ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n const attachHover =\n isWeb &&\n !isTouchDevice &&\n !!((pseudos && pseudos.hoverStyle) || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n // check presence to prevent reparenting bugs, allows for onPress={x ? function : undefined} usage\n // while avoiding reparenting...\n // once proper reparenting is supported, we can remove this and use that...\n const shouldAttach =\n internal.current.hasEverHadEvents ||\n attachPress ||\n attachHover ||\n 'pressStyle' in props ||\n 'onPress' in props ||\n 'onPressIn' in props ||\n 'onPressOut' in props ||\n (isWeb &&\n ('hoverStyle' in props ||\n 'onClick' in props ||\n 'onHoverIn' in props ||\n 'onHoverOut' in props ||\n 'onMouseEnter' in props ||\n 'onMouseLeave' in props))\n\n // never remove events as we wrap in a div (for now, may be able to remove..)\n if (shouldAttach) {\n internal.current.hasEverHadEvents = true\n }\n\n const unPress = useCallback(() => {\n if (!internal.current!.isMounted) return\n set({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events = shouldAttach\n ? {\n ...(!isWeb && {\n // non web\n onPressOut: (e) => {\n unPress()\n onPressOut?.(e)\n },\n }),\n ...(isWeb &&\n !isTouchDevice && {\n onMouseEnter:\n attachHover || attachPress\n ? (e) => {\n let next: Partial<typeof state> = {}\n if (attachHover) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (Object.keys(next).length) {\n set(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave:\n attachHover || attachPress\n ? (e) => {\n let next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (attachHover) {\n next.hover = false\n }\n if (state.pressIn) {\n next.press = false\n next.pressIn = false\n }\n if (Object.keys(next).length) {\n set(next)\n }\n onHoverOut?.(e)\n onMouseLeave?.(e)\n }\n : undefined,\n }),\n onMouseDown: attachPress\n ? (e) => {\n set({\n press: true,\n pressIn: true,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n }\n : (onPressIn as any),\n onClick: attachPress\n ? (e) => {\n // this caused issue with next.js passing href\n // e.preventDefault()\n onPress?.(e)\n onClick?.(e)\n unPress()\n onPressOut?.(e)\n }\n : (onPressOut as any),\n }\n : null\n\n if (events) {\n if (typeof ViewComponent !== 'string') {\n // TODO once we do the above we can then rely entirely on pressStyle returned here isntead of above pressStyle logic\n const [pressProps] = usePressable({\n disabled,\n hitSlop,\n onPressIn: events.onMouseDown,\n onPressOut: events.onPressOut,\n onPress: events.onClick,\n })\n Object.assign(viewProps, pressProps)\n } else {\n Object.assign(viewProps, events)\n }\n }\n\n const childEls = spacedChildren({\n children,\n space,\n flexDirection: props.flexDirection || defaultProps?.flexDirection,\n isZStack: isZStack,\n })\n\n let content: any\n\n // replicate react-native-web's `createElement`\n if (isWeb && rnw) {\n const domProps = rnw.createDOMProps(viewProps)\n const className =\n domProps.className && domProps.className !== viewProps.className\n ? `${domProps.className} ${viewProps.className}`\n : viewProps.className\n Object.assign(viewProps, domProps)\n viewProps.className = className\n content = createElement(ViewComponent, viewProps, childEls)\n } else {\n content = createElement(ViewComponent, viewProps, childEls)\n }\n\n const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n if (shouldWrapTextAncestor) {\n // from react-native-web\n // @ts-ignore\n content = createElement(TextAncestorContext.Provider, { value: true }, content)\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n viewProps['debug'] = true\n console.log('\uD83E\uDD5A props in:', props)\n console.log('\uD83E\uDD5A props out:', viewProps)\n console.log(props.onClick?.toString())\n // prettier-ignore\n console.log('\uD83E\uDD5A etc:', { shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls })\n // only on browser because node expands it huge\n if (isWeb) {\n console.log('\uD83E\uDD5A component info', { staticConfig, tamaguiConfig })\n }\n }\n }\n\n return (\n <>\n {features}\n {content}\n </>\n )\n })\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n tamaguiConfig = conf\n initialTheme = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]\n const next = getSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, true)\n if (isWeb) {\n if (next.classNames) {\n defaultsClassName += next.classNames + ' '\n }\n defaultsClassName += addStylesUsingClassname([next.style, next.pseudos])\n } else {\n if (!hasWarnedOnce) {\n hasWarnedOnce = true\n console.log('\u26A0\uFE0F TODO account for default styles for media queries')\n }\n }\n // @ts-ignore\n component.defaultProps = {\n ...next.viewProps,\n ...component.defaultProps,\n }\n if (process.env.NODE_ENV === 'development') {\n if (staticConfig.defaultProps?.debug) {\n console.log('tamagui debug component:', next, defaultsClassName, component.defaultProps)\n }\n }\n })\n\n component['staticConfig'] = {\n validStyles: validStyleProps,\n ...staticConfig,\n }\n\n const res = component as any as StaticComponent<A, void>\n\n // add extractable HoC\n res['extractable'] = (Component: any, conf?: StaticConfig) => {\n Component['staticConfig'] = extendStaticConfig(res, {\n ...conf,\n neverFlatten: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n })\n return Component\n }\n\n return res\n}\n\nlet hasWarnedOnce = false\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<{ size?: number | SpaceTokens; flex?: boolean | number }>({\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n return {\n width: tokens.size[size] ?? size,\n height: tokens.size[size] ?? size,\n }\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n },\n vertical: {\n width: 0,\n },\n },\n },\n})\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n flexDirection,\n}: {\n isZStack?: boolean\n children: any\n space?: any\n flexDirection?: ViewStyle['flexDirection']\n}) {\n if (!space && !isZStack) {\n return children\n }\n const childrenList = Children.toArray(children)\n const len = childrenList.length\n if (len === 1) {\n return children\n }\n const next: any[] = []\n for (const [index, child] of childrenList.entries()) {\n if (child === null || child === undefined) {\n continue\n }\n\n const key = `${child?.['key'] ?? index}`\n\n next.push(<Fragment key={key}>{isZStack ? <Absolute>{child}</Absolute> : child}</Fragment>)\n\n // allows for custom visually hidden components that dont insert spacing\n if (child?.['type']?.['isVisuallyHidden']) {\n continue\n }\n\n if (index !== len - 1) {\n if (space) {\n next.push(\n <Spacer\n key={`${key}_spacer`}\n // @ts-ignore TODO\n direction={\n flexDirection === 'row' || flexDirection === 'row-reverse' ? 'horizontal' : 'vertical'\n }\n size={space}\n />\n )\n }\n }\n }\n return next\n}\n\n// for now not so \"tamagui-y\"\nconst Absolute = ({ children }) => <View style={sheet.fullscreen}>{children}</View>\nconst sheet = StyleSheet.create({\n fullscreen: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/createFont.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { validateFont } from "./helpers/validate";
|
|
3
4
|
const createFont = /* @__PURE__ */ __name((font) => {
|
|
5
|
+
if (process.env.NODE_ENV === "development") {
|
|
6
|
+
validateFont(font);
|
|
7
|
+
}
|
|
4
8
|
const sizeKeys = Object.keys(font.size);
|
|
5
9
|
for (const key in font) {
|
|
6
10
|
if (key === "size" || key === "family")
|
package/dist/createFont.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/createFont.ts"],
|
|
4
|
-
"sourcesContent": ["import { GenericFont } from './types'\n\nexport const createFont = <A extends GenericFont>(font: A): A => {\n // fills in any missing values based on size keys being standard\n const sizeKeys = Object.keys(font.size)\n\n for (const key in font) {\n if (key === 'size' || key === 'family') continue\n const section = font[key]\n const keys = Object.keys(section)\n\n // fill with first filled in value to start\n let fillVal = section[keys[0]]\n\n for (const sKey of sizeKeys) {\n if (!(sKey in section)) {\n section[sKey] = fillVal\n } else {\n // if exists, set as the fillVal\n fillVal = section[sKey]\n }\n }\n }\n\n return Object.freeze(font)\n}\n"],
|
|
5
|
-
"mappings": ";;
|
|
4
|
+
"sourcesContent": ["import { validateFont } from './helpers/validate'\nimport { GenericFont } from './types'\n\nexport const createFont = <A extends GenericFont>(font: A): A => {\n if (process.env.NODE_ENV === 'development') {\n validateFont(font)\n }\n\n // fills in any missing values based on size keys being standard\n const sizeKeys = Object.keys(font.size)\n\n for (const key in font) {\n if (key === 'size' || key === 'family') continue\n const section = font[key]\n const keys = Object.keys(section)\n\n // fill with first filled in value to start\n let fillVal = section[keys[0]]\n\n for (const sKey of sizeKeys) {\n if (!(sKey in section)) {\n section[sKey] = fillVal\n } else {\n // if exists, set as the fillVal\n fillVal = section[sKey]\n }\n }\n }\n\n return Object.freeze(font)\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA;AAGO,MAAM,aAAa,wBAAwB,SAAe;AAC/D,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,iBAAa;AAAA;AAIf,QAAM,WAAW,OAAO,KAAK,KAAK;AAElC,aAAW,OAAO,MAAM;AACtB,QAAI,QAAQ,UAAU,QAAQ;AAAU;AACxC,UAAM,UAAU,KAAK;AACrB,UAAM,OAAO,OAAO,KAAK;AAGzB,QAAI,UAAU,QAAQ,KAAK;AAE3B,eAAW,QAAQ,UAAU;AAC3B,UAAI,CAAE,SAAQ,UAAU;AACtB,gBAAQ,QAAQ;AAAA,aACX;AAEL,kBAAU,QAAQ;AAAA;AAAA;AAAA;AAKxB,SAAO,OAAO,OAAO;AAAA,GA1BG;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|