@tamagui/core 1.0.1-beta.54 → 1.0.1-beta.55
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/createComponent.js +2 -0
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createTamagui.js +45 -32
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/createVariable.js +8 -0
- package/dist/cjs/createVariable.js.map +2 -2
- package/dist/cjs/createVariables.js +1 -1
- package/dist/cjs/createVariables.js.map +2 -2
- package/dist/cjs/helpers/calc.js +72 -0
- package/dist/cjs/helpers/calc.js.map +7 -0
- package/dist/cjs/helpers/createPropMapper.js +1 -8
- package/dist/cjs/helpers/createPropMapper.js.map +2 -2
- package/dist/cjs/helpers/getSize.js +14 -7
- package/dist/cjs/helpers/getSize.js.map +2 -2
- package/dist/cjs/helpers/getStackSize.js +11 -39
- package/dist/cjs/helpers/getStackSize.js.map +2 -2
- package/dist/cjs/helpers/getTextSize.js +1 -1
- package/dist/cjs/helpers/getTextSize.js.map +2 -2
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/esm/createComponent.js +1 -0
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createTamagui.js +45 -32
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/createVariable.js +7 -0
- package/dist/esm/createVariable.js.map +2 -2
- package/dist/esm/createVariables.js +1 -1
- package/dist/esm/createVariables.js.map +2 -2
- package/dist/esm/helpers/calc.js +50 -0
- package/dist/esm/helpers/calc.js.map +7 -0
- package/dist/esm/helpers/createPropMapper.js +1 -8
- package/dist/esm/helpers/createPropMapper.js.map +2 -2
- package/dist/esm/helpers/getSize.js +12 -6
- package/dist/esm/helpers/getSize.js.map +2 -2
- package/dist/esm/helpers/getStackSize.js +10 -36
- package/dist/esm/helpers/getStackSize.js.map +2 -2
- package/dist/esm/helpers/getTextSize.js +1 -1
- package/dist/esm/helpers/getTextSize.js.map +2 -2
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/jsx/createComponent.js +1 -0
- package/dist/jsx/createTamagui.js +45 -32
- package/dist/jsx/createVariable.js +7 -0
- package/dist/jsx/createVariables.js +1 -1
- package/dist/jsx/helpers/calc.js +49 -0
- package/dist/jsx/helpers/createPropMapper.js +1 -8
- package/dist/jsx/helpers/getSize.js +12 -6
- package/dist/jsx/helpers/getStackSize.js +10 -36
- package/dist/jsx/helpers/getTextSize.js +1 -1
- package/dist/jsx/index.js +1 -0
- package/package.json +5 -5
- package/reset.css +8 -0
- package/types/createComponent.d.ts.map +1 -1
- package/types/createTamagui.d.ts +2 -1
- package/types/createTamagui.d.ts.map +1 -1
- package/types/createVariable.d.ts +1 -0
- package/types/createVariable.d.ts.map +1 -1
- package/types/helpers/calc.d.ts +12 -0
- package/types/helpers/calc.d.ts.map +1 -0
- package/types/helpers/getSize.d.ts +3 -2
- package/types/helpers/getSize.d.ts.map +1 -1
- package/types/helpers/getStackSize.d.ts +4 -28
- package/types/helpers/getStackSize.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { isWeb } from "../constants/platform";
|
|
4
|
+
import { getVariableVariable } from "../createVariable";
|
|
5
|
+
const operators = {
|
|
6
|
+
"+": (a, b) => a + b,
|
|
7
|
+
"-": (a, b) => a - b,
|
|
8
|
+
"/": (a, b) => a / b,
|
|
9
|
+
"*": (a, b) => a * b
|
|
10
|
+
};
|
|
11
|
+
const calc = /* @__PURE__ */ __name((...valuesAndOperators) => {
|
|
12
|
+
if (isWeb) {
|
|
13
|
+
let res2 = "calc(";
|
|
14
|
+
for (const cur of valuesAndOperators) {
|
|
15
|
+
if (operators[cur]) {
|
|
16
|
+
res2 += " " + cur + " ";
|
|
17
|
+
} else {
|
|
18
|
+
res2 += convertToVariableOrNumber(cur);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
console.log("got", res2, "from", valuesAndOperators);
|
|
22
|
+
return res2 + ")";
|
|
23
|
+
}
|
|
24
|
+
let res = 0;
|
|
25
|
+
let nextOp = null;
|
|
26
|
+
for (const cur of valuesAndOperators) {
|
|
27
|
+
if (operators[cur]) {
|
|
28
|
+
nextOp = operators[cur];
|
|
29
|
+
} else {
|
|
30
|
+
if (nextOp) {
|
|
31
|
+
res = nextOp(res, cur);
|
|
32
|
+
nextOp = null;
|
|
33
|
+
} else {
|
|
34
|
+
res = +cur;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return res;
|
|
39
|
+
}, "calc");
|
|
40
|
+
const convertToVariableOrNumber = /* @__PURE__ */ __name((v) => {
|
|
41
|
+
const varOrVal = getVariableVariable(v);
|
|
42
|
+
if (typeof varOrVal === "number") {
|
|
43
|
+
return `${varOrVal}px`;
|
|
44
|
+
}
|
|
45
|
+
return varOrVal;
|
|
46
|
+
}, "convertToVariableOrNumber");
|
|
47
|
+
export {
|
|
48
|
+
calc
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=calc.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/helpers/calc.ts"],
|
|
4
|
+
"sourcesContent": ["import { isWeb } from '../constants/platform'\nimport { getVariableValue, getVariableVariable } from '../createVariable'\nimport { FontLineHeightTokens, FontSizeTokens, SizeTokens, SpaceTokens } from '../types'\n\n/**\n * Simple calc() that handles native + web\n * on web: outputs a calc() string\n * on native: outputs a plain number\n */\n\nexport type CalcVal =\n | string\n | number\n | SizeTokens\n | SpaceTokens\n | FontSizeTokens\n | FontLineHeightTokens\n\nconst operators = {\n '+': (a: number, b: number) => a + b,\n '-': (a: number, b: number) => a - b,\n '/': (a: number, b: number) => a / b,\n '*': (a: number, b: number) => a * b,\n}\n\ntype Operator = keyof typeof operators\n\nexport const calc = (...valuesAndOperators: (CalcVal | Operator)[]) => {\n if (isWeb) {\n let res = 'calc('\n for (const cur of valuesAndOperators) {\n if (operators[cur as any]) {\n // spaces are significant\n res += ' ' + cur + ' '\n } else {\n res += convertToVariableOrNumber(cur)\n }\n }\n console.log('got', res, 'from', valuesAndOperators)\n return res + ')'\n }\n\n let res = 0\n let nextOp: any = null\n for (const cur of valuesAndOperators) {\n if (operators[cur as any]) {\n nextOp = operators[cur as any]\n } else {\n if (nextOp) {\n res = nextOp(res, cur)\n nextOp = null\n } else {\n res = +cur\n }\n }\n }\n return res\n}\n\nconst convertToVariableOrNumber = (v: any) => {\n const varOrVal = getVariableVariable(v)\n if (typeof varOrVal === 'number') {\n return `${varOrVal}px`\n }\n return varOrVal\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA;AACA;AAiBA,MAAM,YAAY;AAAA,EAChB,KAAK,CAAC,GAAW,MAAc,IAAI;AAAA,EACnC,KAAK,CAAC,GAAW,MAAc,IAAI;AAAA,EACnC,KAAK,CAAC,GAAW,MAAc,IAAI;AAAA,EACnC,KAAK,CAAC,GAAW,MAAc,IAAI;AACrC;AAIO,MAAM,OAAO,2BAAI,uBAA+C;AACrE,MAAI,OAAO;AACT,QAAI,OAAM;AACV,eAAW,OAAO,oBAAoB;AACpC,UAAI,UAAU,MAAa;AAEzB,gBAAO,MAAM,MAAM;AAAA,MACrB,OAAO;AACL,gBAAO,0BAA0B,GAAG;AAAA,MACtC;AAAA,IACF;AACA,YAAQ,IAAI,OAAO,MAAK,QAAQ,kBAAkB;AAClD,WAAO,OAAM;AAAA,EACf;AAEA,MAAI,MAAM;AACV,MAAI,SAAc;AAClB,aAAW,OAAO,oBAAoB;AACpC,QAAI,UAAU,MAAa;AACzB,eAAS,UAAU;AAAA,IACrB,OAAO;AACL,UAAI,QAAQ;AACV,cAAM,OAAO,KAAK,GAAG;AACrB,iBAAS;AAAA,MACX,OAAO;AACL,cAAM,CAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT,GA9BoB;AAgCpB,MAAM,4BAA4B,wBAAC,MAAW;AAC5C,QAAM,WAAW,oBAAoB,CAAC;AACtC,MAAI,OAAO,aAAa,UAAU;AAChC,WAAO,GAAG;AAAA,EACZ;AACA,SAAO;AACT,GANkC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -200,14 +200,7 @@ const tokenCategories = {
|
|
|
200
200
|
minWidth: true,
|
|
201
201
|
minHeight: true,
|
|
202
202
|
maxWidth: true,
|
|
203
|
-
maxHeight: true
|
|
204
|
-
padding: true,
|
|
205
|
-
paddingLeft: true,
|
|
206
|
-
paddingRight: true,
|
|
207
|
-
paddingTop: true,
|
|
208
|
-
paddingBottom: true,
|
|
209
|
-
paddingVertical: true,
|
|
210
|
-
paddingHorizontal: true
|
|
203
|
+
maxHeight: true
|
|
211
204
|
},
|
|
212
205
|
color: {
|
|
213
206
|
color: true,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/createPropMapper.ts"],
|
|
4
|
-
"sourcesContent": ["import { getConfig } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable, isVariable } from '../createVariable'\nimport {\n GenericVariantDefinitions,\n PropMapper,\n StaticConfig,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types'\nimport { expandStyle, expandStyles } from './generateAtomicStyles'\nimport { getVariantExtras } from './getVariantExtras'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable' | 'both'\n\nexport const createPropMapper = (staticConfig: Partial<StaticConfig>) => {\n const variants = staticConfig.variants || {}\n const defaultProps = staticConfig.defaultProps || {}\n\n const mapper: PropMapper = (key, value, theme, propsIn, state, avoidDefaultProps = false) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs =\n state.resolveVariablesAs === 'value' || !!props.animation ? 'value' : 'auto'\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n const fontFamily = props.fontFamily || defaultProps.fontFamily || '$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 avoidDefaultProps\n )\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n // prettier-ignore\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs)\n } else if (isVariable(value)) {\n value = getVariableValue(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',\n staticConfig: Partial<StaticConfig>,\n parentVariantKey: string,\n avoidDefaultProps?: boolean\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 avoidDefaultProps = false\n) => {\n const variant = variants && variants[key]\n if (variant && value !== undefined) {\n let variantValue = getVariantDefinition(variant, key, value)\n\n if (variantValue) {\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(value, getVariantExtras(props, theme, defaultProps, avoidDefaultProps))\n }\n\n if (isObj(variantValue)) {\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps\n )\n }\n\n return Object.entries(expandStyles(variantValue))\n } else {\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 console.warn(\n `No variant found: ${\n staticConfig.componentName || '[UnnamedComponent]'\n } has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return null\n }\n }\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 avoidDefaultProps\n) => {\n let res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n // res[fKey] =\n // resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (variants[fKey]) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey === key) {\n res[fKey] = val\n } else {\n res = {\n ...res,\n ...Object.fromEntries(\n resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps\n )\n ),\n }\n }\n } else if (typeof val === 'string') {\n const fVal =\n val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, returnVariablesAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] = resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = value[fKey]\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (res[fKey]?.[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey])\n }\n }\n }\n return res\n}\n\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(variant: any, key: string, value: any) {\n if (typeof variant === 'function') {\n return variant\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const spreadVariant = variant[`...${cat}`]\n if (spreadVariant) {\n return spreadVariant\n }\n }\n }\n let fn: any\n if (typeof value === 'number') {\n fn = variant[':number']\n } else if (typeof value === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n fn = fn || variant[value]\n // fallback to size ultimately - could do token level detection\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 { tokensParsed, fontsParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\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 if (hasSet) {\n return getVariableValue(valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token:`, key, value, fontFamily, theme, fontsParsed)\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(valOrVar: Variable | any, resolveAs: ResolveVariableTypes = 'auto') {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\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 },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n
|
|
5
|
-
"mappings": ";;AAAA;AACA;AACA;AAQA;AACA;AACA;AAIO,MAAM,mBAAmB,wBAAC,iBAAwC;AACvE,QAAM,WAAW,aAAa,YAAY,CAAC;AAC3C,QAAM,eAAe,aAAa,gBAAgB,CAAC;AAEnD,QAAM,SAAqB,wBAAC,KAAK,OAAO,OAAO,SAAS,OAAO,oBAAoB,UAAU;AAC3F,UAAM,OAAO,UAAU;AACvB,QAAI,CAAC,MAAM;AACT,cAAQ,MAAM,cAAc;AAC5B;AAAA,IACF;AAEA,UAAM,QAAQ,MAAM,iBAAiB;AACrC,UAAM,oBACJ,MAAM,uBAAuB,WAAW,CAAC,CAAC,MAAM,YAAY,UAAU;AAGxE,UAAM,aAAa,MAAM,cAAc,aAAa,cAAc;AAElE,UAAM,eAAe,gBACnB,KACA,OACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,IACA,iBACF;AACA,QAAI,cAAc;AAChB,aAAO;AAAA,IACT;AAEA,QAAI,eAAe,UAAU,UAAa,UAAU;AAGpD,QAAI,KAAK,WAAW,MAAM;AACxB,qBAAe;AACf,YAAM,KAAK,WAAW;AAAA,IACxB;AAEA,QAAI,OAAO;AACT,UAAI,MAAM,OAAO,KAAK;AAEpB,gBAAQ,SAAS,KAAK,OAAO,MAAM,OAAO,YAAY,iBAAiB;AAAA,MACzE,WAAW,WAAW,KAAK,GAAG;AAC5B,gBAAQ,iBAAiB,OAAO,iBAAiB;AAAA,MACnD;AAAA,IACF;AAEA,QAAI,cAAc;AAChB,aAAO,YAAY,KAAK,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC;AAAA,IACjD;AAAA,EACF,GApD2B;AAsD3B,SAAO;AACT,GA3DgC;AA4EhC,MAAM,kBAAiC,wBACrC,KACA,OACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,kBACA,oBAAoB,UACjB;AAzGL;AA0GE,QAAM,UAAU,YAAY,SAAS;AACrC,MAAI,WAAW,UAAU,QAAW;AAClC,QAAI,eAAe,qBAAqB,SAAS,KAAK,KAAK;AAE3D,QAAI,cAAc;AAChB,UAAI,OAAO,iBAAiB,YAAY;AACtC,cAAM,KAAK;AACX,uBAAe,GAAG,OAAO,iBAAiB,OAAO,OAAO,cAAc,iBAAiB,CAAC;AAAA,MAC1F;AAEA,UAAI,MAAM,YAAY,GAAG;AACvB,uBAAe,yBACb,KACA,cACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,kBACA,iBACF;AAAA,MACF;AAEA,aAAO,OAAO,QAAQ,aAAa,YAAY,CAAC;AAAA,IAClD,OAAO;AAEL,UAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,YAAI,mBAAa,gBAAb,mBAA2B,MAAM;AACnC,iBAAO;AAAA,QACT;AACA,gBAAQ,KACN,qBACE,aAAa,iBAAiB,qCACf,gCAAgC,QACnD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF,GAzDuC;AA2DvC,MAAM,2BAA0C,wBAC9C,KACA,OACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,kBACA,sBACG;AApKL;AAqKE,MAAI,MAAM,CAAC;AACX,aAAW,QAAQ,OAAO;AACxB,UAAM,OAAO,KAAK,WAAW,SAAS;AACtC,UAAM,MAAM,MAAM;AAClB,QAAI,WAAW,GAAG,GAAG;AACnB,UAAI,QAAQ,CAAC,SAAS,sBAAsB,UAAU,IAAI,MAAM,IAAI;AAAA,IAGtE,WAAW,SAAS,OAAO;AAGzB,UAAI,qBAAqB,KAAK;AAC5B,YAAI,QAAQ;AAAA,MACd,OAAO;AACL,cAAM;AAAA,UACJ,GAAG;AAAA,UACH,GAAG,OAAO,YACR,gBACE,MACA,KACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,KACA,iBACF,CACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,OACJ,IAAI,OAAO,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO,YAAY,iBAAiB,IAAI;AACrF,UAAI,QAAQ;AAAA,IACd,OAAO;AACL,UAAI,MAAM,GAAG,GAAG;AAEd,YAAI,QAAQ,yBACV,MACA,KACA,OACA,cACA,OACA,UACA,YACA,MACA,mBACA,cACA,KACA,iBACF;AAAA,MACF,OAAO;AAEL,YAAI,QAAQ,MAAM;AAAA,MACpB;AAAA,IACF;AACA,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,UAAI,WAAI,UAAJ,mBAAY,QAAO,KAAK;AAC1B,gBAAQ,KAAK,uCAA6B,MAAM,SAAS,MAAM,IAAI,KAAK;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT,GAjFgD;AAoFhD,8BAA8B,SAAc,KAAa,OAAY;AACnE,MAAI,OAAO,YAAY,YAAY;AACjC,WAAO;AAAA,EACT;AACA,aAAW,OAAO,iBAAiB;AACjC,QAAI,OAAO,gBAAgB,MAAM;AAC/B,YAAM,gBAAgB,QAAQ,MAAM;AACpC,UAAI,eAAe;AACjB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI;AACJ,MAAI,OAAO,UAAU,UAAU;AAC7B,SAAK,QAAQ;AAAA,EACf,WAAW,OAAO,UAAU,UAAU;AACpC,SAAK,QAAQ;AAAA,EACf,WAAW,UAAU,QAAQ,UAAU,OAAO;AAC5C,SAAK,QAAQ;AAAA,EACf;AACA,OAAK,MAAM,QAAQ;AAEnB,SAAO,MAAM,QAAQ,UAAU,QAAQ;AACzC;AAvBS;AAyBT,MAAM,gBAAgB;AAAA,EACpB,UAAU;AAAA,EACV,YAAY;AACd;AAEA,MAAM,WAAW,wBACf,KACA,OACA,EAAE,cAAc,eAChB,OACA,aAAiC,SACjC,cACG;AAhRL;AAiRE,MAAI;AACJ,MAAI,SAAS;AACb,MAAI,SAAS,OAAO;AAClB,eAAW,MAAM;AACjB,aAAS;AAAA,EACX,OAAO;AACL,YAAQ;AAAA,WACD;AACH,mBAAW,mBAAY,WAAZ,mBAAoB,WAAU;AACzC,iBAAS;AACT;AAAA,WACG;AAAA,WACA;AAAA,WACA;AAAA,WACA;AACH,mBAAW,yBAAY,gBAAZ,mBAA0B,cAAc,QAAQ,SAAhD,mBAAuD,WAAU;AAC5E,iBAAS;AACT;AAAA;AAEJ,eAAW,OAAO,iBAAiB;AACjC,UAAI,OAAO,gBAAgB,MAAM;AAC/B,cAAM,MAAM,aAAa,KAAK;AAC9B,YAAI,KAAK;AACP,qBAAW;AACX,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,QAAQ;AACX,YAAM,WAAW,aAAa,MAAM;AACpC,UAAI,UAAU;AACZ,mBAAW;AACX,iBAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA,MAAI,QAAQ;AACV,WAAO,iBAAiB,UAAU,SAAS;AAAA,EAC7C;AACA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,SAAS,MAAM,OAAO,KAAK;AAC7B,cAAQ,KAAK,+BAAqB,KAAK,OAAO,YAAY,OAAO,WAAW;AAC5E,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT,GAtDiB;AAwDjB,0BAA0B,UAA0B,YAAkC,QAAQ;AAC5F,MAAI,WAAW,QAAQ,GAAG;AACxB,QAAI,cAAc,YAAY;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,CAAC,SAAS,cAAc,SAAS;AACnC,aAAO,SAAS;AAAA,IAClB;AACA,WAAO,SAAS;AAAA,EAClB;AACA,SAAO;AACT;AAXS;AAcT,MAAM,kBAAkB;AAAA,EACtB,QAAQ;AAAA,IACN,cAAc;AAAA,EAChB;AAAA,EACA,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,
|
|
4
|
+
"sourcesContent": ["import { getConfig } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable, isVariable } from '../createVariable'\nimport {\n GenericVariantDefinitions,\n PropMapper,\n StaticConfig,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types'\nimport { expandStyle, expandStyles } from './generateAtomicStyles'\nimport { getVariantExtras } from './getVariantExtras'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable' | 'both'\n\nexport const createPropMapper = (staticConfig: Partial<StaticConfig>) => {\n const variants = staticConfig.variants || {}\n const defaultProps = staticConfig.defaultProps || {}\n\n const mapper: PropMapper = (key, value, theme, propsIn, state, avoidDefaultProps = false) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs =\n state.resolveVariablesAs === 'value' || !!props.animation ? 'value' : 'auto'\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n const fontFamily = props.fontFamily || defaultProps.fontFamily || '$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 avoidDefaultProps\n )\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n // prettier-ignore\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs)\n } else if (isVariable(value)) {\n value = getVariableValue(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',\n staticConfig: Partial<StaticConfig>,\n parentVariantKey: string,\n avoidDefaultProps?: boolean\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 avoidDefaultProps = false\n) => {\n const variant = variants && variants[key]\n if (variant && value !== undefined) {\n let variantValue = getVariantDefinition(variant, key, value)\n\n if (variantValue) {\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(value, getVariantExtras(props, theme, defaultProps, avoidDefaultProps))\n }\n\n if (isObj(variantValue)) {\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps\n )\n }\n\n return Object.entries(expandStyles(variantValue))\n } else {\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 console.warn(\n `No variant found: ${\n staticConfig.componentName || '[UnnamedComponent]'\n } has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return null\n }\n }\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 avoidDefaultProps\n) => {\n let res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n // res[fKey] =\n // resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (variants[fKey]) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey === key) {\n res[fKey] = val\n } else {\n res = {\n ...res,\n ...Object.fromEntries(\n resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps\n )\n ),\n }\n }\n } else if (typeof val === 'string') {\n const fVal =\n val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, returnVariablesAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] = resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = value[fKey]\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (res[fKey]?.[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey])\n }\n }\n }\n return res\n}\n\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(variant: any, key: string, value: any) {\n if (typeof variant === 'function') {\n return variant\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const spreadVariant = variant[`...${cat}`]\n if (spreadVariant) {\n return spreadVariant\n }\n }\n }\n let fn: any\n if (typeof value === 'number') {\n fn = variant[':number']\n } else if (typeof value === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n fn = fn || variant[value]\n // fallback to size ultimately - could do token level detection\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 { tokensParsed, fontsParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\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 if (hasSet) {\n return getVariableValue(valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token:`, key, value, fontFamily, theme, fontsParsed)\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(valOrVar: Variable | any, resolveAs: ResolveVariableTypes = 'auto') {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\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 },\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": []
|
|
7
7
|
}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
import { getTokens } from "../conf";
|
|
4
|
-
const getSize = /* @__PURE__ */ __name((size,
|
|
5
|
-
|
|
6
|
-
const sizeNames = Object.keys(sizes);
|
|
7
|
-
const key = sizeNames[Math.max(0, sizeNames.indexOf(String(size || "$4")) + sizeUpOrDownBy)];
|
|
8
|
-
return sizes[key] || sizes["$4"];
|
|
4
|
+
const getSize = /* @__PURE__ */ __name((size, shift = 0) => {
|
|
5
|
+
return stepTokenUpOrDown(getTokens().size, size, shift);
|
|
9
6
|
}, "getSize");
|
|
7
|
+
const stepTokenUpOrDown = /* @__PURE__ */ __name((tokens, current, shift = 0) => {
|
|
8
|
+
const sizeNames = Object.keys(tokens);
|
|
9
|
+
const currentKeyNum = (typeof current === "string" ? current.replace("$", "") : current) || "4";
|
|
10
|
+
const nextKeyName = `$${+currentKeyNum + shift}`;
|
|
11
|
+
const index = Math.min(sizeNames.length - 1, Math.max(0, sizeNames.indexOf(nextKeyName)));
|
|
12
|
+
const key = sizeNames[index];
|
|
13
|
+
return tokens[key] || tokens["$4"];
|
|
14
|
+
}, "stepTokenUpOrDown");
|
|
10
15
|
export {
|
|
11
|
-
getSize
|
|
16
|
+
getSize,
|
|
17
|
+
stepTokenUpOrDown
|
|
12
18
|
};
|
|
13
19
|
//# sourceMappingURL=getSize.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/getSize.ts"],
|
|
4
|
-
"sourcesContent": ["import { getTokens } from '../conf'\nimport { SizeTokens } from '../types'\n\nexport const getSize = (size?: SizeTokens | undefined,
|
|
5
|
-
"mappings": ";;AAAA;AAGO,MAAM,UAAU,wBAAC,MAA+B,
|
|
4
|
+
"sourcesContent": ["import { getTokens } from '../conf'\nimport { SizeTokens, SpaceTokens } from '../types'\n\nexport const getSize = (size?: SizeTokens | undefined, shift = 0) => {\n return stepTokenUpOrDown(getTokens().size, size, shift)\n}\n\nexport const stepTokenUpOrDown = (\n tokens: Object,\n current?: SizeTokens | SpaceTokens | string,\n shift = 0\n) => {\n const sizeNames = Object.keys(tokens)\n const currentKeyNum = (typeof current === 'string' ? current.replace('$', '') : current) || '4'\n const nextKeyName = `$${+currentKeyNum + shift}`\n const index = Math.min(sizeNames.length - 1, Math.max(0, sizeNames.indexOf(nextKeyName)))\n const key = sizeNames[index]\n return tokens[key] || tokens['$4']\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA;AAGO,MAAM,UAAU,wBAAC,MAA+B,QAAQ,MAAM;AACnE,SAAO,kBAAkB,UAAU,EAAE,MAAM,MAAM,KAAK;AACxD,GAFuB;AAIhB,MAAM,oBAAoB,wBAC/B,QACA,SACA,QAAQ,MACL;AACH,QAAM,YAAY,OAAO,KAAK,MAAM;AACpC,QAAM,gBAAiB,QAAO,YAAY,WAAW,QAAQ,QAAQ,KAAK,EAAE,IAAI,YAAY;AAC5F,QAAM,cAAc,IAAI,CAAC,gBAAgB;AACzC,QAAM,QAAQ,KAAK,IAAI,UAAU,SAAS,GAAG,KAAK,IAAI,GAAG,UAAU,QAAQ,WAAW,CAAC,CAAC;AACxF,QAAM,MAAM,UAAU;AACtB,SAAO,OAAO,QAAQ,OAAO;AAC/B,GAXiC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,44 +1,18 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
5
|
-
var _a, _b, _c, _d, _e, _f;
|
|
6
|
-
const size = (_c = (_b = (_a = tokens.size[val]) != null ? _a : val) != null ? _b : tokens.size["$4"]) != null ? _c : 14;
|
|
7
|
-
const radius = (_e = (_d = tokens.radius[val]) != null ? _d : tokens.radius["$4"]) != null ? _e : size;
|
|
8
|
-
const sizePx = +(isVariable(size) ? size.val : size);
|
|
9
|
-
const scaleSize = isVariable(size) ? 2 : 1;
|
|
10
|
-
const px = Math.round(sizePx * sizeX);
|
|
11
|
-
const py = Math.round(sizePx * sizeY);
|
|
12
|
-
const font = fonts[props.fontFamily] || fonts["$body"];
|
|
13
|
-
const lineHeights = font.lineHeight;
|
|
14
|
-
const lineHeight = (_f = lineHeights[val]) != null ? _f : lineHeights["$4"];
|
|
15
|
-
const minHeight = Math.round(getVariableValue(lineHeight) + py * scaleSize);
|
|
16
|
-
return {
|
|
17
|
-
px,
|
|
18
|
-
py,
|
|
19
|
-
radius,
|
|
20
|
-
size,
|
|
21
|
-
lineHeight,
|
|
22
|
-
minHeight
|
|
23
|
-
};
|
|
24
|
-
}, "getSizeScaledToFont");
|
|
25
|
-
const createGetStackSize = /* @__PURE__ */ __name((scale) => (val, extras) => {
|
|
3
|
+
import { getSize, stepTokenUpOrDown } from "./getSize";
|
|
4
|
+
const getButtonSize = /* @__PURE__ */ __name((val, { tokens }) => {
|
|
26
5
|
var _a;
|
|
27
|
-
const
|
|
28
|
-
const
|
|
6
|
+
const ySize = getSize(val, 0);
|
|
7
|
+
const xSize = stepTokenUpOrDown(tokens.space, val);
|
|
8
|
+
const radiusToken = (_a = tokens.radius[val]) != null ? _a : tokens.radius["$4"];
|
|
29
9
|
return {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
paddingVertical: props.circular ? 0 : py
|
|
10
|
+
paddingHorizontal: xSize,
|
|
11
|
+
height: ySize,
|
|
12
|
+
borderRadius: radiusToken
|
|
34
13
|
};
|
|
35
|
-
}, "
|
|
36
|
-
const buttonScaling = { sizeX: 0.75, sizeY: 0.333 };
|
|
37
|
-
const getButtonSize = createGetStackSize(buttonScaling);
|
|
14
|
+
}, "getButtonSize");
|
|
38
15
|
export {
|
|
39
|
-
|
|
40
|
-
createGetStackSize,
|
|
41
|
-
getButtonSize,
|
|
42
|
-
getSizeScaledToFont
|
|
16
|
+
getButtonSize
|
|
43
17
|
};
|
|
44
18
|
//# sourceMappingURL=getStackSize.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/getStackSize.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";;
|
|
4
|
+
"sourcesContent": ["import { SizeTokens, VariantSpreadExtras } from '../types'\nimport { getSize, stepTokenUpOrDown } from './getSize'\n\nexport type ScaleVariantExtras = Pick<VariantSpreadExtras<any>, 'tokens' | 'props' | 'fonts'>\n\nexport const getButtonSize = (val: SizeTokens, { tokens }: VariantSpreadExtras<any>) => {\n const ySize = getSize(val, 0)\n const xSize = stepTokenUpOrDown(tokens.space, val)\n const radiusToken = tokens.radius[val] ?? tokens.radius['$4']\n return {\n paddingHorizontal: xSize,\n height: ySize,\n borderRadius: radiusToken,\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AACA;AAIO,MAAM,gBAAgB,wBAAC,KAAiB,EAAE,aAAuC;AALxF;AAME,QAAM,QAAQ,QAAQ,KAAK,CAAC;AAC5B,QAAM,QAAQ,kBAAkB,OAAO,OAAO,GAAG;AACjD,QAAM,cAAc,aAAO,OAAO,SAAd,YAAsB,OAAO,OAAO;AACxD,SAAO;AAAA,IACL,mBAAmB;AAAA,IACnB,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AACF,GAT6B;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -7,7 +7,7 @@ const getTextSize = /* @__PURE__ */ __name((val = "$4", { fonts, theme, props })
|
|
|
7
7
|
const font = fonts[family] || fonts["$body"];
|
|
8
8
|
if (!font) {
|
|
9
9
|
console.warn("\u26A0\uFE0F no font found", { family, fontTokens: Object.keys(fonts), val });
|
|
10
|
-
return;
|
|
10
|
+
return {};
|
|
11
11
|
}
|
|
12
12
|
const fontFamily = font.family;
|
|
13
13
|
const fontSize = props.fontSize || font.size[val];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/getTextSize.tsx"],
|
|
4
|
-
"sourcesContent": ["import { getVariableValue } from '../createVariable'\nimport { FontSizeTokens, TextProps, VariantSpreadFunction } from '../types'\n\nexport const getTextSize: VariantSpreadFunction<TextProps, FontSizeTokens> = (\n val = '$4',\n { fonts, theme, props }\n) => {\n const family = getVariableValue(props.fontFamily) || '$body'\n const font = fonts[family] || fonts['$body']\n if (!font) {\n console.warn('\u26A0\uFE0F no font found', { family, fontTokens: Object.keys(fonts), val })\n return\n }\n const fontFamily = font.family\n const fontSize = props.fontSize || font.size[val]\n const lineHeight = props.lineHeight || font.lineHeight[val]\n const fontWeight = props.fontWeight || font.weight[val]\n const letterSpacing = props.letterSpacing || font.letterSpacing[val]\n const fontStyle = props.fontStyle || font.style?.[val]\n const textTransform = props.textTransform || font.transform?.[val]\n const color = props.color || font.color?.[val] || theme.color\n return {\n color,\n fontStyle,\n textTransform,\n fontFamily,\n fontWeight,\n letterSpacing,\n fontSize,\n lineHeight,\n } as any\n}\n"],
|
|
5
|
-
"mappings": ";;AAAA;AAGO,MAAM,cAAgE,wBAC3E,MAAM,MACN,EAAE,OAAO,OAAO,YACb;AANL;AAOE,QAAM,SAAS,iBAAiB,MAAM,UAAU,KAAK;AACrD,QAAM,OAAO,MAAM,WAAW,MAAM;AACpC,MAAI,CAAC,MAAM;AACT,YAAQ,KAAK,8BAAoB,EAAE,QAAQ,YAAY,OAAO,KAAK,KAAK,GAAG,IAAI,CAAC;AAChF;AAAA,
|
|
4
|
+
"sourcesContent": ["import { getVariableValue } from '../createVariable'\nimport { FontSizeTokens, TextProps, VariantSpreadFunction } from '../types'\n\nexport const getTextSize: VariantSpreadFunction<TextProps, FontSizeTokens> = (\n val = '$4',\n { fonts, theme, props }\n) => {\n const family = getVariableValue(props.fontFamily) || '$body'\n const font = fonts[family] || fonts['$body']\n if (!font) {\n console.warn('\u26A0\uFE0F no font found', { family, fontTokens: Object.keys(fonts), val })\n return {} as any\n }\n const fontFamily = font.family\n const fontSize = props.fontSize || font.size[val]\n const lineHeight = props.lineHeight || font.lineHeight[val]\n const fontWeight = props.fontWeight || font.weight[val]\n const letterSpacing = props.letterSpacing || font.letterSpacing[val]\n const fontStyle = props.fontStyle || font.style?.[val]\n const textTransform = props.textTransform || font.transform?.[val]\n const color = props.color || font.color?.[val] || theme.color\n return {\n color,\n fontStyle,\n textTransform,\n fontFamily,\n fontWeight,\n letterSpacing,\n fontSize,\n lineHeight,\n } as any\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA;AAGO,MAAM,cAAgE,wBAC3E,MAAM,MACN,EAAE,OAAO,OAAO,YACb;AANL;AAOE,QAAM,SAAS,iBAAiB,MAAM,UAAU,KAAK;AACrD,QAAM,OAAO,MAAM,WAAW,MAAM;AACpC,MAAI,CAAC,MAAM;AACT,YAAQ,KAAK,8BAAoB,EAAE,QAAQ,YAAY,OAAO,KAAK,KAAK,GAAG,IAAI,CAAC;AAChF,WAAO,CAAC;AAAA,EACV;AACA,QAAM,aAAa,KAAK;AACxB,QAAM,WAAW,MAAM,YAAY,KAAK,KAAK;AAC7C,QAAM,aAAa,MAAM,cAAc,KAAK,WAAW;AACvD,QAAM,aAAa,MAAM,cAAc,KAAK,OAAO;AACnD,QAAM,gBAAgB,MAAM,iBAAiB,KAAK,cAAc;AAChE,QAAM,YAAY,MAAM,aAAa,YAAK,UAAL,mBAAa;AAClD,QAAM,gBAAgB,MAAM,iBAAiB,YAAK,cAAL,mBAAiB;AAC9D,QAAM,QAAQ,MAAM,SAAS,YAAK,UAAL,mBAAa,SAAQ,MAAM;AACxD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF,GA5B6E;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } f
|
|
|
14
14
|
export * from "./constants/constants";
|
|
15
15
|
export * from "./constants/platform";
|
|
16
16
|
export * from "./constants/rnw";
|
|
17
|
+
export * from "./helpers/calc";
|
|
17
18
|
export * from "./helpers/createShallowUpdate";
|
|
18
19
|
export * from "./helpers/getStackSize";
|
|
19
20
|
export * from "./helpers/getVariantExtras";
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './Tamagui'\nexport * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport * from './createTokens'\nexport * from './createVariable'\nexport * from './createVariables'\nexport * from './styled'\nexport * from './types'\n// for type portability\nexport { RNWTextProps, RNWViewProps } from './types-rnw'\nexport { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'\n\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport * from './constants/rnw'\n\nexport * from './helpers/createShallowUpdate'\nexport * from './helpers/getStackSize'\nexport * from './helpers/getVariantExtras'\nexport * from './helpers/getExpandedShorthands'\nexport * from './helpers/getSize'\nexport * from './helpers/getSplitStyles'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/getTextSize'\nexport * from './helpers/isObj'\nexport * from './helpers/isTamaguiElement'\nexport * from './helpers/matchMedia'\nexport * from './helpers/themeable'\nexport * from './helpers/withStaticProperties'\n\nexport * from './contexts/ButtonInsideButtonContext'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useId'\nexport * from './hooks/useIsMounted'\nexport * from './hooks/useIsTouchDevice'\nexport * from './hooks/useMedia'\nexport * from './hooks/usePressable'\nexport * from './hooks/useTheme'\nexport * from './hooks/useUnmountEffect'\n\nexport * from './views/Slot'\nexport * from './views/Stack'\nexport * from './views/Text'\nexport * from './views/TextAncestorContext'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/ThemeReset'\n\nexport * from '@tamagui/use-force-update'\nexport * from '@tamagui/helpers'\n"],
|
|
5
|
-
"mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;",
|
|
4
|
+
"sourcesContent": ["export * from './Tamagui'\nexport * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport * from './createTokens'\nexport * from './createVariable'\nexport * from './createVariables'\nexport * from './styled'\nexport * from './types'\n// for type portability\nexport { RNWTextProps, RNWViewProps } from './types-rnw'\nexport { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'\n\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport * from './constants/rnw'\n\nexport * from './helpers/calc'\nexport * from './helpers/createShallowUpdate'\nexport * from './helpers/getStackSize'\nexport * from './helpers/getVariantExtras'\nexport * from './helpers/getExpandedShorthands'\nexport * from './helpers/getSize'\nexport * from './helpers/getSplitStyles'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/getTextSize'\nexport * from './helpers/isObj'\nexport * from './helpers/isTamaguiElement'\nexport * from './helpers/matchMedia'\nexport * from './helpers/themeable'\nexport * from './helpers/withStaticProperties'\n\nexport * from './contexts/ButtonInsideButtonContext'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useId'\nexport * from './hooks/useIsMounted'\nexport * from './hooks/useIsTouchDevice'\nexport * from './hooks/useMedia'\nexport * from './hooks/usePressable'\nexport * from './hooks/useTheme'\nexport * from './hooks/useUnmountEffect'\n\nexport * from './views/Slot'\nexport * from './views/Stack'\nexport * from './views/Text'\nexport * from './views/TextAncestorContext'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/ThemeReset'\n\nexport * from '@tamagui/use-force-update'\nexport * from '@tamagui/helpers'\n"],
|
|
5
|
+
"mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,6 +4,7 @@ import { configListeners, getHasConfigured, setConfig } from "./conf";
|
|
|
4
4
|
import { THEME_CLASSNAME_PREFIX } from "./constants/constants";
|
|
5
5
|
import { isWeb } from "./constants/platform";
|
|
6
6
|
import { createCSSVariable, createVariable, isVariable } from "./createVariable";
|
|
7
|
+
import { createVariables } from "./createVariables";
|
|
7
8
|
import { createTamaguiProvider } from "./helpers/createTamaguiProvider";
|
|
8
9
|
import { getInsertedRules } from "./helpers/insertStyleRule";
|
|
9
10
|
import { configureMedia } from "./hooks/useMedia";
|
|
@@ -19,14 +20,45 @@ function createTamagui(config) {
|
|
|
19
20
|
if (!config.themes) {
|
|
20
21
|
throw new Error(`No themes provided to Tamagui config`);
|
|
21
22
|
}
|
|
23
|
+
if (!config.fonts) {
|
|
24
|
+
throw new Error(`No fonts defined!`);
|
|
25
|
+
}
|
|
22
26
|
}
|
|
23
27
|
if (getHasConfigured()) {
|
|
24
28
|
console.warn("Called createTamagui twice! Should never do so");
|
|
29
|
+
if (typeof document !== "undefined") {
|
|
30
|
+
throw new Error(`#000 createTamagui called twice`);
|
|
31
|
+
}
|
|
25
32
|
}
|
|
26
33
|
configureMedia({
|
|
27
34
|
queries: config.media,
|
|
28
35
|
defaultActive: config.mediaQueryDefaultActive
|
|
29
36
|
});
|
|
37
|
+
const fontTokens = createVariables(config.fonts);
|
|
38
|
+
const fontsParsed = (() => {
|
|
39
|
+
const res = {};
|
|
40
|
+
for (const familyName in fontTokens) {
|
|
41
|
+
const definition = fontTokens[familyName];
|
|
42
|
+
const parsed = {};
|
|
43
|
+
for (const attrKey in definition) {
|
|
44
|
+
const attr = definition[attrKey];
|
|
45
|
+
if (attrKey === "family") {
|
|
46
|
+
parsed[attrKey] = attr;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
parsed[attrKey] = {};
|
|
50
|
+
for (const key in attr) {
|
|
51
|
+
let val = attr[key];
|
|
52
|
+
if (val.val[0] === "$") {
|
|
53
|
+
val = val.val;
|
|
54
|
+
}
|
|
55
|
+
parsed[attrKey][`$${key}`] = val;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
res[`$${familyName}`] = parsed;
|
|
59
|
+
}
|
|
60
|
+
return res;
|
|
61
|
+
})();
|
|
30
62
|
const themeConfig = (() => {
|
|
31
63
|
var _a, _b, _c;
|
|
32
64
|
const themes = { ...config.themes };
|
|
@@ -42,18 +74,22 @@ function createTamagui(config) {
|
|
|
42
74
|
for (const key in config.tokens) {
|
|
43
75
|
for (const skey in config.tokens[key]) {
|
|
44
76
|
const val = config.tokens[key][skey];
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
77
|
+
addVar(val);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
for (const key in fontsParsed) {
|
|
81
|
+
const val = fontsParsed[key];
|
|
82
|
+
for (const fkey in val) {
|
|
83
|
+
if (fkey === "family") {
|
|
84
|
+
addVar(val[fkey]);
|
|
85
|
+
} else {
|
|
86
|
+
for (const fskey in val[fkey]) {
|
|
87
|
+
const fval = val[fkey][fskey];
|
|
88
|
+
if (typeof fval === "string") {
|
|
49
89
|
} else {
|
|
50
|
-
|
|
51
|
-
addVar(val[fkey][fskey]);
|
|
52
|
-
}
|
|
90
|
+
addVar(val[fkey][fskey]);
|
|
53
91
|
}
|
|
54
92
|
}
|
|
55
|
-
} else {
|
|
56
|
-
addVar(val);
|
|
57
93
|
}
|
|
58
94
|
}
|
|
59
95
|
}
|
|
@@ -153,29 +189,6 @@ function createTamagui(config) {
|
|
|
153
189
|
};
|
|
154
190
|
})();
|
|
155
191
|
const tokensParsed = parseTokens(config.tokens);
|
|
156
|
-
const fontsParsed = (() => {
|
|
157
|
-
if (!config.fonts) {
|
|
158
|
-
throw new Error(`No fonts defined!`);
|
|
159
|
-
}
|
|
160
|
-
const res = {};
|
|
161
|
-
for (const familyName in config.fonts) {
|
|
162
|
-
const family = config.fonts[familyName];
|
|
163
|
-
const parsed = {};
|
|
164
|
-
for (const attrKey in family) {
|
|
165
|
-
const attr = family[attrKey];
|
|
166
|
-
if (attrKey === "family") {
|
|
167
|
-
parsed[attrKey] = attr;
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
parsed[attrKey] = Object.keys(attr).reduce((acc, cur) => {
|
|
171
|
-
acc[`$${cur}`] = attr[cur];
|
|
172
|
-
return acc;
|
|
173
|
-
}, {});
|
|
174
|
-
}
|
|
175
|
-
res[`$${familyName}`] = parsed;
|
|
176
|
-
}
|
|
177
|
-
return res;
|
|
178
|
-
})();
|
|
179
192
|
const getCSS = /* @__PURE__ */ __name(() => {
|
|
180
193
|
return `${themeConfig.css}
|
|
181
194
|
${getInsertedRules().join("\n")}`;
|
|
@@ -44,6 +44,12 @@ function getVariableName(v) {
|
|
|
44
44
|
return v;
|
|
45
45
|
}
|
|
46
46
|
__name(getVariableName, "getVariableName");
|
|
47
|
+
function getVariableVariable(v) {
|
|
48
|
+
if (isVariable(v))
|
|
49
|
+
return v.variable;
|
|
50
|
+
return v;
|
|
51
|
+
}
|
|
52
|
+
__name(getVariableVariable, "getVariableVariable");
|
|
47
53
|
const createCSSVariable = /* @__PURE__ */ __name((nameProp, includeVar = true) => {
|
|
48
54
|
if (process.env.NODE_ENV === "development") {
|
|
49
55
|
if (!nameProp || typeof nameProp !== "string") {
|
|
@@ -60,5 +66,6 @@ export {
|
|
|
60
66
|
createVariable,
|
|
61
67
|
getVariableName,
|
|
62
68
|
getVariableValue,
|
|
69
|
+
getVariableVariable,
|
|
63
70
|
isVariable
|
|
64
71
|
};
|
|
@@ -23,7 +23,7 @@ const createVariables = /* @__PURE__ */ __name((tokens, parentPath = "") => {
|
|
|
23
23
|
res[key] = createVariables(tokens[key], name);
|
|
24
24
|
}
|
|
25
25
|
} else {
|
|
26
|
-
res[key] = createVariable({ val, name, key });
|
|
26
|
+
res[key] = isVariable(val) ? val : createVariable({ val, name, key });
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
return res;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { isWeb } from "../constants/platform";
|
|
4
|
+
import { getVariableVariable } from "../createVariable";
|
|
5
|
+
const operators = {
|
|
6
|
+
"+": (a, b) => a + b,
|
|
7
|
+
"-": (a, b) => a - b,
|
|
8
|
+
"/": (a, b) => a / b,
|
|
9
|
+
"*": (a, b) => a * b
|
|
10
|
+
};
|
|
11
|
+
const calc = /* @__PURE__ */ __name((...valuesAndOperators) => {
|
|
12
|
+
if (isWeb) {
|
|
13
|
+
let res2 = "calc(";
|
|
14
|
+
for (const cur of valuesAndOperators) {
|
|
15
|
+
if (operators[cur]) {
|
|
16
|
+
res2 += " " + cur + " ";
|
|
17
|
+
} else {
|
|
18
|
+
res2 += convertToVariableOrNumber(cur);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
console.log("got", res2, "from", valuesAndOperators);
|
|
22
|
+
return res2 + ")";
|
|
23
|
+
}
|
|
24
|
+
let res = 0;
|
|
25
|
+
let nextOp = null;
|
|
26
|
+
for (const cur of valuesAndOperators) {
|
|
27
|
+
if (operators[cur]) {
|
|
28
|
+
nextOp = operators[cur];
|
|
29
|
+
} else {
|
|
30
|
+
if (nextOp) {
|
|
31
|
+
res = nextOp(res, cur);
|
|
32
|
+
nextOp = null;
|
|
33
|
+
} else {
|
|
34
|
+
res = +cur;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return res;
|
|
39
|
+
}, "calc");
|
|
40
|
+
const convertToVariableOrNumber = /* @__PURE__ */ __name((v) => {
|
|
41
|
+
const varOrVal = getVariableVariable(v);
|
|
42
|
+
if (typeof varOrVal === "number") {
|
|
43
|
+
return `${varOrVal}px`;
|
|
44
|
+
}
|
|
45
|
+
return varOrVal;
|
|
46
|
+
}, "convertToVariableOrNumber");
|
|
47
|
+
export {
|
|
48
|
+
calc
|
|
49
|
+
};
|
|
@@ -200,14 +200,7 @@ const tokenCategories = {
|
|
|
200
200
|
minWidth: true,
|
|
201
201
|
minHeight: true,
|
|
202
202
|
maxWidth: true,
|
|
203
|
-
maxHeight: true
|
|
204
|
-
padding: true,
|
|
205
|
-
paddingLeft: true,
|
|
206
|
-
paddingRight: true,
|
|
207
|
-
paddingTop: true,
|
|
208
|
-
paddingBottom: true,
|
|
209
|
-
paddingVertical: true,
|
|
210
|
-
paddingHorizontal: true
|
|
203
|
+
maxHeight: true
|
|
211
204
|
},
|
|
212
205
|
color: {
|
|
213
206
|
color: true,
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
import { getTokens } from "../conf";
|
|
4
|
-
const getSize = /* @__PURE__ */ __name((size,
|
|
5
|
-
|
|
6
|
-
const sizeNames = Object.keys(sizes);
|
|
7
|
-
const key = sizeNames[Math.max(0, sizeNames.indexOf(String(size || "$4")) + sizeUpOrDownBy)];
|
|
8
|
-
return sizes[key] || sizes["$4"];
|
|
4
|
+
const getSize = /* @__PURE__ */ __name((size, shift = 0) => {
|
|
5
|
+
return stepTokenUpOrDown(getTokens().size, size, shift);
|
|
9
6
|
}, "getSize");
|
|
7
|
+
const stepTokenUpOrDown = /* @__PURE__ */ __name((tokens, current, shift = 0) => {
|
|
8
|
+
const sizeNames = Object.keys(tokens);
|
|
9
|
+
const currentKeyNum = (typeof current === "string" ? current.replace("$", "") : current) || "4";
|
|
10
|
+
const nextKeyName = `$${+currentKeyNum + shift}`;
|
|
11
|
+
const index = Math.min(sizeNames.length - 1, Math.max(0, sizeNames.indexOf(nextKeyName)));
|
|
12
|
+
const key = sizeNames[index];
|
|
13
|
+
return tokens[key] || tokens["$4"];
|
|
14
|
+
}, "stepTokenUpOrDown");
|
|
10
15
|
export {
|
|
11
|
-
getSize
|
|
16
|
+
getSize,
|
|
17
|
+
stepTokenUpOrDown
|
|
12
18
|
};
|
|
@@ -1,43 +1,17 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
5
|
-
var _a, _b, _c, _d, _e, _f;
|
|
6
|
-
const size = (_c = (_b = (_a = tokens.size[val]) != null ? _a : val) != null ? _b : tokens.size["$4"]) != null ? _c : 14;
|
|
7
|
-
const radius = (_e = (_d = tokens.radius[val]) != null ? _d : tokens.radius["$4"]) != null ? _e : size;
|
|
8
|
-
const sizePx = +(isVariable(size) ? size.val : size);
|
|
9
|
-
const scaleSize = isVariable(size) ? 2 : 1;
|
|
10
|
-
const px = Math.round(sizePx * sizeX);
|
|
11
|
-
const py = Math.round(sizePx * sizeY);
|
|
12
|
-
const font = fonts[props.fontFamily] || fonts["$body"];
|
|
13
|
-
const lineHeights = font.lineHeight;
|
|
14
|
-
const lineHeight = (_f = lineHeights[val]) != null ? _f : lineHeights["$4"];
|
|
15
|
-
const minHeight = Math.round(getVariableValue(lineHeight) + py * scaleSize);
|
|
16
|
-
return {
|
|
17
|
-
px,
|
|
18
|
-
py,
|
|
19
|
-
radius,
|
|
20
|
-
size,
|
|
21
|
-
lineHeight,
|
|
22
|
-
minHeight
|
|
23
|
-
};
|
|
24
|
-
}, "getSizeScaledToFont");
|
|
25
|
-
const createGetStackSize = /* @__PURE__ */ __name((scale) => (val, extras) => {
|
|
3
|
+
import { getSize, stepTokenUpOrDown } from "./getSize";
|
|
4
|
+
const getButtonSize = /* @__PURE__ */ __name((val, { tokens }) => {
|
|
26
5
|
var _a;
|
|
27
|
-
const
|
|
28
|
-
const
|
|
6
|
+
const ySize = getSize(val, 0);
|
|
7
|
+
const xSize = stepTokenUpOrDown(tokens.space, val);
|
|
8
|
+
const radiusToken = (_a = tokens.radius[val]) != null ? _a : tokens.radius["$4"];
|
|
29
9
|
return {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
paddingVertical: props.circular ? 0 : py
|
|
10
|
+
paddingHorizontal: xSize,
|
|
11
|
+
height: ySize,
|
|
12
|
+
borderRadius: radiusToken
|
|
34
13
|
};
|
|
35
|
-
}, "
|
|
36
|
-
const buttonScaling = { sizeX: 0.75, sizeY: 0.333 };
|
|
37
|
-
const getButtonSize = createGetStackSize(buttonScaling);
|
|
14
|
+
}, "getButtonSize");
|
|
38
15
|
export {
|
|
39
|
-
|
|
40
|
-
createGetStackSize,
|
|
41
|
-
getButtonSize,
|
|
42
|
-
getSizeScaledToFont
|
|
16
|
+
getButtonSize
|
|
43
17
|
};
|