UNPKG

unnestcss

Version:
1 lines 2.33 kB
{"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"}