@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
1 lines • 5.1 kB
Source Map (JSON)
{"version":3,"file":"calc.cjs","names":["isCSSFunction","isCSSToken","globalValues","getCSSFunction","splitValues","value"],"sources":["../../../../src/core/css/calc.ts"],"sourcesContent":["import type { ThemeToken } from \"../system\"\nimport type { Transform } from \"./utils\"\nimport { isNumeric } from \"../../utils\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst OPERATORS = [\"+\", \"-\", \"*\", \"/\"]\n\nfunction getValue(value: string | undefined, fallbackValue = \"\"): Transform {\n return function (token, { system, ...rest }) {\n if (!value) return fallbackValue\n\n const prevent = isCSSFunction(value)\n\n if (prevent) {\n return generateCalc(token)(value, { system, ...rest })\n } else {\n if (isNumeric(value)) return value\n\n const resolvedToken = `${token}.${value}`\n\n if (isCSSToken(system)(resolvedToken)) {\n return system.cssMap![resolvedToken]!.ref\n } else {\n return value\n }\n }\n }\n}\n\nfunction isOperator(value: string) {\n return new RegExp(`\\\\s[${OPERATORS.join(\"\\\\\")}]\\\\s`).test(value)\n}\n\nexport function generateCalc(token: ThemeToken): Transform {\n return function (value, options) {\n if (value == null || globalValues.has(value)) return value\n\n const prevent = isCSSFunction(value)\n\n if (!prevent) return value\n\n let { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n switch (type) {\n case \"calc\": {\n const computedValues = splitValues(\n values,\n (char, prev, next) => isOperator(`${prev}${char}${next}`),\n true,\n ).map((value) => {\n if (value && OPERATORS.includes(value)) return value\n\n return getValue(value)(token, options)\n })\n\n return `calc(${computedValues.join(\" \")})`\n }\n\n case \"min\":\n case \"max\": {\n let [firstValue, secondValue, ...otherValues] = splitValues(values)\n\n firstValue = getValue(firstValue, \"100%\")(token, options)\n secondValue = getValue(secondValue, \"100%\")(token, options)\n otherValues = otherValues.map((value) =>\n getValue(value)(token, options),\n )\n\n return (\n `${type}(` +\n `${firstValue}, ${secondValue}` +\n (otherValues.length ? `, ${otherValues.join(\", \")}` : \"\") +\n \")\"\n )\n }\n\n case \"clamp\": {\n let [min, preferred, max] = splitValues(values)\n\n if (!max) {\n max = preferred\n preferred = \"\"\n }\n\n min = getValue(min)(token, options)\n preferred = getValue(preferred, \"100%\")(token, options)\n max = getValue(max)(token, options)\n\n return `clamp(${min}, ${preferred}, ${max})`\n }\n\n case \"minmax\": {\n let [min, max] = splitValues(values)\n\n min = getValue(min)(token, options)\n max = getValue(max)(token, options)\n\n return `minmax(${min}, ${max})`\n }\n\n case \"fit-content\": {\n let [value] = splitValues(values)\n\n value = getValue(value)(token, options)\n\n return `fit-content(${value})`\n }\n\n default:\n return value\n }\n }\n}\n"],"mappings":";;;;AAWA,MAAM,YAAY;CAAC;CAAK;CAAK;CAAK;CAAI;AAEtC,SAAS,SAAS,OAA2B,gBAAgB,IAAe;AAC1E,QAAO,SAAU,OAAO,EAAE,OAAQ,GAAG,QAAQ;AAC3C,MAAI,CAAC,MAAO,QAAO;AAInB,MAFgBA,4BAAc,MAAM,CAGlC,QAAO,aAAa,MAAM,CAAC,OAAO;GAAE;GAAQ,GAAG;GAAM,CAAC;OACjD;AACL,wDAAc,MAAM,CAAE,QAAO;GAE7B,MAAM,gBAAgB,GAAG,MAAM,GAAG;AAElC,OAAIC,yBAAW,OAAO,CAAC,cAAc,CACnC,QAAO,OAAO,OAAQ,eAAgB;OAEtC,QAAO;;;;AAMf,SAAS,WAAW,OAAe;AACjC,yBAAO,IAAI,OAAO,OAAO,UAAU,KAAK,KAAK,CAAC,MAAM,EAAC,KAAK,MAAM;;AAGlE,SAAgB,aAAa,OAA8B;AACzD,QAAO,SAAU,OAAO,SAAS;AAC/B,MAAI,SAAS,QAAQC,2BAAa,IAAI,MAAM,CAAE,QAAO;AAIrD,MAAI,CAFYF,4BAAc,MAAM,CAEtB,QAAO;EAErB,IAAI,EAAE,MAAM,WAAWG,6BAAe,MAAM;AAE5C,MAAI,CAAC,QAAQ,CAAC,OAAQ,QAAO;AAE7B,UAAQ,MAAR;GACE,KAAK,OAWH,QAAO,QAVgBC,0BACrB,SACC,MAAM,MAAM,SAAS,WAAW,GAAG,OAAO,OAAO,OAAO,EACzD,KACD,CAAC,KAAK,YAAU;AACf,QAAIC,WAAS,UAAU,SAASA,QAAM,CAAE,QAAOA;AAE/C,WAAO,SAASA,QAAM,CAAC,OAAO,QAAQ;KACtC,CAE4B,KAAK,IAAI,CAAC;GAG1C,KAAK;GACL,KAAK,OAAO;IACV,IAAI,CAAC,YAAY,aAAa,GAAG,eAAeD,0BAAY,OAAO;AAEnE,iBAAa,SAAS,YAAY,OAAO,CAAC,OAAO,QAAQ;AACzD,kBAAc,SAAS,aAAa,OAAO,CAAC,OAAO,QAAQ;AAC3D,kBAAc,YAAY,KAAK,YAC7B,SAASC,QAAM,CAAC,OAAO,QAAQ,CAChC;AAED,WACE,GAAG,KAAK,GACL,WAAW,IAAI,iBACjB,YAAY,SAAS,KAAK,YAAY,KAAK,KAAK,KAAK,MACtD;;GAIJ,KAAK,SAAS;IACZ,IAAI,CAAC,KAAK,WAAW,OAAOD,0BAAY,OAAO;AAE/C,QAAI,CAAC,KAAK;AACR,WAAM;AACN,iBAAY;;AAGd,UAAM,SAAS,IAAI,CAAC,OAAO,QAAQ;AACnC,gBAAY,SAAS,WAAW,OAAO,CAAC,OAAO,QAAQ;AACvD,UAAM,SAAS,IAAI,CAAC,OAAO,QAAQ;AAEnC,WAAO,SAAS,IAAI,IAAI,UAAU,IAAI,IAAI;;GAG5C,KAAK,UAAU;IACb,IAAI,CAAC,KAAK,OAAOA,0BAAY,OAAO;AAEpC,UAAM,SAAS,IAAI,CAAC,OAAO,QAAQ;AACnC,UAAM,SAAS,IAAI,CAAC,OAAO,QAAQ;AAEnC,WAAO,UAAU,IAAI,IAAI,IAAI;;GAG/B,KAAK,eAAe;IAClB,IAAI,CAACC,WAASD,0BAAY,OAAO;AAEjC,cAAQ,SAASC,QAAM,CAAC,OAAO,QAAQ;AAEvC,WAAO,eAAeA,QAAM;;GAG9B,QACE,QAAO"}