{"version":3,"file":"factory.mjs","names":[],"sources":["../../src/jsx/factory.js"],"sourcesContent":["import { createElement, forwardRef, useMemo } from 'react'\nimport { css, cx, cva } from '../css/index.js';\nimport { defaultShouldForwardProp, composeShouldForwardProps, composeCvaFn, getDisplayName } from './factory-helper.js';\nimport { splitProps, normalizeHTMLProps } from '../helpers.js';\nimport { isCssProperty } from './is-valid-prop.js';\n\nfunction styledFn(Dynamic, configOrCva = {}, options = {}) {\n  const cvaFn = configOrCva.__cva__ || configOrCva.__recipe__ ? configOrCva : cva(configOrCva)\n\n  const forwardFn = options.shouldForwardProp || defaultShouldForwardProp\n  const shouldForwardProp = (prop) => {\n    if (options.forwardProps?.includes(prop)) return true\n    return forwardFn(prop, cvaFn.variantKeys)\n  }\n  \n  const defaultProps = Object.assign(\n    options.dataAttr && configOrCva.__name__ ? { 'data-recipe': configOrCva.__name__ } : {},\n    options.defaultProps,\n  )\n\n  const __cvaFn__ = composeCvaFn(Dynamic.__cva__, cvaFn)\n  const __shouldForwardProps__ = composeShouldForwardProps(Dynamic, shouldForwardProp)\n  const __base__ = Dynamic.__base__ || Dynamic\n  const contextConsume = options.baseComponent || Dynamic.__base__ || typeof Dynamic === \"string\"\n\n  const StyledComponent = /* @__PURE__ */ forwardRef(function StyledComponent(props, ref) {\n    const { as: Element = __base__, unstyled, consumeCss, children, ...restProps } = props\n\n    const consume = props.asChild\n      ? consumeCss && (options.baseComponent || Dynamic.__baseComponent__)\n      : consumeCss || contextConsume\n\n    const combinedProps = useMemo(() => Object.assign({}, defaultProps, restProps), [restProps])\n\n    const [htmlProps, forwardedProps, variantProps, styleProps, elementProps] = useMemo(() => {\n      return splitProps(combinedProps, normalizeHTMLProps.keys, __shouldForwardProps__, __cvaFn__.variantKeys, isCssProperty)\n    }, [combinedProps])\n\n    function recipeClass() {\n      const { css: cssStyles, ...propStyles } = styleProps\n      const compoundVariantStyles = __cvaFn__.__getCompoundVariantCss__?.(variantProps)\n      return cx(__cvaFn__(variantProps, false), css(compoundVariantStyles, propStyles, cssStyles), combinedProps.className)\n    }\n\n    function cvaClass() {\n      const { css: cssStyles, ...propStyles } = styleProps\n      const cvaStyles = __cvaFn__.raw(variantProps)\n      if(!consume) {\n        return css.raw(cvaStyles, propStyles, cssStyles)\n      }\n      return cx(css(cvaStyles, propStyles, cssStyles), combinedProps.className)\n    }\n\n    const classes = () => {\n      if (unstyled) {\n        const { css: cssStyles, ...propStyles } = styleProps\n        return cx(css(propStyles, cssStyles), combinedProps.className)\n      }\n      return configOrCva.__recipe__ ? recipeClass() : cvaClass()\n    }\n\n    return createElement(Element, {\n      ref,\n      ...forwardedProps,\n      ...elementProps,\n      ...normalizeHTMLProps(htmlProps),\n      ...(consume ? { className: classes() } : { css: classes(), consumeCss } ),\n    }, children ?? combinedProps.children)\n  })\n\n  const name = getDisplayName(__base__)\n\n  StyledComponent.displayName = `styled.${name}`\n  StyledComponent.__cva__ = __cvaFn__\n  StyledComponent.__base__ = __base__\n  StyledComponent.__shouldForwardProps__ = shouldForwardProp\n  StyledComponent.__baseComponent__ = options.baseComponent || Dynamic.__baseComponent__\n\n  return StyledComponent\n}\n\nfunction createJsxFactory() {\n  const cache = new Map()\n\n  return new Proxy(styledFn, {\n    apply(_, __, args) {\n      return styledFn(...args)\n    },\n    get(_, el) {\n      if (!cache.has(el)) {\n        cache.set(el, styledFn(el))\n      }\n      return cache.get(el)\n    },\n  })\n}\n\nexport const styled = /* @__PURE__ */ createJsxFactory()\n"],"mappings":";;;;;;;;AAMA,SAAS,SAAS,SAAS,cAAc,CAAC,GAAG,UAAU,CAAC,GAAG;CACzD,MAAM,QAAQ,YAAY,WAAW,YAAY,aAAa,cAAc,IAAI,WAAW;CAE3F,MAAM,YAAY,QAAQ,qBAAqB;CAC/C,MAAM,qBAAqB,SAAS;EAClC,IAAI,QAAQ,cAAc,SAAS,IAAI,GAAG,OAAO;EACjD,OAAO,UAAU,MAAM,MAAM,WAAW;CAC1C;CAEA,MAAM,eAAe,OAAO,OAC1B,QAAQ,YAAY,YAAY,WAAW,EAAE,eAAe,YAAY,SAAS,IAAI,CAAC,GACtF,QAAQ,YACV;CAEA,MAAM,YAAY,aAAa,QAAQ,SAAS,KAAK;CACrD,MAAM,yBAAyB,0BAA0B,SAAS,iBAAiB;CACnF,MAAM,WAAW,QAAQ,YAAY;CACrC,MAAM,iBAAiB,QAAQ,iBAAiB,QAAQ,YAAY,OAAO,YAAY;CAEvF,MAAM,kBAAkC,2BAAW,SAAS,gBAAgB,OAAO,KAAK;EACtF,MAAM,EAAE,IAAI,UAAU,UAAU,UAAU,YAAY,UAAU,GAAG,cAAc;EAEjF,MAAM,UAAU,MAAM,UAClB,eAAe,QAAQ,iBAAiB,QAAQ,qBAChD,cAAc;EAElB,MAAM,gBAAgB,cAAc,OAAO,OAAO,CAAC,GAAG,cAAc,SAAS,GAAG,CAAC,SAAS,CAAC;EAE3F,MAAM,CAAC,WAAW,gBAAgB,cAAc,YAAY,gBAAgB,cAAc;GACxF,OAAO,WAAW,eAAe,mBAAmB,MAAM,wBAAwB,UAAU,aAAa,aAAa;EACxH,GAAG,CAAC,aAAa,CAAC;EAElB,SAAS,cAAc;GACrB,MAAM,EAAE,KAAK,WAAW,GAAG,eAAe;GAC1C,MAAM,wBAAwB,UAAU,4BAA4B,YAAY;GAChF,OAAO,GAAG,UAAU,cAAc,KAAK,GAAG,IAAI,uBAAuB,YAAY,SAAS,GAAG,cAAc,SAAS;EACtH;EAEA,SAAS,WAAW;GAClB,MAAM,EAAE,KAAK,WAAW,GAAG,eAAe;GAC1C,MAAM,YAAY,UAAU,IAAI,YAAY;GAC5C,IAAG,CAAC,SACF,OAAO,IAAI,IAAI,WAAW,YAAY,SAAS;GAEjD,OAAO,GAAG,IAAI,WAAW,YAAY,SAAS,GAAG,cAAc,SAAS;EAC1E;EAEA,MAAM,gBAAgB;GACpB,IAAI,UAAU;IACZ,MAAM,EAAE,KAAK,WAAW,GAAG,eAAe;IAC1C,OAAO,GAAG,IAAI,YAAY,SAAS,GAAG,cAAc,SAAS;GAC/D;GACA,OAAO,YAAY,aAAa,YAAY,IAAI,SAAS;EAC3D;EAEA,OAAO,cAAc,SAAS;GAC5B;GACA,GAAG;GACH,GAAG;GACH,GAAG,mBAAmB,SAAS;GAC/B,GAAI,UAAU,EAAE,WAAW,QAAQ,EAAE,IAAI;IAAE,KAAK,QAAQ;IAAG;GAAW;EACxE,GAAG,YAAY,cAAc,QAAQ;CACvC,CAAC;CAID,gBAAgB,cAAc,UAFjB,eAAe,QAEe;CAC3C,gBAAgB,UAAU;CAC1B,gBAAgB,WAAW;CAC3B,gBAAgB,yBAAyB;CACzC,gBAAgB,oBAAoB,QAAQ,iBAAiB,QAAQ;CAErE,OAAO;AACT;AAEA,SAAS,mBAAmB;CAC1B,MAAM,wBAAQ,IAAI,IAAI;CAEtB,OAAO,IAAI,MAAM,UAAU;EACzB,MAAM,GAAG,IAAI,MAAM;GACjB,OAAO,SAAS,GAAG,IAAI;EACzB;EACA,IAAI,GAAG,IAAI;GACT,IAAI,CAAC,MAAM,IAAI,EAAE,GACf,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;GAE5B,OAAO,MAAM,IAAI,EAAE;EACrB;CACF,CAAC;AACH;AAEA,MAAa,SAAyB,iCAAiB"}