UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

1 lines 12.5 kB
{"version":3,"file":"css.cjs","names":["variableLengthProperties","computedCSS: Dict","conditions","key","getCondition","css","transformInterpolation","value","getColorSchemeVar","colorMix","isCSSToken","getVar","styles","cssOrFn","prev: Dict","options: TransformOptions","isImportant","omitImportant","insertImportant"],"sources":["../../../../src/core/css/css.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Breakpoints, System, UsageTheme } from \"../system\"\nimport type { StyleConfig } from \"./config\"\nimport type { CSSObjectOrFunction } from \"./index.types\"\nimport type { StyleProperty, VariableLengthProperty } from \"./styles\"\nimport type { TransformOptions } from \"./utils\"\nimport {\n isArray,\n isObject,\n isString,\n isUndefined,\n merge,\n runIfFn,\n} from \"../../utils\"\nimport { getColorSchemeVar, getVar, transformInterpolation } from \"../system\"\nimport { colorMix } from \"./color-mix\"\nimport { conditions, getCondition } from \"./conditions\"\nimport { styles, variableLengthProperties } from \"./styles\"\nimport {\n insertImportant,\n isCSSToken,\n isImportant,\n omitImportant,\n} from \"./utils\"\n\nfunction isVariableLength(key: string): boolean {\n return variableLengthProperties.includes(key as VariableLengthProperty)\n}\n\nfunction isConditionalObject(breakpoints: Breakpoints) {\n return function (value: any): boolean {\n if (!isObject(value)) return false\n\n const keys = Object.keys(value)\n\n if (!keys.length) return false\n\n if (!keys.includes(\"base\")) return false\n\n return keys.every((key) => {\n return (\n breakpoints.isResponsiveKey(key) ||\n key.startsWith(\"@\") ||\n key.startsWith(\"_\")\n )\n })\n }\n}\n\nfunction transformColorModeArray(breakpoints: Breakpoints) {\n return function (key: string, [lightValue, darkValue]: any[]): Dict {\n let computedCSS: Dict = {}\n\n if (isConditionalObject(breakpoints)(lightValue)) {\n computedCSS = transformConditionalObject(breakpoints)(key, lightValue)\n } else {\n computedCSS[key] = lightValue\n }\n\n if (isConditionalObject(breakpoints)(darkValue)) {\n computedCSS[conditions._dark] = transformConditionalObject(breakpoints)(\n key,\n darkValue,\n )\n } else {\n computedCSS[conditions._dark] = { [key]: darkValue }\n }\n\n return computedCSS\n }\n}\n\nfunction transformConditionalObject(breakpoints: Breakpoints) {\n return function (key: string, value: Dict) {\n const conditionalKeys = Object.keys(value).filter(\n (key) => !breakpoints.isResponsiveKey(key),\n )\n\n const breakpointObj = breakpoints.queries.reduce<Dict>(\n (prev, { breakpoint, query }) => {\n const breakpointValue = value[breakpoint]\n\n if (!isUndefined(breakpointValue)) {\n if (isArray(breakpointValue)) {\n const colorModeValue = transformColorModeArray(breakpoints)(\n key,\n breakpointValue,\n )\n\n prev = merge(\n prev,\n query ? { [query]: colorModeValue } : colorModeValue,\n )\n } else if (isConditionalObject(breakpoints)(breakpointValue)) {\n const conditionalValue = transformConditionalObject(breakpoints)(\n key,\n breakpointValue,\n )\n\n prev = merge(\n prev,\n query ? { [query]: conditionalValue } : conditionalValue,\n )\n } else {\n prev = merge(\n prev,\n query\n ? { [query]: { [key]: breakpointValue } }\n : { [key]: breakpointValue },\n )\n }\n }\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Dict>(\n (prev, conditionalKey) => {\n const query = getCondition(conditionalKey)\n\n prev[query] = { [key]: value[conditionalKey] }\n\n return prev\n },\n {},\n )\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nexport function transformConditionalValue({ breakpoints }: System) {\n return function (key: string, value: any) {\n if (isArray(value)) {\n return transformColorModeArray(breakpoints)(key, value)\n } else if (isConditionalObject(breakpoints)(value)) {\n return transformConditionalObject(breakpoints)(key, value)\n } else {\n return { [key]: value }\n }\n }\n}\n\nfunction expandCSS(system: System) {\n return function (css: Dict): Dict {\n let computedCSS: Dict = {}\n\n for (let [key, value] of Object.entries(css)) {\n if (value == null) continue\n\n if (!isVariableLength(key)) {\n computedCSS = merge(\n computedCSS,\n transformConditionalValue(system)(key, value),\n )\n } else {\n computedCSS = merge(computedCSS, { [key]: value })\n }\n }\n\n return computedCSS\n }\n}\n\nfunction valueToVar(system: System) {\n return function (prop: string, value: any) {\n const result = transformInterpolation(\n value,\n function (value: string, fallbackValue?: string) {\n if (value.includes(\"colorScheme.\")) {\n return getColorSchemeVar(system)(value)\n } else if (value.includes(\"colors.\")) {\n return colorMix(value, { fallback: fallbackValue, system })\n } else if (isCSSToken(system)(value)) {\n return system.cssMap![value]!.ref\n } else if (fallbackValue) {\n fallbackValue = isCSSToken(system)(fallbackValue)\n ? system.cssMap![fallbackValue]!.ref\n : fallbackValue\n\n return getVar(value, fallbackValue)\n } else {\n return getVar(value)\n }\n },\n )\n\n if (prop.startsWith(\"--\") && isString(result)) {\n if (result.includes(\"colorScheme.\")) {\n return getColorSchemeVar(system)(result)\n } else if (result.includes(\"colors.\")) {\n return colorMix(result, { system })\n } else if (isCSSToken(system)(result)) {\n return system.cssMap![result]!.ref\n } else {\n return result\n }\n } else {\n return result\n }\n }\n}\n\nfunction mergeCSS(prev: Dict, value: any, prop: string, properties?: string[]) {\n if (properties) {\n for (const property of properties) {\n prev[property] = prev[property] ?? {}\n prev[property] = merge(prev[property], value)\n }\n } else {\n prev[prop] = prev[prop] ?? {}\n prev[prop] = merge(prev[prop], value)\n }\n\n return prev\n}\n\nfunction insertCSS(\n prev: Dict,\n value: any,\n prop: string,\n properties?: string[],\n) {\n if (properties) {\n for (const property of properties) {\n prev[property] = value\n }\n } else {\n prev[prop] = value\n }\n\n return prev\n}\n\nexport function getStyle(prop: string) {\n const style = styles[prop as StyleProperty] as StyleConfig | true | undefined\n\n return style === true ? { properties: [prop] } : style\n}\n\nexport function css(system: System, theme: UsageTheme = {}) {\n return function (cssOrFn: CSSObjectOrFunction) {\n function createCSS(cssOrFn: CSSObjectOrFunction): Dict {\n const cssObj = runIfFn(cssOrFn, system)\n const computedCSS = expandCSS(system)(cssObj)\n\n let prev: Dict = {}\n\n for (let [prop, value] of Object.entries(computedCSS)) {\n value = valueToVar(system)(prop, value)\n\n if (value == null) continue\n\n prop = getCondition(prop)\n\n const style = getStyle(prop)\n const options: TransformOptions = {\n css,\n prev,\n properties: style?.properties,\n system,\n theme,\n }\n\n if (isObject(value)) {\n value = style?.transform?.(value, options) ?? value\n\n if (isObject(value)) {\n prev = mergeCSS(prev, createCSS(value), prop, style?.properties)\n } else {\n prev = insertCSS(prev, value, prop, style?.properties)\n }\n\n continue\n }\n\n const important = isImportant(value)\n\n value = omitImportant(value)\n value = style?.transform?.(value, options) ?? value\n\n if (important) value = insertImportant(value, style)\n\n if (style?.static) prev = merge(prev, style.static)\n\n if (isObject(value)) {\n prev = merge(prev, createCSS(value))\n\n continue\n }\n\n prev = insertCSS(prev, value, prop, style?.properties)\n }\n\n return prev\n }\n\n return createCSS(cssOrFn)\n }\n}\n\nexport type CSSFunction = typeof css\n"],"mappings":"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"}