UNPKG

stylelint-css-in-js-syntax

Version:

This plugin provides [ESLint](https://eslint.org/) rules that limit the line length of your comments. Furthermore, an **automatic fix** is included such that you can save time manually formatting your comments. As such it is recommended to apply this rule

1 lines 6.67 kB
{"version":3,"file":"util.extract-inline-css.mjs","sources":["../../../src/syntax.parser/util.extract-inline-css.ts"],"sourcesContent":["export function extractInlineCss(content: string): string {\n let cssInJSOccurrence = 0;\n\n const surrounding = [] as Array<string>;\n const css = [] as string[];\n\n let current = \"\";\n\n let hasUnclosedBacktick = false;\n let isExtractingCss = false;\n let currentCssCommentType: \"single-line\" | \"multi-line\" | undefined =\n undefined;\n let expressionEvaluationIndentation = 0;\n\n for (let cursor = 0; cursor < content.length; cursor++) {\n const currentChar = content[cursor];\n\n if (\n !isExtractingCss &&\n !currentCssCommentType &&\n currentChar === \"/\" &&\n content[cursor + 1] === \"*\"\n ) {\n currentCssCommentType = \"multi-line\";\n }\n\n if (\n !isExtractingCss &&\n !currentCssCommentType &&\n currentChar === \"/\" &&\n content[cursor + 1] === \"/\"\n ) {\n currentCssCommentType = \"single-line\";\n }\n\n if (\n !hasUnclosedBacktick &&\n !currentCssCommentType &&\n !isExtractingCss &&\n currentChar === \"c\" &&\n content.slice(cursor, cursor + 4) === \"css`\" &&\n content.slice(cursor - 1, cursor + 4) !== '\"css`'\n ) {\n isExtractingCss = true;\n hasUnclosedBacktick = true;\n\n const newlineCount = current.split(\"\\n\").length - 1;\n surrounding.push(\n `/*___js___${Buffer.from(current).toString(\"base64\")}___js-end___${\"\\n\".repeat(newlineCount)}*/`,\n );\n current = \"\";\n\n cursor += 3;\n continue;\n }\n\n if (!isExtractingCss && currentChar === \"`\") {\n hasUnclosedBacktick = !hasUnclosedBacktick;\n }\n\n if (expressionEvaluationIndentation && currentChar === \"{\") {\n expressionEvaluationIndentation++;\n }\n\n if (\n !expressionEvaluationIndentation &&\n isExtractingCss &&\n currentChar === \"$\" &&\n content.slice(cursor, cursor + 2) === \"${\"\n ) {\n expressionEvaluationIndentation++;\n cursor += 1;\n current += \"${\";\n continue;\n }\n\n if (expressionEvaluationIndentation && currentChar === \"}\") {\n expressionEvaluationIndentation--;\n }\n\n if (\n isExtractingCss &&\n !expressionEvaluationIndentation &&\n currentChar === \"`\"\n ) {\n isExtractingCss = false;\n hasUnclosedBacktick = false;\n\n css.push(\n `/*___start___*/.css${cssInJSOccurrence++}{${current}}/*___end___*/`,\n );\n current = \"\";\n continue;\n }\n\n if (\n currentCssCommentType === \"multi-line\" &&\n currentChar === \"*\" &&\n content[cursor + 1] === \"/\"\n ) {\n currentCssCommentType = undefined;\n }\n\n if (currentCssCommentType === \"single-line\" && currentChar === \"\\n\") {\n currentCssCommentType = undefined;\n }\n\n current += content[cursor];\n }\n\n const newlineCount = current.split(\"\\n\").length - 1;\n surrounding.push(\n `/*___js___${Buffer.from(current).toString(\"base64\")}___js-end___${\"\\n\".repeat(newlineCount)}*/`,\n );\n\n let cssString = \"\";\n\n for (let i = 0; i < surrounding.length; i++) {\n const currJS = surrounding[i];\n const nextCss = css[i];\n\n if (!currJS) {\n continue;\n }\n\n cssString += currJS;\n\n if (nextCss) {\n cssString += nextCss;\n }\n }\n\n return cssString;\n}\n"],"names":["newlineCount"],"mappings":"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"}