@tamagui/core 1.2.4 → 1.2.5
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/README.md +4 -0
- package/dist/cjs/hooks/usePlatformMethods.js +48 -0
- package/dist/cjs/hooks/usePlatformMethods.js.map +7 -0
- package/dist/cjs/index.js +152 -75
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/{types.js → reactNativeTypes.js} +3 -3
- package/dist/cjs/reactNativeTypes.js.map +7 -0
- package/dist/esm/hooks/usePlatformMethods.js +24 -0
- package/dist/esm/hooks/usePlatformMethods.js.map +7 -0
- package/dist/esm/index.js +157 -71
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/reactNativeTypes.js +1 -0
- package/dist/esm/{types-rnw.js.map → reactNativeTypes.js.map} +0 -0
- package/package.json +5 -11
- package/src/hooks/usePlatformMethods.ts +26 -0
- package/src/index.ts +214 -71
- package/src/reactNativeTypes.ts +104 -0
- package/types/hooks/usePlatformMethods.d.ts +3 -0
- package/types/hooks/usePlatformMethods.d.ts.map +1 -0
- package/types/index.d.ts +6 -54
- package/types/index.d.ts.map +1 -1
- package/types/reactNativeTypes.d.ts +26 -0
- package/types/reactNativeTypes.d.ts.map +1 -0
- package/dist/cjs/Tamagui.js +0 -77
- package/dist/cjs/Tamagui.js.map +0 -7
- package/dist/cjs/addTheme.js +0 -78
- package/dist/cjs/addTheme.js.map +0 -7
- package/dist/cjs/config.js +0 -91
- package/dist/cjs/config.js.map +0 -7
- package/dist/cjs/constants/constants.js +0 -49
- package/dist/cjs/constants/constants.js.map +0 -7
- package/dist/cjs/constants/isDevTools.js +0 -37
- package/dist/cjs/constants/isDevTools.js.map +0 -7
- package/dist/cjs/contexts/ButtonNestingContext.js +0 -30
- package/dist/cjs/contexts/ButtonNestingContext.js.map +0 -7
- package/dist/cjs/contexts/FontLanguageContext.js +0 -30
- package/dist/cjs/contexts/FontLanguageContext.js.map +0 -7
- package/dist/cjs/contexts/TextAncestorContext.js +0 -30
- package/dist/cjs/contexts/TextAncestorContext.js.map +0 -7
- package/dist/cjs/createComponent.js +0 -993
- package/dist/cjs/createComponent.js.map +0 -7
- package/dist/cjs/createFont.js +0 -69
- package/dist/cjs/createFont.js.map +0 -7
- package/dist/cjs/createFont.web.test.js +0 -125
- package/dist/cjs/createFont.web.test.js.map +0 -7
- package/dist/cjs/createShorthands.js +0 -31
- package/dist/cjs/createShorthands.js.map +0 -7
- package/dist/cjs/createTamagui.js +0 -206
- package/dist/cjs/createTamagui.js.map +0 -7
- package/dist/cjs/createTheme.js +0 -31
- package/dist/cjs/createTheme.js.map +0 -7
- package/dist/cjs/createTokens.js +0 -39
- package/dist/cjs/createTokens.js.map +0 -7
- package/dist/cjs/createTokens.web.test.js +0 -28
- package/dist/cjs/createTokens.web.test.js.map +0 -7
- package/dist/cjs/createVariable.js +0 -111
- package/dist/cjs/createVariable.js.map +0 -7
- package/dist/cjs/createVariable.web.test.js +0 -7
- package/dist/cjs/createVariable.web.test.js.map +0 -7
- package/dist/cjs/createVariables.js +0 -60
- package/dist/cjs/createVariables.js.map +0 -7
- package/dist/cjs/helpers/RNComponents.js +0 -40
- package/dist/cjs/helpers/RNComponents.js.map +0 -7
- package/dist/cjs/helpers/ThemeManager.js +0 -234
- package/dist/cjs/helpers/ThemeManager.js.map +0 -7
- package/dist/cjs/helpers/ThemeManager.test.js +0 -465
- package/dist/cjs/helpers/ThemeManager.test.js.map +0 -7
- package/dist/cjs/helpers/ThemeManagerContext.js +0 -30
- package/dist/cjs/helpers/ThemeManagerContext.js.map +0 -7
- package/dist/cjs/helpers/createMediaStyle.js +0 -67
- package/dist/cjs/helpers/createMediaStyle.js.map +0 -7
- package/dist/cjs/helpers/createPropMapper.js +0 -423
- package/dist/cjs/helpers/createPropMapper.js.map +0 -7
- package/dist/cjs/helpers/createProxy.js +0 -43
- package/dist/cjs/helpers/createProxy.js.map +0 -7
- package/dist/cjs/helpers/expandStyle.js +0 -95
- package/dist/cjs/helpers/expandStyle.js.map +0 -7
- package/dist/cjs/helpers/expandStyles.js +0 -116
- package/dist/cjs/helpers/expandStyles.js.map +0 -7
- package/dist/cjs/helpers/extendStaticConfig.js +0 -91
- package/dist/cjs/helpers/extendStaticConfig.js.map +0 -7
- package/dist/cjs/helpers/fixNativeShadow.js +0 -30
- package/dist/cjs/helpers/fixNativeShadow.js.map +0 -7
- package/dist/cjs/helpers/getAnimationDriver.js +0 -32
- package/dist/cjs/helpers/getAnimationDriver.js.map +0 -7
- package/dist/cjs/helpers/getExpandedShorthands.js +0 -40
- package/dist/cjs/helpers/getExpandedShorthands.js.map +0 -7
- package/dist/cjs/helpers/getFontLanguage.js +0 -29
- package/dist/cjs/helpers/getFontLanguage.js.map +0 -7
- package/dist/cjs/helpers/getSplitStyles.js +0 -848
- package/dist/cjs/helpers/getSplitStyles.js.map +0 -7
- package/dist/cjs/helpers/getStylesAtomic.js +0 -226
- package/dist/cjs/helpers/getStylesAtomic.js.map +0 -7
- package/dist/cjs/helpers/getStylesAtomic.native.js +0 -38
- package/dist/cjs/helpers/getStylesAtomic.native.js.map +0 -7
- package/dist/cjs/helpers/getThemeCSSRules.js +0 -110
- package/dist/cjs/helpers/getThemeCSSRules.js.map +0 -7
- package/dist/cjs/helpers/getThemeCSSRules.native.js +0 -31
- package/dist/cjs/helpers/getThemeCSSRules.native.js.map +0 -7
- package/dist/cjs/helpers/getVariantExtras.js +0 -92
- package/dist/cjs/helpers/getVariantExtras.js.map +0 -7
- package/dist/cjs/helpers/insertStyleRule.js +0 -218
- package/dist/cjs/helpers/insertStyleRule.js.map +0 -7
- package/dist/cjs/helpers/isObj.js +0 -29
- package/dist/cjs/helpers/isObj.js.map +0 -7
- package/dist/cjs/helpers/isTamaguiComponent.js +0 -32
- package/dist/cjs/helpers/isTamaguiComponent.js.map +0 -7
- package/dist/cjs/helpers/isTamaguiElement.js +0 -33
- package/dist/cjs/helpers/isTamaguiElement.js.map +0 -7
- package/dist/cjs/helpers/matchMedia.js +0 -42
- package/dist/cjs/helpers/matchMedia.js.map +0 -7
- package/dist/cjs/helpers/matchMedia.native.js +0 -48
- package/dist/cjs/helpers/matchMedia.native.js.map +0 -7
- package/dist/cjs/helpers/mergeProps.js +0 -54
- package/dist/cjs/helpers/mergeProps.js.map +0 -7
- package/dist/cjs/helpers/mergeTransform.js +0 -47
- package/dist/cjs/helpers/mergeTransform.js.map +0 -7
- package/dist/cjs/helpers/normalizeColor.js +0 -71
- package/dist/cjs/helpers/normalizeColor.js.map +0 -7
- package/dist/cjs/helpers/normalizeValueWithProperty.js +0 -138
- package/dist/cjs/helpers/normalizeValueWithProperty.js.map +0 -7
- package/dist/cjs/helpers/proxyThemeVariables.js +0 -40
- package/dist/cjs/helpers/proxyThemeVariables.js.map +0 -7
- package/dist/cjs/helpers/pseudoDescriptors.js +0 -53
- package/dist/cjs/helpers/pseudoDescriptors.js.map +0 -7
- package/dist/cjs/helpers/registerCSSVariable.js +0 -40
- package/dist/cjs/helpers/registerCSSVariable.js.map +0 -7
- package/dist/cjs/helpers/themeable.js +0 -62
- package/dist/cjs/helpers/themeable.js.map +0 -7
- package/dist/cjs/helpers/themes.js +0 -78
- package/dist/cjs/helpers/themes.js.map +0 -7
- package/dist/cjs/helpers/timer.js +0 -35
- package/dist/cjs/helpers/timer.js.map +0 -7
- package/dist/cjs/helpers/useShallowSetState.js +0 -59
- package/dist/cjs/helpers/useShallowSetState.js.map +0 -7
- package/dist/cjs/helpers/warnOnce.js +0 -38
- package/dist/cjs/helpers/warnOnce.js.map +0 -7
- package/dist/cjs/helpers/withStaticProperties.js +0 -32
- package/dist/cjs/helpers/withStaticProperties.js.map +0 -7
- package/dist/cjs/hooks/getThemeUnwrapped.js +0 -34
- package/dist/cjs/hooks/getThemeUnwrapped.js.map +0 -7
- package/dist/cjs/hooks/useId.js +0 -29
- package/dist/cjs/hooks/useId.js.map +0 -7
- package/dist/cjs/hooks/useIsTouchDevice.js +0 -33
- package/dist/cjs/hooks/useIsTouchDevice.js.map +0 -7
- package/dist/cjs/hooks/useMedia.js +0 -263
- package/dist/cjs/hooks/useMedia.js.map +0 -7
- package/dist/cjs/hooks/useSafeRef.js +0 -59
- package/dist/cjs/hooks/useSafeRef.js.map +0 -7
- package/dist/cjs/hooks/useServerHooks.js +0 -36
- package/dist/cjs/hooks/useServerHooks.js.map +0 -7
- package/dist/cjs/hooks/useStyle.js +0 -61
- package/dist/cjs/hooks/useStyle.js.map +0 -7
- package/dist/cjs/hooks/useTheme.js +0 -230
- package/dist/cjs/hooks/useTheme.js.map +0 -7
- package/dist/cjs/hooks/useThemeName.js +0 -52
- package/dist/cjs/hooks/useThemeName.js.map +0 -7
- package/dist/cjs/insertFont.js +0 -93
- package/dist/cjs/insertFont.js.map +0 -7
- package/dist/cjs/setupReactNative.js +0 -51
- package/dist/cjs/setupReactNative.js.map +0 -7
- package/dist/cjs/static.js +0 -20
- package/dist/cjs/static.js.map +0 -7
- package/dist/cjs/styled.js +0 -95
- package/dist/cjs/styled.js.map +0 -7
- package/dist/cjs/types-rnw.js +0 -17
- package/dist/cjs/types-rnw.js.map +0 -7
- package/dist/cjs/types.js.map +0 -7
- package/dist/cjs/updateTheme.js +0 -47
- package/dist/cjs/updateTheme.js.map +0 -7
- package/dist/cjs/views/FontLanguage.js +0 -41
- package/dist/cjs/views/FontLanguage.js.map +0 -7
- package/dist/cjs/views/FontLanguage.native.js +0 -35
- package/dist/cjs/views/FontLanguage.native.js.map +0 -7
- package/dist/cjs/views/FontLanguage.types.js +0 -17
- package/dist/cjs/views/FontLanguage.types.js.map +0 -7
- package/dist/cjs/views/Slot.js +0 -92
- package/dist/cjs/views/Slot.js.map +0 -7
- package/dist/cjs/views/Stack.js +0 -38
- package/dist/cjs/views/Stack.js.map +0 -7
- package/dist/cjs/views/Stack.web.test.js +0 -22
- package/dist/cjs/views/Stack.web.test.js.map +0 -7
- package/dist/cjs/views/TamaguiProvider.js +0 -90
- package/dist/cjs/views/TamaguiProvider.js.map +0 -7
- package/dist/cjs/views/Text.js +0 -94
- package/dist/cjs/views/Text.js.map +0 -7
- package/dist/cjs/views/Theme.js +0 -88
- package/dist/cjs/views/Theme.js.map +0 -7
- package/dist/cjs/views/ThemeProvider.js +0 -70
- package/dist/cjs/views/ThemeProvider.js.map +0 -7
- package/dist/esm/Tamagui.js +0 -41
- package/dist/esm/Tamagui.js.map +0 -7
- package/dist/esm/addTheme.js +0 -54
- package/dist/esm/addTheme.js.map +0 -7
- package/dist/esm/config.js +0 -58
- package/dist/esm/config.js.map +0 -7
- package/dist/esm/constants/constants.js +0 -22
- package/dist/esm/constants/constants.js.map +0 -7
- package/dist/esm/constants/isDevTools.js +0 -13
- package/dist/esm/constants/isDevTools.js.map +0 -7
- package/dist/esm/contexts/ButtonNestingContext.js +0 -6
- package/dist/esm/contexts/ButtonNestingContext.js.map +0 -7
- package/dist/esm/contexts/FontLanguageContext.js +0 -6
- package/dist/esm/contexts/FontLanguageContext.js.map +0 -7
- package/dist/esm/contexts/TextAncestorContext.js +0 -6
- package/dist/esm/contexts/TextAncestorContext.js.map +0 -7
- package/dist/esm/createComponent.js +0 -975
- package/dist/esm/createComponent.js.map +0 -7
- package/dist/esm/createFont.js +0 -45
- package/dist/esm/createFont.js.map +0 -7
- package/dist/esm/createFont.web.test.js +0 -124
- package/dist/esm/createFont.web.test.js.map +0 -7
- package/dist/esm/createShorthands.js +0 -7
- package/dist/esm/createShorthands.js.map +0 -7
- package/dist/esm/createTamagui.js +0 -190
- package/dist/esm/createTamagui.js.map +0 -7
- package/dist/esm/createTheme.js +0 -7
- package/dist/esm/createTheme.js.map +0 -7
- package/dist/esm/createTokens.js +0 -15
- package/dist/esm/createTokens.js.map +0 -7
- package/dist/esm/createTokens.web.test.js +0 -27
- package/dist/esm/createTokens.web.test.js.map +0 -7
- package/dist/esm/createVariable.js +0 -78
- package/dist/esm/createVariable.js.map +0 -7
- package/dist/esm/createVariable.web.test.js +0 -6
- package/dist/esm/createVariable.web.test.js.map +0 -7
- package/dist/esm/createVariables.js +0 -35
- package/dist/esm/createVariables.js.map +0 -7
- package/dist/esm/helpers/RNComponents.js +0 -16
- package/dist/esm/helpers/RNComponents.js.map +0 -7
- package/dist/esm/helpers/ThemeManager.js +0 -209
- package/dist/esm/helpers/ThemeManager.js.map +0 -7
- package/dist/esm/helpers/ThemeManager.test.js +0 -464
- package/dist/esm/helpers/ThemeManager.test.js.map +0 -7
- package/dist/esm/helpers/ThemeManagerContext.js +0 -6
- package/dist/esm/helpers/ThemeManagerContext.js.map +0 -7
- package/dist/esm/helpers/createMediaStyle.js +0 -42
- package/dist/esm/helpers/createMediaStyle.js.map +0 -7
- package/dist/esm/helpers/createPropMapper.js +0 -396
- package/dist/esm/helpers/createPropMapper.js.map +0 -7
- package/dist/esm/helpers/createProxy.js +0 -19
- package/dist/esm/helpers/createProxy.js.map +0 -7
- package/dist/esm/helpers/expandStyle.js +0 -71
- package/dist/esm/helpers/expandStyle.js.map +0 -7
- package/dist/esm/helpers/expandStyles.js +0 -90
- package/dist/esm/helpers/expandStyles.js.map +0 -7
- package/dist/esm/helpers/extendStaticConfig.js +0 -66
- package/dist/esm/helpers/extendStaticConfig.js.map +0 -7
- package/dist/esm/helpers/fixNativeShadow.js +0 -6
- package/dist/esm/helpers/fixNativeShadow.js.map +0 -7
- package/dist/esm/helpers/getAnimationDriver.js +0 -8
- package/dist/esm/helpers/getAnimationDriver.js.map +0 -7
- package/dist/esm/helpers/getExpandedShorthands.js +0 -16
- package/dist/esm/helpers/getExpandedShorthands.js.map +0 -7
- package/dist/esm/helpers/getFontLanguage.js +0 -5
- package/dist/esm/helpers/getFontLanguage.js.map +0 -7
- package/dist/esm/helpers/getSplitStyles.js +0 -847
- package/dist/esm/helpers/getSplitStyles.js.map +0 -7
- package/dist/esm/helpers/getStylesAtomic.js +0 -200
- package/dist/esm/helpers/getStylesAtomic.js.map +0 -7
- package/dist/esm/helpers/getStylesAtomic.native.js +0 -12
- package/dist/esm/helpers/getStylesAtomic.native.js.map +0 -7
- package/dist/esm/helpers/getThemeCSSRules.js +0 -86
- package/dist/esm/helpers/getThemeCSSRules.js.map +0 -7
- package/dist/esm/helpers/getThemeCSSRules.native.js +0 -7
- package/dist/esm/helpers/getThemeCSSRules.native.js.map +0 -7
- package/dist/esm/helpers/getVariantExtras.js +0 -67
- package/dist/esm/helpers/getVariantExtras.js.map +0 -7
- package/dist/esm/helpers/insertStyleRule.js +0 -186
- package/dist/esm/helpers/insertStyleRule.js.map +0 -7
- package/dist/esm/helpers/isObj.js +0 -5
- package/dist/esm/helpers/isObj.js.map +0 -7
- package/dist/esm/helpers/isTamaguiComponent.js +0 -8
- package/dist/esm/helpers/isTamaguiComponent.js.map +0 -7
- package/dist/esm/helpers/isTamaguiElement.js +0 -9
- package/dist/esm/helpers/isTamaguiElement.js.map +0 -7
- package/dist/esm/helpers/matchMedia.js +0 -17
- package/dist/esm/helpers/matchMedia.js.map +0 -7
- package/dist/esm/helpers/matchMedia.native.js +0 -23
- package/dist/esm/helpers/matchMedia.native.js.map +0 -7
- package/dist/esm/helpers/mergeProps.js +0 -30
- package/dist/esm/helpers/mergeProps.js.map +0 -7
- package/dist/esm/helpers/mergeTransform.js +0 -21
- package/dist/esm/helpers/mergeTransform.js.map +0 -7
- package/dist/esm/helpers/normalizeColor.js +0 -36
- package/dist/esm/helpers/normalizeColor.js.map +0 -7
- package/dist/esm/helpers/normalizeValueWithProperty.js +0 -113
- package/dist/esm/helpers/normalizeValueWithProperty.js.map +0 -7
- package/dist/esm/helpers/proxyThemeVariables.js +0 -16
- package/dist/esm/helpers/proxyThemeVariables.js.map +0 -7
- package/dist/esm/helpers/pseudoDescriptors.js +0 -29
- package/dist/esm/helpers/pseudoDescriptors.js.map +0 -7
- package/dist/esm/helpers/registerCSSVariable.js +0 -14
- package/dist/esm/helpers/registerCSSVariable.js.map +0 -7
- package/dist/esm/helpers/themeable.js +0 -28
- package/dist/esm/helpers/themeable.js.map +0 -7
- package/dist/esm/helpers/themes.js +0 -53
- package/dist/esm/helpers/themes.js.map +0 -7
- package/dist/esm/helpers/timer.js +0 -11
- package/dist/esm/helpers/timer.js.map +0 -7
- package/dist/esm/helpers/useShallowSetState.js +0 -35
- package/dist/esm/helpers/useShallowSetState.js.map +0 -7
- package/dist/esm/helpers/warnOnce.js +0 -14
- package/dist/esm/helpers/warnOnce.js.map +0 -7
- package/dist/esm/helpers/withStaticProperties.js +0 -8
- package/dist/esm/helpers/withStaticProperties.js.map +0 -7
- package/dist/esm/hooks/getThemeUnwrapped.js +0 -9
- package/dist/esm/hooks/getThemeUnwrapped.js.map +0 -7
- package/dist/esm/hooks/useId.js +0 -5
- package/dist/esm/hooks/useId.js.map +0 -7
- package/dist/esm/hooks/useIsTouchDevice.js +0 -9
- package/dist/esm/hooks/useIsTouchDevice.js.map +0 -7
- package/dist/esm/hooks/useMedia.js +0 -225
- package/dist/esm/hooks/useMedia.js.map +0 -7
- package/dist/esm/hooks/useSafeRef.js +0 -35
- package/dist/esm/hooks/useSafeRef.js.map +0 -7
- package/dist/esm/hooks/useServerHooks.js +0 -11
- package/dist/esm/hooks/useServerHooks.js.map +0 -7
- package/dist/esm/hooks/useStyle.js +0 -37
- package/dist/esm/hooks/useStyle.js.map +0 -7
- package/dist/esm/hooks/useTheme.js +0 -205
- package/dist/esm/hooks/useTheme.js.map +0 -7
- package/dist/esm/hooks/useThemeName.js +0 -28
- package/dist/esm/hooks/useThemeName.js.map +0 -7
- package/dist/esm/insertFont.js +0 -67
- package/dist/esm/insertFont.js.map +0 -7
- package/dist/esm/setupReactNative.js +0 -25
- package/dist/esm/setupReactNative.js.map +0 -7
- package/dist/esm/static.js +0 -3
- package/dist/esm/static.js.map +0 -7
- package/dist/esm/styled.js +0 -71
- package/dist/esm/styled.js.map +0 -7
- package/dist/esm/types-rnw.js +0 -1
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -7
- package/dist/esm/updateTheme.js +0 -23
- package/dist/esm/updateTheme.js.map +0 -7
- package/dist/esm/views/FontLanguage.js +0 -17
- package/dist/esm/views/FontLanguage.js.map +0 -7
- package/dist/esm/views/FontLanguage.native.js +0 -11
- package/dist/esm/views/FontLanguage.native.js.map +0 -7
- package/dist/esm/views/FontLanguage.types.js +0 -1
- package/dist/esm/views/FontLanguage.types.js.map +0 -7
- package/dist/esm/views/Slot.js +0 -71
- package/dist/esm/views/Slot.js.map +0 -7
- package/dist/esm/views/Stack.js +0 -14
- package/dist/esm/views/Stack.js.map +0 -7
- package/dist/esm/views/Stack.web.test.js +0 -21
- package/dist/esm/views/Stack.web.test.js.map +0 -7
- package/dist/esm/views/TamaguiProvider.js +0 -56
- package/dist/esm/views/TamaguiProvider.js.map +0 -7
- package/dist/esm/views/Text.js +0 -70
- package/dist/esm/views/Text.js.map +0 -7
- package/dist/esm/views/Theme.js +0 -63
- package/dist/esm/views/Theme.js.map +0 -7
- package/dist/esm/views/ThemeProvider.js +0 -45
- package/dist/esm/views/ThemeProvider.js.map +0 -7
- package/src/Tamagui.ts +0 -48
- package/src/__snapshots__/createTokens.test.ts.snap +0 -772
- package/src/__snapshots__/createTokens.web.test.tsx.snap +0 -772
- package/src/addTheme.ts +0 -65
- package/src/config.ts +0 -62
- package/src/constants/constants.ts +0 -17
- package/src/constants/isDevTools.ts +0 -12
- package/src/contexts/ButtonNestingContext.tsx +0 -3
- package/src/contexts/FontLanguageContext.tsx +0 -5
- package/src/contexts/TextAncestorContext.tsx +0 -3
- package/src/createComponent.tsx +0 -1293
- package/src/createFont.ts +0 -50
- package/src/createShorthands.ts +0 -7
- package/src/createTamagui.ts +0 -253
- package/src/createTheme.ts +0 -13
- package/src/createTokens.ts +0 -46
- package/src/createVariable.ts +0 -93
- package/src/createVariables.ts +0 -55
- package/src/helpers/RNComponents.tsx +0 -14
- package/src/helpers/ThemeManager.tsx +0 -285
- package/src/helpers/ThemeManagerContext.tsx +0 -5
- package/src/helpers/createMediaStyle.ts +0 -56
- package/src/helpers/createPropMapper.ts +0 -562
- package/src/helpers/createProxy.ts +0 -16
- package/src/helpers/expandStyle.ts +0 -82
- package/src/helpers/expandStyles.ts +0 -107
- package/src/helpers/extendStaticConfig.ts +0 -78
- package/src/helpers/fixNativeShadow.tsx +0 -2
- package/src/helpers/getAnimationDriver.tsx +0 -5
- package/src/helpers/getExpandedShorthands.ts +0 -17
- package/src/helpers/getFontLanguage.ts +0 -2
- package/src/helpers/getSplitStyles.tsx +0 -1137
- package/src/helpers/getStylesAtomic.native.ts +0 -8
- package/src/helpers/getStylesAtomic.ts +0 -274
- package/src/helpers/getThemeCSSRules.native.ts +0 -3
- package/src/helpers/getThemeCSSRules.ts +0 -120
- package/src/helpers/getVariantExtras.tsx +0 -85
- package/src/helpers/insertStyleRule.tsx +0 -220
- package/src/helpers/isObj.ts +0 -1
- package/src/helpers/isTamaguiComponent.tsx +0 -11
- package/src/helpers/isTamaguiElement.tsx +0 -15
- package/src/helpers/matchMedia.native.ts +0 -23
- package/src/helpers/matchMedia.ts +0 -16
- package/src/helpers/mergeProps.ts +0 -56
- package/src/helpers/mergeTransform.ts +0 -30
- package/src/helpers/normalizeColor.ts +0 -38
- package/src/helpers/normalizeValueWithProperty.ts +0 -129
- package/src/helpers/proxyThemeVariables.tsx +0 -15
- package/src/helpers/pseudoDescriptors.ts +0 -40
- package/src/helpers/registerCSSVariable.ts +0 -13
- package/src/helpers/themeable.tsx +0 -44
- package/src/helpers/themes.ts +0 -67
- package/src/helpers/timer.ts +0 -9
- package/src/helpers/useShallowSetState.tsx +0 -41
- package/src/helpers/warnOnce.tsx +0 -11
- package/src/helpers/withStaticProperties.tsx +0 -7
- package/src/hooks/getThemeUnwrapped.tsx +0 -5
- package/src/hooks/useId.tsx +0 -1
- package/src/hooks/useIsTouchDevice.tsx +0 -6
- package/src/hooks/useMedia.tsx +0 -298
- package/src/hooks/useSafeRef.ts +0 -45
- package/src/hooks/useServerHooks.tsx +0 -12
- package/src/hooks/useStyle.tsx +0 -49
- package/src/hooks/useTheme.tsx +0 -274
- package/src/hooks/useThemeName.tsx +0 -27
- package/src/insertFont.ts +0 -73
- package/src/setupReactNative.ts +0 -22
- package/src/static.ts +0 -5
- package/src/styled.tsx +0 -195
- package/src/types-rnw.tsx +0 -162
- package/src/types.tsx +0 -1405
- package/src/updateTheme.ts +0 -26
- package/src/views/FontLanguage.native.tsx +0 -12
- package/src/views/FontLanguage.tsx +0 -16
- package/src/views/FontLanguage.types.ts +0 -13
- package/src/views/Slot.tsx +0 -102
- package/src/views/Stack.tsx +0 -25
- package/src/views/TamaguiProvider.tsx +0 -65
- package/src/views/Text.tsx +0 -88
- package/src/views/Theme.tsx +0 -83
- package/src/views/ThemeProvider.tsx +0 -55
- package/types/Tamagui.d.ts +0 -30
- package/types/Tamagui.d.ts.map +0 -1
- package/types/addTheme.d.ts +0 -32
- package/types/addTheme.d.ts.map +0 -1
- package/types/config.d.ts +0 -49
- package/types/config.d.ts.map +0 -1
- package/types/constants/constants.d.ts +0 -21
- package/types/constants/constants.d.ts.map +0 -1
- package/types/constants/isDevTools.d.ts +0 -2
- package/types/constants/isDevTools.d.ts.map +0 -1
- package/types/contexts/ButtonNestingContext.d.ts +0 -3
- package/types/contexts/ButtonNestingContext.d.ts.map +0 -1
- package/types/contexts/FontLanguageContext.d.ts +0 -5
- package/types/contexts/FontLanguageContext.d.ts.map +0 -1
- package/types/contexts/TextAncestorContext.d.ts +0 -3
- package/types/contexts/TextAncestorContext.d.ts.map +0 -1
- package/types/createComponent.d.ts +0 -23
- package/types/createComponent.d.ts.map +0 -1
- package/types/createFont.d.ts +0 -3
- package/types/createFont.d.ts.map +0 -1
- package/types/createFont.web.test.d.ts +0 -2
- package/types/createFont.web.test.d.ts.map +0 -1
- package/types/createShorthands.d.ts +0 -3
- package/types/createShorthands.d.ts.map +0 -1
- package/types/createTamagui.d.ts +0 -3
- package/types/createTamagui.d.ts.map +0 -1
- package/types/createTheme.d.ts +0 -7
- package/types/createTheme.d.ts.map +0 -1
- package/types/createTokens.d.ts +0 -28
- package/types/createTokens.d.ts.map +0 -1
- package/types/createTokens.web.test.d.ts +0 -2
- package/types/createTokens.web.test.d.ts.map +0 -1
- package/types/createVariable.d.ts +0 -26
- package/types/createVariable.d.ts.map +0 -1
- package/types/createVariable.web.test.d.ts +0 -2
- package/types/createVariable.web.test.d.ts.map +0 -1
- package/types/createVariables.d.ts +0 -11
- package/types/createVariables.d.ts.map +0 -1
- package/types/helpers/RNComponents.d.ts +0 -2
- package/types/helpers/RNComponents.d.ts.map +0 -1
- package/types/helpers/ThemeManager.d.ts +0 -36
- package/types/helpers/ThemeManager.d.ts.map +0 -1
- package/types/helpers/ThemeManager.test.d.ts +0 -2
- package/types/helpers/ThemeManager.test.d.ts.map +0 -1
- package/types/helpers/ThemeManagerContext.d.ts +0 -4
- package/types/helpers/ThemeManagerContext.d.ts.map +0 -1
- package/types/helpers/createMediaStyle.d.ts +0 -6
- package/types/helpers/createMediaStyle.d.ts.map +0 -1
- package/types/helpers/createPropMapper.d.ts +0 -7
- package/types/helpers/createPropMapper.d.ts.map +0 -1
- package/types/helpers/createProxy.d.ts +0 -2
- package/types/helpers/createProxy.d.ts.map +0 -1
- package/types/helpers/expandStyle.d.ts +0 -6
- package/types/helpers/expandStyle.d.ts.map +0 -1
- package/types/helpers/expandStyles.d.ts +0 -26
- package/types/helpers/expandStyles.d.ts.map +0 -1
- package/types/helpers/extendStaticConfig.d.ts +0 -4
- package/types/helpers/extendStaticConfig.d.ts.map +0 -1
- package/types/helpers/fixNativeShadow.d.ts +0 -2
- package/types/helpers/fixNativeShadow.d.ts.map +0 -1
- package/types/helpers/getAnimationDriver.d.ts +0 -6
- package/types/helpers/getAnimationDriver.d.ts.map +0 -1
- package/types/helpers/getExpandedShorthands.d.ts +0 -3
- package/types/helpers/getExpandedShorthands.d.ts.map +0 -1
- package/types/helpers/getFontLanguage.d.ts +0 -2
- package/types/helpers/getFontLanguage.d.ts.map +0 -1
- package/types/helpers/getSplitStyles.d.ts +0 -43
- package/types/helpers/getSplitStyles.d.ts.map +0 -1
- package/types/helpers/getStylesAtomic.d.ts +0 -18
- package/types/helpers/getStylesAtomic.d.ts.map +0 -1
- package/types/helpers/getStylesAtomic.native.d.ts +0 -4
- package/types/helpers/getStylesAtomic.native.d.ts.map +0 -1
- package/types/helpers/getThemeCSSRules.d.ts +0 -8
- package/types/helpers/getThemeCSSRules.d.ts.map +0 -1
- package/types/helpers/getThemeCSSRules.native.d.ts +0 -2
- package/types/helpers/getThemeCSSRules.native.d.ts.map +0 -1
- package/types/helpers/getVariantExtras.d.ts +0 -5
- package/types/helpers/getVariantExtras.d.ts.map +0 -1
- package/types/helpers/insertStyleRule.d.ts +0 -13
- package/types/helpers/insertStyleRule.d.ts.map +0 -1
- package/types/helpers/isObj.d.ts +0 -2
- package/types/helpers/isObj.d.ts.map +0 -1
- package/types/helpers/isTamaguiComponent.d.ts +0 -5
- package/types/helpers/isTamaguiComponent.d.ts.map +0 -1
- package/types/helpers/isTamaguiElement.d.ts +0 -7
- package/types/helpers/isTamaguiElement.d.ts.map +0 -1
- package/types/helpers/matchMedia.d.ts +0 -6
- package/types/helpers/matchMedia.d.ts.map +0 -1
- package/types/helpers/matchMedia.native.d.ts +0 -4
- package/types/helpers/matchMedia.native.d.ts.map +0 -1
- package/types/helpers/mergeProps.d.ts +0 -17
- package/types/helpers/mergeProps.d.ts.map +0 -1
- package/types/helpers/mergeTransform.d.ts +0 -9
- package/types/helpers/mergeTransform.d.ts.map +0 -1
- package/types/helpers/normalizeColor.d.ts +0 -4
- package/types/helpers/normalizeColor.d.ts.map +0 -1
- package/types/helpers/normalizeValueWithProperty.d.ts +0 -7
- package/types/helpers/normalizeValueWithProperty.d.ts.map +0 -1
- package/types/helpers/proxyThemeVariables.d.ts +0 -2
- package/types/helpers/proxyThemeVariables.d.ts.map +0 -1
- package/types/helpers/pseudoDescriptors.d.ts +0 -10
- package/types/helpers/pseudoDescriptors.d.ts.map +0 -1
- package/types/helpers/registerCSSVariable.d.ts +0 -5
- package/types/helpers/registerCSSVariable.d.ts.map +0 -1
- package/types/helpers/themeable.d.ts +0 -12
- package/types/helpers/themeable.d.ts.map +0 -1
- package/types/helpers/themes.d.ts +0 -4
- package/types/helpers/themes.d.ts.map +0 -1
- package/types/helpers/timer.d.ts +0 -2
- package/types/helpers/timer.d.ts.map +0 -1
- package/types/helpers/useShallowSetState.d.ts +0 -5
- package/types/helpers/useShallowSetState.d.ts.map +0 -1
- package/types/helpers/warnOnce.d.ts +0 -2
- package/types/helpers/warnOnce.d.ts.map +0 -1
- package/types/helpers/withStaticProperties.d.ts +0 -2
- package/types/helpers/withStaticProperties.d.ts.map +0 -1
- package/types/hooks/getThemeUnwrapped.d.ts +0 -3
- package/types/hooks/getThemeUnwrapped.d.ts.map +0 -1
- package/types/hooks/useId.d.ts +0 -2
- package/types/hooks/useId.d.ts.map +0 -1
- package/types/hooks/useIsTouchDevice.d.ts +0 -2
- package/types/hooks/useIsTouchDevice.d.ts.map +0 -1
- package/types/hooks/useMedia.d.ts +0 -33
- package/types/hooks/useMedia.d.ts.map +0 -1
- package/types/hooks/useSafeRef.d.ts +0 -4
- package/types/hooks/useSafeRef.d.ts.map +0 -1
- package/types/hooks/useServerHooks.d.ts +0 -4
- package/types/hooks/useServerHooks.d.ts.map +0 -1
- package/types/hooks/useStyle.d.ts +0 -8
- package/types/hooks/useStyle.d.ts.map +0 -1
- package/types/hooks/useTheme.d.ts +0 -25
- package/types/hooks/useTheme.d.ts.map +0 -1
- package/types/hooks/useThemeName.d.ts +0 -5
- package/types/hooks/useThemeName.d.ts.map +0 -1
- package/types/insertFont.d.ts +0 -9
- package/types/insertFont.d.ts.map +0 -1
- package/types/setupReactNative.d.ts +0 -5
- package/types/setupReactNative.d.ts.map +0 -1
- package/types/static.d.ts +0 -3
- package/types/static.d.ts.map +0 -1
- package/types/styled.d.ts +0 -20
- package/types/styled.d.ts.map +0 -1
- package/types/types-rnw.d.ts +0 -74
- package/types/types-rnw.d.ts.map +0 -1
- package/types/types.d.ts +0 -673
- package/types/types.d.ts.map +0 -1
- package/types/updateTheme.d.ts +0 -30
- package/types/updateTheme.d.ts.map +0 -1
- package/types/views/FontLanguage.d.ts +0 -4
- package/types/views/FontLanguage.d.ts.map +0 -1
- package/types/views/FontLanguage.native.d.ts +0 -4
- package/types/views/FontLanguage.native.d.ts.map +0 -1
- package/types/views/FontLanguage.types.d.ts +0 -11
- package/types/views/FontLanguage.types.d.ts.map +0 -1
- package/types/views/Slot.d.ts +0 -11
- package/types/views/Slot.d.ts.map +0 -1
- package/types/views/Stack.d.ts +0 -4
- package/types/views/Stack.d.ts.map +0 -1
- package/types/views/Stack.web.test.d.ts +0 -2
- package/types/views/Stack.web.test.d.ts.map +0 -1
- package/types/views/TamaguiProvider.d.ts +0 -4
- package/types/views/TamaguiProvider.d.ts.map +0 -1
- package/types/views/Text.d.ts +0 -4
- package/types/views/Text.d.ts.map +0 -1
- package/types/views/Theme.d.ts +0 -8
- package/types/views/Theme.d.ts.map +0 -1
- package/types/views/ThemeProvider.d.ts +0 -12
- package/types/views/ThemeProvider.d.ts.map +0 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,75 +1,161 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./createComponent";
|
|
3
|
-
export * from "./createShorthands";
|
|
4
|
-
export * from "./createTheme";
|
|
5
|
-
export * from "./createTamagui";
|
|
6
|
-
export * from "./createFont";
|
|
7
|
-
export * from "./createTokens";
|
|
8
|
-
export * from "./createVariable";
|
|
9
|
-
export * from "./createVariables";
|
|
10
|
-
export * from "./insertFont";
|
|
11
|
-
export * from "./addTheme";
|
|
12
|
-
export * from "./updateTheme";
|
|
13
|
-
export * from "./styled";
|
|
14
|
-
export * from "./types";
|
|
15
|
-
export * from "./setupReactNative";
|
|
16
|
-
import { getConfig, getThemes, getTokens, onConfiguredOnce } from "./config";
|
|
17
|
-
export * from "./constants/constants";
|
|
18
|
-
export * from "./helpers/useShallowSetState";
|
|
19
|
-
export * from "./helpers/getVariantExtras";
|
|
20
|
-
export * from "./helpers/getAnimationDriver";
|
|
21
|
-
export * from "./helpers/getExpandedShorthands";
|
|
22
|
-
export * from "./helpers/getSplitStyles";
|
|
23
|
-
export * from "./helpers/getStylesAtomic";
|
|
24
|
-
export * from "./helpers/pseudoDescriptors";
|
|
25
|
-
export * from "./helpers/mergeProps";
|
|
26
|
-
export * from "./helpers/expandStyles";
|
|
27
|
-
export * from "./helpers/isTamaguiElement";
|
|
28
|
-
export * from "./helpers/isTamaguiComponent";
|
|
29
|
-
export * from "./helpers/matchMedia";
|
|
30
|
-
export * from "./helpers/themeable";
|
|
31
|
-
export * from "./helpers/withStaticProperties";
|
|
32
|
-
export * from "./contexts/ButtonNestingContext";
|
|
33
|
-
export * from "./hooks/useId";
|
|
34
|
-
export * from "./hooks/useIsTouchDevice";
|
|
1
|
+
import { useResponderEvents } from "@tamagui/react-native-use-responder-events";
|
|
35
2
|
import {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
} from "
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
export * from "
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
3
|
+
Stack as WebStack,
|
|
4
|
+
Text as WebText,
|
|
5
|
+
composeEventHandlers,
|
|
6
|
+
isRSC,
|
|
7
|
+
mergeEvent,
|
|
8
|
+
setupHooks,
|
|
9
|
+
styled
|
|
10
|
+
} from "@tamagui/web";
|
|
11
|
+
import { useElementLayout } from "./hooks/useElementLayout";
|
|
12
|
+
import { usePlatformMethods } from "./hooks/usePlatformMethods";
|
|
13
|
+
import { usePressability } from "./vendor/Pressability";
|
|
14
|
+
export * from "@tamagui/web";
|
|
15
|
+
const Stack = WebStack;
|
|
16
|
+
const Text = WebText;
|
|
17
|
+
const T = styled(Stack, {
|
|
18
|
+
backgroundColor: "red",
|
|
19
|
+
variants: {
|
|
20
|
+
red: {
|
|
21
|
+
true: {
|
|
22
|
+
backgroundColor: "red"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const T2 = styled(T, {
|
|
28
|
+
red: true
|
|
29
|
+
});
|
|
30
|
+
setupHooks({
|
|
31
|
+
getBaseViews() {
|
|
32
|
+
const native = require("react-native");
|
|
33
|
+
return {
|
|
34
|
+
View: native.View || native.default.View,
|
|
35
|
+
Text: native.Text || native.default.Text
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
usePropsTransform(elementType, propsIn, hostRef) {
|
|
39
|
+
const {
|
|
40
|
+
// event props
|
|
41
|
+
onMoveShouldSetResponder,
|
|
42
|
+
onMoveShouldSetResponderCapture,
|
|
43
|
+
onResponderEnd,
|
|
44
|
+
onResponderGrant,
|
|
45
|
+
onResponderMove,
|
|
46
|
+
onResponderReject,
|
|
47
|
+
onResponderRelease,
|
|
48
|
+
onResponderStart,
|
|
49
|
+
onResponderTerminate,
|
|
50
|
+
onResponderTerminationRequest,
|
|
51
|
+
onScrollShouldSetResponder,
|
|
52
|
+
onScrollShouldSetResponderCapture,
|
|
53
|
+
onSelectionChangeShouldSetResponder,
|
|
54
|
+
onSelectionChangeShouldSetResponderCapture,
|
|
55
|
+
onStartShouldSetResponder,
|
|
56
|
+
onStartShouldSetResponderCapture,
|
|
57
|
+
// android
|
|
58
|
+
collapsable,
|
|
59
|
+
focusable,
|
|
60
|
+
// deprecated,
|
|
61
|
+
accessible,
|
|
62
|
+
accessibilityDisabled,
|
|
63
|
+
onLayout,
|
|
64
|
+
hrefAttrs,
|
|
65
|
+
...viewProps
|
|
66
|
+
} = propsIn;
|
|
67
|
+
if (!isRSC) {
|
|
68
|
+
usePlatformMethods(hostRef);
|
|
69
|
+
useElementLayout(hostRef, onLayout);
|
|
70
|
+
useResponderEvents(hostRef, {
|
|
71
|
+
onMoveShouldSetResponder,
|
|
72
|
+
onMoveShouldSetResponderCapture,
|
|
73
|
+
onResponderEnd,
|
|
74
|
+
onResponderGrant,
|
|
75
|
+
onResponderMove,
|
|
76
|
+
onResponderReject,
|
|
77
|
+
onResponderRelease,
|
|
78
|
+
onResponderStart,
|
|
79
|
+
onResponderTerminate,
|
|
80
|
+
onResponderTerminationRequest,
|
|
81
|
+
onScrollShouldSetResponder,
|
|
82
|
+
onScrollShouldSetResponderCapture,
|
|
83
|
+
onSelectionChangeShouldSetResponder,
|
|
84
|
+
onSelectionChangeShouldSetResponderCapture,
|
|
85
|
+
onStartShouldSetResponder,
|
|
86
|
+
onStartShouldSetResponderCapture
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (viewProps.href !== void 0 && hrefAttrs !== void 0) {
|
|
90
|
+
const { download, rel, target } = hrefAttrs;
|
|
91
|
+
if (download != null) {
|
|
92
|
+
viewProps.download = download;
|
|
93
|
+
}
|
|
94
|
+
if (rel != null) {
|
|
95
|
+
viewProps.rel = rel;
|
|
96
|
+
}
|
|
97
|
+
if (typeof target === "string") {
|
|
98
|
+
viewProps.target = target.charAt(0) !== "_" ? `_${target}` : target;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (!viewProps.tabIndex) {
|
|
102
|
+
const _focusable = focusable !== void 0 ? focusable : accessible;
|
|
103
|
+
const role = viewProps.role;
|
|
104
|
+
if (_focusable === false) {
|
|
105
|
+
viewProps.tabIndex = "-1";
|
|
106
|
+
}
|
|
107
|
+
if (
|
|
108
|
+
// These native elements are focusable by default
|
|
109
|
+
elementType === "a" || elementType === "button" || elementType === "input" || elementType === "select" || elementType === "textarea"
|
|
110
|
+
) {
|
|
111
|
+
if (_focusable === false || accessibilityDisabled === true) {
|
|
112
|
+
viewProps.tabIndex = "-1";
|
|
113
|
+
}
|
|
114
|
+
} else if (
|
|
115
|
+
// These roles are made focusable by default
|
|
116
|
+
role === "button" || role === "checkbox" || role === "link" || role === "radio" || role === "textbox" || role === "switch"
|
|
117
|
+
) {
|
|
118
|
+
if (_focusable !== false) {
|
|
119
|
+
viewProps.tabIndex = "0";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (_focusable === true) {
|
|
123
|
+
viewProps.tabIndex = "0";
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return viewProps;
|
|
127
|
+
},
|
|
128
|
+
useEvents(viewProps, events, { pseudos }, setStateShallow) {
|
|
129
|
+
if (process.env.TAMAGUI_TARGET === "native") {
|
|
130
|
+
if (!events)
|
|
131
|
+
return;
|
|
132
|
+
const attachFocus = !!(pseudos == null ? void 0 : pseudos.focusStyle);
|
|
133
|
+
if (attachFocus) {
|
|
134
|
+
viewProps.onFocus = mergeEvent(viewProps.onFocus, () => {
|
|
135
|
+
setStateShallow({ focus: true });
|
|
136
|
+
});
|
|
137
|
+
viewProps.onBlur = mergeEvent(viewProps.onBlur, () => {
|
|
138
|
+
setStateShallow({ focus: false });
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const pressability = usePressability(
|
|
142
|
+
events ? { ...events, hitSlop: viewProps.hitSlop } : {}
|
|
143
|
+
);
|
|
144
|
+
if (events.onPress) {
|
|
145
|
+
for (const key in pressability) {
|
|
146
|
+
const og = viewProps[key];
|
|
147
|
+
const val = pressability[key];
|
|
148
|
+
viewProps[key] = og && !dontComposePressabilityKeys[key] ? composeEventHandlers(og, val) : val;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
const dontComposePressabilityKeys = {
|
|
155
|
+
onClick: true
|
|
156
|
+
};
|
|
62
157
|
export {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
getMedia,
|
|
66
|
-
getThemes,
|
|
67
|
-
getTokens,
|
|
68
|
-
mediaObjectToString,
|
|
69
|
-
mediaQueryConfig,
|
|
70
|
-
mediaState,
|
|
71
|
-
onConfiguredOnce,
|
|
72
|
-
useMedia,
|
|
73
|
-
useMediaPropsActive
|
|
158
|
+
Stack,
|
|
159
|
+
Text
|
|
74
160
|
};
|
|
75
161
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "AAAA,
|
|
4
|
+
"sourcesContent": ["import { useResponderEvents } from '@tamagui/react-native-use-responder-events'\nimport {\n StackProps,\n StackPropsBase,\n TamaguiComponent,\n TextProps,\n TextPropsBase,\n Stack as WebStack,\n Text as WebText,\n composeEventHandlers,\n isRSC,\n mergeEvent,\n setupHooks,\n styled,\n} from '@tamagui/web'\nimport { RefObject } from 'react'\nimport type { Text as RNText, View as RNView } from 'react-native'\n\nimport { useElementLayout } from './hooks/useElementLayout'\nimport { usePlatformMethods } from './hooks/usePlatformMethods'\nimport type { RNTextProps, RNViewProps } from './reactNativeTypes'\nimport { usePressability } from './vendor/Pressability'\n\n// re-exports all of @tamagui/web just adds hooks\nexport * from '@tamagui/web'\n\n// adds extra types to Stack/Text:\n\nexport const Stack = WebStack as TamaguiComponent<\n StackProps & RNViewProps,\n RNView,\n StackPropsBase & RNViewProps\n>\n\nexport const Text = WebText as TamaguiComponent<\n TextProps & RNTextProps,\n RNText,\n TextPropsBase & RNTextProps\n>\n\nconst T = styled(Stack, {\n backgroundColor: 'red',\n variants: {\n red: {\n true: {\n backgroundColor: 'red',\n },\n },\n },\n})\n\nconst T2 = styled(T, {\n red: true,\n})\n\n// setup internal hooks:\n\nsetupHooks({\n getBaseViews() {\n const native = require('react-native')\n return {\n View: native.View || native.default.View,\n Text: native.Text || native.default.Text,\n }\n },\n\n usePropsTransform(elementType, propsIn, hostRef) {\n // otherwise replicate react-native-web functionality\n const {\n // event props\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 // android\n collapsable,\n focusable,\n\n // deprecated,\n accessible,\n accessibilityDisabled,\n\n onLayout,\n hrefAttrs,\n\n ...viewProps\n } = propsIn\n\n if (!isRSC) {\n usePlatformMethods(hostRef as RefObject<Element>)\n useElementLayout(hostRef as RefObject<Element>, onLayout as any)\n 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 } as any)\n }\n\n // TODO move into getSplitStyles inital `if (process.env.TAMAGUI_TARGET === 'web')` block\n\n if (viewProps.href !== undefined && hrefAttrs !== undefined) {\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\n // FOCUS\n // \"focusable\" indicates that an element may be a keyboard tab-stop.\n // ported from RNW: TODO move into getSplitStyles\n if (!viewProps.tabIndex) {\n const _focusable = focusable !== undefined ? focusable : accessible\n const role = viewProps.role\n if (_focusable === false) {\n viewProps.tabIndex = '-1'\n }\n if (\n // These native elements are focusable by default\n elementType === 'a' ||\n elementType === 'button' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n if (_focusable === false || accessibilityDisabled === true) {\n viewProps.tabIndex = '-1'\n }\n } else if (\n // These roles are made focusable by default\n role === 'button' ||\n role === 'checkbox' ||\n role === 'link' ||\n role === 'radio' ||\n role === 'textbox' ||\n role === 'switch'\n ) {\n if (_focusable !== false) {\n viewProps.tabIndex = '0'\n }\n }\n // Everything else must explicitly set the prop\n if (_focusable === true) {\n viewProps.tabIndex = '0'\n }\n }\n\n return viewProps\n },\n\n useEvents(viewProps, events, { pseudos }, setStateShallow) {\n if (process.env.TAMAGUI_TARGET === 'native') {\n if (!events) return\n // add focus events\n const attachFocus = !!pseudos?.focusStyle\n if (attachFocus) {\n viewProps.onFocus = mergeEvent(viewProps.onFocus, () => {\n setStateShallow({ focus: true })\n })\n viewProps.onBlur = mergeEvent(viewProps.onBlur, () => {\n setStateShallow({ focus: false })\n })\n }\n // use Pressability to get smooth unPress when you press + hold + move out\n // only ever create once, use .configure() to update later\n const pressability = usePressability(\n events ? { ...events, hitSlop: viewProps.hitSlop } : {}\n )\n if (events.onPress) {\n for (const key in pressability) {\n const og = viewProps[key]\n const val = pressability[key]\n viewProps[key] =\n og && !dontComposePressabilityKeys[key] ? composeEventHandlers(og, val) : val\n }\n }\n }\n },\n})\n\nconst dontComposePressabilityKeys = {\n onClick: true,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=reactNativeTypes.js.map
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/core",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,22 +27,16 @@
|
|
|
27
27
|
"reset.css"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/
|
|
31
|
-
"@tamagui/
|
|
32
|
-
"@tamagui/
|
|
33
|
-
"@tamagui/normalize-css-color": "^1.2.4",
|
|
34
|
-
"@tamagui/react-native-use-pressable": "^1.2.4",
|
|
35
|
-
"@tamagui/react-native-use-responder-events": "^1.2.4",
|
|
36
|
-
"@tamagui/use-did-finish-ssr": "^1.2.4",
|
|
37
|
-
"@tamagui/use-event": "^1.2.4",
|
|
38
|
-
"@tamagui/use-force-update": "^1.2.4"
|
|
30
|
+
"@tamagui/react-native-use-pressable": "^1.2.5",
|
|
31
|
+
"@tamagui/react-native-use-responder-events": "^1.2.5",
|
|
32
|
+
"@tamagui/web": "^1.2.5"
|
|
39
33
|
},
|
|
40
34
|
"peerDependencies": {
|
|
41
35
|
"react": "*",
|
|
42
36
|
"react-dom": "*"
|
|
43
37
|
},
|
|
44
38
|
"devDependencies": {
|
|
45
|
-
"@tamagui/build": "^1.2.
|
|
39
|
+
"@tamagui/build": "^1.2.5",
|
|
46
40
|
"@testing-library/react": "^13.4.0",
|
|
47
41
|
"csstype": "^3.0.10",
|
|
48
42
|
"react": "^18.2.0",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useIsomorphicLayoutEffect } from '@tamagui/web'
|
|
2
|
+
import { RefObject } from 'react'
|
|
3
|
+
|
|
4
|
+
import { getRect } from '../helpers/getRect'
|
|
5
|
+
import { measureLayout } from './useElementLayout'
|
|
6
|
+
|
|
7
|
+
// react native compat (web only)
|
|
8
|
+
export function usePlatformMethods(hostRef: RefObject<Element>) {
|
|
9
|
+
useIsomorphicLayoutEffect(() => {
|
|
10
|
+
const node = hostRef.current
|
|
11
|
+
if (!node) return
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
node.measure = (callback) => measureLayout(node, null, callback)
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
node.measureLayout = (relativeToNode, success) =>
|
|
16
|
+
measureLayout(node as HTMLElement, relativeToNode, success)
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
node.measureInWindow = (callback) => {
|
|
19
|
+
if (!node) return
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
const { height, left, top, width } = getRect(node as HTMLElement)!
|
|
22
|
+
callback(left, top, width, height)
|
|
23
|
+
}, 0)
|
|
24
|
+
}
|
|
25
|
+
}, [hostRef])
|
|
26
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,71 +1,214 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
export * from '
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
1
|
+
import { useResponderEvents } from '@tamagui/react-native-use-responder-events'
|
|
2
|
+
import {
|
|
3
|
+
StackProps,
|
|
4
|
+
StackPropsBase,
|
|
5
|
+
TamaguiComponent,
|
|
6
|
+
TextProps,
|
|
7
|
+
TextPropsBase,
|
|
8
|
+
Stack as WebStack,
|
|
9
|
+
Text as WebText,
|
|
10
|
+
composeEventHandlers,
|
|
11
|
+
isRSC,
|
|
12
|
+
mergeEvent,
|
|
13
|
+
setupHooks,
|
|
14
|
+
styled,
|
|
15
|
+
} from '@tamagui/web'
|
|
16
|
+
import { RefObject } from 'react'
|
|
17
|
+
import type { Text as RNText, View as RNView } from 'react-native'
|
|
18
|
+
|
|
19
|
+
import { useElementLayout } from './hooks/useElementLayout'
|
|
20
|
+
import { usePlatformMethods } from './hooks/usePlatformMethods'
|
|
21
|
+
import type { RNTextProps, RNViewProps } from './reactNativeTypes'
|
|
22
|
+
import { usePressability } from './vendor/Pressability'
|
|
23
|
+
|
|
24
|
+
// re-exports all of @tamagui/web just adds hooks
|
|
25
|
+
export * from '@tamagui/web'
|
|
26
|
+
|
|
27
|
+
// adds extra types to Stack/Text:
|
|
28
|
+
|
|
29
|
+
export const Stack = WebStack as TamaguiComponent<
|
|
30
|
+
StackProps & RNViewProps,
|
|
31
|
+
RNView,
|
|
32
|
+
StackPropsBase & RNViewProps
|
|
33
|
+
>
|
|
34
|
+
|
|
35
|
+
export const Text = WebText as TamaguiComponent<
|
|
36
|
+
TextProps & RNTextProps,
|
|
37
|
+
RNText,
|
|
38
|
+
TextPropsBase & RNTextProps
|
|
39
|
+
>
|
|
40
|
+
|
|
41
|
+
const T = styled(Stack, {
|
|
42
|
+
backgroundColor: 'red',
|
|
43
|
+
variants: {
|
|
44
|
+
red: {
|
|
45
|
+
true: {
|
|
46
|
+
backgroundColor: 'red',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
const T2 = styled(T, {
|
|
53
|
+
red: true,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
// setup internal hooks:
|
|
57
|
+
|
|
58
|
+
setupHooks({
|
|
59
|
+
getBaseViews() {
|
|
60
|
+
const native = require('react-native')
|
|
61
|
+
return {
|
|
62
|
+
View: native.View || native.default.View,
|
|
63
|
+
Text: native.Text || native.default.Text,
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
usePropsTransform(elementType, propsIn, hostRef) {
|
|
68
|
+
// otherwise replicate react-native-web functionality
|
|
69
|
+
const {
|
|
70
|
+
// event props
|
|
71
|
+
onMoveShouldSetResponder,
|
|
72
|
+
onMoveShouldSetResponderCapture,
|
|
73
|
+
onResponderEnd,
|
|
74
|
+
onResponderGrant,
|
|
75
|
+
onResponderMove,
|
|
76
|
+
onResponderReject,
|
|
77
|
+
onResponderRelease,
|
|
78
|
+
onResponderStart,
|
|
79
|
+
onResponderTerminate,
|
|
80
|
+
onResponderTerminationRequest,
|
|
81
|
+
onScrollShouldSetResponder,
|
|
82
|
+
onScrollShouldSetResponderCapture,
|
|
83
|
+
onSelectionChangeShouldSetResponder,
|
|
84
|
+
onSelectionChangeShouldSetResponderCapture,
|
|
85
|
+
onStartShouldSetResponder,
|
|
86
|
+
onStartShouldSetResponderCapture,
|
|
87
|
+
|
|
88
|
+
// android
|
|
89
|
+
collapsable,
|
|
90
|
+
focusable,
|
|
91
|
+
|
|
92
|
+
// deprecated,
|
|
93
|
+
accessible,
|
|
94
|
+
accessibilityDisabled,
|
|
95
|
+
|
|
96
|
+
onLayout,
|
|
97
|
+
hrefAttrs,
|
|
98
|
+
|
|
99
|
+
...viewProps
|
|
100
|
+
} = propsIn
|
|
101
|
+
|
|
102
|
+
if (!isRSC) {
|
|
103
|
+
usePlatformMethods(hostRef as RefObject<Element>)
|
|
104
|
+
useElementLayout(hostRef as RefObject<Element>, onLayout as any)
|
|
105
|
+
useResponderEvents(hostRef, {
|
|
106
|
+
onMoveShouldSetResponder,
|
|
107
|
+
onMoveShouldSetResponderCapture,
|
|
108
|
+
onResponderEnd,
|
|
109
|
+
onResponderGrant,
|
|
110
|
+
onResponderMove,
|
|
111
|
+
onResponderReject,
|
|
112
|
+
onResponderRelease,
|
|
113
|
+
onResponderStart,
|
|
114
|
+
onResponderTerminate,
|
|
115
|
+
onResponderTerminationRequest,
|
|
116
|
+
onScrollShouldSetResponder,
|
|
117
|
+
onScrollShouldSetResponderCapture,
|
|
118
|
+
onSelectionChangeShouldSetResponder,
|
|
119
|
+
onSelectionChangeShouldSetResponderCapture,
|
|
120
|
+
onStartShouldSetResponder,
|
|
121
|
+
onStartShouldSetResponderCapture,
|
|
122
|
+
} as any)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// TODO move into getSplitStyles inital `if (process.env.TAMAGUI_TARGET === 'web')` block
|
|
126
|
+
|
|
127
|
+
if (viewProps.href !== undefined && hrefAttrs !== undefined) {
|
|
128
|
+
const { download, rel, target } = hrefAttrs
|
|
129
|
+
if (download != null) {
|
|
130
|
+
viewProps.download = download
|
|
131
|
+
}
|
|
132
|
+
if (rel != null) {
|
|
133
|
+
viewProps.rel = rel
|
|
134
|
+
}
|
|
135
|
+
if (typeof target === 'string') {
|
|
136
|
+
viewProps.target = target.charAt(0) !== '_' ? `_${target}` : target
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// FOCUS
|
|
141
|
+
// "focusable" indicates that an element may be a keyboard tab-stop.
|
|
142
|
+
// ported from RNW: TODO move into getSplitStyles
|
|
143
|
+
if (!viewProps.tabIndex) {
|
|
144
|
+
const _focusable = focusable !== undefined ? focusable : accessible
|
|
145
|
+
const role = viewProps.role
|
|
146
|
+
if (_focusable === false) {
|
|
147
|
+
viewProps.tabIndex = '-1'
|
|
148
|
+
}
|
|
149
|
+
if (
|
|
150
|
+
// These native elements are focusable by default
|
|
151
|
+
elementType === 'a' ||
|
|
152
|
+
elementType === 'button' ||
|
|
153
|
+
elementType === 'input' ||
|
|
154
|
+
elementType === 'select' ||
|
|
155
|
+
elementType === 'textarea'
|
|
156
|
+
) {
|
|
157
|
+
if (_focusable === false || accessibilityDisabled === true) {
|
|
158
|
+
viewProps.tabIndex = '-1'
|
|
159
|
+
}
|
|
160
|
+
} else if (
|
|
161
|
+
// These roles are made focusable by default
|
|
162
|
+
role === 'button' ||
|
|
163
|
+
role === 'checkbox' ||
|
|
164
|
+
role === 'link' ||
|
|
165
|
+
role === 'radio' ||
|
|
166
|
+
role === 'textbox' ||
|
|
167
|
+
role === 'switch'
|
|
168
|
+
) {
|
|
169
|
+
if (_focusable !== false) {
|
|
170
|
+
viewProps.tabIndex = '0'
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Everything else must explicitly set the prop
|
|
174
|
+
if (_focusable === true) {
|
|
175
|
+
viewProps.tabIndex = '0'
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return viewProps
|
|
180
|
+
},
|
|
181
|
+
|
|
182
|
+
useEvents(viewProps, events, { pseudos }, setStateShallow) {
|
|
183
|
+
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
184
|
+
if (!events) return
|
|
185
|
+
// add focus events
|
|
186
|
+
const attachFocus = !!pseudos?.focusStyle
|
|
187
|
+
if (attachFocus) {
|
|
188
|
+
viewProps.onFocus = mergeEvent(viewProps.onFocus, () => {
|
|
189
|
+
setStateShallow({ focus: true })
|
|
190
|
+
})
|
|
191
|
+
viewProps.onBlur = mergeEvent(viewProps.onBlur, () => {
|
|
192
|
+
setStateShallow({ focus: false })
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
// use Pressability to get smooth unPress when you press + hold + move out
|
|
196
|
+
// only ever create once, use .configure() to update later
|
|
197
|
+
const pressability = usePressability(
|
|
198
|
+
events ? { ...events, hitSlop: viewProps.hitSlop } : {}
|
|
199
|
+
)
|
|
200
|
+
if (events.onPress) {
|
|
201
|
+
for (const key in pressability) {
|
|
202
|
+
const og = viewProps[key]
|
|
203
|
+
const val = pressability[key]
|
|
204
|
+
viewProps[key] =
|
|
205
|
+
og && !dontComposePressabilityKeys[key] ? composeEventHandlers(og, val) : val
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
const dontComposePressabilityKeys = {
|
|
213
|
+
onClick: true,
|
|
214
|
+
}
|