@tamagui/core 1.1.11 → 1.1.13
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/helpers/getSplitStyles.js +4 -2
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.native.js +8 -5
- package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
- package/dist/cjs/helpers/normalizeColor.js.map +2 -2
- package/dist/cjs/hooks/useTheme.js +17 -21
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +4 -2
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/getStylesAtomic.native.js +6 -4
- package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
- package/dist/esm/helpers/normalizeColor.js.map +2 -2
- package/dist/esm/hooks/useTheme.js +17 -21
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/package.json +11 -11
- package/src/helpers/getSplitStyles.tsx +5 -3
- package/src/helpers/getStylesAtomic.native.ts +4 -2
- package/src/helpers/normalizeColor.ts +0 -2
- package/src/hooks/useTheme.tsx +17 -27
- package/types/Tamagui.d.ts.map +1 -0
- package/types/addTheme.d.ts.map +1 -0
- package/types/config.d.ts.map +1 -0
- package/types/constants/constants.d.ts.map +1 -0
- package/types/constants/isDevTools.d.ts.map +1 -0
- package/types/contexts/ButtonNestingContext.d.ts.map +1 -0
- package/types/contexts/FontLanguageContext.d.ts.map +1 -0
- package/types/contexts/TextAncestorContext.d.ts.map +1 -0
- package/types/createComponent.d.ts.map +1 -0
- package/types/createFont.d.ts.map +1 -0
- package/types/createFont.web.test.d.ts.map +1 -0
- package/types/createShorthands.d.ts.map +1 -0
- package/types/createTamagui.d.ts.map +1 -0
- package/types/createTheme.d.ts.map +1 -0
- package/types/createTokens.d.ts.map +1 -0
- package/types/createTokens.web.test.d.ts.map +1 -0
- package/types/createVariable.d.ts.map +1 -0
- package/types/createVariable.web.test.d.ts.map +1 -0
- package/types/createVariables.d.ts.map +1 -0
- package/types/helpers/RNComponents.d.ts.map +1 -0
- package/types/helpers/ThemeManager.d.ts.map +1 -0
- package/types/helpers/ThemeManager.test.d.ts.map +1 -0
- package/types/helpers/ThemeManagerContext.d.ts.map +1 -0
- package/types/helpers/createMediaStyle.d.ts.map +1 -0
- package/types/helpers/createPropMapper.d.ts.map +1 -0
- package/types/helpers/createProxy.d.ts.map +1 -0
- package/types/helpers/expandStyle.d.ts.map +1 -0
- package/types/helpers/expandStyles.d.ts.map +1 -0
- package/types/helpers/extendStaticConfig.d.ts.map +1 -0
- package/types/helpers/fixNativeShadow.d.ts.map +1 -0
- package/types/helpers/getAnimationDriver.d.ts.map +1 -0
- package/types/helpers/getBoundingClientRect.d.ts.map +1 -0
- package/types/helpers/getExpandedShorthands.d.ts.map +1 -0
- package/types/helpers/getFontLanguage.d.ts.map +1 -0
- package/types/helpers/getRect.d.ts.map +1 -0
- package/types/helpers/getSplitStyles.d.ts.map +1 -0
- package/types/helpers/getStylesAtomic.d.ts.map +1 -0
- package/types/helpers/getStylesAtomic.native.d.ts +3 -2
- package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
- package/types/helpers/getThemeCSSRules.d.ts.map +1 -0
- package/types/helpers/getThemeCSSRules.native.d.ts.map +1 -0
- package/types/helpers/getVariantExtras.d.ts.map +1 -0
- package/types/helpers/insertStyleRule.d.ts.map +1 -0
- package/types/helpers/isObj.d.ts.map +1 -0
- package/types/helpers/isTamaguiComponent.d.ts.map +1 -0
- package/types/helpers/isTamaguiElement.d.ts.map +1 -0
- package/types/helpers/matchMedia.d.ts.map +1 -0
- package/types/helpers/matchMedia.native.d.ts.map +1 -0
- package/types/helpers/mergeProps.d.ts.map +1 -0
- package/types/helpers/mergeTransform.d.ts.map +1 -0
- package/types/helpers/normalizeColor.d.ts.map +1 -0
- package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -0
- package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
- package/types/helpers/pseudoDescriptors.d.ts.map +1 -0
- package/types/helpers/registerCSSVariable.d.ts.map +1 -0
- package/types/helpers/themeable.d.ts.map +1 -0
- package/types/helpers/themes.d.ts.map +1 -0
- package/types/helpers/timer.d.ts.map +1 -0
- package/types/helpers/useShallowSetState.d.ts.map +1 -0
- package/types/helpers/warnOnce.d.ts.map +1 -0
- package/types/helpers/withStaticProperties.d.ts.map +1 -0
- package/types/hooks/getThemeUnwrapped.d.ts.map +1 -0
- package/types/hooks/useElementLayout.d.ts.map +1 -0
- package/types/hooks/useId.d.ts.map +1 -0
- package/types/hooks/useIsTouchDevice.d.ts.map +1 -0
- package/types/hooks/useMedia.d.ts.map +1 -0
- package/types/hooks/useSafeRef.d.ts.map +1 -0
- package/types/hooks/useServerHooks.d.ts.map +1 -0
- package/types/hooks/useTheme.d.ts +2 -6
- package/types/hooks/useTheme.d.ts.map +1 -0
- package/types/hooks/useThemeName.d.ts.map +1 -0
- package/types/index.d.ts.map +1 -0
- package/types/inject-styles.d.ts.map +1 -0
- package/types/insertFont.d.ts.map +1 -0
- package/types/setupReactNative.d.ts.map +1 -0
- package/types/static.d.ts.map +1 -0
- package/types/styled.d.ts.map +1 -0
- package/types/types-rnw.d.ts.map +1 -0
- package/types/types.d.ts.map +1 -0
- package/types/updateTheme.d.ts.map +1 -0
- package/types/vendor/Pressability.d.ts.map +1 -0
- package/types/vendor/Pressability.native.d.ts.map +1 -0
- package/types/views/FontLanguage.d.ts.map +1 -0
- package/types/views/FontLanguage.native.d.ts.map +1 -0
- package/types/views/FontLanguage.types.d.ts.map +1 -0
- package/types/views/Slot.d.ts.map +1 -0
- package/types/views/Stack.d.ts.map +1 -0
- package/types/views/Stack.web.test.d.ts.map +1 -0
- package/types/views/TamaguiProvider.d.ts.map +1 -0
- package/types/views/Text.d.ts.map +1 -0
- package/types/views/Theme.d.ts.map +1 -0
- package/types/views/ThemeProvider.d.ts.map +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/getSplitStyles.tsx"],
|
|
4
|
-
"sourcesContent": ["import {\n isClient,\n isRSC,\n isServer,\n isWeb,\n useIsomorphicLayoutEffect,\n} from '@tamagui/constants'\nimport {\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n validStylesOnBaseProps,\n} from '@tamagui/helpers'\nimport { useInsertionEffect } from 'react'\nimport type { TextStyle, ViewStyle } from 'react-native'\n\nimport { getConfig, getFont } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport {\n getMediaImportanceIfMoreImportant,\n mediaState as globalMediaState,\n mediaKeysWithAndWithout$,\n mediaQueryConfig,\n mergeMediaByImportance,\n} from '../hooks/useMedia'\nimport type {\n DebugProp,\n MediaQueryKey,\n PseudoPropKeys,\n PseudoStyles,\n SpaceTokens,\n SplitStyleState,\n StackProps,\n StaticConfigParsed,\n TamaguiInternalConfig,\n ThemeParsed,\n} from '../types'\nimport { FontLanguageProps, LanguageContextType } from '../views/FontLanguage.types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { getPropMappedFontFamily } from './createPropMapper'\nimport { fixStyles } from './expandStyles'\nimport { getAtomicStyle, getStylesAtomic, styleToCSS } from './getStylesAtomic'\nimport {\n PartialStyleObject,\n RulesToInsert,\n insertStyleRules,\n insertedTransforms,\n scanAllSheets,\n shouldInsertStyleRules,\n updateRules,\n} from './insertStyleRule'\nimport { FlatTransforms, mergeTransform, mergeTransforms } from './mergeTransform'\nimport {\n normalizeValueWithProperty,\n reverseMapClassNameToValue,\n} from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\nimport { warnOnce } from './warnOnce'\n\ntype GetStyleResult = {\n pseudos?: PseudoStyles\n style: ViewStyle\n classNames: ClassNamesObject\n rulesToInsert: RulesToInsert\n viewProps: StackProps & Record<string, any>\n fontFamily: string | undefined\n space?: any // SpaceTokens?\n hasMedia: boolean | 'space'\n}\n\ntype GetStyleState = {\n style: ViewStyle\n usedKeys: Record<string, number>\n classNames: ClassNamesObject\n flatTransforms: FlatTransforms\n staticConfig: StaticConfigParsed\n theme: ThemeParsed\n props: Record<string, any>\n viewProps: Record<string, any>\n state: SplitStyleState\n conf: TamaguiInternalConfig\n languageContext?: FontLanguageProps\n avoidDefaultProps?: boolean\n avoidMergeTransform?: boolean\n}\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\nexport type ClassNamesObject = Record<string, string>\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nconst skipProps = {\n animation: true,\n space: true,\n animateOnly: true,\n debug: true,\n componentName: true,\n role: true,\n tag: true,\n}\nif (process.env.NODE_ENV === 'test') {\n skipProps['data-test-renders'] = true\n}\n\nconst IS_STATIC = process.env.IS_STATIC === 'is_static'\n\n// native only skips\nif (process.env.TAMAGUI_TARGET === 'native') {\n Object.assign(skipProps, {\n whiteSpace: true,\n wordWrap: true,\n textOverflow: true,\n textDecorationDistance: true,\n cursor: true,\n contain: true,\n boxSizing: true,\n boxShadow: true,\n })\n}\n\n// web only maps accessibility to aria props\nconst accessibilityDirectMap: Record<string, string> = {}\nif (process.env.TAMAGUI_TARGET === 'web') {\n // bundle size shave\n const items = {\n Hidden: true,\n ActiveDescendant: true,\n Atomic: true,\n AutoComplete: true,\n Busy: true,\n Checked: true,\n ColumnCount: 'colcount',\n ColumnIndex: 'colindex',\n ColumnSpan: 'colspan',\n Current: true,\n Details: true,\n ErrorMessage: true,\n Expanded: true,\n HasPopup: true,\n Invalid: true,\n Label: true,\n Level: true,\n Modal: true,\n Multiline: true,\n MultiSelectable: true,\n Orientation: true,\n Owns: true,\n Placeholder: true,\n PosInSet: true,\n Pressed: true,\n RoleDescription: true,\n RowCount: true,\n RowIndex: true,\n RowSpan: true,\n Selected: true,\n SetSize: true,\n Sort: true,\n ValueMax: true,\n ValueMin: true,\n ValueNow: true,\n ValueText: true,\n }\n for (const key in items) {\n let val = items[key]\n if (val === true) {\n val = key.toLowerCase()\n }\n accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PseudoPropKeys | MediaQueryKey\n\nlet conf: TamaguiInternalConfig\n\ntype StyleSplitter = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeParsed,\n state: SplitStyleState,\n parentSplitStyles?: GetStyleResult | null,\n languageContext?: LanguageContextType,\n // web-only\n elementType?: string,\n debug?: DebugProp\n) => GetStyleResult\n\nexport const PROP_SPLIT = '-'\n\nconst accessibilityRoleToWebRole = {\n adjustable: 'slider',\n header: 'heading',\n image: 'img',\n link: 'link',\n none: 'presentation',\n summary: 'region',\n}\n\n// loop props backwards\n// track used keys:\n// const keys = new Set<string>()\n// keep classnames and styles separate:\n// const styles = {}\n// const classNames = {}\n\nconst isMediaKey = (key: string) =>\n Boolean(key[0] === '$' && mediaKeysWithAndWithout$.has(key))\n\nexport const getSplitStyles: StyleSplitter = (\n props,\n staticConfig,\n theme,\n state,\n parentSplitStyles,\n languageContext,\n elementType,\n debug\n) => {\n if (cache.has(props)) {\n return cache.get(props)\n }\n\n conf = conf || getConfig()\n const { shorthands } = conf\n const {\n defaultVariants,\n variants,\n propMapper,\n isReactNative,\n deoptProps,\n inlineProps,\n inlineWhenUnflattened,\n } = staticConfig\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: GetStyleResult['viewProps'] = {}\n let pseudos: PseudoStyles | null = null\n let psuedosUsed: Record<string, number> | null = null\n const mediaState = state.mediaState || globalMediaState\n const usedKeys: Record<string, number> = {}\n const propKeys = Object.keys(props)\n let space: SpaceTokens | null = props.space\n let hasMedia: boolean | string[] = false\n\n const shouldDoClasses =\n staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames\n\n let style: ViewStyle | TextStyle = {}\n const flatTransforms: FlatTransforms = {}\n\n const len = propKeys.length\n const rulesToInsert: RulesToInsert = []\n const classNames: ClassNamesObject = {}\n let className = '' // existing classNames\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n const transforms: Record<TransformNamespaceKey, [string, string]> = {}\n // fontFamily is our special baby, ensure we grab the latest set one always\n let fontFamily: string | undefined\n\n const styleState: GetStyleState = {\n classNames,\n conf,\n flatTransforms,\n props,\n state,\n staticConfig,\n style,\n theme,\n usedKeys,\n viewProps,\n languageContext,\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props.selectable) {\n warnOnce('props.selectable', 'selectable props deprecated, use userSelect')\n }\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed('getSplitStyles (looping backwards)')\n // eslint-disable-next-line no-console\n console.log({ staticConfig, shouldDoClasses, state, IS_STATIC, propKeys })\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (props.className) {\n for (const cn of props.className.split(' ')) {\n if (cn[0] === '_') {\n // tamagui, merge it expanded on key, eventually this will go away with better compiler\n const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')\n const isMedia = mediaOrPseudo[0] === '_'\n const isPseudo = mediaOrPseudo[0] === '0'\n const isMediaOrPseudo = isMedia || isPseudo\n let fullKey = shorthands[shorthand]\n if (isMedia) {\n // is media\n let mediaShortKey = mediaOrPseudo.slice(1)\n mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))\n fullKey += `${PROP_SPLIT}${mediaShortKey}`\n } else if (isPseudo) {\n // is pseudo\n const pseudoShortKey = mediaOrPseudo.slice(1)\n fullKey += `${PROP_SPLIT}${pseudoShortKey}`\n }\n usedKeys[fullKey] = 1\n mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)\n } else if (cn) {\n className += ` ${cn}`\n }\n }\n }\n\n // loop backwards so we can skip already-used props\n for (let i = len - 1; i >= 0; i--) {\n let keyInit = propKeys[i]\n if (keyInit === 'className') continue // handled above\n let valInit = props[keyInit]\n\n // normalize shorthands up front\n if (keyInit in shorthands) {\n keyInit = shorthands[keyInit]\n }\n\n if (process.env.TAMAGUI_TARGET === 'native') {\n // map userSelect to native prop\n if (keyInit === 'userSelect') {\n keyInit = 'selectable'\n valInit = valInit === 'none' ? false : true\n } else if (keyInit.startsWith('data-') || keyInit.startsWith('aria-')) {\n continue\n }\n }\n\n if (keyInit in usedKeys) continue\n if (keyInit in skipProps) continue\n\n if (typeof valInit === 'string' && valInit[0] === '_') {\n if (keyInit in validStyleProps || keyInit.includes('-')) {\n if (shouldDoClasses) {\n classNames[keyInit] = valInit\n } else {\n style[keyInit] = reverseMapClassNameToValue(keyInit, valInit)\n }\n usedKeys[keyInit] = 1\n continue\n }\n }\n\n if (keyInit === 'dataSet') {\n for (const key in valInit) {\n viewProps[`data-${hyphenate(key)}`] = valInit[key]\n }\n continue\n }\n\n if (keyInit === 'style' || keyInit.startsWith('_style')) {\n if (!valInit) continue\n const styles = Array.isArray(valInit) ? valInit : [valInit]\n const styleLen = styles.length\n for (let j = styleLen; j >= 0; j--) {\n const cur = styles[j]\n if (!cur) continue\n for (const key in cur) {\n // maybe style shouldn't used usedKeys?\n if (usedKeys[key]) continue\n usedKeys[key] = 1\n style[key] = cur[key]\n }\n }\n continue\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n /**\n * Copying in the accessibility/prop handling from react-native-web here\n * Keeps it in a single loop, avoids dup de-structuring to avoid bundle size\n */\n if (keyInit === 'disabled' && valInit === true) {\n usedKeys[keyInit] = 1\n viewProps['aria-disabled'] = true\n // Enhance with native semantics\n if (\n elementType === 'button' ||\n elementType === 'form' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.disabled = true\n }\n if (!variants?.disabled) {\n continue\n }\n }\n\n if (keyInit === 'testID') {\n usedKeys[keyInit] = 1\n viewProps[isReactNative ? 'testId' : 'data-testid'] = valInit\n continue\n }\n\n if (keyInit === 'id' || keyInit === 'nativeID') {\n usedKeys[keyInit] = 1\n if (isReactNative) {\n viewProps.nativeID = valInit\n } else {\n viewProps.id = valInit\n }\n continue\n }\n\n let didUseKeyInit = false\n\n if (isReactNative) {\n // pass along to react-native-web\n if (accessibilityDirectMap[keyInit] || keyInit.startsWith('accessibility')) {\n viewProps[keyInit] = valInit\n usedKeys[keyInit] = 1\n continue\n }\n } else {\n didUseKeyInit = true\n\n if (accessibilityDirectMap[keyInit]) {\n viewProps[accessibilityDirectMap[keyInit]] = valInit\n } else {\n switch (keyInit) {\n case 'accessibilityRole': {\n if (valInit === 'none') {\n viewProps.role = 'presentation'\n } else {\n viewProps.role = accessibilityRoleToWebRole[valInit] || valInit\n }\n continue\n }\n case 'accessibilityLabelledBy':\n case 'accessibilityFlowTo':\n case 'accessibilityControls':\n case 'accessibilityDescribedBy': {\n viewProps[`aria-${keyInit.replace('accessibility', '').toLowerCase()}`] =\n processIDRefList(valInit)\n continue\n }\n case 'accessibilityKeyShortcuts': {\n if (Array.isArray(valInit)) {\n viewProps['aria-keyshortcuts'] = valInit.join(' ')\n }\n continue\n }\n case 'accessibilityLiveRegion': {\n viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit\n continue\n }\n case 'accessibilityReadOnly': {\n viewProps['aria-readonly'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.readOnly = true\n }\n continue\n }\n case 'accessibilityRequired': {\n viewProps['aria-required'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.required = valInit\n }\n continue\n }\n default: {\n didUseKeyInit = false\n }\n }\n }\n }\n\n if (didUseKeyInit) {\n usedKeys[keyInit] = 1\n continue\n }\n\n if (valInit && valInit[0] === '_') {\n // if valid style key (or pseudo like color-hover):\n // this conditional and esp the pseudo check rarely runs so not a perf issue\n const isValidClassName = validStyles[keyInit]\n const isMediaOrPseudo =\n !isValidClassName &&\n keyInit.includes(PROP_SPLIT) &&\n validStyles[keyInit.split(PROP_SPLIT)[0]]\n\n if (isValidClassName || isMediaOrPseudo) {\n usedKeys[keyInit] = 1\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('tamagui classname props', keyInit, valInit)\n }\n }\n mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)\n continue\n }\n }\n }\n\n if (\n (defaultVariants && keyInit in defaultVariants) ||\n // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props\n // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...\n (state.keepVariantsAsProps && variants && keyInit in variants)\n ) {\n viewProps[keyInit] = valInit\n }\n\n /**\n * There's (some) reason to this madness: we want to allow returning media/pseudo from variants\n * Say you have a variant hoverable: { true: { hoverStyle: {} } }\n * We run propMapper first to expand variant, then we run the inner loop and look again\n * for if there's a pseudo/media returned from it.\n */\n\n let isMedia = isMediaKey(keyInit)\n let isPseudo = validPseudoKeys[keyInit]\n\n if (\n !(\n isMedia ||\n isPseudo ||\n variants?.[keyInit] ||\n validStyleProps[keyInit] ||\n shorthands[keyInit]\n )\n ) {\n usedKeys[keyInit] = 1\n viewProps[keyInit] = valInit\n continue\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles', keyInit, valInit)\n }\n\n const expanded =\n isMedia || isPseudo\n ? [[keyInit, valInit]]\n : propMapper(\n keyInit,\n valInit,\n theme,\n props,\n state,\n languageContext,\n undefined,\n debug\n )\n\n if (!fontFamily) {\n fontFamily = getPropMappedFontFamily(expanded)\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (!isServer && isDevTools) {\n // eslint-disable-next-line no-console\n console.log('expanded', expanded, '\\nusedKeys', usedKeys, '\\ncurrent', {\n ...style,\n })\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (!expanded) continue\n\n for (const [key, val] of expanded) {\n if (val === undefined) continue\n\n isMedia = isMediaKey(key)\n isPseudo = validPseudoKeys[key]\n const isMediaOrPseudo = isMedia || isPseudo\n\n if (!isMediaOrPseudo && usedKeys[key]) {\n if (process.env.NODE_ENV === 'developmnet' && debug === 'verbose') {\n console.log(`Used media/pseudo ${key}`)\n }\n continue\n }\n\n if (inlineProps?.has(key) || inlineWhenUnflattened?.has(key)) {\n usedKeys[key] = 1\n viewProps[key] = props[key] ?? val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n\n // TODO can avoid processing this if !shouldDoClasses + state is off\n const pseudoStyleObject = getSubStyle(\n styleState,\n key,\n val,\n true,\n state.noClassNames\n )\n\n const descriptor = pseudoDescriptors[key as keyof typeof pseudoDescriptors]\n const isEnter = descriptor.name === 'enter'\n const isExit = descriptor.name === 'exit'\n\n // don't continue here on isEnter && !state.unmounted because we need to merge defaults\n if (!descriptor || (isExit && !state.isExiting)) {\n continue\n }\n\n if (!shouldDoClasses || IS_STATIC) {\n pseudos ||= {}\n pseudos[key] ||= {}\n Object.assign(pseudos[key], pseudoStyleObject)\n }\n\n if (shouldDoClasses && !isEnter && !isExit) {\n const pseudoStyles = getAtomicStyle(pseudoStyleObject, descriptor)\n for (const psuedoStyle of pseudoStyles) {\n const fullKey = `${psuedoStyle.property}${PROP_SPLIT}${descriptor.name}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, psuedoStyle)\n mergeClassName(\n transforms,\n classNames,\n fullKey,\n psuedoStyle.identifier,\n isMediaOrPseudo\n )\n }\n }\n } else {\n if (usedKeys[key]) {\n continue\n }\n\n let isDisabled = !state[descriptor.stateKey || descriptor.name]\n\n // we never animate in on server side just show the full thing\n // on client side we use CSS to hide the fully in SSR items, then\n // un-hide and replay with original animation.\n if (isWeb && !isClient && isEnter) {\n isDisabled = false\n }\n\n if (!isDisabled) {\n if (valInit === staticConfig.defaultProps[keyInit]) {\n // ignore:\n // if it's a default property given by styled(), we don't mark it as used, so\n // that props given inline can override:\n } else {\n usedKeys[key] ||= 1\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log(`Setting used ${key}`)\n }\n }\n }\n\n psuedosUsed ||= {}\n\n const importance = descriptor.priority\n for (const pkey in pseudoStyleObject) {\n const val = pseudoStyleObject[pkey]\n // when disabled ensure the default value is set for future animations to align\n if (isDisabled) {\n if (!(pkey in usedKeys) && pkey in animatableDefaults) {\n const defaultVal = animatableDefaults[pkey]\n mergeStyle(styleState, pkey, defaultVal, true)\n }\n continue\n }\n const curImportance = psuedosUsed[importance] || 0\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log('Merge pseudo?', { importance, curImportance, pkey, val })\n }\n if (importance >= curImportance) {\n psuedosUsed[pkey] = importance\n pseudos ||= {}\n pseudos[key] ||= {}\n pseudos[key][pkey] = val\n mergeStyle(styleState, pkey, val)\n }\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n if (!val) continue\n\n hasMedia ||= true\n\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n\n const mediaStyle = getSubStyle(\n styleState,\n key,\n val,\n // TODO try true like pseudo\n false\n )\n\n const mediaKeyShort = key.slice(1)\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // prettier-ignore\n // eslint-disable-next-line no-console\n console.log(` \uD83D\uDCFA ${key}`, { key, mediaStyle, props, shouldDoClasses })\n }\n\n if ('space' in mediaStyle) {\n if (!Array.isArray(hasMedia)) {\n hasMedia = []\n }\n hasMedia.push(mediaKeyShort)\n }\n\n if (shouldDoClasses) {\n if ('space' in mediaStyle) {\n delete mediaStyle['space']\n if (mediaState[mediaKeyShort]) {\n const val = valInit.space\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n 'space',\n usedKeys\n )\n if (importance) {\n space = val\n usedKeys['space'] = importance\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log(\n `Found more important space for current media ${mediaKeyShort}: ${val} (importance: ${importance})`\n )\n }\n }\n }\n }\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)\n const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, out)\n mergeClassName(transforms, classNames, fullKey, out.identifier, true)\n }\n }\n } else if (mediaState[mediaKeyShort]) {\n for (const subKey in mediaStyle) {\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n subKey,\n usedKeys\n )\n if (importance === null) continue\n if (subKey === 'space') {\n space = valInit.space\n continue\n }\n mergeMediaByImportance(\n style,\n mediaKeyShort,\n subKey,\n mediaStyle[subKey],\n usedKeys\n )\n if (key === 'fontFamily') {\n fontFamily = mediaStyle[key]\n }\n }\n }\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n usedKeys[key] = 1\n viewProps[key] = val\n continue\n }\n\n if (key === 'fontFamily' && !fontFamily && valInit && val) {\n fontFamily = valInit[0] === '$' ? valInit : val\n }\n\n if (key in validStyleProps) {\n mergeStyle(styleState, key, val)\n continue\n }\n\n // pass to view props\n if (!(variants && key in variants)) {\n if (!skipProps[key]) {\n viewProps[key] = val\n usedKeys[key] = 1\n }\n }\n }\n }\n\n fixStyles(style)\n if (isWeb) {\n styleToCSS(style)\n }\n\n // native: swap out the right family based on weight/style\n if (process.env.TAMAGUI_TARGET === 'native') {\n if ('fontFamily' in style && style.fontFamily) {\n const faceInfo = getFont(style.fontFamily)?.face\n if (faceInfo) {\n const overrideFace =\n faceInfo[style.fontWeight!]?.[style.fontStyle || 'normal']?.val\n if (overrideFace) {\n style.fontFamily = overrideFace\n fontFamily = overrideFace\n delete style.fontWeight\n delete style.fontStyle\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n console.log(`Found fontFamily native: ${style.fontFamily}`, faceInfo)\n }\n }\n }\n }\n\n // always do this at the very end to preserve the order strictly (animations, origin)\n // and allow proper merging of all pseudos before applying\n if (flatTransforms) {\n if (process.env.NODE_ENV === 'development' && debug) {\n // eslint-disable-next-line no-console\n console.log(\n 'Merging flat transforms, transform before',\n [...(style.transform || [])],\n flatTransforms\n )\n }\n mergeTransforms(style, flatTransforms, true)\n }\n\n // add in defaults if not set:\n if (parentSplitStyles) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n for (const key in parentSplitStyles.classNames) {\n const val = parentSplitStyles.classNames[key]\n if (key in style || key in classNames) continue\n classNames[key] = val\n }\n }\n }\n if (!shouldDoClasses) {\n for (const key in parentSplitStyles.style) {\n if (key in classNames || key in style) continue\n style[key] = parentSplitStyles.style[key]\n }\n }\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n const retainedStyles = {}\n if (style['$$css']) {\n // avoid re-processing for rnw\n } else {\n const atomic = getStylesAtomic(style)\n for (const atomicStyle of atomic) {\n const key = atomicStyle.property\n if (props.animateOnly && props.animateOnly.includes(key)) {\n retainedStyles[key] = atomicStyle.value\n } else {\n addStyleToInsertRules(rulesToInsert, atomicStyle)\n mergeClassName(transforms, classNames, key, atomicStyle.identifier)\n }\n }\n if (!IS_STATIC) {\n style = retainedStyles\n }\n }\n }\n\n if (transforms) {\n for (const namespace in transforms) {\n if (!transforms[namespace]) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('Error no transform', transforms, namespace)\n }\n continue\n }\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (isClient && !insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n addStyleToInsertRules(rulesToInsert, {\n identifier,\n rules: [rule],\n property: namespace,\n })\n }\n classNames[namespace] = identifier\n }\n }\n }\n\n const result = {\n space,\n hasMedia,\n fontFamily,\n viewProps,\n style,\n pseudos,\n classNames,\n rulesToInsert,\n }\n\n if (className) {\n classNames.className = className\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (isDevTools) {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles =>')\n // prettier-ignore\n const logs = { transforms, viewProps, state, rulesToInsert, parentSplitStyles, flatTransforms, result }\n for (const key in { ...result, ...logs }) {\n // eslint-disable-next-line no-console\n console.log(key, logs[key])\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n }\n\n cache.set(props, result)\n\n return result\n}\n\nfunction mergeClassName(\n transforms: Record<string, any[]>,\n classNames: Record<string, string>,\n key: string,\n val: string,\n isMediaOrPseudo = false\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n // empty classnames passed by compiler sometimes\n if (!val) return\n if (val[0] === '_' && val.startsWith('_transform-')) {\n const ns: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'\n let transform = insertedTransforms[val]\n if (isClient && !transform) {\n scanAllSheets() // HMR or loaded a new chunk\n transform = insertedTransforms[val]\n if (!transform && isWeb && val[0] !== '_') {\n transform = val // runtime insert\n }\n }\n transforms[ns] ||= ['', '']\n transforms[ns][0] += val.replace('_transform', '')\n // ssr doesn't need to do anything just make the right classname\n if (transform) {\n transforms[ns][1] += transform\n }\n } else {\n classNames[key] = val\n }\n }\n}\n\n/**\n * getSubStyle calls propMapper with props\n * those should be specific to the substyle, but fallback to the base props\n * so given props:\n *\n * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }\n *\n * getSubStyle props should be a proxy that ends up like:\n *\n * { fontSize: 12, color: 'blue' }\n *\n * and to avoid re-creating it over and over, use a WeakMap\n */\nconst cache = new WeakMap()\nfunction getSubStyleProps(\n defaultProps: Object,\n baseProps: Object,\n specificProps: Object\n) {\n const key = specificProps || baseProps\n // can cache based only on specific it's always referentially consistent with base\n if (!cache.has(key)) {\n cache.set(key, {\n ...defaultProps,\n ...baseProps,\n ...specificProps,\n })\n }\n return cache.get(key)!\n}\n\nfunction mergeStyle(\n { usedKeys, classNames, flatTransforms, viewProps, style }: GetStyleState,\n key: string,\n val: any,\n dontSetUsed = false\n) {\n if (!dontSetUsed) {\n usedKeys[key] ||= 1\n }\n if (val && val[0] === '_') {\n classNames[key] = val\n } else if (key in stylePropsTransform) {\n flatTransforms ||= {}\n flatTransforms[key] = val\n } else {\n const out = normalizeValueWithProperty(val, key)\n if (key in validStylesOnBaseProps) {\n viewProps[key] = out\n } else {\n style[key] = out\n }\n }\n}\n\nexport const getSubStyle = (\n styleState: GetStyleState,\n subKey: string,\n styleIn: Object,\n avoidDefaultProps?: boolean,\n avoidMergeTransform?: boolean\n): ViewStyle => {\n const { staticConfig, theme, props, state, conf, languageContext } = styleState\n const styleOut: ViewStyle = {}\n\n for (let key in styleIn) {\n const val = styleIn[key]\n key = conf.shorthands[key] || key\n const expanded = staticConfig.propMapper(\n key,\n val,\n theme,\n getSubStyleProps(staticConfig.defaultProps, props, props[subKey]),\n state,\n languageContext,\n avoidDefaultProps\n )\n if (!expanded) continue\n for (const [skey, sval] of expanded) {\n if (!avoidMergeTransform && skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = normalizeValueWithProperty(sval, key)\n }\n }\n }\n\n fixStyles(styleOut)\n\n return styleOut\n}\n\nexport const insertSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n insertStyleRules(res.rulesToInsert)\n return res\n}\n\n// on native no need to insert any css\nconst useInsertEffectCompat = isWeb\n ? useInsertionEffect || useIsomorphicLayoutEffect\n : () => {}\n\nexport const useSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n\n if (!isRSC) {\n useInsertEffectCompat(() => {\n insertStyleRules(res.rulesToInsert)\n }, [res.rulesToInsert])\n }\n\n return res\n}\n\nfunction addStyleToInsertRules(\n rulesToInsert: RulesToInsert,\n styleObject: PartialStyleObject\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (!shouldInsertStyleRules(styleObject)) {\n return\n }\n updateRules(styleObject.identifier, styleObject.rules)\n rulesToInsert.push(styleObject)\n }\n}\n\nfunction processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nconst animatableDefaults = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\n rotateY: '0deg',\n rotateX: '0deg',\n}\n\nconst lowercaseHyphenate = (match: string) => `-${match.toLowerCase()}`\nconst hyphenate = (str: string) => str.replace(/[A-Z]/g, lowercaseHyphenate)\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import {\n isClient,\n isRSC,\n isServer,\n isWeb,\n useIsomorphicLayoutEffect,\n} from '@tamagui/constants'\nimport {\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n validStylesOnBaseProps,\n} from '@tamagui/helpers'\nimport { useInsertionEffect } from 'react'\nimport type { TextStyle, ViewStyle } from 'react-native'\n\nimport { getConfig, getFont } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport {\n getMediaImportanceIfMoreImportant,\n mediaState as globalMediaState,\n mediaKeysWithAndWithout$,\n mediaQueryConfig,\n mergeMediaByImportance,\n} from '../hooks/useMedia'\nimport type {\n DebugProp,\n MediaQueryKey,\n PseudoPropKeys,\n PseudoStyles,\n SpaceTokens,\n SplitStyleState,\n StackProps,\n StaticConfigParsed,\n TamaguiInternalConfig,\n ThemeParsed,\n} from '../types'\nimport { FontLanguageProps, LanguageContextType } from '../views/FontLanguage.types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { getPropMappedFontFamily } from './createPropMapper'\nimport { fixStyles } from './expandStyles'\nimport { getAtomicStyle, getStylesAtomic, styleToCSS } from './getStylesAtomic'\nimport {\n PartialStyleObject,\n RulesToInsert,\n insertStyleRules,\n insertedTransforms,\n scanAllSheets,\n shouldInsertStyleRules,\n updateRules,\n} from './insertStyleRule'\nimport { FlatTransforms, mergeTransform, mergeTransforms } from './mergeTransform'\nimport {\n normalizeValueWithProperty,\n reverseMapClassNameToValue,\n} from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\nimport { warnOnce } from './warnOnce'\n\ntype GetStyleResult = {\n pseudos?: PseudoStyles\n style: ViewStyle\n classNames: ClassNamesObject\n rulesToInsert: RulesToInsert\n viewProps: StackProps & Record<string, any>\n fontFamily: string | undefined\n space?: any // SpaceTokens?\n hasMedia: boolean | 'space'\n}\n\ntype GetStyleState = {\n style: ViewStyle\n usedKeys: Record<string, number>\n classNames: ClassNamesObject\n flatTransforms: FlatTransforms\n staticConfig: StaticConfigParsed\n theme: ThemeParsed\n props: Record<string, any>\n viewProps: Record<string, any>\n state: SplitStyleState\n conf: TamaguiInternalConfig\n languageContext?: FontLanguageProps\n avoidDefaultProps?: boolean\n avoidMergeTransform?: boolean\n}\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\nexport type ClassNamesObject = Record<string, string>\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nconst skipProps = {\n animation: true,\n space: true,\n animateOnly: true,\n debug: true,\n componentName: true,\n role: true,\n tag: true,\n}\nif (process.env.NODE_ENV === 'test') {\n skipProps['data-test-renders'] = true\n}\n\nconst IS_STATIC = process.env.IS_STATIC === 'is_static'\n\n// native only skips\nif (process.env.TAMAGUI_TARGET === 'native') {\n Object.assign(skipProps, {\n whiteSpace: true,\n wordWrap: true,\n textOverflow: true,\n textDecorationDistance: true,\n cursor: true,\n contain: true,\n boxSizing: true,\n boxShadow: true,\n })\n}\n\n// web only maps accessibility to aria props\nconst accessibilityDirectMap: Record<string, string> = {}\nif (process.env.TAMAGUI_TARGET === 'web') {\n // bundle size shave\n const items = {\n Hidden: true,\n ActiveDescendant: true,\n Atomic: true,\n AutoComplete: true,\n Busy: true,\n Checked: true,\n ColumnCount: 'colcount',\n ColumnIndex: 'colindex',\n ColumnSpan: 'colspan',\n Current: true,\n Details: true,\n ErrorMessage: true,\n Expanded: true,\n HasPopup: true,\n Invalid: true,\n Label: true,\n Level: true,\n Modal: true,\n Multiline: true,\n MultiSelectable: true,\n Orientation: true,\n Owns: true,\n Placeholder: true,\n PosInSet: true,\n Pressed: true,\n RoleDescription: true,\n RowCount: true,\n RowIndex: true,\n RowSpan: true,\n Selected: true,\n SetSize: true,\n Sort: true,\n ValueMax: true,\n ValueMin: true,\n ValueNow: true,\n ValueText: true,\n }\n for (const key in items) {\n let val = items[key]\n if (val === true) {\n val = key.toLowerCase()\n }\n accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PseudoPropKeys | MediaQueryKey\n\nlet conf: TamaguiInternalConfig\n\ntype StyleSplitter = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeParsed,\n state: SplitStyleState,\n parentSplitStyles?: GetStyleResult | null,\n languageContext?: LanguageContextType,\n // web-only\n elementType?: string,\n debug?: DebugProp\n) => GetStyleResult\n\nexport const PROP_SPLIT = '-'\n\nconst accessibilityRoleToWebRole = {\n adjustable: 'slider',\n header: 'heading',\n image: 'img',\n link: 'link',\n none: 'presentation',\n summary: 'region',\n}\n\n// loop props backwards\n// track used keys:\n// const keys = new Set<string>()\n// keep classnames and styles separate:\n// const styles = {}\n// const classNames = {}\n\nconst isMediaKey = (key: string) =>\n Boolean(key[0] === '$' && mediaKeysWithAndWithout$.has(key))\n\nexport const getSplitStyles: StyleSplitter = (\n props,\n staticConfig,\n theme,\n state,\n parentSplitStyles,\n languageContext,\n elementType,\n debug\n) => {\n if (cache.has(props)) {\n return cache.get(props)\n }\n\n conf = conf || getConfig()\n const { shorthands } = conf\n const {\n defaultVariants,\n variants,\n propMapper,\n isReactNative,\n deoptProps,\n inlineProps,\n inlineWhenUnflattened,\n } = staticConfig\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: GetStyleResult['viewProps'] = {}\n let pseudos: PseudoStyles | null = null\n let psuedosUsed: Record<string, number> | null = null\n const mediaState = state.mediaState || globalMediaState\n const usedKeys: Record<string, number> = {}\n const propKeys = Object.keys(props)\n let space: SpaceTokens | null = props.space\n let hasMedia: boolean | string[] = false\n\n const shouldDoClasses =\n staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames\n\n let style: ViewStyle | TextStyle = {}\n const flatTransforms: FlatTransforms = {}\n\n const len = propKeys.length\n const rulesToInsert: RulesToInsert = []\n const classNames: ClassNamesObject = {}\n let className = '' // existing classNames\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n const transforms: Record<TransformNamespaceKey, [string, string]> = {}\n // fontFamily is our special baby, ensure we grab the latest set one always\n let fontFamily: string | undefined\n\n const styleState: GetStyleState = {\n classNames,\n conf,\n flatTransforms,\n props,\n state,\n staticConfig,\n style,\n theme,\n usedKeys,\n viewProps,\n languageContext,\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props.selectable) {\n warnOnce('props.selectable', 'selectable props deprecated, use userSelect')\n }\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed('getSplitStyles (looping backwards)')\n // eslint-disable-next-line no-console\n console.log({ staticConfig, shouldDoClasses, state, IS_STATIC, propKeys })\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (props.className) {\n for (const cn of props.className.split(' ')) {\n if (cn[0] === '_') {\n // tamagui, merge it expanded on key, eventually this will go away with better compiler\n const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')\n const isMedia = mediaOrPseudo[0] === '_'\n const isPseudo = mediaOrPseudo[0] === '0'\n const isMediaOrPseudo = isMedia || isPseudo\n let fullKey = shorthands[shorthand]\n if (isMedia) {\n // is media\n let mediaShortKey = mediaOrPseudo.slice(1)\n mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))\n fullKey += `${PROP_SPLIT}${mediaShortKey}`\n } else if (isPseudo) {\n // is pseudo\n const pseudoShortKey = mediaOrPseudo.slice(1)\n fullKey += `${PROP_SPLIT}${pseudoShortKey}`\n }\n usedKeys[fullKey] = 1\n mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)\n } else if (cn) {\n className += ` ${cn}`\n }\n }\n }\n\n // loop backwards so we can skip already-used props\n for (let i = len - 1; i >= 0; i--) {\n let keyInit = propKeys[i]\n if (keyInit === 'className') continue // handled above\n let valInit = props[keyInit]\n\n // normalize shorthands up front\n if (keyInit in shorthands) {\n keyInit = shorthands[keyInit]\n }\n\n if (process.env.TAMAGUI_TARGET === 'native') {\n // map userSelect to native prop\n if (keyInit === 'userSelect') {\n keyInit = 'selectable'\n valInit = valInit === 'none' ? false : true\n } else if (keyInit.startsWith('data-') || keyInit.startsWith('aria-')) {\n continue\n }\n }\n\n if (keyInit in usedKeys) continue\n if (keyInit in skipProps) continue\n\n if (typeof valInit === 'string' && valInit[0] === '_') {\n if (keyInit in validStyleProps || keyInit.includes('-')) {\n if (shouldDoClasses) {\n classNames[keyInit] = valInit\n } else {\n style[keyInit] = reverseMapClassNameToValue(keyInit, valInit)\n }\n usedKeys[keyInit] = 1\n continue\n }\n }\n\n if (keyInit === 'dataSet') {\n for (const key in valInit) {\n viewProps[`data-${hyphenate(key)}`] = valInit[key]\n }\n continue\n }\n\n const isMainStyle = keyInit === 'style'\n if (isMainStyle || keyInit.startsWith('_style')) {\n if (!valInit) continue\n const styles = Array.isArray(valInit) ? valInit : [valInit]\n const styleLen = styles.length\n for (let j = styleLen; j >= 0; j--) {\n const cur = styles[j]\n if (!cur) continue\n for (const key in cur) {\n if (!isMainStyle && usedKeys[key]) {\n continue\n }\n usedKeys[key] = 1\n style[key] = cur[key]\n }\n }\n continue\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n /**\n * Copying in the accessibility/prop handling from react-native-web here\n * Keeps it in a single loop, avoids dup de-structuring to avoid bundle size\n */\n if (keyInit === 'disabled' && valInit === true) {\n usedKeys[keyInit] = 1\n viewProps['aria-disabled'] = true\n // Enhance with native semantics\n if (\n elementType === 'button' ||\n elementType === 'form' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.disabled = true\n }\n if (!variants?.disabled) {\n continue\n }\n }\n\n if (keyInit === 'testID') {\n usedKeys[keyInit] = 1\n viewProps[isReactNative ? 'testId' : 'data-testid'] = valInit\n continue\n }\n\n if (keyInit === 'id' || keyInit === 'nativeID') {\n usedKeys[keyInit] = 1\n if (isReactNative) {\n viewProps.nativeID = valInit\n } else {\n viewProps.id = valInit\n }\n continue\n }\n\n let didUseKeyInit = false\n\n if (isReactNative) {\n // pass along to react-native-web\n if (accessibilityDirectMap[keyInit] || keyInit.startsWith('accessibility')) {\n viewProps[keyInit] = valInit\n usedKeys[keyInit] = 1\n continue\n }\n } else {\n didUseKeyInit = true\n\n if (accessibilityDirectMap[keyInit]) {\n viewProps[accessibilityDirectMap[keyInit]] = valInit\n } else {\n switch (keyInit) {\n case 'accessibilityRole': {\n if (valInit === 'none') {\n viewProps.role = 'presentation'\n } else {\n viewProps.role = accessibilityRoleToWebRole[valInit] || valInit\n }\n continue\n }\n case 'accessibilityLabelledBy':\n case 'accessibilityFlowTo':\n case 'accessibilityControls':\n case 'accessibilityDescribedBy': {\n viewProps[`aria-${keyInit.replace('accessibility', '').toLowerCase()}`] =\n processIDRefList(valInit)\n continue\n }\n case 'accessibilityKeyShortcuts': {\n if (Array.isArray(valInit)) {\n viewProps['aria-keyshortcuts'] = valInit.join(' ')\n }\n continue\n }\n case 'accessibilityLiveRegion': {\n viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit\n continue\n }\n case 'accessibilityReadOnly': {\n viewProps['aria-readonly'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.readOnly = true\n }\n continue\n }\n case 'accessibilityRequired': {\n viewProps['aria-required'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.required = valInit\n }\n continue\n }\n default: {\n didUseKeyInit = false\n }\n }\n }\n }\n\n if (didUseKeyInit) {\n usedKeys[keyInit] = 1\n continue\n }\n\n if (valInit && valInit[0] === '_') {\n // if valid style key (or pseudo like color-hover):\n // this conditional and esp the pseudo check rarely runs so not a perf issue\n const isValidClassName = validStyles[keyInit]\n const isMediaOrPseudo =\n !isValidClassName &&\n keyInit.includes(PROP_SPLIT) &&\n validStyles[keyInit.split(PROP_SPLIT)[0]]\n\n if (isValidClassName || isMediaOrPseudo) {\n usedKeys[keyInit] = 1\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('tamagui classname props', keyInit, valInit)\n }\n }\n mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)\n continue\n }\n }\n }\n\n if (\n (defaultVariants && keyInit in defaultVariants) ||\n // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props\n // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...\n (state.keepVariantsAsProps && variants && keyInit in variants)\n ) {\n viewProps[keyInit] = valInit\n }\n\n /**\n * There's (some) reason to this madness: we want to allow returning media/pseudo from variants\n * Say you have a variant hoverable: { true: { hoverStyle: {} } }\n * We run propMapper first to expand variant, then we run the inner loop and look again\n * for if there's a pseudo/media returned from it.\n */\n\n let isMedia = isMediaKey(keyInit)\n let isPseudo = validPseudoKeys[keyInit]\n\n if (\n !(\n isMedia ||\n isPseudo ||\n variants?.[keyInit] ||\n validStyleProps[keyInit] ||\n shorthands[keyInit]\n )\n ) {\n usedKeys[keyInit] = 1\n viewProps[keyInit] = valInit\n continue\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles', keyInit, valInit)\n }\n\n const expanded =\n isMedia || isPseudo\n ? [[keyInit, valInit]]\n : propMapper(\n keyInit,\n valInit,\n theme,\n props,\n state,\n languageContext,\n undefined,\n debug\n )\n\n if (!fontFamily) {\n fontFamily = getPropMappedFontFamily(expanded)\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (!isServer && isDevTools) {\n // eslint-disable-next-line no-console\n console.log('expanded', expanded, '\\nusedKeys', usedKeys, '\\ncurrent', {\n ...style,\n })\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (!expanded) continue\n\n for (const [key, val] of expanded) {\n if (val === undefined) continue\n\n isMedia = isMediaKey(key)\n isPseudo = validPseudoKeys[key]\n const isMediaOrPseudo = isMedia || isPseudo\n\n if (!isMediaOrPseudo && usedKeys[key]) {\n if (process.env.NODE_ENV === 'developmnet' && debug === 'verbose') {\n console.log(`Used media/pseudo ${key}`)\n }\n continue\n }\n\n if (inlineProps?.has(key) || inlineWhenUnflattened?.has(key)) {\n usedKeys[key] = 1\n viewProps[key] = props[key] ?? val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n\n // TODO can avoid processing this if !shouldDoClasses + state is off\n const pseudoStyleObject = getSubStyle(\n styleState,\n key,\n val,\n true,\n state.noClassNames\n )\n\n const descriptor = pseudoDescriptors[key as keyof typeof pseudoDescriptors]\n const isEnter = descriptor.name === 'enter'\n const isExit = descriptor.name === 'exit'\n\n // don't continue here on isEnter && !state.unmounted because we need to merge defaults\n if (!descriptor || (isExit && !state.isExiting)) {\n continue\n }\n\n if (!shouldDoClasses || IS_STATIC) {\n pseudos ||= {}\n pseudos[key] ||= {}\n Object.assign(pseudos[key], pseudoStyleObject)\n }\n\n if (shouldDoClasses && !isEnter && !isExit) {\n const pseudoStyles = getAtomicStyle(pseudoStyleObject, descriptor)\n for (const psuedoStyle of pseudoStyles) {\n const fullKey = `${psuedoStyle.property}${PROP_SPLIT}${descriptor.name}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, psuedoStyle)\n mergeClassName(\n transforms,\n classNames,\n fullKey,\n psuedoStyle.identifier,\n isMediaOrPseudo\n )\n }\n }\n } else {\n if (usedKeys[key]) {\n continue\n }\n\n let isDisabled = !state[descriptor.stateKey || descriptor.name]\n\n // we never animate in on server side just show the full thing\n // on client side we use CSS to hide the fully in SSR items, then\n // un-hide and replay with original animation.\n if (isWeb && !isClient && isEnter) {\n isDisabled = false\n }\n\n if (!isDisabled) {\n if (valInit === staticConfig.defaultProps[keyInit]) {\n // ignore:\n // if it's a default property given by styled(), we don't mark it as used, so\n // that props given inline can override:\n } else {\n usedKeys[key] ||= 1\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log(`Setting used ${key}`)\n }\n }\n }\n\n psuedosUsed ||= {}\n\n const importance = descriptor.priority\n for (const pkey in pseudoStyleObject) {\n const val = pseudoStyleObject[pkey]\n // when disabled ensure the default value is set for future animations to align\n if (isDisabled) {\n if (!(pkey in usedKeys) && pkey in animatableDefaults) {\n const defaultVal = animatableDefaults[pkey]\n mergeStyle(styleState, pkey, defaultVal, true)\n }\n continue\n }\n const curImportance = psuedosUsed[importance] || 0\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log('Merge pseudo?', { importance, curImportance, pkey, val })\n }\n if (importance >= curImportance) {\n psuedosUsed[pkey] = importance\n pseudos ||= {}\n pseudos[key] ||= {}\n pseudos[key][pkey] = val\n mergeStyle(styleState, pkey, val)\n }\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n if (!val) continue\n\n hasMedia ||= true\n\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n\n const mediaStyle = getSubStyle(\n styleState,\n key,\n val,\n // TODO try true like pseudo\n false\n )\n\n const mediaKeyShort = key.slice(1)\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // prettier-ignore\n // eslint-disable-next-line no-console\n console.log(` \uD83D\uDCFA ${key}`, { key, mediaStyle, props, shouldDoClasses })\n }\n\n if ('space' in mediaStyle) {\n if (!Array.isArray(hasMedia)) {\n hasMedia = []\n }\n hasMedia.push(mediaKeyShort)\n }\n\n if (shouldDoClasses) {\n if ('space' in mediaStyle) {\n delete mediaStyle['space']\n if (mediaState[mediaKeyShort]) {\n const val = valInit.space\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n 'space',\n usedKeys\n )\n if (importance) {\n space = val\n usedKeys['space'] = importance\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log(\n `Found more important space for current media ${mediaKeyShort}: ${val} (importance: ${importance})`\n )\n }\n }\n }\n }\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)\n const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, out)\n mergeClassName(transforms, classNames, fullKey, out.identifier, true)\n }\n }\n } else if (mediaState[mediaKeyShort]) {\n for (const subKey in mediaStyle) {\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n subKey,\n usedKeys\n )\n if (importance === null) continue\n if (subKey === 'space') {\n space = valInit.space\n continue\n }\n mergeMediaByImportance(\n style,\n mediaKeyShort,\n subKey,\n mediaStyle[subKey],\n usedKeys\n )\n if (key === 'fontFamily') {\n fontFamily = mediaStyle[key]\n }\n }\n }\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n usedKeys[key] = 1\n viewProps[key] = val\n continue\n }\n\n if (key === 'fontFamily' && !fontFamily && valInit && val) {\n fontFamily = valInit[0] === '$' ? valInit : val\n }\n\n if (key in validStyleProps) {\n mergeStyle(styleState, key, val)\n continue\n }\n\n // pass to view props\n if (!(variants && key in variants)) {\n if (!skipProps[key]) {\n viewProps[key] = val\n usedKeys[key] = 1\n }\n }\n }\n }\n\n fixStyles(style)\n if (isWeb) {\n styleToCSS(style)\n }\n\n // native: swap out the right family based on weight/style\n if (process.env.TAMAGUI_TARGET === 'native') {\n if ('fontFamily' in style && style.fontFamily) {\n const faceInfo = getFont(style.fontFamily)?.face\n if (faceInfo) {\n const overrideFace =\n faceInfo[style.fontWeight!]?.[style.fontStyle || 'normal']?.val\n if (overrideFace) {\n style.fontFamily = overrideFace\n fontFamily = overrideFace\n delete style.fontWeight\n delete style.fontStyle\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n console.log(`Found fontFamily native: ${style.fontFamily}`, faceInfo)\n }\n }\n }\n }\n\n // always do this at the very end to preserve the order strictly (animations, origin)\n // and allow proper merging of all pseudos before applying\n if (flatTransforms) {\n if (process.env.NODE_ENV === 'development' && debug) {\n // eslint-disable-next-line no-console\n console.log(\n 'Merging flat transforms, transform before',\n [...(style.transform || [])],\n flatTransforms\n )\n }\n mergeTransforms(style, flatTransforms, true)\n }\n\n // add in defaults if not set:\n if (parentSplitStyles) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n for (const key in parentSplitStyles.classNames) {\n const val = parentSplitStyles.classNames[key]\n if (key in style || key in classNames) continue\n classNames[key] = val\n }\n }\n }\n if (!shouldDoClasses) {\n for (const key in parentSplitStyles.style) {\n if (key in classNames || key in style) continue\n style[key] = parentSplitStyles.style[key]\n }\n }\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n const retainedStyles = {}\n if (style['$$css']) {\n // avoid re-processing for rnw\n } else {\n const atomic = getStylesAtomic(style)\n for (const atomicStyle of atomic) {\n const key = atomicStyle.property\n if (props.animateOnly && props.animateOnly.includes(key)) {\n retainedStyles[key] = atomicStyle.value\n } else {\n addStyleToInsertRules(rulesToInsert, atomicStyle)\n mergeClassName(transforms, classNames, key, atomicStyle.identifier)\n }\n }\n if (!IS_STATIC) {\n style = retainedStyles\n }\n }\n }\n\n if (transforms) {\n for (const namespace in transforms) {\n if (!transforms[namespace]) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('Error no transform', transforms, namespace)\n }\n continue\n }\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (isClient && !insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n addStyleToInsertRules(rulesToInsert, {\n identifier,\n rules: [rule],\n property: namespace,\n })\n }\n classNames[namespace] = identifier\n }\n }\n }\n\n const result = {\n space,\n hasMedia,\n fontFamily,\n viewProps,\n style,\n pseudos,\n classNames,\n rulesToInsert,\n }\n\n if (className) {\n classNames.className = className\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (isDevTools) {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles =>')\n // prettier-ignore\n const logs = { transforms, viewProps, state, rulesToInsert, parentSplitStyles, flatTransforms, result }\n for (const key in { ...result, ...logs }) {\n // eslint-disable-next-line no-console\n console.log(key, logs[key])\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n }\n\n cache.set(props, result)\n\n return result\n}\n\nfunction mergeClassName(\n transforms: Record<string, any[]>,\n classNames: Record<string, string>,\n key: string,\n val: string,\n isMediaOrPseudo = false\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n // empty classnames passed by compiler sometimes\n if (!val) return\n if (val[0] === '_' && val.startsWith('_transform-')) {\n const ns: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'\n let transform = insertedTransforms[val]\n if (isClient && !transform) {\n scanAllSheets() // HMR or loaded a new chunk\n transform = insertedTransforms[val]\n if (!transform && isWeb && val[0] !== '_') {\n transform = val // runtime insert\n }\n }\n transforms[ns] ||= ['', '']\n transforms[ns][0] += val.replace('_transform', '')\n // ssr doesn't need to do anything just make the right classname\n if (transform) {\n transforms[ns][1] += transform\n }\n } else {\n classNames[key] = val\n }\n }\n}\n\n/**\n * getSubStyle calls propMapper with props\n * those should be specific to the substyle, but fallback to the base props\n * so given props:\n *\n * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }\n *\n * getSubStyle props should be a proxy that ends up like:\n *\n * { fontSize: 12, color: 'blue' }\n *\n * and to avoid re-creating it over and over, use a WeakMap\n */\nconst cache = new WeakMap()\nfunction getSubStyleProps(\n defaultProps: Object,\n baseProps: Object,\n specificProps: Object\n) {\n const key = specificProps || baseProps\n // can cache based only on specific it's always referentially consistent with base\n if (!cache.has(key)) {\n cache.set(key, {\n ...defaultProps,\n ...baseProps,\n ...specificProps,\n })\n }\n return cache.get(key)!\n}\n\nfunction mergeStyle(\n { usedKeys, classNames, flatTransforms, viewProps, style }: GetStyleState,\n key: string,\n val: any,\n dontSetUsed = false\n) {\n if (!dontSetUsed) {\n usedKeys[key] ||= 1\n }\n if (val && val[0] === '_') {\n classNames[key] = val\n } else if (key in stylePropsTransform) {\n flatTransforms ||= {}\n flatTransforms[key] = val\n } else {\n const out = normalizeValueWithProperty(val, key)\n if (key in validStylesOnBaseProps) {\n viewProps[key] = out\n } else {\n style[key] = out\n }\n }\n}\n\nexport const getSubStyle = (\n styleState: GetStyleState,\n subKey: string,\n styleIn: Object,\n avoidDefaultProps?: boolean,\n avoidMergeTransform?: boolean\n): ViewStyle => {\n const { staticConfig, theme, props, state, conf, languageContext } = styleState\n const styleOut: ViewStyle = {}\n\n for (let key in styleIn) {\n const val = styleIn[key]\n key = conf.shorthands[key] || key\n const expanded = staticConfig.propMapper(\n key,\n val,\n theme,\n getSubStyleProps(staticConfig.defaultProps, props, props[subKey]),\n state,\n languageContext,\n avoidDefaultProps\n )\n if (!expanded) continue\n for (const [skey, sval] of expanded) {\n if (!avoidMergeTransform && skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = normalizeValueWithProperty(sval, key)\n }\n }\n }\n\n fixStyles(styleOut)\n\n return styleOut\n}\n\nexport const insertSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n insertStyleRules(res.rulesToInsert)\n return res\n}\n\n// on native no need to insert any css\nconst useInsertEffectCompat = isWeb\n ? useInsertionEffect || useIsomorphicLayoutEffect\n : () => {}\n\nexport const useSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n\n if (!isRSC) {\n useInsertEffectCompat(() => {\n insertStyleRules(res.rulesToInsert)\n }, [res.rulesToInsert])\n }\n\n return res\n}\n\nfunction addStyleToInsertRules(\n rulesToInsert: RulesToInsert,\n styleObject: PartialStyleObject\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (!shouldInsertStyleRules(styleObject)) {\n return\n }\n updateRules(styleObject.identifier, styleObject.rules)\n rulesToInsert.push(styleObject)\n }\n}\n\nfunction processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nconst animatableDefaults = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\n rotateY: '0deg',\n rotateX: '0deg',\n}\n\nconst lowercaseHyphenate = (match: string) => `-${match.toLowerCase()}`\nconst hyphenate = (str: string) => str.replace(/[A-Z]/g, lowercaseHyphenate)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["val", "style", "conf"]
|
|
7
7
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
const empty = () => {
|
|
2
2
|
console.warn("no-op native");
|
|
3
|
-
}
|
|
4
|
-
const startClearStyleCacheInterval = () => {
|
|
5
3
|
};
|
|
4
|
+
const getStylesAtomic = empty;
|
|
5
|
+
const getAtomicStyle = empty;
|
|
6
|
+
const styleToCSS = empty;
|
|
6
7
|
export {
|
|
8
|
+
getAtomicStyle,
|
|
7
9
|
getStylesAtomic,
|
|
8
|
-
|
|
10
|
+
styleToCSS
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=getStylesAtomic.native.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/getStylesAtomic.native.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["const empty = () => {\n // eslint-disable-next-line no-console\n console.warn('no-op native')\n}\n\nexport const getStylesAtomic = empty\nexport const getAtomicStyle = empty\nexport const styleToCSS = empty\n"],
|
|
5
|
+
"mappings": "AAAA,MAAM,QAAQ,MAAM;AAElB,UAAQ,KAAK,cAAc;AAC7B;AAEO,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,aAAa;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/normalizeColor.ts"],
|
|
4
|
-
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport * as NCC from '@tamagui/normalize-css-color'\n\nexport const rgba = NCC.rgba\n\
|
|
5
|
-
"mappings": "AAAA,SAAS,aAAa;AACtB,YAAY,SAAS;AAEd,MAAM,OAAO,IAAI;
|
|
4
|
+
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport * as NCC from '@tamagui/normalize-css-color'\n\nexport const rgba = NCC.rgba\n\nexport const normalizeColor = (color?: string | null, opacity?: number) => {\n if (color === null || color === undefined) {\n return\n }\n if (color === 'transparent') {\n return `rgba(0,0,0,0)`\n }\n if (\n color[0] === '$' ||\n (isWeb && (webColors[color] || color[0] === '_' || color.startsWith('var(')))\n ) {\n return color\n }\n const colorProcessed = NCC.normalizeCSSColor(color)\n if (colorProcessed !== null) {\n const { r, g, b, a } = rgba(colorProcessed)\n return `rgba(${r},${g},${b},${(opacity ?? a).toFixed(2)})`\n }\n\n if (isWeb) {\n return color\n } else {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`Unknown color value: ${color}`)\n }\n }\n}\n\nconst webColors = {\n currentColor: true,\n currentcolor: true,\n inherit: true,\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,aAAa;AACtB,YAAY,SAAS;AAEd,MAAM,OAAO,IAAI;AAEjB,MAAM,iBAAiB,CAAC,OAAuB,YAAqB;AACzE,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC;AAAA,EACF;AACA,MAAI,UAAU,eAAe;AAC3B,WAAO;AAAA,EACT;AACA,MACE,MAAM,CAAC,MAAM,OACZ,UAAU,UAAU,KAAK,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,WAAW,MAAM,IAC1E;AACA,WAAO;AAAA,EACT;AACA,QAAM,iBAAiB,IAAI,kBAAkB,KAAK;AAClD,MAAI,mBAAmB,MAAM;AAC3B,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,cAAc;AAC1C,WAAO,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG,QAAQ,CAAC;AAAA,EACxD;AAEA,MAAI,OAAO;AACT,WAAO;AAAA,EACT,OAAO;AACL,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,cAAQ,KAAK,wBAAwB,OAAO;AAAA,IAC9C;AAAA,EACF;AACF;AAEA,MAAM,YAAY;AAAA,EAChB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,SAAS;AACX;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,25 +24,19 @@ const useTheme = (props = emptyProps) => {
|
|
|
24
24
|
return (isRSC ? null : (_a = useThemeWithState(props)) == null ? void 0 : _a.theme) || getDefaultThemeProxied();
|
|
25
25
|
};
|
|
26
26
|
const useThemeWithState = (props) => {
|
|
27
|
-
var _a
|
|
28
|
-
const
|
|
29
|
-
if (isClient && !state.current) {
|
|
30
|
-
state.current = {
|
|
31
|
-
keys: /* @__PURE__ */ new Set()
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
(_a = state.current) == null ? void 0 : _a.keys.clear();
|
|
27
|
+
var _a;
|
|
28
|
+
const keys = useServerRef([]);
|
|
35
29
|
const changedTheme = useChangeThemeEffect(
|
|
36
30
|
props,
|
|
37
31
|
false,
|
|
38
32
|
isClient ? () => {
|
|
39
33
|
var _a2;
|
|
40
|
-
return ((_a2 = props.shouldUpdate) == null ? void 0 : _a2.call(props)) ??
|
|
34
|
+
return ((_a2 = props.shouldUpdate) == null ? void 0 : _a2.call(props)) ?? keys.current.length === 0;
|
|
41
35
|
} : void 0
|
|
42
36
|
);
|
|
43
37
|
const { themeManager, isNewTheme, theme, name, className } = changedTheme;
|
|
44
38
|
if (process.env.NODE_ENV === "development") {
|
|
45
|
-
if (isWeb && isNewTheme && className === ((
|
|
39
|
+
if (isWeb && isNewTheme && className === ((_a = themeManager == null ? void 0 : themeManager.parentManager) == null ? void 0 : _a.state.className)) {
|
|
46
40
|
console.error("Should always change, duplicating ThemeMananger bug", themeManager);
|
|
47
41
|
}
|
|
48
42
|
if (props.debug === "verbose") {
|
|
@@ -71,7 +65,7 @@ const useThemeWithState = (props) => {
|
|
|
71
65
|
function getThemeProxied({
|
|
72
66
|
theme,
|
|
73
67
|
themeManager,
|
|
74
|
-
|
|
68
|
+
keys
|
|
75
69
|
}) {
|
|
76
70
|
return createProxy(theme, {
|
|
77
71
|
has(_, key) {
|
|
@@ -89,21 +83,23 @@ function getThemeProxied({
|
|
|
89
83
|
if (key === "undefined" || key === "__proto__" || key === "$typeof" || typeof key !== "string" || !themeManager) {
|
|
90
84
|
return Reflect.get(_, key);
|
|
91
85
|
}
|
|
86
|
+
const keyString = key;
|
|
92
87
|
if (key[0] === "$") {
|
|
93
88
|
key = key.slice(1);
|
|
94
89
|
}
|
|
95
90
|
const val = themeManager.getValue(key);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
91
|
+
const currentKeys = keys == null ? void 0 : keys.current;
|
|
92
|
+
if (val && currentKeys) {
|
|
93
|
+
return new Proxy(val, {
|
|
94
|
+
// when they touch the actual value we only track it
|
|
95
|
+
// if its a variable (web), its ignored!
|
|
96
|
+
get(_2, subkey) {
|
|
97
|
+
if (subkey === "val" && !currentKeys.includes(keyString)) {
|
|
98
|
+
currentKeys.push(keyString);
|
|
104
99
|
}
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
return Reflect.get(val, subkey);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
107
103
|
}
|
|
108
104
|
return val;
|
|
109
105
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useTheme.tsx"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-console */\nimport { isClient, isRSC, isServer, isWeb } from '@tamagui/constants'\nimport { useContext, useEffect, useMemo, useState } from 'react'\n\nimport { getConfig } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport { createProxy } from '../helpers/createProxy'\nimport {\n ThemeManager,\n ThemeManagerState,\n hasNoThemeUpdatingProps,\n} from '../helpers/ThemeManager'\nimport { ThemeManagerContext } from '../helpers/ThemeManagerContext'\nimport { ThemeParsed, ThemeProps } from '../types'\nimport { GetThemeUnwrapped } from './getThemeUnwrapped'\nimport { useServerRef } from './useServerHooks'\n\nexport type ChangedThemeResponse = {\n themeManager: ThemeManager | null\n name: string\n isNewTheme?: boolean\n theme?: ThemeParsed | null\n className?: string\n}\n\nconst emptyProps = { name: null }\n\nfunction getDefaultThemeProxied() {\n const config = getConfig()\n const name = Object.keys(config.themes)[0]\n return getThemeProxied({\n theme: config.themes[name],\n name,\n })\n}\n\
|
|
5
|
-
"mappings": "AACA,SAAS,UAAU,OAAO,UAAU,aAAa;AACjD,SAAS,YAAY,WAAW,SAAS,gBAAgB;AAEzD,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAU7B,MAAM,aAAa,EAAE,MAAM,KAAK;AAEhC,SAAS,yBAAyB;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,OAAO,OAAO,KAAK,OAAO,MAAM,EAAE,CAAC;AACzC,SAAO,gBAAgB;AAAA,IACrB,OAAO,OAAO,OAAO,IAAI;AAAA,IACzB;AAAA,EACF,CAAC;AACH;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-console */\nimport { isClient, isRSC, isServer, isWeb } from '@tamagui/constants'\nimport { useContext, useEffect, useMemo, useState } from 'react'\n\nimport { getConfig } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport { createProxy } from '../helpers/createProxy'\nimport {\n ThemeManager,\n ThemeManagerState,\n hasNoThemeUpdatingProps,\n} from '../helpers/ThemeManager'\nimport { ThemeManagerContext } from '../helpers/ThemeManagerContext'\nimport { ThemeParsed, ThemeProps } from '../types'\nimport { GetThemeUnwrapped } from './getThemeUnwrapped'\nimport { useServerRef } from './useServerHooks'\n\nexport type ChangedThemeResponse = {\n themeManager: ThemeManager | null\n name: string\n isNewTheme?: boolean\n theme?: ThemeParsed | null\n className?: string\n}\n\nconst emptyProps = { name: null }\n\nfunction getDefaultThemeProxied() {\n const config = getConfig()\n const name = Object.keys(config.themes)[0]\n return getThemeProxied({\n theme: config.themes[name],\n name,\n })\n}\n\nexport const useTheme = (props: ThemeProps = emptyProps): ThemeParsed => {\n return (isRSC ? null : useThemeWithState(props)?.theme) || getDefaultThemeProxied()\n}\n\nexport const useThemeWithState = (props: ThemeProps) => {\n const keys = useServerRef([])\n\n const changedTheme = useChangeThemeEffect(\n props,\n false,\n isClient\n ? () => {\n return props.shouldUpdate?.() ?? keys.current.length === 0\n }\n : undefined\n )\n\n const { themeManager, isNewTheme, theme, name, className } = changedTheme\n\n if (process.env.NODE_ENV === 'development') {\n // ensure we aren't creating too many ThemeManagers\n // prettier-ignore\n if (isWeb && isNewTheme && className === themeManager?.parentManager?.state.className) {\n console.error('Should always change, duplicating ThemeMananger bug', themeManager)\n }\n if (props.debug === 'verbose') {\n console.groupCollapsed(' \uD83D\uDD39 useTheme =>', name)\n const logs = { ...props, name, className, ...(isDevTools && { theme }) }\n for (const key in logs) {\n console.log(' ', key, logs[key])\n }\n console.groupEnd()\n }\n }\n\n if (!changedTheme.theme) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('No theme found', name, props, themeManager)\n }\n return null\n }\n\n const proxiedTheme = useMemo(() => {\n return getThemeProxied(changedTheme as any)\n }, [theme, isNewTheme, name, className, themeManager])\n\n return {\n ...changedTheme,\n theme: proxiedTheme,\n }\n}\n\nexport function getThemeProxied({\n theme,\n themeManager,\n keys,\n}: Partial<ChangedThemeResponse> & {\n theme: ThemeParsed\n keys?: React.RefObject<string[]>\n}) {\n return createProxy(theme, {\n has(_, key) {\n if (typeof key === 'string') {\n if (key[0] === '$') key = key.slice(1)\n return themeManager?.allKeys.has(key)\n }\n return Reflect.has(theme, key)\n },\n get(_, key) {\n if (key === GetThemeUnwrapped) {\n return theme\n }\n if (\n key === 'undefined' ||\n key === '__proto__' ||\n key === '$typeof' ||\n typeof key !== 'string' ||\n !themeManager\n ) {\n return Reflect.get(_, key)\n }\n const keyString = key\n // auto convert variables to plain\n if (key[0] === '$') {\n key = key.slice(1)\n }\n const val = themeManager.getValue(key)\n const currentKeys = keys?.current\n if (val && currentKeys) {\n return new Proxy(val as any, {\n // when they touch the actual value we only track it\n // if its a variable (web), its ignored!\n get(_, subkey) {\n if (subkey === 'val' && !currentKeys.includes(keyString)) {\n currentKeys.push(keyString)\n }\n return Reflect.get(val as any, subkey)\n },\n })\n }\n return val\n },\n })\n}\n\nexport const activeThemeManagers = new Set<ThemeManager>()\n\nexport const useChangeThemeEffect = (\n props: ThemeProps,\n root = false,\n disableUpdate?: () => boolean\n): ChangedThemeResponse => {\n if (isRSC) {\n // we need context working for this to work well\n return {\n ...createState().state,\n themeManager: null,\n }\n }\n const parentManager = useContext(ThemeManagerContext)\n\n const {\n debug,\n // @ts-expect-error internal use only\n disable,\n } = props\n\n if (disable) {\n if (!parentManager) throw `\u274C`\n return {\n ...parentManager.state,\n isNewTheme: false,\n themeManager: parentManager,\n }\n }\n\n type State = {\n isNewTheme: boolean\n state: ThemeManagerState\n themeManager: ThemeManager\n mounted?: boolean\n }\n\n const [themeState, setThemeState] = useState<State>(createState)\n const { isNewTheme, state, themeManager, mounted } = themeState\n\n if (!isServer) {\n useEffect(() => {\n if (disable) return\n // SSR safe inverse (because server can't know prefers scheme)\n // could be done through fancy selectors like how we do prefers-media\n // but may be a bit of explosion of selectors\n if (props.inverse && !mounted) {\n setThemeState({ ...themeState, mounted: true })\n return\n }\n activeThemeManagers.add(themeManager)\n // const disposeChangeListener = parentManager?.onChangeTheme((name, manager) => {\n // // console.log('hi', props, state, name, manager)\n // if (state.theme !== manager.state.theme) {\n // console.warn('now update to', manager.state.name)\n // updateState(manager)\n // }\n // })\n return () => {\n activeThemeManagers.delete(themeManager)\n // disposeChangeListener?.()\n }\n }, [disable, state, isNewTheme, debug])\n }\n\n const isInversingOnMount = Boolean(!themeState.mounted && props.inverse)\n const shouldReturnParentState = hasNoThemeUpdatingProps(props) || isInversingOnMount\n\n if (shouldReturnParentState) {\n if (!parentManager) throw 'impossible'\n // prettier-ignore\n if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') console.log('useTheme hasNoThemeUpdatingProps', parentManager.state.name, 'isInversingOnMount', isInversingOnMount)\n return {\n ...parentManager.state,\n className: isInversingOnMount ? '' : parentManager.state.className,\n themeManager: parentManager,\n isNewTheme: false,\n }\n }\n\n // run inline in render\n updateState()\n\n return {\n ...state,\n isNewTheme,\n themeManager,\n }\n\n function createState(prev?: State) {\n if (prev && disableUpdate?.()) {\n return prev\n }\n // returns previous theme manager if no change\n const _ = new ThemeManager(props, root ? 'root' : parentManager)\n const isNewTheme = _ !== parentManager\n // prettier-ignore\n\n // if (prev?.isNewTheme && _.state.theme !== parentManager?.state.theme) {\n // console.warn('notify')\n // _.notify()\n // }\n\n // only inverse relies on this for ssr\n const mounted = !props.inverse ? true : root || prev?.mounted\n return {\n // ThemeManager returns parentManager if no change\n isNewTheme,\n state: { ..._.state },\n themeManager: _,\n mounted,\n }\n }\n\n function updateState(updatingManager?: ThemeManager) {\n if (disableUpdate?.()) {\n return\n }\n const manager = updatingManager ?? themeManager\n const next = manager.getState(props, parentManager)\n const shouldChange = manager.getStateShouldChange(next, isNewTheme ? state : null)\n // console.log(`got it`, next, isNewTheme, shouldChange, { ...updatingManager?.state })\n if (shouldChange) {\n setThemeState(createState)\n } else {\n if (!next && parentManager?.state.name !== state.name) {\n // were changing back to parent state\n setThemeState(createState)\n }\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a", "_", "isNewTheme", "mounted"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/core",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.13",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,22 +27,22 @@
|
|
|
27
27
|
"reset.css"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/compose-refs": "^1.1.
|
|
31
|
-
"@tamagui/constants": "^1.1.
|
|
32
|
-
"@tamagui/helpers": "^1.1.
|
|
33
|
-
"@tamagui/normalize-css-color": "^1.1.
|
|
34
|
-
"@tamagui/react-native-use-pressable": "^1.1.
|
|
35
|
-
"@tamagui/react-native-use-responder-events": "^1.1.
|
|
36
|
-
"@tamagui/use-did-finish-ssr": "^1.1.
|
|
37
|
-
"@tamagui/use-event": "^1.1.
|
|
38
|
-
"@tamagui/use-force-update": "^1.1.
|
|
30
|
+
"@tamagui/compose-refs": "^1.1.13",
|
|
31
|
+
"@tamagui/constants": "^1.1.13",
|
|
32
|
+
"@tamagui/helpers": "^1.1.13",
|
|
33
|
+
"@tamagui/normalize-css-color": "^1.1.13",
|
|
34
|
+
"@tamagui/react-native-use-pressable": "^1.1.13",
|
|
35
|
+
"@tamagui/react-native-use-responder-events": "^1.1.13",
|
|
36
|
+
"@tamagui/use-did-finish-ssr": "^1.1.13",
|
|
37
|
+
"@tamagui/use-event": "^1.1.13",
|
|
38
|
+
"@tamagui/use-force-update": "^1.1.13"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": "*",
|
|
42
42
|
"react-dom": "*"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@tamagui/build": "^1.1.
|
|
45
|
+
"@tamagui/build": "^1.1.13",
|
|
46
46
|
"@testing-library/react": "^13.4.0",
|
|
47
47
|
"csstype": "^3.0.10",
|
|
48
48
|
"react": "^18.2.0",
|
|
@@ -356,7 +356,8 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
356
356
|
continue
|
|
357
357
|
}
|
|
358
358
|
|
|
359
|
-
|
|
359
|
+
const isMainStyle = keyInit === 'style'
|
|
360
|
+
if (isMainStyle || keyInit.startsWith('_style')) {
|
|
360
361
|
if (!valInit) continue
|
|
361
362
|
const styles = Array.isArray(valInit) ? valInit : [valInit]
|
|
362
363
|
const styleLen = styles.length
|
|
@@ -364,8 +365,9 @@ export const getSplitStyles: StyleSplitter = (
|
|
|
364
365
|
const cur = styles[j]
|
|
365
366
|
if (!cur) continue
|
|
366
367
|
for (const key in cur) {
|
|
367
|
-
|
|
368
|
-
|
|
368
|
+
if (!isMainStyle && usedKeys[key]) {
|
|
369
|
+
continue
|
|
370
|
+
}
|
|
369
371
|
usedKeys[key] = 1
|
|
370
372
|
style[key] = cur[key]
|
|
371
373
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
const empty = () => {
|
|
2
2
|
// eslint-disable-next-line no-console
|
|
3
3
|
console.warn('no-op native')
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
export const
|
|
6
|
+
export const getStylesAtomic = empty
|
|
7
|
+
export const getAtomicStyle = empty
|
|
8
|
+
export const styleToCSS = empty
|
|
@@ -3,8 +3,6 @@ import * as NCC from '@tamagui/normalize-css-color'
|
|
|
3
3
|
|
|
4
4
|
export const rgba = NCC.rgba
|
|
5
5
|
|
|
6
|
-
// export { rgba } from '@tamagui/normalize-css-color'
|
|
7
|
-
|
|
8
6
|
export const normalizeColor = (color?: string | null, opacity?: number) => {
|
|
9
7
|
if (color === null || color === undefined) {
|
|
10
8
|
return
|
package/src/hooks/useTheme.tsx
CHANGED
|
@@ -34,31 +34,19 @@ function getDefaultThemeProxied() {
|
|
|
34
34
|
})
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
interface UseThemeState {
|
|
38
|
-
keys: Set<string>
|
|
39
|
-
}
|
|
40
|
-
|
|
41
37
|
export const useTheme = (props: ThemeProps = emptyProps): ThemeParsed => {
|
|
42
38
|
return (isRSC ? null : useThemeWithState(props)?.theme) || getDefaultThemeProxied()
|
|
43
39
|
}
|
|
44
40
|
|
|
45
41
|
export const useThemeWithState = (props: ThemeProps) => {
|
|
46
|
-
const
|
|
47
|
-
if (isClient && !state.current) {
|
|
48
|
-
state.current = {
|
|
49
|
-
keys: new Set(),
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// clear at start of every render to track usages
|
|
54
|
-
state.current?.keys.clear()
|
|
42
|
+
const keys = useServerRef([])
|
|
55
43
|
|
|
56
44
|
const changedTheme = useChangeThemeEffect(
|
|
57
45
|
props,
|
|
58
46
|
false,
|
|
59
47
|
isClient
|
|
60
48
|
? () => {
|
|
61
|
-
return props.shouldUpdate?.() ??
|
|
49
|
+
return props.shouldUpdate?.() ?? keys.current.length === 0
|
|
62
50
|
}
|
|
63
51
|
: undefined
|
|
64
52
|
)
|
|
@@ -101,10 +89,10 @@ export const useThemeWithState = (props: ThemeProps) => {
|
|
|
101
89
|
export function getThemeProxied({
|
|
102
90
|
theme,
|
|
103
91
|
themeManager,
|
|
104
|
-
|
|
92
|
+
keys,
|
|
105
93
|
}: Partial<ChangedThemeResponse> & {
|
|
106
94
|
theme: ThemeParsed
|
|
107
|
-
|
|
95
|
+
keys?: React.RefObject<string[]>
|
|
108
96
|
}) {
|
|
109
97
|
return createProxy(theme, {
|
|
110
98
|
has(_, key) {
|
|
@@ -127,22 +115,24 @@ export function getThemeProxied({
|
|
|
127
115
|
) {
|
|
128
116
|
return Reflect.get(_, key)
|
|
129
117
|
}
|
|
118
|
+
const keyString = key
|
|
130
119
|
// auto convert variables to plain
|
|
131
120
|
if (key[0] === '$') {
|
|
132
121
|
key = key.slice(1)
|
|
133
122
|
}
|
|
134
123
|
const val = themeManager.getValue(key)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
|
|
124
|
+
const currentKeys = keys?.current
|
|
125
|
+
if (val && currentKeys) {
|
|
126
|
+
return new Proxy(val as any, {
|
|
127
|
+
// when they touch the actual value we only track it
|
|
128
|
+
// if its a variable (web), its ignored!
|
|
129
|
+
get(_, subkey) {
|
|
130
|
+
if (subkey === 'val' && !currentKeys.includes(keyString)) {
|
|
131
|
+
currentKeys.push(keyString)
|
|
132
|
+
}
|
|
133
|
+
return Reflect.get(val as any, subkey)
|
|
134
|
+
},
|
|
135
|
+
})
|
|
146
136
|
}
|
|
147
137
|
return val
|
|
148
138
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tamagui.d.ts","sourceRoot":"","sources":["../src/Tamagui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAS3C,cAAM,cAAc;IAClB,OAAO,iBAAU;IAEjB,IAAI,UAAU;;;MAEb;IAED,IAAI,MAAM;;;;;;;;;;;;uCAET;IAED,IAAI,aAAa,aAEhB;IAED,IAAI,YAAY,2BAEf;IAED,IAAI,aAAa,OAEhB;IAED,IAAI,iBAAiB,qBAEpB;CACF;AAED,eAAO,MAAM,OAAO,gBAAuB,CAAA;AAI3C,eAAO,MAAM,sBAAsB,eAAgB,MAAM,QAExD,CAAA;AAED,eAAO,MAAM,kBAAkB,eAAgB,MAAM,SAAS,GAAG,SAEhE,CAAA"}
|