@tamagui/web 1.114.4 → 1.115.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Tamagui.cjs +80 -0
- package/dist/cjs/_withStableStyle.cjs +51 -0
- package/dist/cjs/config.cjs +111 -0
- package/dist/cjs/constants/{accessibilityDirectMap.js → accessibilityDirectMap.cjs} +19 -11
- package/dist/cjs/constants/accessibilityDirectMap.native.cjs +34 -0
- package/dist/cjs/constants/accessibilityDirectMap.native.cjs.map +6 -0
- package/dist/cjs/constants/constants.cjs +45 -0
- package/dist/cjs/constants/isDevTools.cjs +31 -0
- package/dist/cjs/constants/webToNativeProps.cjs +28 -0
- package/dist/cjs/constants/webToNativeProps.native.cjs +102 -0
- package/dist/cjs/constants/webToNativeProps.native.cjs.map +6 -0
- package/dist/cjs/contexts/{ComponentContext.js → ComponentContext.cjs} +17 -12
- package/dist/cjs/{createComponent.js → createComponent.cjs} +407 -317
- package/dist/cjs/createFont.cjs +42 -0
- package/dist/cjs/createShorthands.cjs +28 -0
- package/dist/cjs/createTamagui.cjs +235 -0
- package/dist/cjs/createTheme.cjs +26 -0
- package/dist/cjs/createTokens.cjs +29 -0
- package/dist/cjs/{createVariable.js → createVariable.cjs} +31 -24
- package/dist/cjs/createVariables.cjs +58 -0
- package/dist/cjs/defaultComponentState.cjs +44 -0
- package/dist/cjs/helpers/ThemeManager.cjs +184 -0
- package/dist/cjs/helpers/{ThemeManagerContext.js → ThemeManagerContext.cjs} +22 -14
- package/dist/cjs/helpers/createMediaStyle.cjs +96 -0
- package/dist/cjs/helpers/{createShallowSetState.js → createShallowSetState.cjs} +29 -22
- package/dist/cjs/helpers/createStyledContext.cjs +70 -0
- package/dist/cjs/helpers/defaultOffset.cjs +29 -0
- package/dist/cjs/helpers/expandStyle.cjs +67 -0
- package/dist/cjs/helpers/expandStyles.cjs +40 -0
- package/dist/cjs/helpers/getExpandedShorthands.cjs +33 -0
- package/dist/cjs/helpers/getFontLanguage.cjs +26 -0
- package/dist/cjs/helpers/getGroupPropParts.cjs +37 -0
- package/dist/cjs/helpers/{getSplitStyles.js → getSplitStyles.cjs} +362 -335
- package/dist/cjs/helpers/getStylesAtomic.cjs +176 -0
- package/dist/cjs/helpers/getStylesAtomic.native.cjs +33 -0
- package/dist/cjs/helpers/getStylesAtomic.native.cjs.map +6 -0
- package/dist/cjs/helpers/getThemeCSSRules.cjs +119 -0
- package/dist/cjs/helpers/getThemeCSSRules.native.cjs +28 -0
- package/dist/cjs/helpers/getThemeCSSRules.native.cjs.map +6 -0
- package/dist/cjs/helpers/getVariantExtras.cjs +65 -0
- package/dist/cjs/helpers/{insertStyleRule.js → insertStyleRule.cjs} +93 -96
- package/dist/cjs/helpers/isActivePlatform.cjs +35 -0
- package/dist/cjs/helpers/isObj.cjs +26 -0
- package/dist/cjs/helpers/isTamaguiComponent.cjs +29 -0
- package/dist/cjs/helpers/{isTamaguiElement.js → isTamaguiElement.cjs} +24 -15
- package/dist/cjs/helpers/log.cjs +36 -0
- package/dist/cjs/helpers/matchMedia.cjs +36 -0
- package/dist/cjs/helpers/matchMedia.native.cjs +39 -0
- package/dist/cjs/helpers/matchMedia.native.cjs.map +6 -0
- package/dist/cjs/helpers/mergeProps.cjs +45 -0
- package/dist/cjs/helpers/{mergeVariants.js → mergeVariants.cjs} +19 -17
- package/dist/cjs/helpers/normalizeColor.cjs +48 -0
- package/dist/cjs/helpers/{normalizeShadow.js → normalizeShadow.cjs} +22 -13
- package/dist/cjs/helpers/normalizeStyle.cjs +47 -0
- package/dist/cjs/helpers/normalizeStylePropKeys.cjs +26 -0
- package/dist/cjs/helpers/normalizeStylePropKeys.native.cjs +37 -0
- package/dist/cjs/helpers/normalizeStylePropKeys.native.cjs.map +6 -0
- package/dist/cjs/helpers/{normalizeValueWithProperty.js → normalizeValueWithProperty.cjs} +22 -19
- package/dist/cjs/helpers/objectIdentityKey.cjs +39 -0
- package/dist/cjs/helpers/propMapper.cjs +254 -0
- package/dist/cjs/helpers/proxyThemeToParents.cjs +61 -0
- package/dist/cjs/helpers/{proxyThemeVariables.js → proxyThemeVariables.cjs} +16 -11
- package/dist/cjs/helpers/pseudoDescriptors.cjs +72 -0
- package/dist/cjs/helpers/registerCSSVariable.cjs +33 -0
- package/dist/cjs/helpers/setElementProps.cjs +29 -0
- package/dist/cjs/helpers/setElementProps.native.cjs +30 -0
- package/dist/cjs/helpers/setElementProps.native.cjs.map +6 -0
- package/dist/cjs/helpers/{skipProps.js → skipProps.cjs} +17 -12
- package/dist/cjs/helpers/sortString.cjs +26 -0
- package/dist/cjs/helpers/{subscribeToContextGroup.js → subscribeToContextGroup.cjs} +25 -17
- package/dist/cjs/helpers/themeable.cjs +83 -0
- package/dist/cjs/helpers/{themes.js → themes.cjs} +17 -12
- package/dist/cjs/helpers/timer.cjs +32 -0
- package/dist/cjs/helpers/transformsToString.cjs +37 -0
- package/dist/cjs/helpers/webPropsToSkip.cjs +26 -0
- package/dist/cjs/helpers/webPropsToSkip.native.cjs +79 -0
- package/dist/cjs/helpers/webPropsToSkip.native.cjs.map +6 -0
- package/dist/cjs/helpers/wrapStyleTags.cjs +40 -0
- package/dist/cjs/hooks/{useComponentState.js → useComponentState.cjs} +75 -30
- package/dist/cjs/hooks/useConfiguration.cjs +55 -0
- package/dist/cjs/hooks/{useDidHydrateOnce.js → useDidHydrateOnce.cjs} +27 -16
- package/dist/cjs/hooks/useDisableSSR.cjs +29 -0
- package/dist/cjs/hooks/useIsTouchDevice.cjs +28 -0
- package/dist/cjs/hooks/useMedia.cjs +227 -0
- package/dist/cjs/hooks/useProps.cjs +108 -0
- package/dist/cjs/hooks/useTheme.cjs +277 -0
- package/dist/cjs/hooks/useThemeName.cjs +50 -0
- package/dist/cjs/index.cjs +106 -0
- package/dist/cjs/inject-styles.cjs +37 -0
- package/dist/cjs/insertFont.cjs +72 -0
- package/dist/cjs/interfaces/CSSColorNames.cjs +16 -0
- package/dist/cjs/interfaces/GetRef.cjs +16 -0
- package/dist/cjs/interfaces/KeyTypes.cjs +16 -0
- package/dist/cjs/interfaces/RNExclusiveTypes.cjs +16 -0
- package/dist/cjs/interfaces/Role.cjs +16 -0
- package/dist/cjs/interfaces/TamaguiComponentEvents.cjs +16 -0
- package/dist/cjs/interfaces/{TamaguiComponentPropsBaseBase.js → TamaguiComponentPropsBaseBase.cjs} +8 -6
- package/dist/cjs/interfaces/TamaguiComponentState.cjs +16 -0
- package/dist/cjs/interfaces/WebOnlyPressEvents.cjs +16 -0
- package/dist/cjs/setupHooks.cjs +30 -0
- package/dist/cjs/setupReactNative.cjs +49 -0
- package/dist/cjs/styled.cjs +87 -0
- package/dist/cjs/type-utils.cjs +16 -0
- package/dist/cjs/types.cjs +19 -0
- package/dist/cjs/views/Configuration.cjs +47 -0
- package/dist/cjs/views/FontLanguage.cjs +37 -0
- package/dist/cjs/views/FontLanguage.native.cjs +50 -0
- package/dist/cjs/views/FontLanguage.native.cjs.map +6 -0
- package/dist/cjs/views/FontLanguage.types.cjs +16 -0
- package/dist/cjs/views/Slot.cjs +78 -0
- package/dist/cjs/views/Stack.cjs +34 -0
- package/dist/cjs/views/TamaguiProvider.cjs +93 -0
- package/dist/cjs/views/Text.cjs +86 -0
- package/dist/cjs/views/Theme.cjs +145 -0
- package/dist/cjs/views/ThemeDebug.cjs +92 -0
- package/dist/cjs/views/ThemeDebug.native.cjs +33 -0
- package/dist/cjs/views/ThemeDebug.native.cjs.map +6 -0
- package/dist/cjs/views/ThemeProvider.cjs +56 -0
- package/dist/cjs/views/View.cjs +33 -0
- package/package.json +15 -14
- package/dist/cjs/Tamagui.js +0 -63
- package/dist/cjs/_withStableStyle.js +0 -33
- package/dist/cjs/config.js +0 -97
- package/dist/cjs/constants/constants.js +0 -36
- package/dist/cjs/constants/isDevTools.js +0 -28
- package/dist/cjs/constants/webToNativeProps.js +0 -22
- package/dist/cjs/createFont.js +0 -53
- package/dist/cjs/createShorthands.js +0 -23
- package/dist/cjs/createTamagui.js +0 -189
- package/dist/cjs/createTheme.js +0 -21
- package/dist/cjs/createTokens.js +0 -24
- package/dist/cjs/createVariables.js +0 -47
- package/dist/cjs/defaultComponentState.js +0 -37
- package/dist/cjs/helpers/ThemeManager.js +0 -166
- package/dist/cjs/helpers/createMediaStyle.js +0 -74
- package/dist/cjs/helpers/createStyledContext.js +0 -53
- package/dist/cjs/helpers/defaultOffset.js +0 -21
- package/dist/cjs/helpers/expandStyle.js +0 -73
- package/dist/cjs/helpers/expandStyles.js +0 -34
- package/dist/cjs/helpers/getExpandedShorthands.js +0 -29
- package/dist/cjs/helpers/getFontLanguage.js +0 -21
- package/dist/cjs/helpers/getGroupPropParts.js +0 -27
- package/dist/cjs/helpers/getStylesAtomic.js +0 -152
- package/dist/cjs/helpers/getThemeCSSRules.js +0 -89
- package/dist/cjs/helpers/getVariantExtras.js +0 -58
- package/dist/cjs/helpers/isActivePlatform.js +0 -29
- package/dist/cjs/helpers/isObj.js +0 -21
- package/dist/cjs/helpers/isTamaguiComponent.js +0 -24
- package/dist/cjs/helpers/log.js +0 -31
- package/dist/cjs/helpers/matchMedia.js +0 -34
- package/dist/cjs/helpers/mergeProps.js +0 -41
- package/dist/cjs/helpers/normalizeColor.js +0 -43
- package/dist/cjs/helpers/normalizeStyle.js +0 -36
- package/dist/cjs/helpers/normalizeStylePropKeys.js +0 -21
- package/dist/cjs/helpers/objectIdentityKey.js +0 -38
- package/dist/cjs/helpers/propMapper.js +0 -238
- package/dist/cjs/helpers/proxyThemeToParents.js +0 -52
- package/dist/cjs/helpers/pseudoDescriptors.js +0 -65
- package/dist/cjs/helpers/registerCSSVariable.js +0 -29
- package/dist/cjs/helpers/setElementProps.js +0 -24
- package/dist/cjs/helpers/sortString.js +0 -21
- package/dist/cjs/helpers/themeable.js +0 -63
- package/dist/cjs/helpers/timer.js +0 -27
- package/dist/cjs/helpers/transformsToString.js +0 -32
- package/dist/cjs/helpers/webPropsToSkip.js +0 -21
- package/dist/cjs/helpers/wrapStyleTags.js +0 -39
- package/dist/cjs/hooks/useConfiguration.js +0 -37
- package/dist/cjs/hooks/useDisableSSR.js +0 -24
- package/dist/cjs/hooks/useIsTouchDevice.js +0 -22
- package/dist/cjs/hooks/useMedia.js +0 -206
- package/dist/cjs/hooks/useProps.js +0 -95
- package/dist/cjs/hooks/useTheme.js +0 -263
- package/dist/cjs/hooks/useThemeName.js +0 -39
- package/dist/cjs/index.js +0 -99
- package/dist/cjs/inject-styles.js +0 -28
- package/dist/cjs/insertFont.js +0 -65
- package/dist/cjs/interfaces/CSSColorNames.js +0 -14
- package/dist/cjs/interfaces/GetRef.js +0 -14
- package/dist/cjs/interfaces/KeyTypes.js +0 -14
- package/dist/cjs/interfaces/RNExclusiveTypes.js +0 -14
- package/dist/cjs/interfaces/Role.js +0 -14
- package/dist/cjs/interfaces/TamaguiComponentEvents.js +0 -14
- package/dist/cjs/interfaces/TamaguiComponentState.js +0 -14
- package/dist/cjs/interfaces/WebOnlyPressEvents.js +0 -14
- package/dist/cjs/setupHooks.js +0 -25
- package/dist/cjs/setupReactNative.js +0 -46
- package/dist/cjs/styled.js +0 -74
- package/dist/cjs/type-utils.js +0 -14
- package/dist/cjs/types.js +0 -16
- package/dist/cjs/views/Configuration.js +0 -34
- package/dist/cjs/views/FontLanguage.js +0 -32
- package/dist/cjs/views/FontLanguage.types.js +0 -14
- package/dist/cjs/views/Slot.js +0 -59
- package/dist/cjs/views/Stack.js +0 -27
- package/dist/cjs/views/TamaguiProvider.js +0 -76
- package/dist/cjs/views/Text.js +0 -77
- package/dist/cjs/views/Theme.js +0 -103
- package/dist/cjs/views/ThemeDebug.js +0 -94
- package/dist/cjs/views/ThemeProvider.js +0 -45
- package/dist/cjs/views/View.js +0 -26
- /package/dist/cjs/{Tamagui.js.map → Tamagui.cjs.map} +0 -0
- /package/dist/cjs/{_withStableStyle.js.map → _withStableStyle.cjs.map} +0 -0
- /package/dist/cjs/{config.js.map → config.cjs.map} +0 -0
- /package/dist/cjs/constants/{accessibilityDirectMap.js.map → accessibilityDirectMap.cjs.map} +0 -0
- /package/dist/cjs/constants/{constants.js.map → constants.cjs.map} +0 -0
- /package/dist/cjs/constants/{isDevTools.js.map → isDevTools.cjs.map} +0 -0
- /package/dist/cjs/constants/{webToNativeProps.js.map → webToNativeProps.cjs.map} +0 -0
- /package/dist/cjs/contexts/{ComponentContext.js.map → ComponentContext.cjs.map} +0 -0
- /package/dist/cjs/{createComponent.js.map → createComponent.cjs.map} +0 -0
- /package/dist/cjs/{createFont.js.map → createFont.cjs.map} +0 -0
- /package/dist/cjs/{createShorthands.js.map → createShorthands.cjs.map} +0 -0
- /package/dist/cjs/{createTamagui.js.map → createTamagui.cjs.map} +0 -0
- /package/dist/cjs/{createTheme.js.map → createTheme.cjs.map} +0 -0
- /package/dist/cjs/{createTokens.js.map → createTokens.cjs.map} +0 -0
- /package/dist/cjs/{createVariable.js.map → createVariable.cjs.map} +0 -0
- /package/dist/cjs/{createVariables.js.map → createVariables.cjs.map} +0 -0
- /package/dist/cjs/{defaultComponentState.js.map → defaultComponentState.cjs.map} +0 -0
- /package/dist/cjs/helpers/{ThemeManager.js.map → ThemeManager.cjs.map} +0 -0
- /package/dist/cjs/helpers/{ThemeManagerContext.js.map → ThemeManagerContext.cjs.map} +0 -0
- /package/dist/cjs/helpers/{createMediaStyle.js.map → createMediaStyle.cjs.map} +0 -0
- /package/dist/cjs/helpers/{createShallowSetState.js.map → createShallowSetState.cjs.map} +0 -0
- /package/dist/cjs/helpers/{createStyledContext.js.map → createStyledContext.cjs.map} +0 -0
- /package/dist/cjs/helpers/{defaultOffset.js.map → defaultOffset.cjs.map} +0 -0
- /package/dist/cjs/helpers/{expandStyle.js.map → expandStyle.cjs.map} +0 -0
- /package/dist/cjs/helpers/{expandStyles.js.map → expandStyles.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getExpandedShorthands.js.map → getExpandedShorthands.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getFontLanguage.js.map → getFontLanguage.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getGroupPropParts.js.map → getGroupPropParts.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getSplitStyles.js.map → getSplitStyles.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getStylesAtomic.js.map → getStylesAtomic.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getThemeCSSRules.js.map → getThemeCSSRules.cjs.map} +0 -0
- /package/dist/cjs/helpers/{getVariantExtras.js.map → getVariantExtras.cjs.map} +0 -0
- /package/dist/cjs/helpers/{insertStyleRule.js.map → insertStyleRule.cjs.map} +0 -0
- /package/dist/cjs/helpers/{isActivePlatform.js.map → isActivePlatform.cjs.map} +0 -0
- /package/dist/cjs/helpers/{isObj.js.map → isObj.cjs.map} +0 -0
- /package/dist/cjs/helpers/{isTamaguiComponent.js.map → isTamaguiComponent.cjs.map} +0 -0
- /package/dist/cjs/helpers/{isTamaguiElement.js.map → isTamaguiElement.cjs.map} +0 -0
- /package/dist/cjs/helpers/{log.js.map → log.cjs.map} +0 -0
- /package/dist/cjs/helpers/{matchMedia.js.map → matchMedia.cjs.map} +0 -0
- /package/dist/cjs/helpers/{mergeProps.js.map → mergeProps.cjs.map} +0 -0
- /package/dist/cjs/helpers/{mergeVariants.js.map → mergeVariants.cjs.map} +0 -0
- /package/dist/cjs/helpers/{normalizeColor.js.map → normalizeColor.cjs.map} +0 -0
- /package/dist/cjs/helpers/{normalizeShadow.js.map → normalizeShadow.cjs.map} +0 -0
- /package/dist/cjs/helpers/{normalizeStyle.js.map → normalizeStyle.cjs.map} +0 -0
- /package/dist/cjs/helpers/{normalizeStylePropKeys.js.map → normalizeStylePropKeys.cjs.map} +0 -0
- /package/dist/cjs/helpers/{normalizeValueWithProperty.js.map → normalizeValueWithProperty.cjs.map} +0 -0
- /package/dist/cjs/helpers/{objectIdentityKey.js.map → objectIdentityKey.cjs.map} +0 -0
- /package/dist/cjs/helpers/{propMapper.js.map → propMapper.cjs.map} +0 -0
- /package/dist/cjs/helpers/{proxyThemeToParents.js.map → proxyThemeToParents.cjs.map} +0 -0
- /package/dist/cjs/helpers/{proxyThemeVariables.js.map → proxyThemeVariables.cjs.map} +0 -0
- /package/dist/cjs/helpers/{pseudoDescriptors.js.map → pseudoDescriptors.cjs.map} +0 -0
- /package/dist/cjs/helpers/{registerCSSVariable.js.map → registerCSSVariable.cjs.map} +0 -0
- /package/dist/cjs/helpers/{setElementProps.js.map → setElementProps.cjs.map} +0 -0
- /package/dist/cjs/helpers/{skipProps.js.map → skipProps.cjs.map} +0 -0
- /package/dist/cjs/helpers/{sortString.js.map → sortString.cjs.map} +0 -0
- /package/dist/cjs/helpers/{subscribeToContextGroup.js.map → subscribeToContextGroup.cjs.map} +0 -0
- /package/dist/cjs/helpers/{themeable.js.map → themeable.cjs.map} +0 -0
- /package/dist/cjs/helpers/{themes.js.map → themes.cjs.map} +0 -0
- /package/dist/cjs/helpers/{timer.js.map → timer.cjs.map} +0 -0
- /package/dist/cjs/helpers/{transformsToString.js.map → transformsToString.cjs.map} +0 -0
- /package/dist/cjs/helpers/{webPropsToSkip.js.map → webPropsToSkip.cjs.map} +0 -0
- /package/dist/cjs/helpers/{wrapStyleTags.js.map → wrapStyleTags.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useComponentState.js.map → useComponentState.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useConfiguration.js.map → useConfiguration.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useDidHydrateOnce.js.map → useDidHydrateOnce.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useDisableSSR.js.map → useDisableSSR.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useIsTouchDevice.js.map → useIsTouchDevice.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useMedia.js.map → useMedia.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useProps.js.map → useProps.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useTheme.js.map → useTheme.cjs.map} +0 -0
- /package/dist/cjs/hooks/{useThemeName.js.map → useThemeName.cjs.map} +0 -0
- /package/dist/cjs/{index.js.map → index.cjs.map} +0 -0
- /package/dist/cjs/{inject-styles.js.map → inject-styles.cjs.map} +0 -0
- /package/dist/cjs/{insertFont.js.map → insertFont.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{CSSColorNames.js.map → CSSColorNames.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{GetRef.js.map → GetRef.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{KeyTypes.js.map → KeyTypes.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{RNExclusiveTypes.js.map → RNExclusiveTypes.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{Role.js.map → Role.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{TamaguiComponentEvents.js.map → TamaguiComponentEvents.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{TamaguiComponentPropsBaseBase.js.map → TamaguiComponentPropsBaseBase.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{TamaguiComponentState.js.map → TamaguiComponentState.cjs.map} +0 -0
- /package/dist/cjs/interfaces/{WebOnlyPressEvents.js.map → WebOnlyPressEvents.cjs.map} +0 -0
- /package/dist/cjs/{setupHooks.js.map → setupHooks.cjs.map} +0 -0
- /package/dist/cjs/{setupReactNative.js.map → setupReactNative.cjs.map} +0 -0
- /package/dist/cjs/{styled.js.map → styled.cjs.map} +0 -0
- /package/dist/cjs/{type-utils.js.map → type-utils.cjs.map} +0 -0
- /package/dist/cjs/{types.js.map → types.cjs.map} +0 -0
- /package/dist/cjs/views/{Configuration.js.map → Configuration.cjs.map} +0 -0
- /package/dist/cjs/views/{FontLanguage.js.map → FontLanguage.cjs.map} +0 -0
- /package/dist/cjs/views/{FontLanguage.types.js.map → FontLanguage.types.cjs.map} +0 -0
- /package/dist/cjs/views/{Slot.js.map → Slot.cjs.map} +0 -0
- /package/dist/cjs/views/{Stack.js.map → Stack.cjs.map} +0 -0
- /package/dist/cjs/views/{TamaguiProvider.js.map → TamaguiProvider.cjs.map} +0 -0
- /package/dist/cjs/views/{Text.js.map → Text.cjs.map} +0 -0
- /package/dist/cjs/views/{Theme.js.map → Theme.cjs.map} +0 -0
- /package/dist/cjs/views/{ThemeDebug.js.map → ThemeDebug.cjs.map} +0 -0
- /package/dist/cjs/views/{ThemeProvider.js.map → ThemeProvider.cjs.map} +0 -0
- /package/dist/cjs/views/{View.js.map → View.cjs.map} +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
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
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
+
value: mod,
|
|
27
|
+
enumerable: !0
|
|
28
|
+
}) : target, mod)),
|
|
29
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), mod);
|
|
32
|
+
var useMedia_exports = {};
|
|
33
|
+
__export(useMedia_exports, {
|
|
34
|
+
_dmt: () => _dmt,
|
|
35
|
+
configureMedia: () => configureMedia,
|
|
36
|
+
getMedia: () => getMedia,
|
|
37
|
+
getMediaImportanceIfMoreImportant: () => getMediaImportanceIfMoreImportant,
|
|
38
|
+
getMediaKeyImportance: () => getMediaKeyImportance,
|
|
39
|
+
getMediaState: () => getMediaState,
|
|
40
|
+
isMediaKey: () => isMediaKey,
|
|
41
|
+
mediaKeyMatch: () => mediaKeyMatch,
|
|
42
|
+
mediaKeyToQuery: () => mediaKeyToQuery,
|
|
43
|
+
mediaKeys: () => mediaKeys,
|
|
44
|
+
mediaObjectToString: () => mediaObjectToString,
|
|
45
|
+
mediaQueryConfig: () => mediaQueryConfig,
|
|
46
|
+
mediaState: () => mediaState,
|
|
47
|
+
setMediaShouldUpdate: () => setMediaShouldUpdate,
|
|
48
|
+
setupMediaListeners: () => setupMediaListeners,
|
|
49
|
+
useMedia: () => useMedia
|
|
50
|
+
});
|
|
51
|
+
module.exports = __toCommonJS(useMedia_exports);
|
|
52
|
+
var import_react = __toESM(require("react")),
|
|
53
|
+
import_constants = require("@tamagui/constants"),
|
|
54
|
+
import_config = require("../config.cjs"),
|
|
55
|
+
import_matchMedia = require("../helpers/matchMedia.cjs"),
|
|
56
|
+
import_pseudoDescriptors = require("../helpers/pseudoDescriptors.cjs"),
|
|
57
|
+
import_useDisableSSR = require("./useDisableSSR.cjs");
|
|
58
|
+
let mediaState =
|
|
59
|
+
// development only safeguard
|
|
60
|
+
process.env.NODE_ENV === "development" ? new Proxy({}, {
|
|
61
|
+
get(target, key) {
|
|
62
|
+
if (typeof key == "string" && key[0] === "$" &&
|
|
63
|
+
// dont error on $$typeof
|
|
64
|
+
key[1] !== "$") throw new Error(`Access mediaState should not use "$": ${key}`);
|
|
65
|
+
return Reflect.get(target, key);
|
|
66
|
+
}
|
|
67
|
+
}) : {};
|
|
68
|
+
const mediaQueryConfig = {},
|
|
69
|
+
getMedia = () => mediaState,
|
|
70
|
+
mediaKeys = /* @__PURE__ */new Set(),
|
|
71
|
+
mediaKeyRegex = /\$(platform|theme|group)-/,
|
|
72
|
+
isMediaKey = key => {
|
|
73
|
+
if (mediaKeys.has(key)) return !0;
|
|
74
|
+
if (key[0] === "$") {
|
|
75
|
+
const match = key.match(mediaKeyRegex);
|
|
76
|
+
if (match) return match[1];
|
|
77
|
+
}
|
|
78
|
+
return !1;
|
|
79
|
+
};
|
|
80
|
+
let initState;
|
|
81
|
+
const defaultMediaImportance = Object.keys(import_pseudoDescriptors.pseudoDescriptors).length;
|
|
82
|
+
let mediaKeysOrdered;
|
|
83
|
+
const getMediaKeyImportance = key => {
|
|
84
|
+
if (process.env.NODE_ENV === "development" && key[0] === "$") throw new Error("use short key");
|
|
85
|
+
return (0, import_config.getConfig)().settings.mediaPropOrder ? defaultMediaImportance : mediaKeysOrdered.indexOf(key) + 100;
|
|
86
|
+
},
|
|
87
|
+
dispose = /* @__PURE__ */new Set();
|
|
88
|
+
let mediaVersion = 0;
|
|
89
|
+
const configureMedia = config => {
|
|
90
|
+
const {
|
|
91
|
+
media
|
|
92
|
+
} = config,
|
|
93
|
+
mediaQueryDefaultActive = (0, import_config.getSetting)("mediaQueryDefaultActive");
|
|
94
|
+
if (media) {
|
|
95
|
+
mediaVersion++;
|
|
96
|
+
for (const key in media) mediaState[key] = mediaQueryDefaultActive?.[key] || !1, mediaKeys.add(`$${key}`);
|
|
97
|
+
Object.assign(mediaQueryConfig, media), initState = {
|
|
98
|
+
...mediaState
|
|
99
|
+
}, mediaKeysOrdered = Object.keys(media), config.disableSSR ? setupMediaListeners() : updateCurrentState();
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
function unlisten() {
|
|
103
|
+
dispose.forEach(cb => cb()), dispose.clear();
|
|
104
|
+
}
|
|
105
|
+
let setupVersion = -1;
|
|
106
|
+
function setupMediaListeners() {
|
|
107
|
+
if (!(import_constants.isWeb && import_constants.isServer) && setupVersion !== mediaVersion) {
|
|
108
|
+
setupVersion = mediaVersion, unlisten();
|
|
109
|
+
for (const key in mediaQueryConfig) {
|
|
110
|
+
let update = function () {
|
|
111
|
+
const next = !!getMatch().matches;
|
|
112
|
+
next !== mediaState[key] && (mediaState = {
|
|
113
|
+
...mediaState,
|
|
114
|
+
[key]: next
|
|
115
|
+
}, updateCurrentState());
|
|
116
|
+
};
|
|
117
|
+
const str = mediaObjectToString(mediaQueryConfig[key], key),
|
|
118
|
+
getMatch = () => (0, import_matchMedia.matchMedia)(str),
|
|
119
|
+
match = getMatch();
|
|
120
|
+
if (!match) throw new Error("\u26A0\uFE0F No match");
|
|
121
|
+
match.addListener(update), dispose.add(() => {
|
|
122
|
+
match.removeListener(update);
|
|
123
|
+
}), update();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const listeners = /* @__PURE__ */new Set();
|
|
128
|
+
let flushing = !1,
|
|
129
|
+
flushVersion = -1;
|
|
130
|
+
function updateCurrentState() {
|
|
131
|
+
flushing && flushVersion === mediaVersion || (flushVersion = mediaVersion, flushing = !0, Promise.resolve().then(() => {
|
|
132
|
+
flushing = !1, listeners.forEach(cb => cb(mediaState));
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
const States = /* @__PURE__ */new WeakMap();
|
|
136
|
+
function setMediaShouldUpdate(ref, enabled, keys) {
|
|
137
|
+
const cur = States.get(ref);
|
|
138
|
+
(!cur || cur.enabled !== enabled || keys) && States.set(ref, {
|
|
139
|
+
...cur,
|
|
140
|
+
enabled,
|
|
141
|
+
keys
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function subscribe(subscriber) {
|
|
145
|
+
return listeners.add(subscriber), () => {
|
|
146
|
+
listeners.delete(subscriber);
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function useMedia(uidIn, componentContext, debug) {
|
|
150
|
+
const uid = uidIn ?? import_react.default.useRef(),
|
|
151
|
+
disableSSR = (0, import_useDisableSSR.getDisableSSR)(componentContext),
|
|
152
|
+
initialState = (disableSSR || !import_constants.isWeb ? mediaState : initState) || {};
|
|
153
|
+
let componentState = States.get(uid);
|
|
154
|
+
componentState || (componentState = {
|
|
155
|
+
prev: initialState
|
|
156
|
+
}, States.set(uid, componentState));
|
|
157
|
+
const getSnapshot = () => {
|
|
158
|
+
if (!componentState) return initialState;
|
|
159
|
+
const {
|
|
160
|
+
enabled,
|
|
161
|
+
keys,
|
|
162
|
+
prev = initialState
|
|
163
|
+
} = componentState;
|
|
164
|
+
if (enabled === !1) return prev;
|
|
165
|
+
const testKeys = keys ?? (enabled && keys) ?? null;
|
|
166
|
+
return !testKeys || Object.keys(testKeys).every(key => mediaState[key] === prev[key]) ? prev : (componentState.prev = mediaState, mediaState);
|
|
167
|
+
};
|
|
168
|
+
let state;
|
|
169
|
+
if (process.env.TAMAGUI_SYNC_MEDIA_QUERY) state = import_react.default.useSyncExternalStore(subscribe, getSnapshot, () => initialState);else {
|
|
170
|
+
const [_state, setState] = import_react.default.useState(initialState);
|
|
171
|
+
state = _state, (0, import_constants.useIsomorphicLayoutEffect)(() => {
|
|
172
|
+
function update() {
|
|
173
|
+
setState(getSnapshot);
|
|
174
|
+
}
|
|
175
|
+
return update(), disableSSR || Promise.resolve().then(() => {
|
|
176
|
+
update();
|
|
177
|
+
}), subscribe(update);
|
|
178
|
+
}, []);
|
|
179
|
+
}
|
|
180
|
+
return new Proxy(state, {
|
|
181
|
+
get(_, key) {
|
|
182
|
+
if (!disableMediaTouch) return typeof key == "string" && (componentState.keys ||= {}, componentState.keys[key] = !0, process.env.NODE_ENV === "development" && debug && console.info("useMedia() TOUCH", key)), Reflect.get(state, key);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
let disableMediaTouch = !1;
|
|
187
|
+
function _dmt(val) {
|
|
188
|
+
disableMediaTouch = val;
|
|
189
|
+
}
|
|
190
|
+
function getMediaState(mediaGroups, layout) {
|
|
191
|
+
disableMediaTouch = !0;
|
|
192
|
+
let res;
|
|
193
|
+
try {
|
|
194
|
+
res = Object.fromEntries([...mediaGroups].map(mediaKey => [mediaKey, mediaKeyMatch(mediaKey, layout)]));
|
|
195
|
+
} finally {
|
|
196
|
+
disableMediaTouch = !1;
|
|
197
|
+
}
|
|
198
|
+
return res;
|
|
199
|
+
}
|
|
200
|
+
const getMediaImportanceIfMoreImportant = (mediaKey, key, importancesUsed, isSizeMedia) => {
|
|
201
|
+
const importance = isSizeMedia && !(0, import_config.getSetting)("mediaPropOrder") ? getMediaKeyImportance(mediaKey) : defaultMediaImportance;
|
|
202
|
+
return !importancesUsed[key] || importance > importancesUsed[key] ? importance : null;
|
|
203
|
+
};
|
|
204
|
+
function camelToHyphen(str) {
|
|
205
|
+
return str.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`).toLowerCase();
|
|
206
|
+
}
|
|
207
|
+
const cache = /* @__PURE__ */new WeakMap(),
|
|
208
|
+
cachedMediaKeyToQuery = {};
|
|
209
|
+
function mediaObjectToString(query, key) {
|
|
210
|
+
if (typeof query == "string") return query;
|
|
211
|
+
if (cache.has(query)) return cache.get(query);
|
|
212
|
+
const res = Object.entries(query).map(([feature, value]) => (feature = camelToHyphen(feature), typeof value == "string" ? `(${feature}: ${value})` : (typeof value == "number" && /[height|width]$/.test(feature) && (value = `${value}px`), `(${feature}: ${value})`))).join(" and ");
|
|
213
|
+
return key && (cachedMediaKeyToQuery[key] = res), cache.set(query, res), res;
|
|
214
|
+
}
|
|
215
|
+
function mediaKeyToQuery(key) {
|
|
216
|
+
return cachedMediaKeyToQuery[key] || mediaObjectToString(mediaQueryConfig[key], key);
|
|
217
|
+
}
|
|
218
|
+
function mediaKeyMatch(key, dimensions) {
|
|
219
|
+
const mediaQueries = mediaQueryConfig[key];
|
|
220
|
+
return Object.keys(mediaQueries).every(query => {
|
|
221
|
+
const expectedVal = +mediaQueries[query],
|
|
222
|
+
isMax = query.startsWith("max"),
|
|
223
|
+
isWidth = query.endsWith("Width"),
|
|
224
|
+
givenVal = dimensions[isWidth ? "width" : "height"];
|
|
225
|
+
return isMax ? givenVal < expectedVal : givenVal > expectedVal;
|
|
226
|
+
});
|
|
227
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
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
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
+
value: mod,
|
|
27
|
+
enumerable: !0
|
|
28
|
+
}) : target, mod)),
|
|
29
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), mod);
|
|
32
|
+
var useProps_exports = {};
|
|
33
|
+
__export(useProps_exports, {
|
|
34
|
+
useProps: () => useProps,
|
|
35
|
+
usePropsAndStyle: () => usePropsAndStyle,
|
|
36
|
+
useStyle: () => useStyle
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(useProps_exports);
|
|
39
|
+
var import_react = __toESM(require("react")),
|
|
40
|
+
import_config = require("../config.cjs"),
|
|
41
|
+
import_ComponentContext = require("../contexts/ComponentContext.cjs"),
|
|
42
|
+
import_getSplitStyles = require("../helpers/getSplitStyles.cjs"),
|
|
43
|
+
import_subscribeToContextGroup = require("../helpers/subscribeToContextGroup.cjs"),
|
|
44
|
+
import_Stack = require("../views/Stack.cjs"),
|
|
45
|
+
import_useComponentState = require("./useComponentState.cjs"),
|
|
46
|
+
import_useMedia = require("./useMedia.cjs"),
|
|
47
|
+
import_useTheme = require("./useTheme.cjs");
|
|
48
|
+
function useProps(props, opts) {
|
|
49
|
+
const [propsOut, styleOut] = usePropsAndStyle(props, {
|
|
50
|
+
...opts,
|
|
51
|
+
noExpand: !0,
|
|
52
|
+
noNormalize: !0,
|
|
53
|
+
resolveValues: "none"
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
...propsOut,
|
|
57
|
+
...styleOut
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function useStyle(props, opts) {
|
|
61
|
+
return usePropsAndStyle(props, opts)[1] || {};
|
|
62
|
+
}
|
|
63
|
+
function usePropsAndStyle(props, opts) {
|
|
64
|
+
const staticConfig = opts?.forComponent?.staticConfig ?? import_Stack.Stack.staticConfig,
|
|
65
|
+
[themeState, theme] = (0, import_useTheme.useThemeWithState)({
|
|
66
|
+
componentName: staticConfig.componentName,
|
|
67
|
+
name: "theme" in props ? props.theme : void 0,
|
|
68
|
+
inverse: "themeInverse" in props ? props.themeInverse : void 0
|
|
69
|
+
}),
|
|
70
|
+
componentContext = import_react.default.useContext(import_ComponentContext.ComponentContext),
|
|
71
|
+
{
|
|
72
|
+
state,
|
|
73
|
+
disabled,
|
|
74
|
+
setStateShallow
|
|
75
|
+
} = (0, import_useComponentState.useComponentState)(props, componentContext, staticConfig, (0, import_config.getConfig)()),
|
|
76
|
+
mediaState = (0, import_useMedia.useMedia)(),
|
|
77
|
+
splitStyles = (0, import_getSplitStyles.useSplitStyles)(props, staticConfig, theme, themeState.state?.name || "", state, {
|
|
78
|
+
isAnimated: !1,
|
|
79
|
+
mediaState,
|
|
80
|
+
noSkip: !0,
|
|
81
|
+
noMergeStyle: !0,
|
|
82
|
+
noClassNames: !0,
|
|
83
|
+
resolveValues: "auto",
|
|
84
|
+
...opts
|
|
85
|
+
}, null, componentContext),
|
|
86
|
+
{
|
|
87
|
+
mediaGroups,
|
|
88
|
+
pseudoGroups
|
|
89
|
+
} = splitStyles;
|
|
90
|
+
return import_react.default.useEffect(() => {
|
|
91
|
+
if (!disabled) {
|
|
92
|
+
if (state.unmounted) {
|
|
93
|
+
setStateShallow({
|
|
94
|
+
unmounted: !1
|
|
95
|
+
});
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
return (0, import_subscribeToContextGroup.subscribeToContextGroup)({
|
|
99
|
+
disabled,
|
|
100
|
+
componentContext,
|
|
101
|
+
setStateShallow,
|
|
102
|
+
state,
|
|
103
|
+
mediaGroups,
|
|
104
|
+
pseudoGroups
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}, [disabled, pseudoGroups ? Object.keys([...pseudoGroups]).join("") : 0, mediaGroups ? Object.keys([...mediaGroups]).join("") : 0]), [splitStyles.viewProps, splitStyles.style || {}, theme, mediaState];
|
|
108
|
+
}
|
|
@@ -0,0 +1,277 @@
|
|
|
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
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
+
value: mod,
|
|
27
|
+
enumerable: !0
|
|
28
|
+
}) : target, mod)),
|
|
29
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), mod);
|
|
32
|
+
var useTheme_exports = {};
|
|
33
|
+
__export(useTheme_exports, {
|
|
34
|
+
activeThemeManagers: () => activeThemeManagers,
|
|
35
|
+
getThemeManager: () => getThemeManager,
|
|
36
|
+
getThemeProxied: () => getThemeProxied,
|
|
37
|
+
useChangeThemeEffect: () => useChangeThemeEffect,
|
|
38
|
+
useTheme: () => useTheme,
|
|
39
|
+
useThemeWithState: () => useThemeWithState
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(useTheme_exports);
|
|
42
|
+
var import_react = __toESM(require("react")),
|
|
43
|
+
import_constants = require("@tamagui/constants"),
|
|
44
|
+
import_config = require("../config.cjs"),
|
|
45
|
+
import_createVariable = require("../createVariable.cjs"),
|
|
46
|
+
import_ThemeManager = require("../helpers/ThemeManager.cjs"),
|
|
47
|
+
import_ThemeManagerContext = require("../helpers/ThemeManagerContext.cjs"),
|
|
48
|
+
import_createShallowSetState = require("../helpers/createShallowSetState.cjs");
|
|
49
|
+
const emptyProps = {
|
|
50
|
+
name: null
|
|
51
|
+
};
|
|
52
|
+
let cached;
|
|
53
|
+
function getDefaultThemeProxied() {
|
|
54
|
+
if (cached) return cached;
|
|
55
|
+
const config = (0, import_config.getConfig)(),
|
|
56
|
+
name = config.themes.light ? "light" : Object.keys(config.themes)[0],
|
|
57
|
+
defaultTheme = config.themes[name];
|
|
58
|
+
return cached = getThemeProxied({
|
|
59
|
+
theme: defaultTheme,
|
|
60
|
+
name
|
|
61
|
+
}), cached;
|
|
62
|
+
}
|
|
63
|
+
const useTheme = (props = emptyProps) => {
|
|
64
|
+
const [_, theme] = useThemeWithState(props);
|
|
65
|
+
return theme || getDefaultThemeProxied();
|
|
66
|
+
},
|
|
67
|
+
useThemeWithState = props => {
|
|
68
|
+
const keys = import_react.default.useRef([]),
|
|
69
|
+
changedThemeState = useChangeThemeEffect(props, !1, keys.current, import_constants.isServer ? void 0 : () => {
|
|
70
|
+
const next = props.shouldUpdate?.() ?? (keys.current.length > 0 ? !0 : void 0);
|
|
71
|
+
return process.env.NODE_ENV === "development" && typeof props.debug == "string" && props.debug !== "profile" && console.info(` \u{1F3A8} useTheme() shouldUpdate? tracking keys ${keys.current.length} ${props.shouldUpdate?.()}`, next), next;
|
|
72
|
+
}),
|
|
73
|
+
{
|
|
74
|
+
themeManager,
|
|
75
|
+
state
|
|
76
|
+
} = changedThemeState;
|
|
77
|
+
process.env.NODE_ENV === "development" && (state?.theme || process.env.TAMAGUI_DISABLE_NO_THEME_WARNING !== "1" && console.error(`[tamagui] No theme found, this could be due to an invalid theme name (given theme props ${JSON.stringify(props)}).
|
|
78
|
+
|
|
79
|
+
If this is intended and you are using Tamagui without any themes, you can disable this warning by setting the environment variable TAMAGUI_DISABLE_NO_THEME_WARNING=1`));
|
|
80
|
+
const themeProxied = import_react.default.useMemo(() => (keys.current = [], !themeManager || !state?.theme ? {} : getThemeProxied(state, props.deopt, themeManager, keys.current, props.debug)), [state?.theme, themeManager, props.deopt, props.debug]);
|
|
81
|
+
return process.env.NODE_ENV === "development" && props.debug === "verbose" && (console.groupCollapsed(` \u{1F539} [${themeManager?.id}] useTheme =>`, state?.name), console.info("returning state", changedThemeState.state, changedThemeState.isNewTheme, "from props", props), console.groupEnd()), [changedThemeState, themeProxied];
|
|
82
|
+
};
|
|
83
|
+
function getThemeProxied({
|
|
84
|
+
theme,
|
|
85
|
+
name,
|
|
86
|
+
scheme
|
|
87
|
+
}, deopt = !1, themeManager, keys, debug) {
|
|
88
|
+
if (!theme) return {};
|
|
89
|
+
const config = (0, import_config.getConfig)();
|
|
90
|
+
function track(key) {
|
|
91
|
+
keys && !keys.includes(key) && (keys.length || setTimeout(() => {
|
|
92
|
+
themeManager?.selfUpdate();
|
|
93
|
+
}), keys.push(key), process.env.NODE_ENV === "development" && debug && console.info(` \u{1F3A8} useTheme() tracking new key: ${key}`));
|
|
94
|
+
}
|
|
95
|
+
return new Proxy(theme, {
|
|
96
|
+
has(_, key) {
|
|
97
|
+
if (Reflect.has(theme, key)) return !0;
|
|
98
|
+
if (typeof key == "string") return key[0] === "$" && (key = key.slice(1)), themeManager?.allKeys.has(key);
|
|
99
|
+
},
|
|
100
|
+
get(_, key) {
|
|
101
|
+
if (
|
|
102
|
+
// dont ask me, idk why but on hermes you can see that useTheme()[undefined] passes in STRING undefined to proxy
|
|
103
|
+
// if someone is crazy enough to use "undefined" as a theme key then this not working is on them
|
|
104
|
+
key !== "undefined" && typeof key == "string") {
|
|
105
|
+
const keyString = key[0] === "$" ? key.slice(1) : key,
|
|
106
|
+
val = theme[keyString];
|
|
107
|
+
if (val && typeof val == "object") return new Proxy(val, {
|
|
108
|
+
// when they touch the actual value we only track it
|
|
109
|
+
// if its a variable (web), its ignored!
|
|
110
|
+
get(_2, subkey) {
|
|
111
|
+
if (subkey === "val") globalThis.tamaguiAvoidTracking || (process.env.NODE_ENV === "development" && debug === "verbose" && console.info(" \u{1F3A8} useTheme() tracking new key because of .val access", new Error().stack), track(keyString));else if (subkey === "get") return platform => (0, import_createVariable.getVariable)(val);
|
|
112
|
+
return Reflect.get(val, subkey);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
if (process.env.NODE_ENV === "development" && process.env.TAMAGUI_FEAT_THROW_ON_MISSING_THEME_VALUE === "1") throw new Error(`[tamagui] No theme key "${key}" found in theme ${name}.
|
|
116
|
+
Keys in theme: ${Object.keys(theme).join(", ")}`);
|
|
117
|
+
}
|
|
118
|
+
return Reflect.get(_, key);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const activeThemeManagers = /* @__PURE__ */new Set(),
|
|
123
|
+
_uidToManager = /* @__PURE__ */new WeakMap(),
|
|
124
|
+
_idToUID = {},
|
|
125
|
+
getId = id => _idToUID[id],
|
|
126
|
+
getThemeManager = id => _uidToManager.get(getId(id)),
|
|
127
|
+
registerThemeManager = t => {
|
|
128
|
+
if (!_idToUID[t.id]) {
|
|
129
|
+
const id = _idToUID[t.id] = {};
|
|
130
|
+
_uidToManager.set(id, t);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
ogLog = console.error,
|
|
134
|
+
preventWarnSetState = process.env.NODE_ENV === "production" ? ogLog :
|
|
135
|
+
// temporary fix for logs, they are harmless in that i've tried to rewrite this
|
|
136
|
+
// a few times using the "right" ways, but they are always slower. maybe skill issue
|
|
137
|
+
(a, ...args) => {
|
|
138
|
+
if (!(typeof a == "string" && a.includes("Cannot update a component"))) return ogLog(a, ...args);
|
|
139
|
+
},
|
|
140
|
+
useChangeThemeEffect = (props, isRoot = !1, keys, shouldUpdate) => {
|
|
141
|
+
const {
|
|
142
|
+
disable
|
|
143
|
+
} = props,
|
|
144
|
+
parentManagerId = import_react.default.useContext(import_ThemeManagerContext.ThemeManagerIDContext),
|
|
145
|
+
parentManager = getThemeManager(parentManagerId);
|
|
146
|
+
if (!isRoot && !parentManager || disable) return {
|
|
147
|
+
isNewTheme: !1,
|
|
148
|
+
state: parentManager?.state,
|
|
149
|
+
themeManager: parentManager
|
|
150
|
+
};
|
|
151
|
+
const [themeState, setThemeState] = import_react.default.useState(createState),
|
|
152
|
+
{
|
|
153
|
+
state,
|
|
154
|
+
mounted,
|
|
155
|
+
isNewTheme,
|
|
156
|
+
themeManager,
|
|
157
|
+
inversed,
|
|
158
|
+
prevState
|
|
159
|
+
} = themeState,
|
|
160
|
+
isInversingOnMount = !!(!themeState.mounted && props.inverse);
|
|
161
|
+
function getShouldUpdateTheme(manager = themeManager, nextState, prevState2 = state, forceShouldChange = !1) {
|
|
162
|
+
const forceUpdate = shouldUpdate?.();
|
|
163
|
+
if (!manager || !forceShouldChange && forceUpdate === !1) return;
|
|
164
|
+
const next = nextState || manager.getState(props, parentManager);
|
|
165
|
+
if (forceShouldChange) return next;
|
|
166
|
+
if (next && !(forceUpdate !== !0 && !manager.getStateShouldChange(next, prevState2))) return next;
|
|
167
|
+
}
|
|
168
|
+
if (!import_constants.isWeb && themeManager && getShouldUpdateTheme(themeManager)) {
|
|
169
|
+
const next = createState(themeState);
|
|
170
|
+
next.state?.name !== themeState.state?.name && (setThemeState(next), console.error = preventWarnSetState, themeManager.notify(), console.error = ogLog);
|
|
171
|
+
}
|
|
172
|
+
if (import_constants.isServer || (import_react.default.useLayoutEffect(() => {
|
|
173
|
+
themeManager && state && prevState && state !== prevState && themeManager.notify();
|
|
174
|
+
}, [state]), import_react.default.useEffect(() => {
|
|
175
|
+
if (!themeManager) return;
|
|
176
|
+
if (props.inverse && !mounted) {
|
|
177
|
+
setThemeState(prev => createState({
|
|
178
|
+
...prev,
|
|
179
|
+
mounted: !0
|
|
180
|
+
}));
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
(isNewTheme || getShouldUpdateTheme(themeManager)) && (activeThemeManagers.add(themeManager), setThemeState(createState));
|
|
184
|
+
const selfListenerDispose = themeManager.onChangeTheme((_a, _b, forced) => {
|
|
185
|
+
forced && setThemeState(prev => createState(prev, forced !== "self"));
|
|
186
|
+
}, !0),
|
|
187
|
+
disposeChangeListener = parentManager?.onChangeTheme((name, manager, forced) => {
|
|
188
|
+
const force = forced || shouldUpdate?.() || props.deopt || void 0,
|
|
189
|
+
shouldTryUpdate = force ?? !!(keys?.length || isNewTheme);
|
|
190
|
+
process.env.NODE_ENV === "development" && props.debug === "verbose" && console.info(" \u{1F538} onChange", {
|
|
191
|
+
id: themeManager.id,
|
|
192
|
+
force,
|
|
193
|
+
shouldTryUpdate,
|
|
194
|
+
props,
|
|
195
|
+
name,
|
|
196
|
+
keys
|
|
197
|
+
}), shouldTryUpdate && setThemeState(prev => createState(prev, force));
|
|
198
|
+
}, themeManager.id);
|
|
199
|
+
return () => {
|
|
200
|
+
selfListenerDispose(), disposeChangeListener?.(), isNewTheme && activeThemeManagers.delete(themeManager);
|
|
201
|
+
};
|
|
202
|
+
}, [themeManager, parentManager, isNewTheme, props.componentName, props.inverse, props.name, props.reset, mounted]), process.env.NODE_ENV === "development" && props.debug !== "profile" && import_react.default.useEffect(() => (globalThis.TamaguiThemeManagers ??= /* @__PURE__ */new Set(), globalThis.TamaguiThemeManagers.add(themeManager), () => {
|
|
203
|
+
globalThis.TamaguiThemeManagers.delete(themeManager);
|
|
204
|
+
}), [themeManager])), import_constants.isWeb && isInversingOnMount) return {
|
|
205
|
+
isNewTheme: !1,
|
|
206
|
+
inversed: !1,
|
|
207
|
+
themeManager: parentManager,
|
|
208
|
+
state: {
|
|
209
|
+
name: "",
|
|
210
|
+
...parentManager?.state,
|
|
211
|
+
className: ""
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
return {
|
|
215
|
+
state,
|
|
216
|
+
isNewTheme,
|
|
217
|
+
inversed,
|
|
218
|
+
themeManager
|
|
219
|
+
};
|
|
220
|
+
function createState(prev, force = !1) {
|
|
221
|
+
if (prev && shouldUpdate?.() === !1 && !force) return prev;
|
|
222
|
+
let themeManager2 = parentManager,
|
|
223
|
+
state2;
|
|
224
|
+
if ((0, import_ThemeManager.getHasThemeUpdatingProps)(props)) {
|
|
225
|
+
const getNewThemeManager = () => new import_ThemeManager.ThemeManager(props, isRoot ? "root" : parentManager);
|
|
226
|
+
if (prev?.themeManager) {
|
|
227
|
+
themeManager2 = prev.themeManager;
|
|
228
|
+
const forceChange = force || !!keys?.length,
|
|
229
|
+
next = themeManager2.getState(props, parentManager),
|
|
230
|
+
nextState = getShouldUpdateTheme(themeManager2, next, prev.state, forceChange);
|
|
231
|
+
nextState ? (state2 = nextState, !prev.isNewTheme && !isRoot ? themeManager2 = getNewThemeManager() : themeManager2.updateState(nextState)) : prev.isNewTheme && parentManager && !next && (themeManager2 = parentManager);
|
|
232
|
+
} else themeManager2 = getNewThemeManager(), state2 = {
|
|
233
|
+
...themeManager2.state
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
const isNewTheme2 = !!(themeManager2 !== parentManager || props.inverse);
|
|
237
|
+
isNewTheme2 && registerThemeManager(themeManager2);
|
|
238
|
+
const isWebSSR = import_constants.isWeb ? !(0, import_config.getSetting)("disableSSR") : !1,
|
|
239
|
+
mounted2 = isWebSSR ? isRoot || prev?.mounted : !0;
|
|
240
|
+
state2 || (isNewTheme2 ? state2 = themeManager2.state : (state2 = parentManager.state, themeManager2 = parentManager));
|
|
241
|
+
const wasInversed = prev?.inversed,
|
|
242
|
+
isInherentlyInversed = isNewTheme2 && state2.scheme !== parentManager?.state.scheme,
|
|
243
|
+
inversed2 = isRoot ? !1 : isInherentlyInversed ? !0 : isWebSSR ? wasInversed != null ? !1 : null : props.inverse,
|
|
244
|
+
response = {
|
|
245
|
+
themeManager: themeManager2,
|
|
246
|
+
isNewTheme: isNewTheme2,
|
|
247
|
+
mounted: mounted2,
|
|
248
|
+
inversed: inversed2
|
|
249
|
+
},
|
|
250
|
+
shouldReturnPrev = prev && !force &&
|
|
251
|
+
// isEqualShallow uses the second arg as the keys so this should compare without state first...
|
|
252
|
+
(0, import_createShallowSetState.isEqualShallow)(prev, response) &&
|
|
253
|
+
// ... and then compare just the state, because we make a new state obj but is likely the same
|
|
254
|
+
(0, import_createShallowSetState.isEqualShallow)(prev.state, state2);
|
|
255
|
+
if (prev && shouldReturnPrev) return prev;
|
|
256
|
+
if (response.state = state2, response.prevState = prev?.state, process.env.NODE_ENV === "development" && props.debug && import_constants.isClient) {
|
|
257
|
+
console.groupCollapsed(`\u{1F537} [${themeManager2.id}] useChangeThemeEffect createState`);
|
|
258
|
+
const parentState = {
|
|
259
|
+
...parentManager?.state
|
|
260
|
+
},
|
|
261
|
+
parentId = parentManager?.id,
|
|
262
|
+
themeManagerState = {
|
|
263
|
+
...themeManager2.state
|
|
264
|
+
};
|
|
265
|
+
console.info({
|
|
266
|
+
props,
|
|
267
|
+
parentState,
|
|
268
|
+
parentId,
|
|
269
|
+
themeManager: themeManager2,
|
|
270
|
+
prev,
|
|
271
|
+
response,
|
|
272
|
+
themeManagerState
|
|
273
|
+
}), console.groupEnd();
|
|
274
|
+
}
|
|
275
|
+
return response;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
+
value: mod,
|
|
27
|
+
enumerable: !0
|
|
28
|
+
}) : target, mod)),
|
|
29
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
+
value: !0
|
|
31
|
+
}), mod);
|
|
32
|
+
var useThemeName_exports = {};
|
|
33
|
+
__export(useThemeName_exports, {
|
|
34
|
+
useThemeName: () => useThemeName
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(useThemeName_exports);
|
|
37
|
+
var import_react = __toESM(require("react")),
|
|
38
|
+
import_constants = require("@tamagui/constants"),
|
|
39
|
+
import_ThemeManagerContext = require("../helpers/ThemeManagerContext.cjs"),
|
|
40
|
+
import_useTheme = require("./useTheme.cjs");
|
|
41
|
+
function useThemeName(opts) {
|
|
42
|
+
const manager = (0, import_useTheme.getThemeManager)(import_react.default.useContext(import_ThemeManagerContext.ThemeManagerIDContext)),
|
|
43
|
+
[name, setName] = import_react.default.useState(manager?.state.name || "");
|
|
44
|
+
return (0, import_constants.useIsomorphicLayoutEffect)(() => {
|
|
45
|
+
if (manager) return setName(manager.state.name), manager.onChangeTheme((next, manager2) => {
|
|
46
|
+
const name2 = opts?.parent && manager2.state.parentName || next;
|
|
47
|
+
name2 && setName(name2);
|
|
48
|
+
});
|
|
49
|
+
}, [manager?.state.name]), name;
|
|
50
|
+
}
|