Files
echo-nexus/node_modules/@codemirror/lang-sass/dist/index.cjs
T

61 lines
1.9 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var sass$1 = require('@lezer/sass');
var language = require('@codemirror/language');
var langCss = require('@codemirror/lang-css');
/**
A language provider based on the [Lezer Sass
parser](https://github.com/lezer-parser/sass), extended with
highlighting and indentation information.
*/
const sassLanguage = language.LRLanguage.define({
name: "sass",
parser: sass$1.parser.configure({
props: [
language.foldNodeProp.add({
Block: language.foldInside,
Comment(node, state) {
return { from: node.from + 2, to: state.sliceDoc(node.to - 2, node.to) == "*/" ? node.to - 2 : node.to };
}
}),
language.indentNodeProp.add({
Declaration: language.continuedIndent()
})
]
}),
languageData: {
commentTokens: { block: { open: "/*", close: "*/" }, line: "//" },
indentOnInput: /^\s*\}$/,
wordChars: "$-"
}
});
const indentedSassLanguage = sassLanguage.configure({
dialect: "indented",
props: [
language.indentNodeProp.add({
"Block RuleSet": cx => cx.baseIndent + cx.unit
}),
language.foldNodeProp.add({
Block: node => ({ from: node.from, to: node.to })
})
]
});
/**
Property, variable, $-variable, and value keyword completion
source.
*/
const sassCompletionSource = langCss.defineCSSCompletionSource(node => node.name == "VariableName" || node.name == "SassVariableName");
/**
Language support for CSS.
*/
function sass(config) {
return new language.LanguageSupport((config === null || config === void 0 ? void 0 : config.indented) ? indentedSassLanguage : sassLanguage, sassLanguage.data.of({ autocomplete: sassCompletionSource }));
}
exports.sass = sass;
exports.sassCompletionSource = sassCompletionSource;
exports.sassLanguage = sassLanguage;