{"mappings":"AAUA,cAAc,SAAS,kBAAkB;AAEzC,OAAO,cAAM,YACX,SAAS,SACT,gBACA,UAAU,WACV,UAAU;KAgCP;CAAkB;CAAG;KACxB,SAAS,GACT,eACA,UAAU,KACV,UAAU,kBAAkB,GAAG,OAC5B;AAEL,OAAO,cAAM;CAAa;CAAG;EAC3B,UAAU,KACV,UAAU,kBAAkB,GAAG","names":[],"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"],"version":3,"file":"serializer.d.ts"}