unnestcss
Version:
A library for un-nesting CSS
1 lines • 2.62 kB
Source Map (JSON)
{"version":3,"file":"host.cjs","sources":["../../src/lib/host.ts"],"sourcesContent":["import {\n COLON,\n type Element,\n GREATER_THAN,\n LEFT_SQUARE_BRACKET,\n PLUS,\n RIGHT_SQUARE_BRACKET,\n RULESET,\n SPACE,\n TILDE,\n Tokenizer,\n} from \"./stylis.ts\";\n\nconst _host = \"host\";\n\nexport const host = (element: Element): void => {\n if (element.type === RULESET && element.parent?.value.startsWith(COLON + _host)) {\n element.props = (element.props as string[]).map((item) => {\n const tokens = new Tokenizer(item).tokenize();\n let start: number | undefined,\n end = tokens.length,\n hasHost = false;\n for (let index = 0; index < tokens.length; index++) {\n const token = tokens[index];\n switch (token) {\n case COLON:\n if (tokens.length > index + 2 && tokens[index + 1] === _host) {\n const afterHostToken = tokens[index + 2];\n if (\n afterHostToken === COLON ||\n (afterHostToken.startsWith(LEFT_SQUARE_BRACKET) &&\n afterHostToken.endsWith(RIGHT_SQUARE_BRACKET))\n ) {\n start = index + 2;\n hasHost = true;\n }\n }\n break;\n case SPACE:\n case GREATER_THAN:\n case TILDE:\n case PLUS:\n if (hasHost) {\n end = index;\n }\n break;\n }\n }\n if (hasHost) {\n return `:${_host}(${tokens.slice(start, end).join(\"\")})${tokens.slice(end).join(\"\")}`;\n }\n return item;\n });\n }\n};\n\nexport default host;\n"],"names":["_host","host","element","RULESET","COLON","tokens","Tokenizer","item","start: number | undefined","end","hasHost","index","token","afterHostToken","LEFT_SQUARE_BRACKET","RIGHT_SQUARE_BRACKET","SPACE","GREATER_THAN","TILDE","PLUS","start"],"mappings":"2IAaA,MAAMA,EAAQ,OAEDC,EAAQ,GAA2B,CAC1CC,EAAQ,OAASC,EAAAA,SAAWD,EAAQ,QAAQ,MAAM,WAAWE,QAAQJ,KACvE,EAAQ,MAASE,EAAQ,MAAmB,IAAK,GAAS,CACxD,IAAMG,EAAS,IAAIC,EAAAA,UAAUC,GAAM,WAC/BC,EACFC,EAAMJ,EAAO,OACbK,EAAU,GACZ,IAAK,IAAIC,EAAQ,EAAGA,EAAQN,EAAO,OAAQ,IAAS,CAClD,IAAMO,EAAQP,EAAOM,GACrB,OAAQC,EAAR,CACE,KAAKR,EAAAA,MACH,GAAIC,EAAO,OAASM,EAAQ,GAAKN,EAAOM,EAAQ,KAAOX,EAAO,CAC5D,IAAMa,EAAiBR,EAAOM,EAAQ,IAEpCE,IAAmBT,SAClBS,EAAe,WAAWC,EAAAA,sBACzBD,EAAe,SAASE,EAAAA,yBAE1B,EAAQJ,EAAQ,EAChB,EAAU,IAGd,MACF,KAAKK,EAAAA,MACL,KAAKC,EAAAA,aACL,KAAKC,EAAAA,MACL,KAAKC,EAAAA,KACCT,IACF,EAAMC,GAER,OAMN,OAHID,EACK,IAAIV,EAAM,GAAGK,EAAO,MAAMe,EAAOX,GAAK,KAAK,IAAI,GAAGJ,EAAO,MAAMI,GAAK,KAAK,MAE3EF"}