unnestcss
Version:
A library for un-nesting CSS
1 lines • 3.17 kB
Source Map (JSON)
{"version":3,"file":"middleware.cjs","sources":["../../../src/lib/stylis/middleware.ts"],"sourcesContent":["import {\n COLON,\n FORM_FEED,\n GREATER_THAN,\n LEFT_PARENTHESIS,\n NULL_CHARACTER,\n PLUS,\n RULESET,\n SPACE,\n TILDE,\n} from \"./enum.js\";\nimport { Tokenizer } from \"./tokenizer.ts\";\nimport type { Element, Middleware } from \"./types.ts\";\nimport { serialize } from \"./serializer.ts\";\n\nexport const middleware =\n (collection: Middleware[]): Middleware =>\n (element, index, children, callback) =>\n serialize(collection, (currentMiddleware) =>\n currentMiddleware(element, index, children, callback),\n );\n\nexport const namespace = (element: Element): string | void => {\n if (element.type === RULESET) {\n element.props = element.props.map((value) =>\n new Tokenizer(value)\n .tokenize()\n .map((value, index, children) => {\n if (!value) {\n return value;\n }\n switch (value[0]) {\n // \\f\n case FORM_FEED:\n return value.slice(1, value.length);\n // \\0 ( + > ~\n case NULL_CHARACTER:\n case LEFT_PARENTHESIS:\n case PLUS:\n case GREATER_THAN:\n case TILDE:\n return value;\n // :\n case COLON:\n index++;\n if (children[index] === \"global\") {\n children[index] = \"\";\n index++;\n children[index] = `\\f${children[index].slice((index = 1), -1)}`;\n }\n // \\s\n case SPACE:\n return index === 1 ? \"\" : value;\n default:\n switch (index) {\n case 0:\n element = value as any;\n return children.length > 1 ? \"\" : value;\n case (index = children.length - 1):\n case 2:\n return index === 2 ? value + element + element : value + element;\n default:\n return value;\n }\n }\n })\n .join(\"\"),\n );\n }\n};\n"],"names":["middleware","serialize","collection","currentMiddleware","element","index","children","callback","namespace","RULESET","Tokenizer","value","FORM_FEED","NULL_CHARACTER","LEFT_PARENTHESIS","PLUS","GREATER_THAN","TILDE","COLON","SPACE"],"mappings":"oGAeO,MAAMA,EACV,IACA,EAAS,EAAO,EAAU,IACzBC,EAAAA,UAAUC,EAAa,GACrBC,EAAkBC,EAASC,EAAOC,EAAUC,IAGrCC,EAAa,GAAoC,CACxDJ,EAAQ,OAASK,YACnB,EAAQ,MAAQL,EAAQ,MAAM,IAAK,GACjC,IAAIM,EAAAA,UAAUC,GACX,WACA,KAAK,EAAO,EAAO,IAAa,CAC/B,GAAI,CAACA,EACH,OAAOA,EAET,OAAQA,EAAM,GAAd,CAEE,KAAKC,EAAAA,UACH,OAAOD,EAAM,MAAM,EAAGA,EAAM,QAE9B,KAAKE,EAAAA,eACL,KAAKC,EAAAA,iBACL,KAAKC,EAAAA,KACL,KAAKC,EAAAA,aACL,KAAKC,EAAAA,MACH,OAAON,EAET,KAAKO,EAAAA,MACH,IACIZ,EAASD,KAAW,WACtB,EAASA,GAAS,GAClB,IACA,EAASA,GAAS,KAAKC,EAASD,GAAO,MAAO,EAAQ,EAAI,OAG9D,KAAKc,EAAAA,MACH,OAAOd,IAAU,EAAI,GAAKM,EAC5B,eACUN,GACN,IAAK,GAEH,MADA,GAAUM,EACHL,EAAS,OAAS,EAAI,GAAKK,EACpC,IAAM,GAAQL,EAAS,OAAS,EAChC,IAAK,GACH,OAAOD,IAAU,EAAIM,EAAQP,EAAUA,EAAUO,EAAQP,EAC3D,QACE,OAAOO,MAIhB,KAAK"}