astro-ghostcms/.pnpm-store/v3/files/89/9294016b6a621a5119000700176...

99 lines
4.1 KiB
Plaintext
Raw Permalink Normal View History

2024-02-14 14:10:47 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStyleContentCSS = void 0;
const sourcemap_codec_1 = require("@jridgewell/sourcemap-codec");
const ast_utils_1 = require("../ast-utils");
const utils_1 = require("./utils");
const postcss_1 = require("./postcss");
const sass_1 = require("./sass");
const less_1 = require("./less");
const stylus_1 = require("./stylus");
const lines_and_columns_1 = require("./lines-and-columns");
const compat_1 = require("../compat");
const cache = new WeakMap();
function getStyleContentCSS(node, context) {
const cachedResult = cache.get(node);
if (cachedResult) {
return cachedResult;
}
const sourceCode = (0, compat_1.getSourceCode)(context);
const langNode = (0, ast_utils_1.findAttribute)(node, "lang");
const lang = langNode && (0, ast_utils_1.getStaticAttributeStringValue)(langNode);
if (!langNode || lang === "css") {
const inputRange = (0, utils_1.getContentRange)(node);
return {
css: sourceCode.text.slice(...inputRange),
remap: (i) => inputRange[0] + i,
};
}
let transform = null;
if (lang === "postcss") {
transform = (0, postcss_1.transform)(node, context);
}
else if (lang === "scss" || lang === "sass") {
transform = (0, sass_1.transform)(node, context, lang);
}
else if (lang === "less") {
transform = (0, less_1.transform)(node, context);
}
else if (lang === "styl" || lang === "stylus") {
transform = (0, stylus_1.transform)(node, context);
}
if (!transform) {
return null;
}
const result = transformToStyleContentCSS(transform, context);
cache.set(node, result);
return result;
}
exports.getStyleContentCSS = getStyleContentCSS;
function transformToStyleContentCSS(transform, context) {
const sourceCode = (0, compat_1.getSourceCode)(context);
let outputLocs = null;
let inputLocs = null;
let decoded = null;
return {
css: transform.output,
remap: (index) => {
outputLocs = outputLocs !== null && outputLocs !== void 0 ? outputLocs : new lines_and_columns_1.LinesAndColumns(transform.output);
inputLocs =
inputLocs !== null && inputLocs !== void 0 ? inputLocs : new lines_and_columns_1.LinesAndColumns(sourceCode.text.slice(...transform.inputRange));
const outputCodePos = outputLocs.getLocFromIndex(index);
const inputCodePos = remapPosition(outputCodePos);
return inputLocs.getIndexFromLoc(inputCodePos) + transform.inputRange[0];
},
};
function remapPosition(pos) {
decoded = decoded !== null && decoded !== void 0 ? decoded : (0, sourcemap_codec_1.decode)(transform.mappings);
const lineMaps = decoded[pos.line - 1];
if (!(lineMaps === null || lineMaps === void 0 ? void 0 : lineMaps.length)) {
for (let line = pos.line - 1; line >= 0; line--) {
const prevLineMaps = decoded[line];
if (prevLineMaps === null || prevLineMaps === void 0 ? void 0 : prevLineMaps.length) {
const [, , sourceCodeLine, sourceCodeColumn] = prevLineMaps[prevLineMaps.length - 1];
return {
line: sourceCodeLine + 1,
column: sourceCodeColumn,
};
}
}
return { line: -1, column: -1 };
}
for (let index = 0; index < lineMaps.length - 1; index++) {
const [generateCodeColumn, , sourceCodeLine, sourceCodeColumn] = lineMaps[index];
if (generateCodeColumn <= pos.column &&
pos.column < lineMaps[index + 1][0]) {
return {
line: sourceCodeLine + 1,
column: sourceCodeColumn + (pos.column - generateCodeColumn),
};
}
}
const [generateCodeColumn, , sourceCodeLine, sourceCodeColumn] = lineMaps[lineMaps.length - 1];
return {
line: sourceCodeLine + 1,
column: sourceCodeColumn + (pos.column - generateCodeColumn),
};
}
}