{"version":3,"sources":["../runtime/index.ts","../runtime/atoms.tsx","../runtime/mocks/cssLiteral.ts","../runtime/mocks/keyframes.ts","../runtime/cssLiteral.tsx","../runtime/styled.tsx","../runtime/mocks/styled.ts"],"sourcesContent":["/**\n * This file contains the typings for the public API for next-yak and testing mocks\n *\n * IMPORTANT: In production builds, imports to this file should be replaced by the Babel plugin.\n * If you're seeing this code in a production environment, your build process may not be configured correctly.\n *\n * Purpose:\n * 1. Provide a test-friendly version of the next-yak API\n * 2. Offer type definitions for the public API\n *\n * Usage in tests:\n * - Import from \"next-yak\" as usual in your test files\n * - These mock implementations will be used instead of the actual runtime\n *\n * Warning for production:\n * - If these exports are used in a production build, styles will not be applied correctly\n * - Ensure your build process is configured to use the next-yak Babel plugin\n *\n * For maintainers:\n * - Keep this API surface in sync with the actual implementation in next-yak/internal\n * - Ensure mock implementations here are suitable for testing purposes\n */\n\n// the following export is not relative as \"next-yak/context\"\n// links to one file for react server components and\n// to another file for classic react components\nexport { useTheme, YakThemeProvider } from \"next-yak/context\";\nexport type { YakTheme } from \"./context/index.d.ts\";\n\nexport { atoms } from \"./atoms.js\";\nexport { css } from \"./mocks/cssLiteral.js\";\nexport { keyframes } from \"./mocks/keyframes.js\";\nexport { styled } from \"./mocks/styled.js\";\n","/**\n * Allows to use atomic CSS classes in a styled or css block\n *\n * @usage\n *\n * ```tsx\n * import { styled, atoms } from \"next-yak\";\n *\n * const Button = styled.button<{ $primary?: boolean }>`\n *  ${atoms(\"text-teal-600\", \"text-base\", \"rounded-md\")}\n *  ${props => props.$primary && atoms(\"shadow-md\")}\n * `;\n * ```\n */\nexport const atoms = (...atoms: string[]) => {\n  const className = atoms.join(\" \");\n  return () => ({ className });\n};\n","import type { css as cssInternal, PropsToClassNameFn } from \"../cssLiteral.js\";\n\nexport type { ComponentStyles, CSSInterpolation } from \"../cssLiteral.js\";\n\n/**\n * Allows to use CSS styles in a styled or css block\n *\n * e.g.\n *\n * ```tsx\n * const Component = styled.div`\n *  color: black;\n *  ${({$active}) => $active && css`color: red;`}\n * `;\n * ```\n */\nexport const css: typeof cssInternal = (\n  styles: TemplateStringsArray,\n  ...args: unknown[]\n) => {\n  const dynamicCssFunctions: PropsToClassNameFn[] = [];\n  for (const arg of args as Array<string | Function | object>) {\n    // Dynamic CSS e.g.\n    // css`${props => props.active && css`color: red;`}`\n    // compiled -> css((props: { active: boolean }) => props.active && css(\"yak31e4\"))\n    if (typeof arg === \"function\") {\n      dynamicCssFunctions.push(arg as unknown as PropsToClassNameFn);\n    }\n  }\n  if (dynamicCssFunctions.length === 0) {\n    return {\n      className: \"\",\n      style: undefined,\n    };\n  }\n  return ((props: unknown) => {\n    for (let i = 0; i < dynamicCssFunctions.length; i++) {\n      // run the dynamic expressions and ignore the return value\n      // the execution is important to ensure that the user code is executed\n      // the same way as in the real runtime\n      executeDynamicExpressionRecursively(props, dynamicCssFunctions[i]);\n    }\n    return {\n      className: \"\",\n      style: undefined,\n    };\n  }) as any;\n};\n\nfunction executeDynamicExpressionRecursively(\n  props: unknown,\n  expression: PropsToClassNameFn,\n) {\n  let result = expression(props);\n  while (typeof result === \"function\") {\n    result = result(props);\n  }\n  return result;\n}\n","import type { keyframes as keyframesInternal } from \"../keyframes.js\";\n\n/**\n * Allows to use CSS keyframe animations in a styled or css block\n *\n * @usage\n *\n * ```tsx\n * import { styled, keyframes } from \"next-yak\";\n *\n * const rotate = keyframes`\n *  from {\n *   transform: rotate(0deg);\n *  }\n *  to {\n *   transform: rotate(360deg);\n *  }\n * `;\n *\n * const Spinner = styled.div`\n *   animation: ${rotate} 1s linear infinite;\n * `;\n * ```\n */\nexport const keyframes: typeof keyframesInternal = (styles, ...dynamic) => {\n  // the keyframes function is a no-op in the mock\n  // as it has no dynamic runtime behavior but only css\n  return \"\";\n};\n","import type { YakTheme } from \"./index.d.ts\";\n\nexport const yakComponentSymbol = Symbol(\"yak\");\n\nexport type ComponentStyles<TProps> = (props: TProps) => {\n  className: string;\n  style?: {\n    [key: string]: string;\n  };\n};\n\nexport type CSSInterpolation<TProps> =\n  | string\n  | number\n  | undefined\n  | null\n  | false\n  | ComponentStyles<TProps>\n  | {\n      // type only identifier to allow targeting components\n      // e.g. styled.svg`${Button}:hover & { fill: red; }`\n      [yakComponentSymbol]: any;\n    }\n  | ((props: TProps) => CSSInterpolation<TProps>);\n\ntype CSSStyles<TProps = {}> = {\n  style: { [key: string]: string | ((props: TProps) => string) };\n};\n\ntype CSSFunction = <TProps = {}>(\n  styles: TemplateStringsArray,\n  ...values: CSSInterpolation<TProps & { theme: YakTheme }>[]\n) => ComponentStyles<TProps>;\n\nexport type PropsToClassNameFn = (props: unknown) =>\n  | {\n      className?: string;\n      style?: Record<string, string>;\n    }\n  | PropsToClassNameFn;\n\n/**\n * css() runtime factory of css``\n *\n * /!\\ next-yak transpiles css`` and styled``\n *\n * This changes the typings of the css`` and styled`` functions.\n * During development the user of next-yak wants to work with the\n * typings BEFORE compilation.\n *\n * Therefore this is only an internal function only and it must be cast to any\n * before exported to the user.\n */\nexport function css<TProps>(\n  styles: TemplateStringsArray,\n  ...values: CSSInterpolation<NoInfer<TProps> & { theme: YakTheme }>[]\n): ComponentStyles<TProps>;\nexport function css<TProps>(...args: Array<any>): ComponentStyles<TProps> {\n  const classNames: string[] = [];\n  const dynamicCssFunctions: PropsToClassNameFn[] = [];\n  const style: Record<string, string> = {};\n  for (const arg of args as Array<string | CSSFunction | CSSStyles<any>>) {\n    // A CSS-module class name which got auto generated during build from static css\n    // e.g. css`color: red;`\n    // compiled -> css(\"yak31e4\")\n    if (typeof arg === \"string\") {\n      classNames.push(arg);\n    }\n    // Dynamic CSS e.g.\n    // css`${props => props.active && css`color: red;`}`\n    // compiled -> css((props: { active: boolean }) => props.active && css(\"yak31e4\"))\n    else if (typeof arg === \"function\") {\n      dynamicCssFunctions.push(arg as unknown as PropsToClassNameFn);\n    }\n    // Dynamic CSS with css variables e.g.\n    // css`transform: translate(${props => props.x}, ${props => props.y});`\n    // compiled -> css(\"yak31e4\", { style: { \"--yakVarX\": props => props.x }, \"--yakVarY\": props => props.y }})\n    else if (typeof arg === \"object\" && \"style\" in arg) {\n      for (const key in arg.style) {\n        const value = arg.style[key];\n        if (typeof value === \"function\") {\n          dynamicCssFunctions.push((props: unknown) => ({\n            style: {\n              [key]: String(\n                // The value for a css value can be a theme dependent function e.g.:\n                // const borderColor = (props: { theme: { mode: \"dark\" | \"light\" } }) => props.theme === \"dark\" ? \"black\" : \"white\";\n                // css`border-color: ${borderColor};`\n                // Therefore the value has to be extracted recursively\n                recursivePropExecution(props, value),\n              ),\n            },\n          }));\n        } else {\n          style[key] = value;\n        }\n      }\n    }\n  }\n\n  // Non Dynamic CSS\n  if (dynamicCssFunctions.length === 0) {\n    const className = classNames.join(\" \");\n    return () => ({ className, style });\n  }\n\n  return (props: unknown) => {\n    const allClassNames: string[] = [...classNames];\n    const allStyles: Record<string, string> = { ...style };\n    for (let i = 0; i < dynamicCssFunctions.length; i++) {\n      unwrapProps(props, dynamicCssFunctions[i], allClassNames, allStyles);\n    }\n    return {\n      className: allClassNames.join(\" \"),\n      style: allStyles,\n    };\n  };\n}\n\n// Dynamic CSS with runtime logic\nconst unwrapProps = (\n  props: unknown,\n  fn: PropsToClassNameFn,\n  classNames: string[],\n  style: Record<string, string>,\n) => {\n  let result = fn(props);\n  while (result) {\n    if (typeof result === \"function\") {\n      result = result(props);\n      continue;\n    } else if (typeof result === \"object\") {\n      if (\"className\" in result && result.className) {\n        classNames.push(result.className);\n      }\n      if (\"style\" in result && result.style) {\n        for (const key in result.style) {\n          style[key] = result.style[key];\n        }\n      }\n    }\n    break;\n  }\n};\n\nconst recursivePropExecution = (\n  props: unknown,\n  fn: (props: unknown) => any,\n): string | number => {\n  const result = fn(props);\n  if (typeof result === \"function\") {\n    return recursivePropExecution(props, result);\n  }\n  if (process.env.NODE_ENV === \"development\") {\n    if (\n      typeof result !== \"string\" &&\n      typeof result !== \"number\" &&\n      !(result instanceof String)\n    ) {\n      throw new Error(\n        `Dynamic CSS functions must return a string or number but returned ${JSON.stringify(\n          result,\n        )}\\n\\nDynamic CSS function: ${fn.toString()}\\n`,\n      );\n    }\n  }\n  return result;\n};\n","import {\n  CSSInterpolation,\n  ComponentStyles,\n  css,\n  yakComponentSymbol,\n} from \"./cssLiteral.js\";\nimport React from \"react\";\n\n// the following export is not relative as \"next-yak/context\"\n// links to one file for react server components and\n// to another file for classic react components\nimport { useTheme } from \"next-yak/context\";\nimport type { YakTheme } from \"./context/index.d.ts\";\n\n/** Symbols */\n\n/**\n * This Symbol is a fake theme which was used instead of the real one from the context\n * to speed up rendering\n */\nconst noTheme: YakTheme = {};\n\n/**\n * All valid html tags\n */\ntype HtmlTags = keyof React.JSX.IntrinsicElements;\n\n/**\n * Return type of the provided props merged with the initial props\n * where the specified props are optional\n */\ntype AttrsMerged<TBaseProps, TIn extends object = {}> = Substitute<\n  TBaseProps & { theme: YakTheme },\n  TIn\n>;\n\n/**\n * The attrs function allows to add additional props in a function that receives\n * the current props as argument.\n */\ntype AttrsFunction<\n  TBaseProps,\n  TIn extends object,\n  TOut extends AttrsMerged<TBaseProps, TIn> = AttrsMerged<TBaseProps, TIn>,\n> = (p: Substitute<TBaseProps & { theme: YakTheme }, TIn>) => Partial<TOut>;\n\n/**\n * The attrs function allows to add additional props to a styled component.\n * The props can be specified as an object or as a function that receives the\n * current props as argument.\n */\ntype Attrs<\n  TBaseProps,\n  TIn extends object = {},\n  TOut extends AttrsMerged<TBaseProps, TIn> = AttrsMerged<TBaseProps, TIn>,\n> = Partial<TOut> | AttrsFunction<TBaseProps, TIn, TOut>;\n\n//\n// The `styled()` API without `styled.` syntax\n//\n// The API design is inspired by styled-components:\n// https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/constructors/styled.tsx\n// https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/models/StyledComponent.ts\n//\nconst StyledFactory = <T,>(Component: HtmlTags | React.FunctionComponent<T>) =>\n  Object.assign(yakStyled(Component), {\n    attrs: <\n      TAttrsIn extends object = {},\n      TAttrsOut extends AttrsMerged<T, TAttrsIn> = AttrsMerged<T, TAttrsIn>,\n    >(\n      attrs: Attrs<T, TAttrsIn, TAttrsOut>,\n    ) => yakStyled<T, TAttrsIn, TAttrsOut>(Component, attrs),\n  });\n\n/**\n * A yak component has a special symbol attached to it that allows to\n * target the component from a child component and to correctly handle the attrs function (if any).\n * e.g. styled.svg`${Button}:hover & { fill: red; }` or styled(Button)`color: red;`\n */\ntype YakComponent<\n  T,\n  TAttrsIn extends object = {},\n  TAttrsOut extends AttrsMerged<T, TAttrsIn> = AttrsMerged<T, TAttrsIn>,\n> = React.FunctionComponent<T> & {\n  [yakComponentSymbol]: [\n    React.FunctionComponent<T>,\n    AttrsFunction<T, TAttrsIn, TAttrsOut>,\n  ];\n};\n\nconst yakStyled = <\n  T,\n  TAttrsIn extends object = {},\n  TAttrsOut extends AttrsMerged<T, TAttrsIn> = AttrsMerged<T, TAttrsIn>,\n>(\n  Component:\n    | React.FunctionComponent<T>\n    | YakComponent<T, TAttrsIn, TAttrsOut>\n    | HtmlTags,\n  attrs?: Attrs<T, TAttrsIn, TAttrsOut>,\n) => {\n  const isYakComponent =\n    typeof Component !== \"string\" && yakComponentSymbol in Component;\n\n  // if the component that is wrapped is a yak component, we can extract it to render the underlying component directly\n  // and we can also extract the attrs function to merge it with the current attrs function so that the sequence of\n  // the attrs functions is preserved\n  const [parentYakComponent, parentAttrsFn] = isYakComponent\n    ? Component[yakComponentSymbol]\n    : [];\n\n  const mergedAttrsFn = buildRuntimeAttrsProcessor(attrs, parentAttrsFn);\n\n  return <TCSSProps extends object = {}>(\n    styles: TemplateStringsArray,\n    ...values: Array<\n      CSSInterpolation<T & NoInfer<TCSSProps> & { theme: YakTheme }>\n    >\n  ) => {\n    const getRuntimeStyles = css<object>(styles, ...(values as any));\n    const yak = (props: Substitute<TCSSProps & T, TAttrsIn>) => {\n      // if the css component does not require arguments\n      // it can be called without arguments and we skip calling useTheme()\n      //\n      // `attrsFn || getRuntimeStyles.length` is NOT against the rule of hooks as\n      // getRuntimeStyles and attrsFn are constants defined outside of the component\n      //\n      // for example\n      //\n      // const Button = styled.button`color: red;`\n      //       ^ does not need to have access to theme, so we skip calling useTheme()\n      //\n      // const Button = styled.button`${({ theme }) => css`color: ${theme.color};`}`\n      //       ^ must be have access to theme, so we call useTheme()\n      const theme =\n        mergedAttrsFn || getRuntimeStyles.length ? useTheme() : noTheme;\n\n      // The first components which is not wrapped in a yak component will execute all attrs functions\n      // starting from the innermost yak component to the outermost yak component (itself)\n      const combinedProps =\n        \"$__attrs\" in props\n          ? {\n              theme,\n              ...props,\n            }\n          : // overwrite and merge the current props with the processed attrs\n            combineProps(\n              {\n                theme,\n                ...(props as {\n                  className?: string;\n                  style?: React.CSSProperties;\n                }),\n                // mark the props as processed\n                $__attrs: true,\n              },\n              mergedAttrsFn?.({ theme, ...props } as Substitute<\n                T & { theme: YakTheme },\n                TAttrsIn\n              >),\n            );\n      // execute all functions inside the style literal\n      // e.g. styled.button`color: ${props => props.color};`\n      const runtimeStyles = getRuntimeStyles(combinedProps as T & TCSSProps);\n\n      // delete the yak theme from the props\n      // this must happen after the runtimeStyles are calculated\n      // prevents passing the theme prop to the DOM element of a styled component\n      const { theme: themeAfterAttr, ...combinedPropsWithoutTheme } =\n        combinedProps;\n      const propsBeforeFiltering =\n        themeAfterAttr === theme ? combinedPropsWithoutTheme : combinedProps;\n\n      // remove all props that start with a $ sign for string components e.g. \"button\" or \"div\"\n      // so that they are not passed to the DOM element\n      const filteredProps = (\n        !isYakComponent\n          ? removeNonDomProperties(propsBeforeFiltering)\n          : propsBeforeFiltering\n      ) as T & {\n        className?: string;\n        style?: React.CSSProperties;\n      };\n\n      filteredProps.className = mergeClassNames(\n        filteredProps.className,\n        runtimeStyles.className,\n      );\n      filteredProps.style =\n        \"style\" in filteredProps\n          ? {\n              ...filteredProps.style,\n              ...runtimeStyles.style,\n            }\n          : runtimeStyles.style;\n\n      return parentYakComponent ? (\n        // if the styled(Component) syntax is used and the component is a yak component\n        // we can call the yak function directly without running through react createElement\n        parentYakComponent(filteredProps)\n      ) : (\n        // if the final component is a string component e.g. styled(\"div\") or a custom non yak fn e.g. styled(MyComponent)\n        <Component {...filteredProps} />\n      );\n    };\n\n    // Assign the yakComponentSymbol directly without forwardRef\n    return Object.assign(yak, {\n      [yakComponentSymbol]: [yak, mergedAttrsFn],\n    }) as YakComponent<\n      Substitute<TCSSProps & T, TAttrsIn>,\n      object,\n      AttrsMerged<Substitute<TCSSProps & T, TAttrsIn>, object>\n    >;\n  };\n};\n\n/**\n * Type for the proxy object returned by `styled` that allows to\n * access all html tags as properties.\n */\ntype StyledLiteral<T> = <TCSSProps>(\n  styles: TemplateStringsArray,\n  ...values: Array<\n    CSSInterpolation<\n      T &\n        // don't allow inference from types in the tagged template literal\n        // additional benefit is that destruction is now typed and provides hints\n        NoInfer<TCSSProps> & { theme: YakTheme }\n    >\n  >\n) => YakComponent<TCSSProps & T>;\n\n/**\n * The `styled` method works perfectly on all of your own or any third-party component,\n * as long as they attach the passed className prop to a DOM element.\n *\n * @usage\n *\n * ```tsx\n * const StyledLink = styled(Link)`\n *  color: #BF4F74;\n *  font-weight: bold;\n * `;\n * ```\n */\nexport const styled =\n  // this type is wrong - but it will work correctly with compiled code\n  StyledFactory as typeof StyledFactory & {\n    [Tag in HtmlTags]: StyledLiteral<React.JSX.IntrinsicElements[Tag]> & {\n      attrs: <\n        TAttrsIn extends object = {},\n        TAttrsOut extends AttrsMerged<\n          React.JSX.IntrinsicElements[Tag],\n          TAttrsIn\n        > = AttrsMerged<React.JSX.IntrinsicElements[Tag], TAttrsIn>,\n      >(\n        attrs: Attrs<React.JSX.IntrinsicElements[Tag], TAttrsIn, TAttrsOut>,\n      ) => StyledLiteral<\n        Substitute<React.JSX.IntrinsicElements[Tag], TAttrsIn>\n      >;\n    };\n  };\n\n/**\n * Remove all entries that start with a $ sign\n *\n * This allows to have props that are used for internal stylingen purposes\n * but are not be passed to the DOM element\n */\nconst removeNonDomProperties = <T extends Record<string, unknown>>(\n  obj: T,\n): T => {\n  const result = {} as T;\n  for (const key in obj) {\n    if (!key.startsWith(\"$\") && obj[key] !== undefined) {\n      result[key] = obj[key];\n    }\n  }\n  return result;\n};\n\n// util function to merge class names, as they are concatenated with a space\nconst mergeClassNames = (a?: string, b?: string) => {\n  if (!a && !b) return undefined;\n  if (!a) return b;\n  if (!b) return a;\n  return a + \" \" + b;\n};\n\n/**\n * merge props and processed props (including class names and styles)\n * e.g.:\\\n * `{ className: \"a\", foo: 1 }` and `{ className: \"b\", bar: 2 }` \\\n * => `{ className: \"a b\", foo: 1, bar: 2 }`\n */\nconst combineProps = <\n  T extends {\n    className?: string;\n    style?: React.CSSProperties;\n  },\n  TOther extends\n    | {\n        className?: string;\n        style?: React.CSSProperties;\n      }\n    | null\n    | undefined,\n>(\n  props: T,\n  newProps: TOther,\n) =>\n  newProps\n    ? (props.className === newProps.className || !newProps.className) &&\n      (props.style === newProps.style || !newProps.style)\n      ? // shortcut if no style and class merging is necessary\n        {\n          ...props,\n          ...newProps,\n        }\n      : // merge class names and styles\n        {\n          ...props,\n          ...newProps,\n          className: mergeClassNames(props.className, newProps.className),\n          style: { ...(props.style || {}), ...(newProps.style || {}) },\n        }\n    : // if no new props are provided, no merging is necessary\n      props;\n\n// util type to remove properties from an object\ntype FastOmit<T extends object, U extends string | number | symbol> = {\n  [K in keyof T as K extends U ? never : K]: T[K];\n};\n\n// util type to merge two objects\n// if a property is present in both objects the property from B is used\nexport type Substitute<A extends object, B extends object> = FastOmit<\n  A,\n  keyof B\n> &\n  B;\n\n/**\n * Merges the attrs function of the current component with the attrs function of the parent component\n * in order to preserve the sequence of the attrs functions.\n * Note: In theory, the parentAttrsFn can have different types for TAttrsIn and TAttrsOut\n * but as this is only used internally, we can ignore and simplify this case\n * @param attrs The attrs object or function of the current component (if any)\n * @param parentAttrsFn The attrs function of the parent/wrapped component (if any)\n * @returns A function that receives the props and returns the transformed props\n */\nconst buildRuntimeAttrsProcessor = <\n  T,\n  TAttrsIn extends object,\n  TAttrsOut extends AttrsMerged<T, TAttrsIn>,\n>(\n  attrs?: Attrs<T, TAttrsIn, TAttrsOut>,\n  parentAttrsFn?: AttrsFunction<T, TAttrsIn, TAttrsOut>,\n): AttrsFunction<T, TAttrsIn, TAttrsOut> | undefined => {\n  const ownAttrsFn =\n    attrs && (typeof attrs === \"function\" ? attrs : () => attrs);\n\n  if (ownAttrsFn && parentAttrsFn) {\n    return (props) => {\n      const parentProps = parentAttrsFn(props);\n\n      // overwrite and merge the parent props with the props received from the attrs function\n      // after they went through the parent attrs function.\n      //\n      // This makes sure the linearity of the attrs functions is preserved and all attrs function receive\n      // the whole props object calculated from the previous attrs functions\n      return combineProps(\n        parentProps,\n        ownAttrsFn(combineProps(props, parentProps)),\n      );\n    };\n  }\n\n  return ownAttrsFn || parentAttrsFn;\n};\n","import React from \"react\";\nimport { styled as StyledFactory } from \"../styled.js\";\n\nexport const styled = new Proxy(StyledFactory, {\n  get(target, TagName: keyof React.JSX.IntrinsicElements) {\n    return target(TagName);\n  },\n}) as typeof StyledFactory;\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mDAAAE,EAAA,QAAAC,EAAA,cAAAC,EAAA,WAAAC,EAAA,yCAAAC,EAAAN,GA0BA,IAAAO,EAA2C,4BCZpC,IAAMC,EAAQ,IAAIA,IAAoB,CAC3C,IAAMC,EAAYD,EAAM,KAAK,GAAG,EAChC,MAAO,KAAO,CAAE,UAAAC,CAAU,EAC5B,ECDO,IAAMC,EAA0B,CACrCC,KACGC,IACA,CACH,IAAMC,EAA4C,CAAC,EACnD,QAAWC,KAAOF,EAIZ,OAAOE,GAAQ,YACjBD,EAAoB,KAAKC,CAAoC,EAGjE,OAAID,EAAoB,SAAW,EAC1B,CACL,UAAW,GACX,MAAO,MACT,EAEOE,GAAmB,CAC1B,QAASC,EAAI,EAAGA,EAAIH,EAAoB,OAAQG,IAI9CC,EAAoCF,EAAOF,EAAoBG,CAAC,CAAC,EAEnE,MAAO,CACL,UAAW,GACX,MAAO,MACT,CACF,CACF,EAEA,SAASC,EACPF,EACAG,EACA,CACA,IAAIC,EAASD,EAAWH,CAAK,EAC7B,KAAO,OAAOI,GAAW,YACvBA,EAASA,EAAOJ,CAAK,EAEvB,OAAOI,CACT,CClCO,IAAMC,EAAsC,CAACC,KAAWC,IAGtD,GCzBF,IAAMC,EAAqB,OAAO,KAAK,EAuDvC,SAASC,KAAeC,EAA2C,CACxE,IAAMC,EAAuB,CAAC,EACxBC,EAA4C,CAAC,EAC7CC,EAAgC,CAAC,EACvC,QAAWC,KAAOJ,EAIhB,GAAI,OAAOI,GAAQ,SACjBH,EAAW,KAAKG,CAAG,UAKZ,OAAOA,GAAQ,WACtBF,EAAoB,KAAKE,CAAoC,UAKtD,OAAOA,GAAQ,UAAY,UAAWA,EAC7C,QAAWC,KAAOD,EAAI,MAAO,CAC3B,IAAME,EAAQF,EAAI,MAAMC,CAAG,EACvB,OAAOC,GAAU,WACnBJ,EAAoB,KAAMK,IAAoB,CAC5C,MAAO,CACL,CAACF,CAAG,EAAG,OAKLG,EAAuBD,EAAOD,CAAK,CACrC,CACF,CACF,EAAE,EAEFH,EAAME,CAAG,EAAIC,CAEjB,CAKJ,GAAIJ,EAAoB,SAAW,EAAG,CACpC,IAAMO,EAAYR,EAAW,KAAK,GAAG,EACrC,MAAO,KAAO,CAAE,UAAAQ,EAAW,MAAAN,CAAM,EACnC,CAEA,OAAQI,GAAmB,CACzB,IAAMG,EAA0B,CAAC,GAAGT,CAAU,EACxCU,EAAoC,CAAE,GAAGR,CAAM,EACrD,QAAS,EAAI,EAAG,EAAID,EAAoB,OAAQ,IAC9CU,EAAYL,EAAOL,EAAoB,CAAC,EAAGQ,EAAeC,CAAS,EAErE,MAAO,CACL,UAAWD,EAAc,KAAK,GAAG,EACjC,MAAOC,CACT,CACF,CACF,CAGA,IAAMC,EAAc,CAClBL,EACAM,EACAZ,EACAE,IACG,CACH,IAAIW,EAASD,EAAGN,CAAK,EACrB,KAAOO,GAAQ,CACb,GAAI,OAAOA,GAAW,WAAY,CAChCA,EAASA,EAAOP,CAAK,EACrB,QACF,SAAW,OAAOO,GAAW,WACvB,cAAeA,GAAUA,EAAO,WAClCb,EAAW,KAAKa,EAAO,SAAS,EAE9B,UAAWA,GAAUA,EAAO,OAC9B,QAAWT,KAAOS,EAAO,MACvBX,EAAME,CAAG,EAAIS,EAAO,MAAMT,CAAG,EAInC,KACF,CACF,EAEMG,EAAyB,CAC7BD,EACAM,IACoB,CACpB,IAAMC,EAASD,EAAGN,CAAK,EACvB,GAAI,OAAOO,GAAW,WACpB,OAAON,EAAuBD,EAAOO,CAAM,EAE7C,GAAI,QAAQ,IAAI,WAAa,eAEzB,OAAOA,GAAW,UAClB,OAAOA,GAAW,UAClB,EAAEA,aAAkB,QAEpB,MAAM,IAAI,MACR,qEAAqE,KAAK,UACxEA,CACF,CAAC;AAAA;AAAA,wBAA6BD,EAAG,SAAS,CAAC;AAAA,CAC7C,EAGJ,OAAOC,CACT,EChKA,IAAAC,EAAkB,sBAKlBC,EAAyB,4BASnBC,EAAoB,CAAC,EA4CrBC,EAAqBC,GACzB,OAAO,OAAOC,EAAUD,CAAS,EAAG,CAClC,MAIEE,GACGD,EAAkCD,EAAWE,CAAK,CACzD,CAAC,EAkBGD,EAAY,CAKhBD,EAIAE,IACG,CACH,IAAMC,EACJ,OAAOH,GAAc,UAAYI,KAAsBJ,EAKnD,CAACK,EAAoBC,CAAa,EAAIH,EACxCH,EAAUI,CAAkB,EAC5B,CAAC,EAECG,EAAgBC,EAA2BN,EAAOI,CAAa,EAErE,MAAO,CACLG,KACGC,IAGA,CACH,IAAMC,EAAmBC,EAAYH,EAAQ,GAAIC,CAAc,EACzDG,EAAOC,GAA+C,CAc1D,IAAMC,EACJR,GAAiBI,EAAiB,UAAS,YAAS,EAAIb,EAIpDkB,EACJ,aAAcF,EACV,CACE,MAAAC,EACA,GAAGD,CACL,EAEAG,EACE,CACE,MAAAF,EACA,GAAID,EAKJ,SAAU,EACZ,EACAP,IAAgB,CAAE,MAAAQ,EAAO,GAAGD,CAAM,CAGjC,CACH,EAGAI,EAAgBP,EAAiBK,CAA8B,EAK/D,CAAE,MAAOG,EAAgB,GAAGC,CAA0B,EAC1DJ,EACIK,EACJF,IAAmBJ,EAAQK,EAA4BJ,EAInDM,EACHnB,EAEGkB,EADAE,EAAuBF,CAAoB,EAOjD,OAAAC,EAAc,UAAYE,EACxBF,EAAc,UACdJ,EAAc,SAChB,EACAI,EAAc,MACZ,UAAWA,EACP,CACE,GAAGA,EAAc,MACjB,GAAGJ,EAAc,KACnB,EACAA,EAAc,MAEbb,EAGLA,EAAmBiB,CAAa,EAGhC,EAAAG,QAAA,cAACzB,EAAA,CAAW,GAAGsB,EAAe,CAElC,EAGA,OAAO,OAAO,OAAOT,EAAK,CACxB,CAACT,CAAkB,EAAG,CAACS,EAAKN,CAAa,CAC3C,CAAC,CAKH,CACF,EA+BamB,EAEX3B,EAsBIwB,EACJI,GACM,CACN,IAAMC,EAAS,CAAC,EAChB,QAAWC,KAAOF,EACZ,CAACE,EAAI,WAAW,GAAG,GAAKF,EAAIE,CAAG,IAAM,SACvCD,EAAOC,CAAG,EAAIF,EAAIE,CAAG,GAGzB,OAAOD,CACT,EAGMJ,EAAkB,CAACM,EAAYC,IAAe,CAClD,GAAI,GAACD,GAAK,CAACC,GACX,OAAKD,EACAC,EACED,EAAI,IAAMC,EADFD,EADAC,CAGjB,EAQMd,EAAe,CAanBH,EACAkB,IAEAA,GACKlB,EAAM,YAAckB,EAAS,WAAa,CAACA,EAAS,aACpDlB,EAAM,QAAUkB,EAAS,OAAS,CAACA,EAAS,OAE3C,CACE,GAAGlB,EACH,GAAGkB,CACL,EAEA,CACE,GAAGlB,EACH,GAAGkB,EACH,UAAWR,EAAgBV,EAAM,UAAWkB,EAAS,SAAS,EAC9D,MAAO,CAAE,GAAIlB,EAAM,OAAS,CAAC,EAAI,GAAIkB,EAAS,OAAS,CAAC,CAAG,CAC7D,EAEFlB,EAwBAN,EAA6B,CAKjCN,EACAI,IACsD,CACtD,IAAM2B,EACJ/B,IAAU,OAAOA,GAAU,WAAaA,EAAQ,IAAMA,GAExD,OAAI+B,GAAc3B,EACRQ,GAAU,CAChB,IAAMoB,EAAc5B,EAAcQ,CAAK,EAOvC,OAAOG,EACLiB,EACAD,EAAWhB,EAAaH,EAAOoB,CAAW,CAAC,CAC7C,CACF,EAGKD,GAAc3B,CACvB,ECzXO,IAAM6B,EAAS,IAAI,MAAMA,EAAe,CAC7C,IAAIC,EAAQC,EAA4C,CACtD,OAAOD,EAAOC,CAAO,CACvB,CACF,CAAC","names":["index_exports","__export","atoms","css","keyframes","styled","__toCommonJS","import_context","atoms","className","css","styles","args","dynamicCssFunctions","arg","props","i","executeDynamicExpressionRecursively","expression","result","keyframes","styles","dynamic","yakComponentSymbol","css","args","classNames","dynamicCssFunctions","style","arg","key","value","props","recursivePropExecution","className","allClassNames","allStyles","unwrapProps","fn","result","import_react","import_context","noTheme","StyledFactory","Component","yakStyled","attrs","isYakComponent","yakComponentSymbol","parentYakComponent","parentAttrsFn","mergedAttrsFn","buildRuntimeAttrsProcessor","styles","values","getRuntimeStyles","css","yak","props","theme","combinedProps","combineProps","runtimeStyles","themeAfterAttr","combinedPropsWithoutTheme","propsBeforeFiltering","filteredProps","removeNonDomProperties","mergeClassNames","React","styled","obj","result","key","a","b","newProps","ownAttrsFn","parentProps","styled","target","TagName"]}