{"version":3,"sources":["../src/generateAtomics.js"],"names":[],"mappings":"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","file":"chunk-N7I2UQMS.mjs","sourcesContent":["import cx from 'clsx';\n\n/**\n * `__wyw_dynamic_import` is a special global var that is set during the evaluation phase by wyw.\n * So during eval phase, it can happen that some code is calling the runtime function.\n * We do not want to throw error in that case as we want the evaluation to happen.\n */\nexport function generateAtomics() {\n  if (typeof __wyw_dynamic_import !== 'undefined') {\n    return;\n  }\n  throw new Error(\n    `${process.env.PACKAGE_NAME}: You were trying to call \"generateAtomics\" function without configuring your bundler. Make sure to install the bundler specific plugin and use it. @pigment-css/vite-plugin for Vite integration or @pigment-css/nextjs-plugin for Next.js integration.`,\n  );\n}\n\n/**\n * @typedef {Object} RuntimeConfig\n * @property {Object.<string, Object.<string, Object.<string, string>>>} styles\n * @property {Object.<string, string[]>} shorthands\n * @property {string[]} conditions\n * @property {string} defaultCondition\n * @property {string[]} unitless\n * @property {Object.<string, string>} multipliers\n */\n\n/**\n * Given a mapping of atomic classes to css properties for each breakpoint, this function\n * returns all the classnames associated with the runtime values.\n *\n * @param {RuntimeConfig} runtimeConfig\n */\nexport function atomics({\n  styles,\n  shorthands,\n  conditions,\n  defaultCondition,\n  unitless = [],\n  multipliers = {},\n  inlineGetters = {},\n}) {\n  function addStyles(cssProperty, propertyValue, classes, inlineStyle) {\n    const styleClasses = styles[cssProperty];\n    if (!styleClasses) {\n      return;\n    }\n\n    function handlePrimitive(\n      value,\n      multiplier = undefined,\n      inlineGetter = undefined,\n      breakpoint = defaultCondition,\n    ) {\n      if (!(value in styleClasses)) {\n        const keys = Object.keys(styleClasses);\n        if (keys.length !== 1) {\n          return;\n        }\n        const key = keys[0];\n        let styleValue = value;\n        if (typeof value === 'number') {\n          if (multiplier) {\n            styleValue = `calc(${value} * ${multiplier})`;\n          } else if (!unitless.includes(cssProperty)) {\n            styleValue = `${value}px`;\n          }\n        }\n        classes.push(styleClasses[key][breakpoint]);\n        inlineStyle[`${key}-${breakpoint}`] = inlineGetter ? inlineGetter(styleValue) : styleValue;\n      } else {\n        classes.push(\n          typeof styleClasses[value] !== 'object'\n            ? styleClasses[value]\n            : styleClasses[value][breakpoint],\n        );\n      }\n    }\n\n    if (\n      typeof propertyValue === 'string' ||\n      typeof propertyValue === 'number' ||\n      typeof propertyValue === 'boolean'\n    ) {\n      handlePrimitive(propertyValue, multipliers[cssProperty], inlineGetters[cssProperty]);\n    } else if (Array.isArray(propertyValue)) {\n      propertyValue.forEach((value, index) => {\n        if (value !== undefined && value !== null) {\n          const breakpoint = conditions[index];\n          if (!breakpoint) {\n            return;\n          }\n          handlePrimitive(\n            value,\n            multipliers[cssProperty],\n            inlineGetters[cssProperty],\n            conditions[index],\n          );\n        }\n      });\n    } else if (propertyValue) {\n      Object.keys(propertyValue).forEach((condition) => {\n        if (propertyValue[condition] !== undefined && propertyValue[condition] !== null) {\n          const propertyClasses = styleClasses[propertyValue[condition]];\n          if (!propertyClasses) {\n            handlePrimitive(\n              propertyValue[condition],\n              multipliers[cssProperty],\n              inlineGetters[cssProperty],\n              condition,\n            );\n            return;\n          }\n          classes.push(propertyClasses[condition]);\n        }\n      });\n    }\n  }\n\n  function generateClass(props) {\n    const classes = [];\n    const inlineStyle = {};\n    Object.keys(props).forEach((cssProperty) => {\n      const values = props[cssProperty];\n      if (shorthands && cssProperty in shorthands) {\n        const configShorthands = shorthands[cssProperty];\n        if (!configShorthands) {\n          return;\n        }\n        configShorthands.forEach((shorthand) => {\n          addStyles(shorthand, values, classes, inlineStyle);\n        });\n      } else {\n        addStyles(cssProperty, values, classes, inlineStyle);\n      }\n    });\n    return {\n      className: cx(Array.from(new Set(classes))),\n      style: inlineStyle,\n    };\n  }\n  return generateClass;\n}\n"]}