@master/css-language-service 2.0.0-rc.26 → 2.0.0-rc.27
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/dist/common.cjs +57 -0
- package/dist/common.d.ts +9 -0
- package/dist/common.mjs +48 -0
- package/dist/core.cjs +188 -0
- package/dist/core.d.ts +30 -0
- package/dist/core.mjs +186 -0
- package/dist/features/edit-syntax-colors.cjs +19 -0
- package/dist/features/edit-syntax-colors.d.ts +4 -0
- package/dist/features/edit-syntax-colors.mjs +17 -0
- package/dist/features/inspect-syntax.cjs +70 -0
- package/dist/features/inspect-syntax.d.ts +4 -0
- package/dist/features/inspect-syntax.mjs +68 -0
- package/dist/features/render-syntax-colors.cjs +88 -0
- package/dist/features/render-syntax-colors.d.ts +4 -0
- package/dist/features/render-syntax-colors.mjs +86 -0
- package/dist/features/suggest-syntax.cjs +20 -0
- package/dist/features/suggest-syntax.d.ts +4 -0
- package/dist/features/suggest-syntax.mjs +18 -0
- package/dist/index.cjs +23 -15
- package/dist/index.d.ts +7 -5
- package/dist/index.mjs +7 -5
- package/dist/settings.cjs +130 -29
- package/dist/settings.d.ts +16 -8
- package/dist/settings.mjs +130 -29
- package/dist/utils/beautify-css.cjs +13 -0
- package/dist/utils/beautify-css.d.ts +1 -0
- package/dist/utils/beautify-css.mjs +11 -0
- package/dist/utils/convert-color-space.cjs +40 -0
- package/dist/utils/convert-color-space.d.ts +2 -0
- package/dist/utils/convert-color-space.mjs +38 -0
- package/dist/utils/convert-color-token.cjs +28 -0
- package/dist/utils/convert-color-token.d.ts +3 -0
- package/dist/utils/convert-color-token.mjs +26 -0
- package/dist/utils/create-doc.cjs +26 -0
- package/dist/utils/create-doc.d.ts +16 -0
- package/dist/utils/create-doc.mjs +21 -0
- package/dist/utils/css-data-provider.cjs +9 -0
- package/dist/utils/css-data-provider.d.ts +3 -0
- package/dist/utils/css-data-provider.mjs +7 -0
- package/dist/utils/find-matching-brackets.cjs +29 -0
- package/dist/utils/find-matching-brackets.d.ts +1 -0
- package/dist/utils/find-matching-brackets.mjs +27 -0
- package/dist/utils/get-color-completion-items.cjs +30 -0
- package/dist/utils/get-color-completion-items.d.ts +3 -0
- package/dist/utils/get-color-completion-items.mjs +28 -0
- package/dist/utils/get-css-data-documentation.cjs +90 -0
- package/dist/utils/get-css-data-documentation.d.ts +5 -0
- package/dist/utils/get-css-data-documentation.mjs +88 -0
- package/dist/utils/get-main-completion-items.cjs +105 -0
- package/dist/utils/get-main-completion-items.d.ts +3 -0
- package/dist/utils/get-main-completion-items.mjs +103 -0
- package/dist/utils/get-position.cjs +12 -0
- package/dist/utils/get-position.d.ts +1 -0
- package/dist/utils/get-position.mjs +10 -0
- package/dist/utils/get-pseudo-class-completion-items.cjs +65 -0
- package/dist/utils/get-pseudo-class-completion-items.d.ts +3 -0
- package/dist/utils/get-pseudo-class-completion-items.mjs +63 -0
- package/dist/utils/get-pseudo-element-completion-items.cjs +56 -0
- package/dist/utils/get-pseudo-element-completion-items.d.ts +3 -0
- package/dist/utils/get-pseudo-element-completion-items.mjs +54 -0
- package/dist/utils/get-query-completion-items.cjs +102 -0
- package/dist/utils/get-query-completion-items.d.ts +3 -0
- package/dist/utils/get-query-completion-items.mjs +100 -0
- package/dist/utils/get-range.cjs +21 -0
- package/dist/utils/get-range.d.ts +2 -0
- package/dist/utils/get-range.mjs +19 -0
- package/dist/utils/get-utility-info.cjs +32 -0
- package/dist/utils/get-utility-info.d.ts +7 -0
- package/dist/utils/get-utility-info.mjs +30 -0
- package/dist/utils/get-value-completion-items.cjs +185 -0
- package/dist/utils/get-value-completion-items.d.ts +3 -0
- package/dist/utils/get-value-completion-items.mjs +183 -0
- package/dist/utils/query-syntax-completions.cjs +115 -0
- package/dist/utils/query-syntax-completions.d.ts +3 -0
- package/dist/utils/query-syntax-completions.mjs +113 -0
- package/dist/utils/regex.cjs +1 -1
- package/dist/utils/regex.mjs +1 -1
- package/dist/utils/sort-completion-items.cjs +11 -0
- package/dist/utils/sort-completion-items.d.ts +2 -0
- package/dist/utils/sort-completion-items.mjs +9 -0
- package/package.json +1 -1
- package/dist/constant.cjs +0 -3064
- package/dist/constant.d.ts +0 -33
- package/dist/constant.mjs +0 -3055
- package/dist/position-check.cjs +0 -37
- package/dist/position-check.d.ts +0 -7
- package/dist/position-check.mjs +0 -35
- package/dist/providers/color.cjs +0 -319
- package/dist/providers/color.d.ts +0 -5
- package/dist/providers/color.mjs +0 -315
- package/dist/providers/completion.cjs +0 -309
- package/dist/providers/completion.d.ts +0 -14
- package/dist/providers/completion.mjs +0 -303
- package/dist/providers/hover.cjs +0 -65
- package/dist/providers/hover.d.ts +0 -2
- package/dist/providers/hover.mjs +0 -63
- package/dist/utils/get-css-entry-markdown-description.cjs +0 -77
- package/dist/utils/get-css-entry-markdown-description.d.ts +0 -1
- package/dist/utils/get-css-entry-markdown-description.mjs +0 -75
- package/dist/utils/hex-to-rgb.cjs +0 -13
- package/dist/utils/hex-to-rgb.d.ts +0 -2
- package/dist/utils/hex-to-rgb.mjs +0 -11
- package/dist/utils/oklab-to-rgb.cjs +0 -33
- package/dist/utils/oklab-to-rgb.d.ts +0 -1
- package/dist/utils/oklab-to-rgb.mjs +0 -31
- package/dist/utils/oklch-to-oklab.cjs +0 -11
- package/dist/utils/oklch-to-oklab.d.ts +0 -1
- package/dist/utils/oklch-to-oklab.mjs +0 -9
- package/dist/utils/to-two-digit-hex.cjs +0 -8
- package/dist/utils/to-two-digit-hex.d.ts +0 -1
- package/dist/utils/to-two-digit-hex.mjs +0 -6
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
import { masterCssOtherKeys, masterCssKeyValues, masterCssSelectors, masterCssElements, masterCssType, masterCssMedia, masterCssCommonValues } from '../constant.mjs';
|
|
2
|
-
import { MasterCSS } from '@master/css';
|
|
3
|
-
import { cssData } from 'vscode-css-languageservice/lib/umd/data/webCustomData';
|
|
4
|
-
import { CSSDataProvider } from 'vscode-css-languageservice/lib/umd/languageFacts/dataProvider';
|
|
5
|
-
|
|
6
|
-
let cssKeys = [];
|
|
7
|
-
cssKeys = cssKeys.concat(masterCssOtherKeys);
|
|
8
|
-
masterCssKeyValues.forEach((x)=>{
|
|
9
|
-
cssKeys = cssKeys.concat(x.key);
|
|
10
|
-
});
|
|
11
|
-
const masterCssKeys = [
|
|
12
|
-
...new Set(cssKeys)
|
|
13
|
-
];
|
|
14
|
-
// temporary
|
|
15
|
-
function checkConfigColorsBlock(document, position) {
|
|
16
|
-
const lineText = (document?.getText({
|
|
17
|
-
start: {
|
|
18
|
-
line: position.line,
|
|
19
|
-
character: 0
|
|
20
|
-
},
|
|
21
|
-
end: {
|
|
22
|
-
line: position.line,
|
|
23
|
-
character: position.character
|
|
24
|
-
}
|
|
25
|
-
}) ?? '').trim();
|
|
26
|
-
if ((lineText.match(/'|"|`/g)?.length ?? 0) % 2 === 0) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
for(let i = position.line; i > 0; i--){
|
|
30
|
-
const text = document.getText({
|
|
31
|
-
start: {
|
|
32
|
-
line: i - 1,
|
|
33
|
-
character: 0
|
|
34
|
-
},
|
|
35
|
-
end: {
|
|
36
|
-
line: i,
|
|
37
|
-
character: 0
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
if (text.includes('}')) {
|
|
41
|
-
return false;
|
|
42
|
-
} else if (text.includes('colors:')) {
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
function getLastInstance(lineText, position, language) {
|
|
49
|
-
const classPattern = /(?:[^"{'\s])+(?=>\s|\b)/g;
|
|
50
|
-
let classMatch;
|
|
51
|
-
let lastKey = '';
|
|
52
|
-
let triggerKey = lineText.charAt(lineText.length - 1);
|
|
53
|
-
let isStart = position.character == 1 || lineText.charAt(lineText.length - 2) === ' ' || lineText.charAt(lineText.length - 2) === '' || lineText.charAt(lineText.length - 2) === '"' || lineText.charAt(lineText.length - 2) === '\'' || lineText.charAt(lineText.length - 2) === '{';
|
|
54
|
-
if (lineText.match(classPattern) === null) {
|
|
55
|
-
return {
|
|
56
|
-
isInstance: false,
|
|
57
|
-
lastKey: '',
|
|
58
|
-
triggerKey: '',
|
|
59
|
-
isStart: false,
|
|
60
|
-
language: language
|
|
61
|
-
};
|
|
62
|
-
} else {
|
|
63
|
-
while((classMatch = classPattern.exec(lineText)) !== null){
|
|
64
|
-
lastKey = classMatch[0];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (lineText.charAt(lineText.length - 2) === ':' && lineText.charAt(lineText.length - 1) === ':') {
|
|
68
|
-
triggerKey = '::';
|
|
69
|
-
isStart = false;
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
isInstance: true,
|
|
73
|
-
lastKey: lastKey,
|
|
74
|
-
triggerKey: triggerKey,
|
|
75
|
-
isStart: isStart,
|
|
76
|
-
language: language
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function getConfigColorsCompletionItem(css = new MasterCSS()) {
|
|
80
|
-
let masterStyleCompletionItem = [];
|
|
81
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getColorsItem(css));
|
|
82
|
-
return masterStyleCompletionItem;
|
|
83
|
-
}
|
|
84
|
-
function getCompletionItem(instance, triggerKey, isStart, language, css = new MasterCSS()) {
|
|
85
|
-
const cssDataProvider = new CSSDataProvider(cssData);
|
|
86
|
-
const cssProperties = cssDataProvider.provideProperties();
|
|
87
|
-
let masterStyleCompletionItem = [];
|
|
88
|
-
const haveValue = instance.split(':').length;
|
|
89
|
-
let key = instance.split(':')[0];
|
|
90
|
-
key = key.trim();
|
|
91
|
-
const instanceLength = instance.split(':|@').length;
|
|
92
|
-
const last = instance.split(':|@')[instanceLength - 1];
|
|
93
|
-
const mediaPattern = /[^\\s"]+@+([^\\s:"@]+)/g;
|
|
94
|
-
const elementsPattern = /[^\\s"]+::+([^\\s:"@]+)/g;
|
|
95
|
-
let isColorful = false;
|
|
96
|
-
const isMedia = !(mediaPattern.exec(instance) === null && triggerKey !== '@');
|
|
97
|
-
const isElements = !(elementsPattern.exec(instance) === null && triggerKey !== '::');
|
|
98
|
-
const masterCssKeyCompletionItems = [];
|
|
99
|
-
let masterCssValues = [];
|
|
100
|
-
const masterCustomSelectors = Object.keys(css.config?.selectors ?? {}).map((x)=>x.endsWith('(') ? `${x})` : x).filter((x)=>x.match(/:[^:]+/) && !masterCssSelectors.find((existedSelector)=>(typeof existedSelector === 'string' ? existedSelector : existedSelector.label) === `:${x}`)).map((x)=>{
|
|
101
|
-
x = x.substring(1);
|
|
102
|
-
if (x.endsWith(')')) {
|
|
103
|
-
return {
|
|
104
|
-
label: x,
|
|
105
|
-
kind: 3
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
return x;
|
|
109
|
-
});
|
|
110
|
-
const masterCustomElements = Object.keys(css.config?.selectors ?? {}).map((x)=>x.endsWith('(') ? `${x})` : x).filter((x)=>x.match(/::[^:]+/) && !masterCssElements.find((existedElement)=>(typeof existedElement === 'string' ? existedElement : existedElement.label) === `::${x}`)).map((x)=>{
|
|
111
|
-
x = x.substring(2);
|
|
112
|
-
if (x.endsWith(')')) {
|
|
113
|
-
return {
|
|
114
|
-
label: x,
|
|
115
|
-
kind: 3
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
return x;
|
|
119
|
-
});
|
|
120
|
-
masterCssKeyValues.forEach((x)=>{
|
|
121
|
-
const fullKey = x.key[0];
|
|
122
|
-
const originalCssProperty = cssProperties.find((x)=>x.name == fullKey);
|
|
123
|
-
const originalCssValues = originalCssProperty?.values ?? [];
|
|
124
|
-
for (const masterKey of x.key){
|
|
125
|
-
if (!masterCssKeyCompletionItems.find((existedValue)=>existedValue.label === masterKey + ':')) {
|
|
126
|
-
masterCssKeyCompletionItems.push({
|
|
127
|
-
label: masterKey + ':',
|
|
128
|
-
kind: 10,
|
|
129
|
-
documentation: originalCssProperty?.description ?? '',
|
|
130
|
-
command: {
|
|
131
|
-
title: 'triggerSuggest',
|
|
132
|
-
command: 'editor.action.triggerSuggest'
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (x.key.includes(key)) {
|
|
138
|
-
// constant.ts custom values
|
|
139
|
-
masterCssValues = masterCssValues.concat(x.values.filter((cssValue)=>!masterCssValues.find((existedValue)=>(typeof existedValue === 'string' ? existedValue : existedValue.label) === (typeof cssValue === 'string' ? cssValue : cssValue.label))));
|
|
140
|
-
masterCssValues = masterCssValues.concat(originalCssValues.filter((cssValue, index)=>cssValue.description || !cssValue.description && originalCssValues.indexOf(cssValue) === index).map((cssValue)=>({
|
|
141
|
-
label: cssValue.name.replace(/,\s/g, ',').replace(/\s/g, '|').replace(/["']/g, ''),
|
|
142
|
-
kind: 10,
|
|
143
|
-
documentation: cssValue?.description ?? ''
|
|
144
|
-
})).filter((cssValue)=>!masterCssValues.find((existedValue)=>(typeof existedValue === 'string' ? existedValue : existedValue.label) === (typeof cssValue === 'string' ? cssValue : cssValue.label))));
|
|
145
|
-
if (css.config?.variables?.[fullKey]) {
|
|
146
|
-
const masterCustomVariables = Object.keys(css.config?.variables[fullKey]);
|
|
147
|
-
masterCssValues = masterCssValues.concat(masterCustomVariables.filter((customValue)=>!masterCssValues.find((existedValue)=>(typeof existedValue === 'string' ? existedValue : existedValue.label) === customValue)));
|
|
148
|
-
}
|
|
149
|
-
if (x.colored) {
|
|
150
|
-
isColorful = true;
|
|
151
|
-
const needPushList = masterCssType.find((y)=>y.type === 'color')?.values.filter((z)=>!masterCssValues.find((a)=>(typeof a === 'string' ? a : a.label) === (typeof z === 'string' ? z : z.label)));
|
|
152
|
-
if (needPushList) {
|
|
153
|
-
masterCssValues = masterCssValues.concat(needPushList);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
if ((isStart == true || !masterCssKeys.includes(key)) && triggerKey !== '@' && triggerKey !== ':') {
|
|
159
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(masterCssKeyCompletionItems);
|
|
160
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(Object.keys(css.config?.semantics ?? {}), 10));
|
|
161
|
-
if (language == 'tsx' || language == 'vue' || language == 'jsx') {
|
|
162
|
-
return HaveDash(key, masterStyleCompletionItem);
|
|
163
|
-
}
|
|
164
|
-
return masterStyleCompletionItem;
|
|
165
|
-
} else if (isStart == true) {
|
|
166
|
-
return [];
|
|
167
|
-
}
|
|
168
|
-
if (masterCssKeys.includes(key) && key !== null && isElements === true) {
|
|
169
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCssElements, 10));
|
|
170
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCustomElements, 10));
|
|
171
|
-
if ((language == 'tsx' || language == 'vue' || language == 'jsx') && triggerKey !== '@' && triggerKey !== ':') {
|
|
172
|
-
return HaveDash(last, masterStyleCompletionItem);
|
|
173
|
-
}
|
|
174
|
-
return masterStyleCompletionItem;
|
|
175
|
-
}
|
|
176
|
-
if (masterCssKeys.includes(key) && key !== null && isMedia === true) {
|
|
177
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCssMedia, 10));
|
|
178
|
-
// todo: refactor theme
|
|
179
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem([
|
|
180
|
-
'light',
|
|
181
|
-
'dark'
|
|
182
|
-
], 10));
|
|
183
|
-
if ((language == 'tsx' || language == 'vue' || language == 'jsx') && triggerKey !== '@' && triggerKey !== ':') {
|
|
184
|
-
return HaveDash('@' + last, masterStyleCompletionItem);
|
|
185
|
-
}
|
|
186
|
-
return masterStyleCompletionItem;
|
|
187
|
-
}
|
|
188
|
-
if (Object.keys(css.config?.semantics ?? {}).includes(key) && !masterCssKeyValues.find((x)=>x.key.includes(key))) {
|
|
189
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCssSelectors, 10));
|
|
190
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCustomSelectors, 10));
|
|
191
|
-
if ((language == 'tsx' || language == 'vue' || language == 'jsx') && triggerKey !== '@' && triggerKey !== ':') {
|
|
192
|
-
return HaveDash(last, masterStyleCompletionItem);
|
|
193
|
-
}
|
|
194
|
-
return masterStyleCompletionItem;
|
|
195
|
-
} else if (masterCssKeys.includes(key) && haveValue <= 2 && !(haveValue == 2 && triggerKey === ':')) {
|
|
196
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCssValues, 10));
|
|
197
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCssCommonValues, 13).map((x)=>{
|
|
198
|
-
x.sortText = 'z' + x;
|
|
199
|
-
return x;
|
|
200
|
-
}));
|
|
201
|
-
if (isColorful) {
|
|
202
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getColorsItem(css));
|
|
203
|
-
}
|
|
204
|
-
if ((language == 'tsx' || language == 'vue' || language == 'jsx') && triggerKey !== '@' && triggerKey !== ':') {
|
|
205
|
-
return HaveDash(last, masterStyleCompletionItem);
|
|
206
|
-
}
|
|
207
|
-
return masterStyleCompletionItem;
|
|
208
|
-
}
|
|
209
|
-
if (masterCssKeys.includes(key) && (haveValue == 2 && triggerKey === ':' || haveValue >= 3) || masterCssKeyValues.find((x)=>x.values.includes(key))) {
|
|
210
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCssSelectors, 3));
|
|
211
|
-
masterStyleCompletionItem = masterStyleCompletionItem.concat(getReturnItem(masterCustomSelectors, 10));
|
|
212
|
-
}
|
|
213
|
-
if ((language == 'tsx' || language == 'vue' || language == 'jsx') && triggerKey !== '@' && triggerKey !== ':') {
|
|
214
|
-
return HaveDash(last, masterStyleCompletionItem);
|
|
215
|
-
}
|
|
216
|
-
return masterStyleCompletionItem;
|
|
217
|
-
}
|
|
218
|
-
function getReturnItem(items, kind, insertText = '') {
|
|
219
|
-
const masterStyleCompletionItem = [];
|
|
220
|
-
items.forEach((x)=>{
|
|
221
|
-
if (typeof x === 'string') {
|
|
222
|
-
masterStyleCompletionItem.push({
|
|
223
|
-
label: x + insertText,
|
|
224
|
-
kind: kind,
|
|
225
|
-
insertText: x + insertText,
|
|
226
|
-
insertTextMode: 2,
|
|
227
|
-
command: insertText === ':' ? {
|
|
228
|
-
title: 'triggerSuggest',
|
|
229
|
-
command: 'editor.action.triggerSuggest'
|
|
230
|
-
} : undefined
|
|
231
|
-
});
|
|
232
|
-
} else {
|
|
233
|
-
masterStyleCompletionItem.push({
|
|
234
|
-
insertText: x.label + insertText,
|
|
235
|
-
insertTextMode: 2,
|
|
236
|
-
command: insertText === ':' ? {
|
|
237
|
-
title: 'triggerSuggest',
|
|
238
|
-
command: 'editor.action.triggerSuggest'
|
|
239
|
-
} : undefined,
|
|
240
|
-
...x
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
return masterStyleCompletionItem;
|
|
245
|
-
}
|
|
246
|
-
function getColorsItem(css = new MasterCSS()) {
|
|
247
|
-
const masterStyleCompletionItem = [];
|
|
248
|
-
for(const eachVariableName in css.variables){
|
|
249
|
-
const eachVariable = css.variables[eachVariableName];
|
|
250
|
-
if (eachVariable.type === 'color') {
|
|
251
|
-
let colorValue;
|
|
252
|
-
let colorSpace;
|
|
253
|
-
if (eachVariable.modes) {
|
|
254
|
-
colorValue = Object.values(eachVariable.modes)[0].value;
|
|
255
|
-
colorSpace = Object.values(eachVariable.modes)[0].space;
|
|
256
|
-
} else {
|
|
257
|
-
colorValue = eachVariable.value;
|
|
258
|
-
colorSpace = eachVariable.space;
|
|
259
|
-
}
|
|
260
|
-
let colorResult;
|
|
261
|
-
switch(colorSpace){
|
|
262
|
-
case 'rgb':
|
|
263
|
-
colorResult = `rgb(${colorValue?.split(' ')?.slice(0, 3).join(',')})`;
|
|
264
|
-
break;
|
|
265
|
-
case 'hsl':
|
|
266
|
-
colorResult = `hsl(${colorValue?.split(' ')?.slice(0, 3).join(',')})`;
|
|
267
|
-
break;
|
|
268
|
-
case 'hex':
|
|
269
|
-
colorResult = `#${colorValue}`;
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
masterStyleCompletionItem.push({
|
|
273
|
-
label: eachVariableName,
|
|
274
|
-
documentation: colorResult,
|
|
275
|
-
kind: 16,
|
|
276
|
-
sortText: eachVariableName
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
return masterStyleCompletionItem;
|
|
281
|
-
}
|
|
282
|
-
function HaveDash(str, itemList) {
|
|
283
|
-
const completionItem = [];
|
|
284
|
-
if (str.split('-').length - 1 <= 0) {
|
|
285
|
-
return itemList;
|
|
286
|
-
} else {
|
|
287
|
-
const start = str.split('-')[0] + '-';
|
|
288
|
-
itemList.map((x)=>{
|
|
289
|
-
if (x.label.includes(start)) {
|
|
290
|
-
completionItem.push({
|
|
291
|
-
label: x.label,
|
|
292
|
-
kind: x.kind,
|
|
293
|
-
insertText: x.insertText?.substring(start.length),
|
|
294
|
-
insertTextMode: x.insertTextMode,
|
|
295
|
-
command: x.command
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
return completionItem;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export { checkConfigColorsBlock, getCompletionItem, getConfigColorsCompletionItem, getLastInstance, getReturnItem };
|
package/dist/providers/hover.cjs
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var css = require('@master/css');
|
|
4
|
-
var getCssEntryMarkdownDescription = require('../utils/get-css-entry-markdown-description.cjs');
|
|
5
|
-
var beautifyCss = require('js-beautify/js/lib/beautify-css');
|
|
6
|
-
var webCustomData = require('vscode-css-languageservice/lib/umd/data/webCustomData');
|
|
7
|
-
var dataProvider = require('vscode-css-languageservice/lib/umd/languageFacts/dataProvider');
|
|
8
|
-
|
|
9
|
-
function doHover(instance, range, config) {
|
|
10
|
-
const css$1 = new css.MasterCSS(config);
|
|
11
|
-
css$1.add(instance);
|
|
12
|
-
const contents = [];
|
|
13
|
-
if (css$1.text) {
|
|
14
|
-
const cssPreview = getCssPreview(css$1.text);
|
|
15
|
-
if (cssPreview) {
|
|
16
|
-
contents.push(cssPreview);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
if (css$1.rules.length > 0) {
|
|
20
|
-
const cssHoverInfo = getCssHoverInfo(css$1.rules[0]);
|
|
21
|
-
if (cssHoverInfo) {
|
|
22
|
-
contents.push(cssHoverInfo);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return {
|
|
26
|
-
contents,
|
|
27
|
-
range: range
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function getCssPreview(renderText) {
|
|
31
|
-
return {
|
|
32
|
-
language: 'css',
|
|
33
|
-
value: beautifyCss.css_beautify(renderText, {
|
|
34
|
-
newline_between_rules: true,
|
|
35
|
-
end_with_newline: true
|
|
36
|
-
})
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function getCssHoverInfo(rule) {
|
|
40
|
-
const cssDataProvider = new dataProvider.CSSDataProvider(webCustomData.cssData);
|
|
41
|
-
const cssProperties = cssDataProvider.provideProperties();
|
|
42
|
-
let cssHoverInfo = null;
|
|
43
|
-
const fullKey = rule.id;
|
|
44
|
-
const originalCssProperty = cssProperties.find((x)=>x.name == fullKey);
|
|
45
|
-
if (rule?.layer && [
|
|
46
|
-
css.Layer.Core,
|
|
47
|
-
css.Layer.CoreNative,
|
|
48
|
-
css.Layer.CoreShorthand,
|
|
49
|
-
css.Layer.CoreNativeShorthand
|
|
50
|
-
].includes(rule.layer) && originalCssProperty) {
|
|
51
|
-
if (!originalCssProperty.references?.find((x)=>x.name === 'Master Reference')) {
|
|
52
|
-
originalCssProperty.references = [
|
|
53
|
-
...originalCssProperty?.references ?? [],
|
|
54
|
-
{
|
|
55
|
-
name: 'Master Reference',
|
|
56
|
-
url: `https://rc.css.master.co/docs/${fullKey}`
|
|
57
|
-
}
|
|
58
|
-
];
|
|
59
|
-
}
|
|
60
|
-
cssHoverInfo = getCssEntryMarkdownDescription.getCssEntryMarkdownDescription(originalCssProperty);
|
|
61
|
-
}
|
|
62
|
-
return cssHoverInfo;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
exports.doHover = doHover;
|
package/dist/providers/hover.mjs
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { MasterCSS, Layer } from '@master/css';
|
|
2
|
-
import { getCssEntryMarkdownDescription } from '../utils/get-css-entry-markdown-description.mjs';
|
|
3
|
-
import { css_beautify } from 'js-beautify/js/lib/beautify-css';
|
|
4
|
-
import { cssData } from 'vscode-css-languageservice/lib/umd/data/webCustomData';
|
|
5
|
-
import { CSSDataProvider } from 'vscode-css-languageservice/lib/umd/languageFacts/dataProvider';
|
|
6
|
-
|
|
7
|
-
function doHover(instance, range, config) {
|
|
8
|
-
const css = new MasterCSS(config);
|
|
9
|
-
css.add(instance);
|
|
10
|
-
const contents = [];
|
|
11
|
-
if (css.text) {
|
|
12
|
-
const cssPreview = getCssPreview(css.text);
|
|
13
|
-
if (cssPreview) {
|
|
14
|
-
contents.push(cssPreview);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
if (css.rules.length > 0) {
|
|
18
|
-
const cssHoverInfo = getCssHoverInfo(css.rules[0]);
|
|
19
|
-
if (cssHoverInfo) {
|
|
20
|
-
contents.push(cssHoverInfo);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return {
|
|
24
|
-
contents,
|
|
25
|
-
range: range
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function getCssPreview(renderText) {
|
|
29
|
-
return {
|
|
30
|
-
language: 'css',
|
|
31
|
-
value: css_beautify(renderText, {
|
|
32
|
-
newline_between_rules: true,
|
|
33
|
-
end_with_newline: true
|
|
34
|
-
})
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
function getCssHoverInfo(rule) {
|
|
38
|
-
const cssDataProvider = new CSSDataProvider(cssData);
|
|
39
|
-
const cssProperties = cssDataProvider.provideProperties();
|
|
40
|
-
let cssHoverInfo = null;
|
|
41
|
-
const fullKey = rule.id;
|
|
42
|
-
const originalCssProperty = cssProperties.find((x)=>x.name == fullKey);
|
|
43
|
-
if (rule?.layer && [
|
|
44
|
-
Layer.Core,
|
|
45
|
-
Layer.CoreNative,
|
|
46
|
-
Layer.CoreShorthand,
|
|
47
|
-
Layer.CoreNativeShorthand
|
|
48
|
-
].includes(rule.layer) && originalCssProperty) {
|
|
49
|
-
if (!originalCssProperty.references?.find((x)=>x.name === 'Master Reference')) {
|
|
50
|
-
originalCssProperty.references = [
|
|
51
|
-
...originalCssProperty?.references ?? [],
|
|
52
|
-
{
|
|
53
|
-
name: 'Master Reference',
|
|
54
|
-
url: `https://rc.css.master.co/docs/${fullKey}`
|
|
55
|
-
}
|
|
56
|
-
];
|
|
57
|
-
}
|
|
58
|
-
cssHoverInfo = getCssEntryMarkdownDescription(originalCssProperty);
|
|
59
|
-
}
|
|
60
|
-
return cssHoverInfo;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export { doHover };
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
function getCssEntryMarkdownDescription(entry) {
|
|
4
|
-
if (!entry?.description || entry?.description === '') {
|
|
5
|
-
return '';
|
|
6
|
-
}
|
|
7
|
-
let result = '';
|
|
8
|
-
if (entry.status) {
|
|
9
|
-
result += getEntryStatus(entry.status);
|
|
10
|
-
}
|
|
11
|
-
if (typeof entry.description === 'string') {
|
|
12
|
-
result += textToMarkedString(entry.description);
|
|
13
|
-
} else {
|
|
14
|
-
result += entry.description.kind === 'markdown' ? entry.description.value : textToMarkedString(entry.description.value);
|
|
15
|
-
}
|
|
16
|
-
const browserLabel = getBrowserLabel(entry.browsers);
|
|
17
|
-
if (browserLabel) {
|
|
18
|
-
result += '\n\n(' + textToMarkedString(browserLabel) + ')';
|
|
19
|
-
}
|
|
20
|
-
if ('syntax' in entry && entry.syntax) {
|
|
21
|
-
result += `\n\nSyntax: ${textToMarkedString(entry.syntax)}`;
|
|
22
|
-
}
|
|
23
|
-
if (entry.references && entry.references.length > 0) {
|
|
24
|
-
if (result.length > 0) {
|
|
25
|
-
result += '\n\n';
|
|
26
|
-
}
|
|
27
|
-
result += entry.references.map((r)=>{
|
|
28
|
-
return `[${r.name}](${r.url})`;
|
|
29
|
-
}).join(' | ');
|
|
30
|
-
}
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
const browserNames = {
|
|
34
|
-
E: 'Edge',
|
|
35
|
-
FF: 'Firefox',
|
|
36
|
-
S: 'Safari',
|
|
37
|
-
C: 'Chrome',
|
|
38
|
-
IE: 'IE',
|
|
39
|
-
O: 'Opera'
|
|
40
|
-
};
|
|
41
|
-
function getEntryStatus(status) {
|
|
42
|
-
switch(status){
|
|
43
|
-
case 'experimental':
|
|
44
|
-
return '⚠️ Property is experimental. Be cautious when using it.️\n\n';
|
|
45
|
-
case 'nonstandard':
|
|
46
|
-
return '🚨️ Property is nonstandard. Avoid using it.\n\n';
|
|
47
|
-
case 'obsolete':
|
|
48
|
-
return '🚨️️️ Property is obsolete. Avoid using it.\n\n';
|
|
49
|
-
default:
|
|
50
|
-
return '';
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function textToMarkedString(text) {
|
|
54
|
-
text = text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&') // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash
|
|
55
|
-
;
|
|
56
|
-
return text.replace(/</g, '<').replace(/>/g, '>');
|
|
57
|
-
}
|
|
58
|
-
function getBrowserLabel(browsers = []) {
|
|
59
|
-
if (browsers.length === 0) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
return browsers.map((b)=>{
|
|
63
|
-
let result = '';
|
|
64
|
-
const matches = b.match(/([A-Z]+)(\d+)?/) ?? '';
|
|
65
|
-
const name = matches[1];
|
|
66
|
-
const version = matches[2];
|
|
67
|
-
if (name in browserNames) {
|
|
68
|
-
result += browserNames[name];
|
|
69
|
-
}
|
|
70
|
-
if (version) {
|
|
71
|
-
result += ' ' + version;
|
|
72
|
-
}
|
|
73
|
-
return result;
|
|
74
|
-
}).join(', ');
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
exports.getCssEntryMarkdownDescription = getCssEntryMarkdownDescription;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function getCssEntryMarkdownDescription(entry: any): string;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
function getCssEntryMarkdownDescription(entry) {
|
|
2
|
-
if (!entry?.description || entry?.description === '') {
|
|
3
|
-
return '';
|
|
4
|
-
}
|
|
5
|
-
let result = '';
|
|
6
|
-
if (entry.status) {
|
|
7
|
-
result += getEntryStatus(entry.status);
|
|
8
|
-
}
|
|
9
|
-
if (typeof entry.description === 'string') {
|
|
10
|
-
result += textToMarkedString(entry.description);
|
|
11
|
-
} else {
|
|
12
|
-
result += entry.description.kind === 'markdown' ? entry.description.value : textToMarkedString(entry.description.value);
|
|
13
|
-
}
|
|
14
|
-
const browserLabel = getBrowserLabel(entry.browsers);
|
|
15
|
-
if (browserLabel) {
|
|
16
|
-
result += '\n\n(' + textToMarkedString(browserLabel) + ')';
|
|
17
|
-
}
|
|
18
|
-
if ('syntax' in entry && entry.syntax) {
|
|
19
|
-
result += `\n\nSyntax: ${textToMarkedString(entry.syntax)}`;
|
|
20
|
-
}
|
|
21
|
-
if (entry.references && entry.references.length > 0) {
|
|
22
|
-
if (result.length > 0) {
|
|
23
|
-
result += '\n\n';
|
|
24
|
-
}
|
|
25
|
-
result += entry.references.map((r)=>{
|
|
26
|
-
return `[${r.name}](${r.url})`;
|
|
27
|
-
}).join(' | ');
|
|
28
|
-
}
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
const browserNames = {
|
|
32
|
-
E: 'Edge',
|
|
33
|
-
FF: 'Firefox',
|
|
34
|
-
S: 'Safari',
|
|
35
|
-
C: 'Chrome',
|
|
36
|
-
IE: 'IE',
|
|
37
|
-
O: 'Opera'
|
|
38
|
-
};
|
|
39
|
-
function getEntryStatus(status) {
|
|
40
|
-
switch(status){
|
|
41
|
-
case 'experimental':
|
|
42
|
-
return '⚠️ Property is experimental. Be cautious when using it.️\n\n';
|
|
43
|
-
case 'nonstandard':
|
|
44
|
-
return '🚨️ Property is nonstandard. Avoid using it.\n\n';
|
|
45
|
-
case 'obsolete':
|
|
46
|
-
return '🚨️️️ Property is obsolete. Avoid using it.\n\n';
|
|
47
|
-
default:
|
|
48
|
-
return '';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function textToMarkedString(text) {
|
|
52
|
-
text = text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&') // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash
|
|
53
|
-
;
|
|
54
|
-
return text.replace(/</g, '<').replace(/>/g, '>');
|
|
55
|
-
}
|
|
56
|
-
function getBrowserLabel(browsers = []) {
|
|
57
|
-
if (browsers.length === 0) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
return browsers.map((b)=>{
|
|
61
|
-
let result = '';
|
|
62
|
-
const matches = b.match(/([A-Z]+)(\d+)?/) ?? '';
|
|
63
|
-
const name = matches[1];
|
|
64
|
-
const version = matches[2];
|
|
65
|
-
if (name in browserNames) {
|
|
66
|
-
result += browserNames[name];
|
|
67
|
-
}
|
|
68
|
-
if (version) {
|
|
69
|
-
result += ' ' + version;
|
|
70
|
-
}
|
|
71
|
-
return result;
|
|
72
|
-
}).join(', ');
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export { getCssEntryMarkdownDescription };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
function hexToRgb(hex) {
|
|
4
|
-
const aRgbHex = hex.replace('#', '').match(/.{1,2}/g);
|
|
5
|
-
return {
|
|
6
|
-
red: parseInt(aRgbHex?.[0] ?? '0', 16),
|
|
7
|
-
green: parseInt(aRgbHex?.[1] ?? '0', 16),
|
|
8
|
-
blue: parseInt(aRgbHex?.[2] ?? '0', 16),
|
|
9
|
-
alpha: parseInt(aRgbHex?.[3] ?? 'FF', 16)
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
exports.hexToRgb = hexToRgb;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
function hexToRgb(hex) {
|
|
2
|
-
const aRgbHex = hex.replace('#', '').match(/.{1,2}/g);
|
|
3
|
-
return {
|
|
4
|
-
red: parseInt(aRgbHex?.[0] ?? '0', 16),
|
|
5
|
-
green: parseInt(aRgbHex?.[1] ?? '0', 16),
|
|
6
|
-
blue: parseInt(aRgbHex?.[2] ?? '0', 16),
|
|
7
|
-
alpha: parseInt(aRgbHex?.[3] ?? 'FF', 16)
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { hexToRgb };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
function oklabToRgb([L, a, b]) {
|
|
4
|
-
let l = L + a * +0.3963377774 + b * +0.2158037573;
|
|
5
|
-
let m = L + a * -0.1055613458 + b * -0.0638541728;
|
|
6
|
-
let s = L + a * -0.0894841775 + b * -1.2914855480;
|
|
7
|
-
l = l ** 3;
|
|
8
|
-
m = m ** 3;
|
|
9
|
-
s = s ** 3;
|
|
10
|
-
let red = l * +4.0767416621 + m * -3.3077115913 + s * +0.2309699292;
|
|
11
|
-
let green = l * -1.2684380046 + m * +2.6097574011 + s * -0.3413193965;
|
|
12
|
-
let blue = l * -0.0041960863 + m * -0.7034186147 + s * +1.7076147010;
|
|
13
|
-
red = 255 * linearToGamma(red);
|
|
14
|
-
green = 255 * linearToGamma(green);
|
|
15
|
-
blue = 255 * linearToGamma(blue);
|
|
16
|
-
red = clamp(red, 0, 255);
|
|
17
|
-
green = clamp(green, 0, 255);
|
|
18
|
-
blue = clamp(blue, 0, 255);
|
|
19
|
-
red = Math.round(red);
|
|
20
|
-
green = Math.round(green);
|
|
21
|
-
blue = Math.round(blue);
|
|
22
|
-
return [
|
|
23
|
-
red,
|
|
24
|
-
green,
|
|
25
|
-
blue
|
|
26
|
-
];
|
|
27
|
-
}
|
|
28
|
-
function clamp(value, min, max) {
|
|
29
|
-
return Math.max(Math.min(value, max), min);
|
|
30
|
-
}
|
|
31
|
-
const linearToGamma = (c)=>c >= 0.0031308 ? 1.055 * Math.pow(c, 1 / 2.4) - 0.055 : 12.92 * c;
|
|
32
|
-
|
|
33
|
-
exports.oklabToRgb = oklabToRgb;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function oklabToRgb([L, a, b]: any): any;
|