@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.
Files changed (72) hide show
  1. package/README.md +57 -6
  2. package/dist/common.d.ts +1 -9
  3. package/dist/common.mjs +1 -48
  4. package/dist/core.d.ts +11 -10
  5. package/dist/core.mjs +70 -200
  6. package/dist/features/inspect-syntax.mjs +18 -32
  7. package/dist/features/render-semantic-tokens.d.ts +5 -0
  8. package/dist/features/render-semantic-tokens.mjs +10 -0
  9. package/dist/features/render-syntax-colors.mjs +23 -8
  10. package/dist/features/suggest-syntax.d.ts +2 -1
  11. package/dist/features/suggest-syntax.mjs +2 -2
  12. package/dist/index.mjs +1 -1
  13. package/dist/settings.d.ts +4 -7
  14. package/dist/settings.mjs +12 -41
  15. package/dist/utils/beautify-css.mjs +1 -1
  16. package/dist/utils/completion-index.d.ts +38 -0
  17. package/dist/utils/completion-index.mjs +268 -0
  18. package/dist/utils/convert-color-token.d.ts +1 -1
  19. package/dist/utils/convert-color-token.mjs +1 -1
  20. package/dist/utils/create-css-markdown-documentation.d.ts +5 -0
  21. package/dist/utils/create-css-markdown-documentation.mjs +15 -0
  22. package/dist/utils/get-class-completion-items.d.ts +4 -0
  23. package/dist/utils/get-class-completion-items.mjs +20 -0
  24. package/dist/utils/get-color-completion-items.d.ts +1 -1
  25. package/dist/utils/get-color-completion-items.mjs +6 -9
  26. package/dist/utils/get-pseudo-class-completion-items.d.ts +3 -2
  27. package/dist/utils/get-pseudo-class-completion-items.mjs +45 -42
  28. package/dist/utils/get-pseudo-element-completion-items.d.ts +3 -2
  29. package/dist/utils/get-pseudo-element-completion-items.mjs +17 -28
  30. package/dist/utils/get-query-completion-items.d.ts +3 -2
  31. package/dist/utils/get-query-completion-items.mjs +19 -32
  32. package/dist/utils/get-utility-info.d.ts +2 -5
  33. package/dist/utils/get-utility-info.mjs +4 -16
  34. package/dist/utils/get-value-completion-items.d.ts +3 -2
  35. package/dist/utils/get-value-completion-items.mjs +145 -123
  36. package/dist/utils/query-syntax-completions.d.ts +3 -2
  37. package/dist/utils/query-syntax-completions.mjs +25 -44
  38. package/package.json +1 -1
  39. package/dist/common.cjs +0 -57
  40. package/dist/core.cjs +0 -246
  41. package/dist/features/edit-syntax-colors.cjs +0 -19
  42. package/dist/features/inspect-syntax.cjs +0 -70
  43. package/dist/features/render-syntax-colors.cjs +0 -89
  44. package/dist/features/suggest-syntax.cjs +0 -20
  45. package/dist/index.cjs +0 -29
  46. package/dist/settings.cjs +0 -84
  47. package/dist/utils/beautify-css.cjs +0 -13
  48. package/dist/utils/convert-color-token.cjs +0 -60
  49. package/dist/utils/create-doc.cjs +0 -26
  50. package/dist/utils/css-data-provider.cjs +0 -9
  51. package/dist/utils/css-data-provider.d.ts +0 -3
  52. package/dist/utils/css-data-provider.mjs +0 -7
  53. package/dist/utils/find-matching-brackets.cjs +0 -29
  54. package/dist/utils/find-matching-brackets.d.ts +0 -1
  55. package/dist/utils/find-matching-brackets.mjs +0 -27
  56. package/dist/utils/get-color-completion-items.cjs +0 -29
  57. package/dist/utils/get-css-data-documentation.cjs +0 -88
  58. package/dist/utils/get-css-data-documentation.d.ts +0 -5
  59. package/dist/utils/get-css-data-documentation.mjs +0 -86
  60. package/dist/utils/get-main-completion-items.cjs +0 -106
  61. package/dist/utils/get-main-completion-items.d.ts +0 -3
  62. package/dist/utils/get-main-completion-items.mjs +0 -104
  63. package/dist/utils/get-position.cjs +0 -12
  64. package/dist/utils/get-pseudo-class-completion-items.cjs +0 -67
  65. package/dist/utils/get-pseudo-element-completion-items.cjs +0 -56
  66. package/dist/utils/get-query-completion-items.cjs +0 -92
  67. package/dist/utils/get-range.cjs +0 -23
  68. package/dist/utils/get-utility-info.cjs +0 -33
  69. package/dist/utils/get-value-completion-items.cjs +0 -183
  70. package/dist/utils/query-syntax-completions.cjs +0 -115
  71. package/dist/utils/regex.cjs +0 -5
  72. 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;
@@ -1,5 +0,0 @@
1
- 'use strict';
2
-
3
- const instancePattern = /[^\s:]+:\w*\(?((?<!\\)["'`])((?:\\\1|(?:(?!\1))\S)*)((?<!\\)\1)\)?|[^\s"'`]+/g;
4
-
5
- exports.instancePattern = instancePattern;
@@ -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;