{"mappings":"AAYA,cAAc,SAAS,kBAAkB;AAGzC,OAAO,cAAM,aACV,YAAY,iBAAe;AAM9B,OAAO,cAAM,YAAa,SAAS","names":[],"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"],"version":3,"file":"middleware.d.ts"}