{"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"}