@tamagui/web 1.9.13 → 1.9.14
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/createPropMapper.js +7 -0
- package/dist/cjs/helpers/createPropMapper.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +45 -32
- package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
- package/dist/esm/helpers/createPropMapper.js +7 -0
- package/dist/esm/helpers/createPropMapper.js.map +2 -2
- package/dist/esm/helpers/createPropMapper.mjs +7 -0
- package/dist/esm/helpers/createPropMapper.mjs.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +46 -32
- package/dist/esm/helpers/getSplitStyles.js.map +3 -3
- package/dist/esm/helpers/getSplitStyles.mjs +46 -32
- package/dist/esm/helpers/getSplitStyles.mjs.map +3 -3
- package/package.json +9 -9
- package/src/helpers/createPropMapper.ts +13 -0
- package/src/helpers/getSplitStyles.tsx +56 -30
- package/types/helpers/createPropMapper.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
|
@@ -45,6 +45,13 @@ const createPropMapper = (staticConfig) => {
|
|
|
45
45
|
const props = state.fallbackProps || propsIn;
|
|
46
46
|
const returnVariablesAs = getReturnVariablesAs(props, state);
|
|
47
47
|
const fontFamily = props[conf.inverseShorthands.fontFamily] || props.fontFamily || defaultProps.fontFamily || propsIn.fontFamily || "$body";
|
|
48
|
+
if (process.env.NODE_ENV === "development" && fontFamily && fontFamily[0] === "$" && !(fontFamily in conf.fontsParsed)) {
|
|
49
|
+
console.warn(
|
|
50
|
+
`Warning: no fontFamily "${fontFamily}" found in config: ${Object.keys(
|
|
51
|
+
conf.fontsParsed
|
|
52
|
+
).join(", ")}`
|
|
53
|
+
);
|
|
54
|
+
}
|
|
48
55
|
const variantValue = resolveVariants(
|
|
49
56
|
key,
|
|
50
57
|
value,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/createPropMapper.ts"],
|
|
4
|
-
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\n\nimport { getConfig } from '../config.js'\nimport { isDevTools } from '../constants/isDevTools.js'\nimport { Variable, getVariableValue, isVariable } from '../createVariable.js'\nimport type {\n DebugProp,\n GenericVariantDefinitions,\n PropMapper,\n SplitStyleState,\n StaticConfigParsed,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types.js'\nimport type { LanguageContextType } from '../views/FontLanguage.types.js'\nimport { expandStyle } from './expandStyle.js'\nimport { expandStyles } from './expandStyles.js'\nimport { getFontsForLanguage, getVariantExtras } from './getVariantExtras.js'\nimport { isObj } from './isObj.js'\nimport { mergeProps } from './mergeProps.js'\n\nexport type ResolveVariableTypes =\n | 'auto'\n | 'value'\n | 'variable'\n | 'both'\n | 'non-color-value'\n\nexport const getReturnVariablesAs = (props: any, state: Partial<SplitStyleState>) => {\n return !!props.animation || state.resolveVariablesAs === 'value' ? 'value' : 'auto'\n}\n\nexport const createPropMapper = (staticConfig: StaticConfigParsed) => {\n const variants = staticConfig.variants || {}\n\n // temp remove classnames\n const defaultProps = mergeProps(staticConfig.defaultProps || {}, {}, false)[0]\n\n let conf: TamaguiInternalConfig\n\n const mapper: PropMapper = (\n key,\n value,\n theme,\n propsIn,\n state,\n languageContext,\n avoidDefaultProps = false,\n debug\n ) => {\n conf ||= getConfig()\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs = getReturnVariablesAs(props, state)\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n const fontFamily =\n props[conf.inverseShorthands.fontFamily] ||\n props.fontFamily ||\n defaultProps.fontFamily ||\n propsIn.fontFamily ||\n '$body'\n\n const variantValue = resolveVariants(\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n '',\n languageContext,\n avoidDefaultProps,\n debug\n )\n\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (key in conf.shorthands) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n value = getToken(\n key,\n value,\n conf,\n theme,\n fontFamily,\n languageContext,\n returnVariablesAs,\n debug\n )\n } else if (isVariable(value)) {\n value = resolveVariableValue(key, value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return expandStyle(key, value) || [[key, value]]\n }\n }\n\n return mapper\n}\n\ntype StyleResolver = (\n key: string,\n value: any,\n props: Record<string, any>,\n defaultProps: any,\n theme: any,\n variants: GenericVariantDefinitions,\n fontFamily: string,\n conf: TamaguiInternalConfig,\n returnVariablesAs: 'auto' | 'value' | 'non-color-value',\n staticConfig: StaticConfigParsed,\n parentVariantKey: string,\n languageContext?: LanguageContextType,\n avoidDefaultProps?: boolean,\n debug?: DebugProp\n) => any\n\nconst resolveVariants: StyleResolver = (\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps = false,\n debug\n) => {\n const variant = variants?.[key]\n if (!variant || value === undefined) {\n return\n }\n\n let variantValue = getVariantDefinition(variant, key, value, conf)\n\n if (!variantValue) {\n // variant at key exists, but no matching variant value, return nothing\n if (process.env.NODE_ENV === 'development') {\n if (staticConfig.validStyles?.[key]) {\n return null\n }\n if (typeof value === 'boolean') {\n // don't warn on missing boolean values, common to only one of true/false\n return null\n }\n const name = staticConfig.componentName || '[UnnamedComponent]'\n // eslint-disable-next-line no-console\n console.warn(\n `No variant found: ${name} has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return\n }\n\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(\n value,\n getVariantExtras(props, languageContext, theme, defaultProps, avoidDefaultProps)\n )\n }\n\n let fontFamilyResult: any\n\n if (isObj(variantValue)) {\n const fontFamilyUpdate =\n variantValue.fontFamily || variantValue[conf.inverseShorthands.fontFamily]\n\n if (fontFamilyUpdate) {\n fontFamilyResult = getFontFamilyFromNameOrVariable(fontFamilyUpdate, conf)\n }\n\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamilyResult || fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps,\n debug\n )\n }\n\n if (variantValue) {\n const next = Object.entries(expandStyles(variantValue))\n\n // store any changed font family (only support variables for now)\n if (fontFamilyResult && fontFamilyResult[0] === '$') {\n fontFamilyCache.set(next, getVariableValue(fontFamilyResult))\n }\n\n return next\n }\n}\n\n// handles finding and resolving the fontFamily to the token name\n// this is used as `font_[name]` in className for nice css variable support\nexport function getFontFamilyFromNameOrVariable(input: any, conf: TamaguiInternalConfig) {\n if (isVariable(input)) {\n const val = variableToFontNameCache.get(input)\n if (val) {\n return val\n } else {\n for (const key in conf.fontsParsed) {\n const familyVariable = conf.fontsParsed[key].family\n if (isVariable(familyVariable)) {\n variableToFontNameCache.set(familyVariable, key)\n if (familyVariable === input) {\n return key\n }\n }\n }\n }\n } else if (typeof input === 'string') {\n if (input?.[0] === '$') {\n return input\n } else {\n // this could be mapped back to\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.log('[tamagui] should map back', input)\n }\n }\n }\n}\n\nconst variableToFontNameCache = new WeakMap<Variable, string>()\n\n// special helper for special font family\nconst fontFamilyCache = new WeakMap()\nexport const getPropMappedFontFamily = (expanded?: any) => {\n return expanded && fontFamilyCache.get(expanded)\n}\n\nconst resolveTokensAndVariants: StyleResolver = (\n key, // we dont use key assume value is object instead\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps,\n debug\n) => {\n const res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n\n if (fKey in variants) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey && parentVariantKey === key) {\n res[fKey] = val\n } else {\n const variantOut = resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n languageContext,\n avoidDefaultProps,\n debug\n )\n\n const { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle, ...rest } =\n Object.fromEntries(variantOut)\n const subs = { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle }\n Object.assign(res, rest)\n for (const key in subs) {\n if (subs[key]) {\n res[key] ??= {}\n Object.assign(res[key], subs[key])\n }\n }\n }\n continue\n }\n\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n continue\n }\n\n if (typeof val === 'string') {\n const fVal =\n val[0] === '$'\n ? getToken(\n fKey,\n val,\n conf,\n theme,\n fontFamily,\n languageContext,\n returnVariablesAs,\n debug\n )\n : val\n res[fKey] = fVal\n continue\n }\n\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] ??= {}\n Object.assign(\n res[fKey],\n resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n languageContext,\n avoidDefaultProps,\n debug\n )\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = val\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n if (res[fKey]?.[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey], theme)\n }\n }\n }\n }\n\n return res\n}\n\nconst tokenCats = ['size', 'color', 'radius', 'space', 'zIndex'].map((name) => ({\n name,\n spreadName: `...${name}`,\n}))\n\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(\n variant: any,\n key: string,\n value: any,\n conf: TamaguiInternalConfig\n) {\n if (typeof variant === 'function') {\n return variant\n }\n if (variant[value]) {\n return variant[value]\n }\n const { tokensParsed } = conf\n for (const { name, spreadName } of tokenCats) {\n if (variant[spreadName] && value in tokensParsed[name]) {\n return variant[spreadName]\n }\n }\n let fn: any\n const type = typeof value\n if (type === 'number') {\n fn = variant[':number']\n } else if (type === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n // fallback to catch all or size\n return fn || variant['...'] || variant['...size']\n}\n\nconst fontShorthand = {\n fontSize: 'size',\n fontWeight: 'weight',\n}\n\nconst getToken = (\n key: string,\n value: string,\n conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n languageContext?: LanguageContextType,\n resolveAs?: ResolveVariableTypes,\n debug?: DebugProp\n) => {\n const tokensParsed = conf.tokensParsed\n const fontsParsed = languageContext\n ? getFontsForLanguage(conf.fontsParsed, languageContext)\n : conf.fontsParsed\n let valOrVar: any\n let hasSet = false\n if (value in theme) {\n valOrVar = theme[value]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = fontsParsed[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n case 'lineHeight':\n case 'letterSpacing':\n case 'fontWeight':\n valOrVar = fontsParsed[fontFamily]?.[fontShorthand[key] || key]?.[value] || value\n hasSet = true\n break\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const res = tokensParsed[cat][value]\n if (res) {\n valOrVar = res\n hasSet = true\n }\n }\n }\n if (!hasSet) {\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n valOrVar = spaceVar\n hasSet = true\n }\n }\n }\n\n if (process.env.NODE_ENV === 'development' && isDevTools && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.log(' \uFE52 propMapper getToken', { key, valOrVar, theme, hasSet })\n }\n\n if (hasSet) {\n return resolveVariableValue(key, valOrVar, resolveAs)\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(\n `\u26A0\uFE0F You passed the value \"${value}\" to the style property \"${key}\", but there's no theme or token with the key \"${value}\". Using theme \"${theme.name}\".\n\nSet the debug prop to true to see more detailed debug information.`\n )\n if (debug) {\n if (isDevTools) {\n // eslint-disable-next-line no-console\n console.log('Looked in:', { theme, tokensParsed, fontsParsed })\n }\n }\n return null\n }\n }\n return value\n}\n\nfunction resolveVariableValue(\n key: string,\n valOrVar: Variable | any,\n resolveAs: ResolveVariableTypes = 'auto'\n) {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (resolveAs === 'non-color-value') {\n if (isWeb) {\n if (key in tokenCategories.color) {\n return valOrVar.variable\n }\n }\n return valOrVar.val\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\n\n// TODO move to validStyleProps to merge\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n radius: {\n borderRadius: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB;AAEtB,oBAA0B;AAC1B,wBAA2B;AAC3B,4BAAuD;AAWvD,yBAA4B;AAC5B,0BAA6B;AAC7B,8BAAsD;AACtD,mBAAsB;AACtB,wBAA2B;AASpB,MAAM,uBAAuB,CAAC,OAAY,UAAoC;AACnF,SAAO,CAAC,CAAC,MAAM,aAAa,MAAM,uBAAuB,UAAU,UAAU;AAC/E;AAEO,MAAM,mBAAmB,CAAC,iBAAqC;AACpE,QAAM,WAAW,aAAa,YAAY,CAAC;AAG3C,QAAM,mBAAe,8BAAW,aAAa,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;AAE7E,MAAI;AAEJ,QAAM,SAAqB,CACzB,KACA,OACA,OACA,SACA,OACA,iBACA,oBAAoB,OACpB,UACG;AACH,wBAAS,yBAAU;AAEnB,UAAM,QAAQ,MAAM,iBAAiB;AACrC,UAAM,oBAAoB,qBAAqB,OAAO,KAAK;AAG3D,UAAM,aACJ,MAAM,KAAK,kBAAkB,UAAU,KACvC,MAAM,cACN,aAAa,cACb,QAAQ,cACR;AAEF,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,UAAU,UAAa,UAAU;AAGpD,QAAI,OAAO,KAAK,YAAY;AAC1B,qBAAe;AACf,YAAM,KAAK,WAAW,GAAG;AAAA,IAC3B;AAEA,QAAI,OAAO;AACT,UAAI,MAAM,CAAC,MAAM,KAAK;AACpB,gBAAQ;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF,eAAW,kCAAW,KAAK,GAAG;AAC5B,gBAAQ,qBAAqB,KAAK,OAAO,iBAAiB;AAAA,MAC5D;AAAA,IACF;AAEA,QAAI,cAAc;AAChB,iBAAO,gCAAY,KAAK,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAAA,IACjD;AAAA,EACF;AAEA,SAAO;AACT;AAmBA,MAAM,kBAAiC,CACrC,KACA,OACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,kBACA,iBACA,oBAAoB,OACpB,UACG;
|
|
4
|
+
"sourcesContent": ["import { isWeb } from '@tamagui/constants'\n\nimport { getConfig } from '../config.js'\nimport { isDevTools } from '../constants/isDevTools.js'\nimport { Variable, getVariableValue, isVariable } from '../createVariable.js'\nimport type {\n DebugProp,\n GenericVariantDefinitions,\n PropMapper,\n SplitStyleState,\n StaticConfigParsed,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types.js'\nimport type { LanguageContextType } from '../views/FontLanguage.types.js'\nimport { expandStyle } from './expandStyle.js'\nimport { expandStyles } from './expandStyles.js'\nimport { getFontsForLanguage, getVariantExtras } from './getVariantExtras.js'\nimport { isObj } from './isObj.js'\nimport { mergeProps } from './mergeProps.js'\n\nexport type ResolveVariableTypes =\n | 'auto'\n | 'value'\n | 'variable'\n | 'both'\n | 'non-color-value'\n\nexport const getReturnVariablesAs = (props: any, state: Partial<SplitStyleState>) => {\n return !!props.animation || state.resolveVariablesAs === 'value' ? 'value' : 'auto'\n}\n\nexport const createPropMapper = (staticConfig: StaticConfigParsed) => {\n const variants = staticConfig.variants || {}\n\n // temp remove classnames\n const defaultProps = mergeProps(staticConfig.defaultProps || {}, {}, false)[0]\n\n let conf: TamaguiInternalConfig\n\n const mapper: PropMapper = (\n key,\n value,\n theme,\n propsIn,\n state,\n languageContext,\n avoidDefaultProps = false,\n debug\n ) => {\n conf ||= getConfig()\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs = getReturnVariablesAs(props, state)\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n const fontFamily =\n props[conf.inverseShorthands.fontFamily] ||\n props.fontFamily ||\n defaultProps.fontFamily ||\n propsIn.fontFamily ||\n '$body'\n\n if (\n process.env.NODE_ENV === 'development' &&\n fontFamily &&\n fontFamily[0] === '$' &&\n !(fontFamily in conf.fontsParsed)\n ) {\n console.warn(\n `Warning: no fontFamily \"${fontFamily}\" found in config: ${Object.keys(\n conf.fontsParsed\n ).join(', ')}`\n )\n }\n\n const variantValue = resolveVariants(\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n '',\n languageContext,\n avoidDefaultProps,\n debug\n )\n\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (key in conf.shorthands) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n value = getToken(\n key,\n value,\n conf,\n theme,\n fontFamily,\n languageContext,\n returnVariablesAs,\n debug\n )\n } else if (isVariable(value)) {\n value = resolveVariableValue(key, value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return expandStyle(key, value) || [[key, value]]\n }\n }\n\n return mapper\n}\n\ntype StyleResolver = (\n key: string,\n value: any,\n props: Record<string, any>,\n defaultProps: any,\n theme: any,\n variants: GenericVariantDefinitions,\n fontFamily: string,\n conf: TamaguiInternalConfig,\n returnVariablesAs: 'auto' | 'value' | 'non-color-value',\n staticConfig: StaticConfigParsed,\n parentVariantKey: string,\n languageContext?: LanguageContextType,\n avoidDefaultProps?: boolean,\n debug?: DebugProp\n) => any\n\nconst resolveVariants: StyleResolver = (\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps = false,\n debug\n) => {\n const variant = variants?.[key]\n if (!variant || value === undefined) {\n return\n }\n\n let variantValue = getVariantDefinition(variant, key, value, conf)\n\n if (!variantValue) {\n // variant at key exists, but no matching variant value, return nothing\n if (process.env.NODE_ENV === 'development') {\n if (staticConfig.validStyles?.[key]) {\n return null\n }\n if (typeof value === 'boolean') {\n // don't warn on missing boolean values, common to only one of true/false\n return null\n }\n const name = staticConfig.componentName || '[UnnamedComponent]'\n // eslint-disable-next-line no-console\n console.warn(\n `No variant found: ${name} has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return\n }\n\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(\n value,\n getVariantExtras(props, languageContext, theme, defaultProps, avoidDefaultProps)\n )\n }\n\n let fontFamilyResult: any\n\n if (isObj(variantValue)) {\n const fontFamilyUpdate =\n variantValue.fontFamily || variantValue[conf.inverseShorthands.fontFamily]\n\n if (fontFamilyUpdate) {\n fontFamilyResult = getFontFamilyFromNameOrVariable(fontFamilyUpdate, conf)\n }\n\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamilyResult || fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps,\n debug\n )\n }\n\n if (variantValue) {\n const next = Object.entries(expandStyles(variantValue))\n\n // store any changed font family (only support variables for now)\n if (fontFamilyResult && fontFamilyResult[0] === '$') {\n fontFamilyCache.set(next, getVariableValue(fontFamilyResult))\n }\n\n return next\n }\n}\n\n// handles finding and resolving the fontFamily to the token name\n// this is used as `font_[name]` in className for nice css variable support\nexport function getFontFamilyFromNameOrVariable(input: any, conf: TamaguiInternalConfig) {\n if (isVariable(input)) {\n const val = variableToFontNameCache.get(input)\n if (val) {\n return val\n } else {\n for (const key in conf.fontsParsed) {\n const familyVariable = conf.fontsParsed[key].family\n if (isVariable(familyVariable)) {\n variableToFontNameCache.set(familyVariable, key)\n if (familyVariable === input) {\n return key\n }\n }\n }\n }\n } else if (typeof input === 'string') {\n if (input?.[0] === '$') {\n return input\n } else {\n // this could be mapped back to\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.log('[tamagui] should map back', input)\n }\n }\n }\n}\n\nconst variableToFontNameCache = new WeakMap<Variable, string>()\n\n// special helper for special font family\nconst fontFamilyCache = new WeakMap()\nexport const getPropMappedFontFamily = (expanded?: any) => {\n return expanded && fontFamilyCache.get(expanded)\n}\n\nconst resolveTokensAndVariants: StyleResolver = (\n key, // we dont use key assume value is object instead\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps,\n debug\n) => {\n const res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n\n if (fKey in variants) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey && parentVariantKey === key) {\n res[fKey] = val\n } else {\n const variantOut = resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n languageContext,\n avoidDefaultProps,\n debug\n )\n\n const { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle, ...rest } =\n Object.fromEntries(variantOut)\n const subs = { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle }\n Object.assign(res, rest)\n for (const key in subs) {\n if (subs[key]) {\n res[key] ??= {}\n Object.assign(res[key], subs[key])\n }\n }\n }\n continue\n }\n\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n continue\n }\n\n if (typeof val === 'string') {\n const fVal =\n val[0] === '$'\n ? getToken(\n fKey,\n val,\n conf,\n theme,\n fontFamily,\n languageContext,\n returnVariablesAs,\n debug\n )\n : val\n res[fKey] = fVal\n continue\n }\n\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] ??= {}\n Object.assign(\n res[fKey],\n resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n languageContext,\n avoidDefaultProps,\n debug\n )\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = val\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n if (res[fKey]?.[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey], theme)\n }\n }\n }\n }\n\n return res\n}\n\nconst tokenCats = ['size', 'color', 'radius', 'space', 'zIndex'].map((name) => ({\n name,\n spreadName: `...${name}`,\n}))\n\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(\n variant: any,\n key: string,\n value: any,\n conf: TamaguiInternalConfig\n) {\n if (typeof variant === 'function') {\n return variant\n }\n if (variant[value]) {\n return variant[value]\n }\n const { tokensParsed } = conf\n for (const { name, spreadName } of tokenCats) {\n if (variant[spreadName] && value in tokensParsed[name]) {\n return variant[spreadName]\n }\n }\n let fn: any\n const type = typeof value\n if (type === 'number') {\n fn = variant[':number']\n } else if (type === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n // fallback to catch all or size\n return fn || variant['...'] || variant['...size']\n}\n\nconst fontShorthand = {\n fontSize: 'size',\n fontWeight: 'weight',\n}\n\nconst getToken = (\n key: string,\n value: string,\n conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n languageContext?: LanguageContextType,\n resolveAs?: ResolveVariableTypes,\n debug?: DebugProp\n) => {\n const tokensParsed = conf.tokensParsed\n const fontsParsed = languageContext\n ? getFontsForLanguage(conf.fontsParsed, languageContext)\n : conf.fontsParsed\n let valOrVar: any\n let hasSet = false\n if (value in theme) {\n valOrVar = theme[value]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = fontsParsed[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n case 'lineHeight':\n case 'letterSpacing':\n case 'fontWeight':\n valOrVar = fontsParsed[fontFamily]?.[fontShorthand[key] || key]?.[value] || value\n hasSet = true\n break\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const res = tokensParsed[cat][value]\n if (res) {\n valOrVar = res\n hasSet = true\n }\n }\n }\n if (!hasSet) {\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n valOrVar = spaceVar\n hasSet = true\n }\n }\n }\n\n if (process.env.NODE_ENV === 'development' && isDevTools && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.log(' \uFE52 propMapper getToken', { key, valOrVar, theme, hasSet })\n }\n\n if (hasSet) {\n return resolveVariableValue(key, valOrVar, resolveAs)\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(\n `\u26A0\uFE0F You passed the value \"${value}\" to the style property \"${key}\", but there's no theme or token with the key \"${value}\". Using theme \"${theme.name}\".\n\nSet the debug prop to true to see more detailed debug information.`\n )\n if (debug) {\n if (isDevTools) {\n // eslint-disable-next-line no-console\n console.log('Looked in:', { theme, tokensParsed, fontsParsed })\n }\n }\n return null\n }\n }\n return value\n}\n\nfunction resolveVariableValue(\n key: string,\n valOrVar: Variable | any,\n resolveAs: ResolveVariableTypes = 'auto'\n) {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (resolveAs === 'non-color-value') {\n if (isWeb) {\n if (key in tokenCategories.color) {\n return valOrVar.variable\n }\n }\n return valOrVar.val\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\n\n// TODO move to validStyleProps to merge\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n radius: {\n borderRadius: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["key"]
|
|
7
7
|
}
|
|
@@ -122,7 +122,7 @@ const accessibilityRoleToWebRole = {
|
|
|
122
122
|
};
|
|
123
123
|
const isMediaKey = (key) => Boolean(key[0] === "$" && import_useMedia.mediaKeysWithAndWithout$.has(key));
|
|
124
124
|
const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, languageContext, elementType, debug) => {
|
|
125
|
-
var _a, _b, _c
|
|
125
|
+
var _a, _b, _c;
|
|
126
126
|
if (cache.has(props)) {
|
|
127
127
|
return cache.get(props);
|
|
128
128
|
}
|
|
@@ -187,11 +187,11 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
const specialProps = [];
|
|
191
|
+
function processProp(keyInit, valInit, special = false, fontFamilyOverride = null) {
|
|
192
|
+
var _a2;
|
|
192
193
|
if (keyInit === "className")
|
|
193
|
-
|
|
194
|
-
let valInit = props[keyInit];
|
|
194
|
+
return;
|
|
195
195
|
if (keyInit in shorthands) {
|
|
196
196
|
keyInit = shorthands[keyInit];
|
|
197
197
|
}
|
|
@@ -200,16 +200,16 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
200
200
|
keyInit = "selectable";
|
|
201
201
|
valInit = valInit === "none" ? false : true;
|
|
202
202
|
} else if (keyInit.startsWith("data-") || keyInit.startsWith("aria-")) {
|
|
203
|
-
|
|
203
|
+
return;
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
if (!staticConfig.isHOC) {
|
|
207
207
|
if (keyInit in skipProps) {
|
|
208
|
-
|
|
208
|
+
return;
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
if (keyInit in usedKeys) {
|
|
212
|
-
|
|
212
|
+
return;
|
|
213
213
|
}
|
|
214
214
|
if (typeof valInit === "string" && valInit[0] === "_") {
|
|
215
215
|
if (keyInit in validStyleProps || keyInit.includes("-")) {
|
|
@@ -219,34 +219,34 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
219
219
|
style[keyInit] = (0, import_normalizeValueWithProperty.reverseMapClassNameToValue)(keyInit, valInit);
|
|
220
220
|
}
|
|
221
221
|
usedKeys[keyInit] = 1;
|
|
222
|
-
|
|
222
|
+
return;
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
if (keyInit === "dataSet") {
|
|
226
226
|
for (const key in valInit) {
|
|
227
227
|
viewProps[`data-${hyphenate(key)}`] = valInit[key];
|
|
228
228
|
}
|
|
229
|
-
|
|
229
|
+
return;
|
|
230
230
|
}
|
|
231
231
|
const isMainStyle = keyInit === "style";
|
|
232
232
|
if (isMainStyle || keyInit.startsWith("_style")) {
|
|
233
233
|
if (!valInit)
|
|
234
|
-
|
|
234
|
+
return;
|
|
235
235
|
const styles = Array.isArray(valInit) ? valInit : [valInit];
|
|
236
236
|
const styleLen = styles.length;
|
|
237
237
|
for (let j = styleLen; j >= 0; j--) {
|
|
238
238
|
const cur = styles[j];
|
|
239
239
|
if (!cur)
|
|
240
|
-
|
|
240
|
+
return;
|
|
241
241
|
for (const key in cur) {
|
|
242
242
|
if (!isMainStyle && usedKeys[key]) {
|
|
243
|
-
|
|
243
|
+
return;
|
|
244
244
|
}
|
|
245
245
|
usedKeys[key] = 1;
|
|
246
246
|
style[key] = cur[key];
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
|
|
249
|
+
return;
|
|
250
250
|
}
|
|
251
251
|
if (process.env.TAMAGUI_TARGET === "web") {
|
|
252
252
|
if (keyInit === "disabled" && valInit === true) {
|
|
@@ -256,13 +256,13 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
256
256
|
viewProps.disabled = true;
|
|
257
257
|
}
|
|
258
258
|
if (!(variants == null ? void 0 : variants.disabled)) {
|
|
259
|
-
|
|
259
|
+
return;
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
if (keyInit === "testID") {
|
|
263
263
|
usedKeys[keyInit] = 1;
|
|
264
264
|
viewProps[isReactNative ? "testId" : "data-testid"] = valInit;
|
|
265
|
-
|
|
265
|
+
return;
|
|
266
266
|
}
|
|
267
267
|
if (keyInit === "id" || keyInit === "nativeID") {
|
|
268
268
|
usedKeys[keyInit] = 1;
|
|
@@ -271,14 +271,14 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
271
271
|
} else {
|
|
272
272
|
viewProps.id = valInit;
|
|
273
273
|
}
|
|
274
|
-
|
|
274
|
+
return;
|
|
275
275
|
}
|
|
276
276
|
let didUseKeyInit = false;
|
|
277
277
|
if (isReactNative) {
|
|
278
278
|
if (accessibilityDirectMap[keyInit] || keyInit.startsWith("accessibility")) {
|
|
279
279
|
viewProps[keyInit] = valInit;
|
|
280
280
|
usedKeys[keyInit] = 1;
|
|
281
|
-
|
|
281
|
+
return;
|
|
282
282
|
}
|
|
283
283
|
} else {
|
|
284
284
|
didUseKeyInit = true;
|
|
@@ -292,38 +292,38 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
292
292
|
} else {
|
|
293
293
|
viewProps.role = accessibilityRoleToWebRole[valInit] || valInit;
|
|
294
294
|
}
|
|
295
|
-
|
|
295
|
+
return;
|
|
296
296
|
}
|
|
297
297
|
case "accessibilityLabelledBy":
|
|
298
298
|
case "accessibilityFlowTo":
|
|
299
299
|
case "accessibilityControls":
|
|
300
300
|
case "accessibilityDescribedBy": {
|
|
301
301
|
viewProps[`aria-${keyInit.replace("accessibility", "").toLowerCase()}`] = processIDRefList(valInit);
|
|
302
|
-
|
|
302
|
+
return;
|
|
303
303
|
}
|
|
304
304
|
case "accessibilityKeyShortcuts": {
|
|
305
305
|
if (Array.isArray(valInit)) {
|
|
306
306
|
viewProps["aria-keyshortcuts"] = valInit.join(" ");
|
|
307
307
|
}
|
|
308
|
-
|
|
308
|
+
return;
|
|
309
309
|
}
|
|
310
310
|
case "accessibilityLiveRegion": {
|
|
311
311
|
viewProps["aria-live"] = valInit === "none" ? "off" : valInit;
|
|
312
|
-
|
|
312
|
+
return;
|
|
313
313
|
}
|
|
314
314
|
case "accessibilityReadOnly": {
|
|
315
315
|
viewProps["aria-readonly"] = valInit;
|
|
316
316
|
if (elementType === "input" || elementType === "select" || elementType === "textarea") {
|
|
317
317
|
viewProps.readOnly = true;
|
|
318
318
|
}
|
|
319
|
-
|
|
319
|
+
return;
|
|
320
320
|
}
|
|
321
321
|
case "accessibilityRequired": {
|
|
322
322
|
viewProps["aria-required"] = valInit;
|
|
323
323
|
if (elementType === "input" || elementType === "select" || elementType === "textarea") {
|
|
324
324
|
viewProps.required = valInit;
|
|
325
325
|
}
|
|
326
|
-
|
|
326
|
+
return;
|
|
327
327
|
}
|
|
328
328
|
default: {
|
|
329
329
|
didUseKeyInit = false;
|
|
@@ -333,7 +333,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
333
333
|
}
|
|
334
334
|
if (didUseKeyInit) {
|
|
335
335
|
usedKeys[keyInit] = 1;
|
|
336
|
-
|
|
336
|
+
return;
|
|
337
337
|
}
|
|
338
338
|
if (valInit && valInit[0] === "_") {
|
|
339
339
|
const isValidClassName = keyInit in import_helpers.validStyles;
|
|
@@ -344,7 +344,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
344
344
|
console.log("tamagui classname props", keyInit, valInit);
|
|
345
345
|
}
|
|
346
346
|
mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo);
|
|
347
|
-
|
|
347
|
+
return;
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
350
|
}
|
|
@@ -352,7 +352,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
352
352
|
let isPseudo = keyInit in import_helpers.validPseudoKeys;
|
|
353
353
|
const isVariant = variants && keyInit in variants;
|
|
354
354
|
const shouldPassProp = !(isMedia || isPseudo || isVariant || keyInit in validStyleProps || keyInit in shorthands);
|
|
355
|
-
const parentHasVariant = ((
|
|
355
|
+
const parentHasVariant = ((_a2 = staticConfig.parentStaticConfig) == null ? void 0 : _a2.variants) && keyInit in staticConfig.parentStaticConfig;
|
|
356
356
|
const isHOCShouldPassThrough = staticConfig.isHOC && (isMedia || isPseudo);
|
|
357
357
|
const shouldPassThrough = shouldPassProp || isHOCShouldPassThrough || parentHasVariant;
|
|
358
358
|
if (process.env.NODE_ENV === "development" && debug === "verbose" && shouldPassThrough) {
|
|
@@ -362,7 +362,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
362
362
|
usedKeys[keyInit] = 1;
|
|
363
363
|
viewProps[keyInit] = valInit;
|
|
364
364
|
if (!isVariant) {
|
|
365
|
-
|
|
365
|
+
return;
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
if (process.env.NODE_ENV === "development" && debug === "verbose") {
|
|
@@ -372,7 +372,7 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
372
372
|
keyInit,
|
|
373
373
|
valInit,
|
|
374
374
|
theme,
|
|
375
|
-
props,
|
|
375
|
+
special ? { ...props, fontFamily: fontFamilyOverride } : props,
|
|
376
376
|
state,
|
|
377
377
|
languageContext,
|
|
378
378
|
void 0,
|
|
@@ -390,10 +390,14 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
390
390
|
console.groupEnd();
|
|
391
391
|
}
|
|
392
392
|
if (!expanded)
|
|
393
|
-
|
|
393
|
+
return;
|
|
394
394
|
for (const [key, val] of expanded) {
|
|
395
395
|
if (val === void 0)
|
|
396
396
|
continue;
|
|
397
|
+
if (key in import_helpers.stylePropsFont && !special && key !== "fontFamily") {
|
|
398
|
+
specialProps.push([key, val]);
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
397
401
|
isMedia = isMediaKey(key);
|
|
398
402
|
isPseudo = key in import_helpers.validPseudoKeys;
|
|
399
403
|
const isMediaOrPseudo = isMedia || isPseudo;
|
|
@@ -589,15 +593,24 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
|
|
|
589
593
|
}
|
|
590
594
|
}
|
|
591
595
|
}
|
|
596
|
+
for (let i = len - 1; i >= 0; i--) {
|
|
597
|
+
const keyInit = propKeys[i];
|
|
598
|
+
const valInit = props[keyInit];
|
|
599
|
+
processProp(keyInit, valInit);
|
|
600
|
+
}
|
|
601
|
+
for (let i = 0; i < specialProps.length; i++) {
|
|
602
|
+
const [key, value] = specialProps[i];
|
|
603
|
+
processProp(key, value, true, fontFamily);
|
|
604
|
+
}
|
|
592
605
|
(0, import_expandStyles.fixStyles)(style);
|
|
593
606
|
if (import_constants.isWeb) {
|
|
594
607
|
(0, import_getStylesAtomic.styleToCSS)(style);
|
|
595
608
|
}
|
|
596
609
|
if (process.env.TAMAGUI_TARGET === "native") {
|
|
597
610
|
if ("fontFamily" in style && style.fontFamily) {
|
|
598
|
-
const faceInfo = (
|
|
611
|
+
const faceInfo = (_a = (0, import_config.getFont)(style.fontFamily)) == null ? void 0 : _a.face;
|
|
599
612
|
if (faceInfo) {
|
|
600
|
-
const overrideFace = (
|
|
613
|
+
const overrideFace = (_c = (_b = faceInfo[style.fontWeight]) == null ? void 0 : _b[style.fontStyle || "normal"]) == null ? void 0 : _c.val;
|
|
601
614
|
if (overrideFace) {
|
|
602
615
|
style.fontFamily = overrideFace;
|
|
603
616
|
fontFamily = overrideFace;
|