{"version":3,"file":"cva.mjs","names":[],"sources":["../../src/css/cva.js"],"sourcesContent":["import { compact, mergeProps, memo, splitProps, uniq } from '../helpers.js';\nimport { css, mergeCss } from './css.js';\n\nconst defaults = (conf) => ({\n  base: {},\n  variants: {},\n  defaultVariants: {},\n  compoundVariants: [],\n  ...conf,\n})\n\nexport function cva(config) {\n  const { base, variants, defaultVariants, compoundVariants } = defaults(config)\n  const getVariantProps = (variants) => ({ ...defaultVariants, ...compact(variants) })\n\n  function resolve(props = {}) {\n    const computedVariants = getVariantProps(props)\n    let variantCss = { ...base }\n    for (const [key, value] of Object.entries(computedVariants)) {\n      if (variants[key]?.[value]) {\n        variantCss = mergeCss(variantCss, variants[key][value])\n      }\n    }\n    const compoundVariantCss = getCompoundVariantCss(compoundVariants, computedVariants)\n    return mergeCss(variantCss, compoundVariantCss)\n  }\n\n  function merge(__cva) {\n    const override = defaults(__cva.config)\n    const variantKeys = uniq(__cva.variantKeys, Object.keys(variants))\n    return cva({\n      base: mergeCss(base, override.base),\n      variants: Object.fromEntries(\n        variantKeys.map((key) => [key, mergeCss(variants[key], override.variants[key])]),\n      ),\n      defaultVariants: mergeProps(defaultVariants, override.defaultVariants),\n      compoundVariants: [...compoundVariants, ...override.compoundVariants],\n    })\n  }\n\n  function cvaFn(props) {\n    return css(resolve(props))\n  }\n\n  const variantKeys = Object.keys(variants)\n\n  function splitVariantProps(props) {\n    return splitProps(props, variantKeys)\n  }\n\n  const variantMap = Object.fromEntries(Object.entries(variants).map(([key, value]) => [key, Object.keys(value)]))\n\n  return Object.assign(memo(cvaFn), {\n    __cva__: true,\n    variantMap,\n    variantKeys,\n    raw: resolve,\n    config,\n    merge,\n    splitVariantProps,\n    getVariantProps\n  })\n}\n\nexport function getCompoundVariantCss(compoundVariants, variantMap) {\n  let result = {}\n  compoundVariants.forEach((compoundVariant) => {\n    const isMatching = Object.entries(compoundVariant).every(([key, value]) => {\n      if (key === 'css') return true\n\n      const values = Array.isArray(value) ? value : [value]\n      return values.some((value) => variantMap[key] === value)\n    })\n\n    if (isMatching) {\n      result = mergeCss(result, compoundVariant.css)\n    }\n  })\n\n  return result\n}\n\nexport function assertCompoundVariant(name, compoundVariants, variants, prop) {\n  if (compoundVariants.length > 0 && typeof variants?.[prop] === 'object') {\n    throw new Error(`[recipe:${name}:${prop}] Conditions are not supported when using compound variants.`)\n  }\n}\n"],"mappings":";;;AAGA,MAAM,YAAY,UAAU;CAC1B,MAAM,CAAC;CACP,UAAU,CAAC;CACX,iBAAiB,CAAC;CAClB,kBAAkB,CAAC;CACnB,GAAG;AACL;AAEA,SAAgB,IAAI,QAAQ;CAC1B,MAAM,EAAE,MAAM,UAAU,iBAAiB,qBAAqB,SAAS,MAAM;CAC7E,MAAM,mBAAmB,cAAc;EAAE,GAAG;EAAiB,GAAG,QAAQ,QAAQ;CAAE;CAElF,SAAS,QAAQ,QAAQ,CAAC,GAAG;EAC3B,MAAM,mBAAmB,gBAAgB,KAAK;EAC9C,IAAI,aAAa,EAAE,GAAG,KAAK;EAC3B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,gBAAgB,GACxD,IAAI,SAAS,OAAO,QAClB,aAAa,SAAS,YAAY,SAAS,KAAK,MAAM;EAG1D,MAAM,qBAAqB,sBAAsB,kBAAkB,gBAAgB;EACnF,OAAO,SAAS,YAAY,kBAAkB;CAChD;CAEA,SAAS,MAAM,OAAO;EACpB,MAAM,WAAW,SAAS,MAAM,MAAM;EACtC,MAAM,cAAc,KAAK,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC;EACjE,OAAO,IAAI;GACT,MAAM,SAAS,MAAM,SAAS,IAAI;GAClC,UAAU,OAAO,YACf,YAAY,KAAK,QAAQ,CAAC,KAAK,SAAS,SAAS,MAAM,SAAS,SAAS,IAAI,CAAC,CAAC,CACjF;GACA,iBAAiB,WAAW,iBAAiB,SAAS,eAAe;GACrE,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,SAAS,gBAAgB;EACtE,CAAC;CACH;CAEA,SAAS,MAAM,OAAO;EACpB,OAAO,IAAI,QAAQ,KAAK,CAAC;CAC3B;CAEA,MAAM,cAAc,OAAO,KAAK,QAAQ;CAExC,SAAS,kBAAkB,OAAO;EAChC,OAAO,WAAW,OAAO,WAAW;CACtC;CAEA,MAAM,aAAa,OAAO,YAAY,OAAO,QAAQ,QAAQ,EAAE,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;CAE/G,OAAO,OAAO,OAAO,KAAK,KAAK,GAAG;EAChC,SAAS;EACT;EACA;EACA,KAAK;EACL;EACA;EACA;EACA;CACF,CAAC;AACH;AAEA,SAAgB,sBAAsB,kBAAkB,YAAY;CAClE,IAAI,SAAS,CAAC;CACd,iBAAiB,SAAS,oBAAoB;EAQ5C,IAPmB,OAAO,QAAQ,eAAe,EAAE,OAAO,CAAC,KAAK,WAAW;GACzE,IAAI,QAAQ,OAAO,OAAO;GAG1B,QADe,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GACtC,MAAM,UAAU,WAAW,SAAS,KAAK;EACzD,CAEa,GACX,SAAS,SAAS,QAAQ,gBAAgB,GAAG;CAEjD,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,sBAAsB,MAAM,kBAAkB,UAAU,MAAM;CAC5E,IAAI,iBAAiB,SAAS,KAAK,OAAO,WAAW,UAAU,UAC7D,MAAM,IAAI,MAAM,WAAW,KAAK,GAAG,KAAK,6DAA6D;AAEzG"}