@master/css-language-service 2.0.0-rc.69 → 2.0.0-rc.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -6
- package/dist/common.d.ts +1 -9
- package/dist/common.mjs +1 -48
- package/dist/core.d.ts +11 -10
- package/dist/core.mjs +70 -200
- package/dist/features/inspect-syntax.mjs +18 -32
- package/dist/features/render-semantic-tokens.d.ts +5 -0
- package/dist/features/render-semantic-tokens.mjs +10 -0
- package/dist/features/render-syntax-colors.mjs +23 -8
- package/dist/features/suggest-syntax.d.ts +2 -1
- package/dist/features/suggest-syntax.mjs +2 -2
- package/dist/index.mjs +1 -1
- package/dist/settings.d.ts +4 -7
- package/dist/settings.mjs +12 -41
- package/dist/utils/beautify-css.mjs +1 -1
- package/dist/utils/completion-index.d.ts +38 -0
- package/dist/utils/completion-index.mjs +268 -0
- package/dist/utils/convert-color-token.d.ts +1 -1
- package/dist/utils/convert-color-token.mjs +1 -1
- package/dist/utils/create-css-markdown-documentation.d.ts +5 -0
- package/dist/utils/create-css-markdown-documentation.mjs +15 -0
- package/dist/utils/get-class-completion-items.d.ts +4 -0
- package/dist/utils/get-class-completion-items.mjs +20 -0
- package/dist/utils/get-color-completion-items.d.ts +1 -1
- package/dist/utils/get-color-completion-items.mjs +6 -9
- package/dist/utils/get-pseudo-class-completion-items.d.ts +3 -2
- package/dist/utils/get-pseudo-class-completion-items.mjs +45 -42
- package/dist/utils/get-pseudo-element-completion-items.d.ts +3 -2
- package/dist/utils/get-pseudo-element-completion-items.mjs +17 -28
- package/dist/utils/get-query-completion-items.d.ts +3 -2
- package/dist/utils/get-query-completion-items.mjs +19 -32
- package/dist/utils/get-utility-info.d.ts +2 -5
- package/dist/utils/get-utility-info.mjs +4 -16
- package/dist/utils/get-value-completion-items.d.ts +3 -2
- package/dist/utils/get-value-completion-items.mjs +145 -123
- package/dist/utils/query-syntax-completions.d.ts +3 -2
- package/dist/utils/query-syntax-completions.mjs +25 -44
- package/package.json +1 -1
- package/dist/common.cjs +0 -57
- package/dist/core.cjs +0 -246
- package/dist/features/edit-syntax-colors.cjs +0 -19
- package/dist/features/inspect-syntax.cjs +0 -70
- package/dist/features/render-syntax-colors.cjs +0 -89
- package/dist/features/suggest-syntax.cjs +0 -20
- package/dist/index.cjs +0 -29
- package/dist/settings.cjs +0 -84
- package/dist/utils/beautify-css.cjs +0 -13
- package/dist/utils/convert-color-token.cjs +0 -60
- package/dist/utils/create-doc.cjs +0 -26
- package/dist/utils/css-data-provider.cjs +0 -9
- package/dist/utils/css-data-provider.d.ts +0 -3
- package/dist/utils/css-data-provider.mjs +0 -7
- package/dist/utils/find-matching-brackets.cjs +0 -29
- package/dist/utils/find-matching-brackets.d.ts +0 -1
- package/dist/utils/find-matching-brackets.mjs +0 -27
- package/dist/utils/get-color-completion-items.cjs +0 -29
- package/dist/utils/get-css-data-documentation.cjs +0 -88
- package/dist/utils/get-css-data-documentation.d.ts +0 -5
- package/dist/utils/get-css-data-documentation.mjs +0 -86
- package/dist/utils/get-main-completion-items.cjs +0 -106
- package/dist/utils/get-main-completion-items.d.ts +0 -3
- package/dist/utils/get-main-completion-items.mjs +0 -104
- package/dist/utils/get-position.cjs +0 -12
- package/dist/utils/get-pseudo-class-completion-items.cjs +0 -67
- package/dist/utils/get-pseudo-element-completion-items.cjs +0 -56
- package/dist/utils/get-query-completion-items.cjs +0 -92
- package/dist/utils/get-range.cjs +0 -23
- package/dist/utils/get-utility-info.cjs +0 -33
- package/dist/utils/get-value-completion-items.cjs +0 -183
- package/dist/utils/query-syntax-completions.cjs +0 -115
- package/dist/utils/regex.cjs +0 -5
- package/dist/utils/sort-completion-items.cjs +0 -13
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var vscodeLanguageserverProtocol = require('vscode-languageserver-protocol');
|
|
4
|
-
var getPseudoClassCompletionItems = require('./get-pseudo-class-completion-items.cjs');
|
|
5
|
-
var getPseudoElementCompletionItems = require('./get-pseudo-element-completion-items.cjs');
|
|
6
|
-
var css = require('@master/css');
|
|
7
|
-
var common = require('../common.cjs');
|
|
8
|
-
var getMainCompletionItems = require('./get-main-completion-items.cjs');
|
|
9
|
-
var getValueCompletionItems = require('./get-value-completion-items.cjs');
|
|
10
|
-
var getQueryCompletionItems = require('./get-query-completion-items.cjs');
|
|
11
|
-
var getCssDataDocumentation = require('./get-css-data-documentation.cjs');
|
|
12
|
-
|
|
13
|
-
function querySyntaxCompletions(q = '', css$1 = css.createCSS()) {
|
|
14
|
-
const fields = q.split(' ');
|
|
15
|
-
let field = fields[fields.length - 1];
|
|
16
|
-
const triggerCharacter = q.charAt(q.length - 1);
|
|
17
|
-
const invoked = triggerCharacter === ' ' || field.length === 0;
|
|
18
|
-
if (invoked || field === common.GROUP_TRIGGER_CHARACTER || triggerCharacter === ';') {
|
|
19
|
-
return getMainCompletionItems(css$1);
|
|
20
|
-
}
|
|
21
|
-
const isGroup = field.startsWith(common.GROUP_TRIGGER_CHARACTER);
|
|
22
|
-
if (isGroup) {
|
|
23
|
-
const declarationSeparatorMatches = Array.from(field.matchAll(/;(?=(?:[^'"]|'[^']*'|"[^"]*")*$)/g));
|
|
24
|
-
if (declarationSeparatorMatches.length) {
|
|
25
|
-
field = field.slice(declarationSeparatorMatches[declarationSeparatorMatches.length - 1].index + 1);
|
|
26
|
-
} else {
|
|
27
|
-
field = field.slice(1);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const signs = css$1.definedRules.filter(({ definition })=>definition.sign).map(({ definition })=>definition.sign);
|
|
31
|
-
const keyMatch = field.match(new RegExp(`^[^${signs}'":\\s]+:`));
|
|
32
|
-
const atMatches = Array.from(field.matchAll(/@(?=(?:[^'"]|'[^']*'|"[^"]*")*$)/g));
|
|
33
|
-
const valueSeparatorMatch = field.match(/\|(?=(?:[^'"]|'[^']*'|"[^"]*")*$)/g);
|
|
34
|
-
const atInvoked = atMatches.findIndex(({ index })=>index !== 0) !== -1;
|
|
35
|
-
const firstColonIndex = keyMatch ? keyMatch[0].length - 1 : -1;
|
|
36
|
-
const selectorInvokedRegex = new RegExp(`[${css.SELECTOR_SIGNS.join('')}](?=(?:[^'"]|'[^']*'|"[^"]*")*$)`);
|
|
37
|
-
const key = keyMatch ? keyMatch[0].slice(0, firstColonIndex) : undefined;
|
|
38
|
-
const componentNames = Object.keys(css$1.config.components || {});
|
|
39
|
-
const utilityNames = Object.keys(css$1.config.utilities || {});
|
|
40
|
-
const isStyle = !!componentNames.find((eachStyleName)=>new RegExp(`^${eachStyleName}(?:\\b|_)`).test(field));
|
|
41
|
-
const isUtility = !!utilityNames.find((eachUtilityName)=>new RegExp(`^${eachUtilityName}(?:\\b|_)`).test(field));
|
|
42
|
-
// check by utilities and components
|
|
43
|
-
if (!isStyle && !isUtility) {
|
|
44
|
-
if (key === undefined && !valueSeparatorMatch) {
|
|
45
|
-
/**
|
|
46
|
-
* The server capability sets '@' '~' as the trigger characters for at and adjacent selectors,
|
|
47
|
-
* but these two characters are also the prefix symbols of `animation` and `transition`,
|
|
48
|
-
* and should be filtered to prevent hints all completions items.
|
|
49
|
-
* @example class="@"
|
|
50
|
-
* @example class="~"
|
|
51
|
-
*/ if (field.startsWith(css.ANIMATION_SIGN) || field.startsWith(css.TRANSITION_SIGN)) {
|
|
52
|
-
return getMainCompletionItems(css$1).filter((completionItem)=>completionItem.label.startsWith(field)).map((completionItem)=>({
|
|
53
|
-
...completionItem,
|
|
54
|
-
label: completionItem.label.slice(1)
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
return getMainCompletionItems(css$1);
|
|
58
|
-
}
|
|
59
|
-
if (!atInvoked && !selectorInvokedRegex.test(field.slice(firstColonIndex + 1))) {
|
|
60
|
-
if (field.startsWith(css.ANIMATION_SIGN) && firstColonIndex === -1) {
|
|
61
|
-
return getValueCompletionItems(css$1, 'animation');
|
|
62
|
-
} else if (field.startsWith(css.TRANSITION_SIGN) && firstColonIndex === -1) {
|
|
63
|
-
return getValueCompletionItems(css$1, 'transition');
|
|
64
|
-
} else if (key && firstColonIndex !== -1) {
|
|
65
|
-
return getValueCompletionItems(css$1, key);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Not support conditional btn:hover and group
|
|
71
|
-
*/ if (isStyle || isGroup) return;
|
|
72
|
-
if (atInvoked && [
|
|
73
|
-
css.AT_SIGN,
|
|
74
|
-
...css.QUERY_COMPARISON_OPERATORS,
|
|
75
|
-
...css.QUERY_LOGICAL_OPERATORS
|
|
76
|
-
].includes(triggerCharacter)) {
|
|
77
|
-
return getQueryCompletionItems(css$1, triggerCharacter, field);
|
|
78
|
-
}
|
|
79
|
-
if (!atInvoked && common.SELECTOR_TRIGGER_CHARACTERS.includes(triggerCharacter)) {
|
|
80
|
-
const pseudoElementCompletionItems = getPseudoElementCompletionItems(css$1, field);
|
|
81
|
-
if (field.endsWith('::')) {
|
|
82
|
-
/**
|
|
83
|
-
* Consider trigger characters and fix insertText.
|
|
84
|
-
* @incorrect class="text:center::" -> class="text:center::::after"
|
|
85
|
-
* @correct class="text:center::" -> class="text:center::after"
|
|
86
|
-
*/ pseudoElementCompletionItems.forEach((completionItem)=>completionItem.insertText = completionItem.label.slice(2));
|
|
87
|
-
return pseudoElementCompletionItems;
|
|
88
|
-
} else {
|
|
89
|
-
const completionItems = getPseudoClassCompletionItems(css$1, field);
|
|
90
|
-
completionItems.push(...pseudoElementCompletionItems);
|
|
91
|
-
/**
|
|
92
|
-
* Consider trigger characters and fix insertText.
|
|
93
|
-
* @incorrect class="text:center:" -> class="text:center::active"
|
|
94
|
-
* @correct class="text:center:" -> class="text:center:active"
|
|
95
|
-
*/ if (triggerCharacter === ':') {
|
|
96
|
-
completionItems.forEach((completionItem)=>completionItem.insertText = completionItem.label.slice(1));
|
|
97
|
-
} else {
|
|
98
|
-
completionItems.push({
|
|
99
|
-
label: '.<class>',
|
|
100
|
-
insertText: '.',
|
|
101
|
-
documentation: getCssDataDocumentation.getCSSDataDocumentation(undefined, {
|
|
102
|
-
generatedCSS: css.generateCSS([
|
|
103
|
-
field + '.class'
|
|
104
|
-
], css$1),
|
|
105
|
-
docs: '/guide/selectors'
|
|
106
|
-
}),
|
|
107
|
-
kind: vscodeLanguageserverProtocol.CompletionItemKind.Class
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
return completionItems;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
module.exports = querySyntaxCompletions;
|
package/dist/utils/regex.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/* localeCompare equals to the real vscode completion items sorting */ function sortCompletionItems(items) {
|
|
4
|
-
return items.sort((a, b)=>{
|
|
5
|
-
const sortTextA = a.sortText || a.label;
|
|
6
|
-
const sortTextB = b.sortText || b.label;
|
|
7
|
-
return sortTextA.localeCompare(sortTextB, undefined, {
|
|
8
|
-
numeric: true
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
module.exports = sortCompletionItems;
|