{"version":3,"file":"serializer.cjs","sources":["../../../src/lib/stylis/serializer.ts"],"sourcesContent":["import {\n  IMPORT,\n  LAYER,\n  COMMENT,\n  RULESET,\n  DECLARATION,\n  KEYFRAMES,\n  NAMESPACE,\n  COMMA,\n} from \"./enum.ts\";\nimport type { Element, Middleware } from \"./types.ts\";\n\nexport const stringify = (\n  element: Element,\n  _index: number,\n  children: Element[],\n  callback: Middleware,\n): string => {\n  switch (element.type) {\n    case LAYER:\n      if (element.children.length) {\n        break;\n      }\n    case IMPORT:\n    case NAMESPACE:\n    case DECLARATION:\n      return (element.return = element.return || element.value);\n    case COMMENT:\n      return \"\";\n    case KEYFRAMES:\n      element.return = `${element.value}{${serialize(element.children, callback)}}`;\n      return element.return;\n    case RULESET:\n      element.value = element.props.join(COMMA);\n      if (element.value === \"\") {\n        return \"\";\n      }\n  }\n\n  children = serialize(element.children, callback) as any;\n\n  if (children) {\n    element.return = `${element.value}{${children}}`;\n    return element.return;\n  }\n  return \"\";\n};\n\ntype SerializeCallback<T, R> = (\n  element: T,\n  index: number,\n  children: T[],\n  callback: SerializeCallback<T, R>,\n) => R;\n\nexport const serialize = <T, F = unknown>(\n  children: T[],\n  callback: SerializeCallback<T, F>,\n): string =>\n  children.reduce(\n    (output, child, index) => output + (callback(child, index, children, callback) || \"\"),\n    \"\",\n  );\n"],"names":["stringify","element","LAYER","IMPORT","NAMESPACE","DECLARATION","COMMENT","KEYFRAMES","serialize","callback","RULESET","COMMA","children","output","child","index"],"mappings":"yCAYO,MAAMA,GACX,EACA,EACA,EACA,IACW,CACX,OAAQC,EAAQ,KAAhB,CACE,KAAKC,QACH,GAAID,EAAQ,SAAS,OACnB,MAEJ,KAAKE,EAAAA,OACL,KAAKC,EAAAA,UACL,KAAKC,EAAAA,YACH,MAAQ,GAAQ,OAASJ,EAAQ,QAAUA,EAAQ,MACrD,KAAKK,EAAAA,QACH,MAAO,GACT,KAAKC,EAAAA,UAEH,MADA,GAAQ,OAAS,GAAGN,EAAQ,MAAM,GAAGO,EAAUP,EAAQ,SAAUQ,GAAU,GACpER,EAAQ,OACjB,KAAKS,EAAAA,QAEH,GADA,EAAQ,MAAQT,EAAQ,MAAM,KAAKU,EAAAA,OAC/BV,EAAQ,QAAU,GACpB,MAAO,GAUb,MANA,GAAWO,EAAUP,EAAQ,SAAUQ,GAEnCG,GACF,EAAQ,OAAS,GAAGX,EAAQ,MAAM,GAAGW,EAAS,GACvCX,EAAQ,QAEV,IAUIO,GACX,EACA,IAEAI,EAAS,QACN,EAAQ,EAAO,IAAUC,GAAUJ,EAASK,EAAOC,EAAOH,EAAUH,IAAa,IAClF"}