@macroforge/svelte-language-server 0.1.3

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 (256) hide show
  1. package/README.md +331 -0
  2. package/bin/server.js +5 -0
  3. package/dist/src/importPackage.d.ts +16 -0
  4. package/dist/src/importPackage.js +76 -0
  5. package/dist/src/importPackage.js.map +1 -0
  6. package/dist/src/index.d.ts +3 -0
  7. package/dist/src/index.js +23 -0
  8. package/dist/src/index.js.map +1 -0
  9. package/dist/src/lib/DiagnosticsManager.d.ts +20 -0
  10. package/dist/src/lib/DiagnosticsManager.js +71 -0
  11. package/dist/src/lib/DiagnosticsManager.js.map +1 -0
  12. package/dist/src/lib/FallbackWatcher.d.ts +15 -0
  13. package/dist/src/lib/FallbackWatcher.js +66 -0
  14. package/dist/src/lib/FallbackWatcher.js.map +1 -0
  15. package/dist/src/lib/documentHighlight/wordHighlight.d.ts +3 -0
  16. package/dist/src/lib/documentHighlight/wordHighlight.js +62 -0
  17. package/dist/src/lib/documentHighlight/wordHighlight.js.map +1 -0
  18. package/dist/src/lib/documents/Document.d.ts +63 -0
  19. package/dist/src/lib/documents/Document.js +138 -0
  20. package/dist/src/lib/documents/Document.js.map +1 -0
  21. package/dist/src/lib/documents/DocumentBase.d.ts +65 -0
  22. package/dist/src/lib/documents/DocumentBase.js +69 -0
  23. package/dist/src/lib/documents/DocumentBase.js.map +1 -0
  24. package/dist/src/lib/documents/DocumentManager.d.ts +28 -0
  25. package/dist/src/lib/documents/DocumentManager.js +122 -0
  26. package/dist/src/lib/documents/DocumentManager.js.map +1 -0
  27. package/dist/src/lib/documents/DocumentMapper.d.ts +88 -0
  28. package/dist/src/lib/documents/DocumentMapper.js +258 -0
  29. package/dist/src/lib/documents/DocumentMapper.js.map +1 -0
  30. package/dist/src/lib/documents/configLoader.d.ts +80 -0
  31. package/dist/src/lib/documents/configLoader.js +265 -0
  32. package/dist/src/lib/documents/configLoader.js.map +1 -0
  33. package/dist/src/lib/documents/fileCollection.d.ts +41 -0
  34. package/dist/src/lib/documents/fileCollection.js +87 -0
  35. package/dist/src/lib/documents/fileCollection.js.map +1 -0
  36. package/dist/src/lib/documents/index.d.ts +5 -0
  37. package/dist/src/lib/documents/index.js +22 -0
  38. package/dist/src/lib/documents/index.js.map +1 -0
  39. package/dist/src/lib/documents/parseHtml.d.ts +13 -0
  40. package/dist/src/lib/documents/parseHtml.js +160 -0
  41. package/dist/src/lib/documents/parseHtml.js.map +1 -0
  42. package/dist/src/lib/documents/utils.d.ts +105 -0
  43. package/dist/src/lib/documents/utils.js +410 -0
  44. package/dist/src/lib/documents/utils.js.map +1 -0
  45. package/dist/src/lib/foldingRange/indentFolding.d.ts +26 -0
  46. package/dist/src/lib/foldingRange/indentFolding.js +142 -0
  47. package/dist/src/lib/foldingRange/indentFolding.js.map +1 -0
  48. package/dist/src/lib/semanticToken/semanticTokenLegend.d.ts +33 -0
  49. package/dist/src/lib/semanticToken/semanticTokenLegend.js +37 -0
  50. package/dist/src/lib/semanticToken/semanticTokenLegend.js.map +1 -0
  51. package/dist/src/logger.d.ts +9 -0
  52. package/dist/src/logger.js +28 -0
  53. package/dist/src/logger.js.map +1 -0
  54. package/dist/src/ls-config.d.ts +326 -0
  55. package/dist/src/ls-config.js +386 -0
  56. package/dist/src/ls-config.js.map +1 -0
  57. package/dist/src/plugins/PluginHost.d.ts +68 -0
  58. package/dist/src/plugins/PluginHost.js +447 -0
  59. package/dist/src/plugins/PluginHost.js.map +1 -0
  60. package/dist/src/plugins/css/CSSDocument.d.ts +46 -0
  61. package/dist/src/plugins/css/CSSDocument.js +78 -0
  62. package/dist/src/plugins/css/CSSDocument.js.map +1 -0
  63. package/dist/src/plugins/css/CSSPlugin.d.ts +35 -0
  64. package/dist/src/plugins/css/CSSPlugin.js +407 -0
  65. package/dist/src/plugins/css/CSSPlugin.js.map +1 -0
  66. package/dist/src/plugins/css/FileSystemProvider.d.ts +10 -0
  67. package/dist/src/plugins/css/FileSystemProvider.js +75 -0
  68. package/dist/src/plugins/css/FileSystemProvider.js.map +1 -0
  69. package/dist/src/plugins/css/StyleAttributeDocument.d.ts +41 -0
  70. package/dist/src/plugins/css/StyleAttributeDocument.js +65 -0
  71. package/dist/src/plugins/css/StyleAttributeDocument.js.map +1 -0
  72. package/dist/src/plugins/css/features/getIdClassCompletion.d.ts +19 -0
  73. package/dist/src/plugins/css/features/getIdClassCompletion.js +56 -0
  74. package/dist/src/plugins/css/features/getIdClassCompletion.js.map +1 -0
  75. package/dist/src/plugins/css/features/svelte-selectors.d.ts +2 -0
  76. package/dist/src/plugins/css/features/svelte-selectors.js +18 -0
  77. package/dist/src/plugins/css/features/svelte-selectors.js.map +1 -0
  78. package/dist/src/plugins/css/global-vars.d.ts +16 -0
  79. package/dist/src/plugins/css/global-vars.js +82 -0
  80. package/dist/src/plugins/css/global-vars.js.map +1 -0
  81. package/dist/src/plugins/css/service.d.ts +5 -0
  82. package/dist/src/plugins/css/service.js +66 -0
  83. package/dist/src/plugins/css/service.js.map +1 -0
  84. package/dist/src/plugins/documentContext.d.ts +3 -0
  85. package/dist/src/plugins/documentContext.js +36 -0
  86. package/dist/src/plugins/documentContext.js.map +1 -0
  87. package/dist/src/plugins/html/HTMLPlugin.d.ts +36 -0
  88. package/dist/src/plugins/html/HTMLPlugin.js +363 -0
  89. package/dist/src/plugins/html/HTMLPlugin.js.map +1 -0
  90. package/dist/src/plugins/html/dataProvider.d.ts +1 -0
  91. package/dist/src/plugins/html/dataProvider.js +481 -0
  92. package/dist/src/plugins/html/dataProvider.js.map +1 -0
  93. package/dist/src/plugins/index.d.ts +7 -0
  94. package/dist/src/plugins/index.js +24 -0
  95. package/dist/src/plugins/index.js.map +1 -0
  96. package/dist/src/plugins/interfaces.d.ts +132 -0
  97. package/dist/src/plugins/interfaces.js +3 -0
  98. package/dist/src/plugins/interfaces.js.map +1 -0
  99. package/dist/src/plugins/svelte/SvelteDocument.d.ts +98 -0
  100. package/dist/src/plugins/svelte/SvelteDocument.js +318 -0
  101. package/dist/src/plugins/svelte/SvelteDocument.js.map +1 -0
  102. package/dist/src/plugins/svelte/SveltePlugin.d.ts +24 -0
  103. package/dist/src/plugins/svelte/SveltePlugin.js +306 -0
  104. package/dist/src/plugins/svelte/SveltePlugin.js.map +1 -0
  105. package/dist/src/plugins/svelte/features/SvelteTags.d.ts +28 -0
  106. package/dist/src/plugins/svelte/features/SvelteTags.js +136 -0
  107. package/dist/src/plugins/svelte/features/SvelteTags.js.map +1 -0
  108. package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.d.ts +11 -0
  109. package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js +140 -0
  110. package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js.map +1 -0
  111. package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.d.ts +9 -0
  112. package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js +140 -0
  113. package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js.map +1 -0
  114. package/dist/src/plugins/svelte/features/getCodeActions/index.d.ts +4 -0
  115. package/dist/src/plugins/svelte/features/getCodeActions/index.js +19 -0
  116. package/dist/src/plugins/svelte/features/getCodeActions/index.js.map +1 -0
  117. package/dist/src/plugins/svelte/features/getCompletions.d.ts +4 -0
  118. package/dist/src/plugins/svelte/features/getCompletions.js +184 -0
  119. package/dist/src/plugins/svelte/features/getCompletions.js.map +1 -0
  120. package/dist/src/plugins/svelte/features/getDiagnostics.d.ts +9 -0
  121. package/dist/src/plugins/svelte/features/getDiagnostics.js +284 -0
  122. package/dist/src/plugins/svelte/features/getDiagnostics.js.map +1 -0
  123. package/dist/src/plugins/svelte/features/getHoverInfo.d.ts +7 -0
  124. package/dist/src/plugins/svelte/features/getHoverInfo.js +93 -0
  125. package/dist/src/plugins/svelte/features/getHoverInfo.js.map +1 -0
  126. package/dist/src/plugins/svelte/features/getModifierData.d.ts +7 -0
  127. package/dist/src/plugins/svelte/features/getModifierData.js +56 -0
  128. package/dist/src/plugins/svelte/features/getModifierData.js.map +1 -0
  129. package/dist/src/plugins/svelte/features/getSelectionRanges.d.ts +3 -0
  130. package/dist/src/plugins/svelte/features/getSelectionRanges.js +46 -0
  131. package/dist/src/plugins/svelte/features/getSelectionRanges.js.map +1 -0
  132. package/dist/src/plugins/svelte/features/utils.d.ts +5 -0
  133. package/dist/src/plugins/svelte/features/utils.js +18 -0
  134. package/dist/src/plugins/svelte/features/utils.js.map +1 -0
  135. package/dist/src/plugins/typescript/ComponentInfoProvider.d.ts +27 -0
  136. package/dist/src/plugins/typescript/ComponentInfoProvider.js +116 -0
  137. package/dist/src/plugins/typescript/ComponentInfoProvider.js.map +1 -0
  138. package/dist/src/plugins/typescript/DocumentMapper.d.ts +10 -0
  139. package/dist/src/plugins/typescript/DocumentMapper.js +25 -0
  140. package/dist/src/plugins/typescript/DocumentMapper.js.map +1 -0
  141. package/dist/src/plugins/typescript/DocumentSnapshot.d.ts +173 -0
  142. package/dist/src/plugins/typescript/DocumentSnapshot.js +623 -0
  143. package/dist/src/plugins/typescript/DocumentSnapshot.js.map +1 -0
  144. package/dist/src/plugins/typescript/LSAndTSDocResolver.d.ts +100 -0
  145. package/dist/src/plugins/typescript/LSAndTSDocResolver.js +301 -0
  146. package/dist/src/plugins/typescript/LSAndTSDocResolver.js.map +1 -0
  147. package/dist/src/plugins/typescript/SnapshotManager.d.ts +59 -0
  148. package/dist/src/plugins/typescript/SnapshotManager.js +238 -0
  149. package/dist/src/plugins/typescript/SnapshotManager.js.map +1 -0
  150. package/dist/src/plugins/typescript/TypeScriptPlugin.d.ts +65 -0
  151. package/dist/src/plugins/typescript/TypeScriptPlugin.js +332 -0
  152. package/dist/src/plugins/typescript/TypeScriptPlugin.js.map +1 -0
  153. package/dist/src/plugins/typescript/features/CallHierarchyProvider.d.ts +24 -0
  154. package/dist/src/plugins/typescript/features/CallHierarchyProvider.js +325 -0
  155. package/dist/src/plugins/typescript/features/CallHierarchyProvider.js.map +1 -0
  156. package/dist/src/plugins/typescript/features/CodeActionsProvider.d.ts +72 -0
  157. package/dist/src/plugins/typescript/features/CodeActionsProvider.js +1030 -0
  158. package/dist/src/plugins/typescript/features/CodeActionsProvider.js.map +1 -0
  159. package/dist/src/plugins/typescript/features/CodeLensProvider.d.ts +28 -0
  160. package/dist/src/plugins/typescript/features/CodeLensProvider.js +205 -0
  161. package/dist/src/plugins/typescript/features/CodeLensProvider.js.map +1 -0
  162. package/dist/src/plugins/typescript/features/CompletionProvider.d.ts +57 -0
  163. package/dist/src/plugins/typescript/features/CompletionProvider.js +791 -0
  164. package/dist/src/plugins/typescript/features/CompletionProvider.js.map +1 -0
  165. package/dist/src/plugins/typescript/features/DiagnosticsProvider.d.ts +36 -0
  166. package/dist/src/plugins/typescript/features/DiagnosticsProvider.js +497 -0
  167. package/dist/src/plugins/typescript/features/DiagnosticsProvider.js.map +1 -0
  168. package/dist/src/plugins/typescript/features/DocumentHighlightProvider.d.ts +17 -0
  169. package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js +211 -0
  170. package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js.map +1 -0
  171. package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.d.ts +9 -0
  172. package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js +66 -0
  173. package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js.map +1 -0
  174. package/dist/src/plugins/typescript/features/FindFileReferencesProvider.d.ts +9 -0
  175. package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js +38 -0
  176. package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js.map +1 -0
  177. package/dist/src/plugins/typescript/features/FindReferencesProvider.d.ts +20 -0
  178. package/dist/src/plugins/typescript/features/FindReferencesProvider.js +149 -0
  179. package/dist/src/plugins/typescript/features/FindReferencesProvider.js.map +1 -0
  180. package/dist/src/plugins/typescript/features/FoldingRangeProvider.d.ts +28 -0
  181. package/dist/src/plugins/typescript/features/FoldingRangeProvider.js +247 -0
  182. package/dist/src/plugins/typescript/features/FoldingRangeProvider.js.map +1 -0
  183. package/dist/src/plugins/typescript/features/HoverProvider.d.ts +11 -0
  184. package/dist/src/plugins/typescript/features/HoverProvider.js +75 -0
  185. package/dist/src/plugins/typescript/features/HoverProvider.js.map +1 -0
  186. package/dist/src/plugins/typescript/features/ImplementationProvider.d.ts +9 -0
  187. package/dist/src/plugins/typescript/features/ImplementationProvider.js +47 -0
  188. package/dist/src/plugins/typescript/features/ImplementationProvider.js.map +1 -0
  189. package/dist/src/plugins/typescript/features/InlayHintProvider.d.ts +22 -0
  190. package/dist/src/plugins/typescript/features/InlayHintProvider.js +225 -0
  191. package/dist/src/plugins/typescript/features/InlayHintProvider.js.map +1 -0
  192. package/dist/src/plugins/typescript/features/RenameProvider.d.ts +53 -0
  193. package/dist/src/plugins/typescript/features/RenameProvider.js +423 -0
  194. package/dist/src/plugins/typescript/features/RenameProvider.js.map +1 -0
  195. package/dist/src/plugins/typescript/features/SelectionRangeProvider.d.ts +18 -0
  196. package/dist/src/plugins/typescript/features/SelectionRangeProvider.js +62 -0
  197. package/dist/src/plugins/typescript/features/SelectionRangeProvider.js.map +1 -0
  198. package/dist/src/plugins/typescript/features/SemanticTokensProvider.d.ts +15 -0
  199. package/dist/src/plugins/typescript/features/SemanticTokensProvider.js +116 -0
  200. package/dist/src/plugins/typescript/features/SemanticTokensProvider.js.map +1 -0
  201. package/dist/src/plugins/typescript/features/SignatureHelpProvider.d.ts +22 -0
  202. package/dist/src/plugins/typescript/features/SignatureHelpProvider.js +110 -0
  203. package/dist/src/plugins/typescript/features/SignatureHelpProvider.js.map +1 -0
  204. package/dist/src/plugins/typescript/features/TypeDefinitionProvider.d.ts +9 -0
  205. package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js +35 -0
  206. package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js.map +1 -0
  207. package/dist/src/plugins/typescript/features/UpdateImportsProvider.d.ts +11 -0
  208. package/dist/src/plugins/typescript/features/UpdateImportsProvider.js +109 -0
  209. package/dist/src/plugins/typescript/features/UpdateImportsProvider.js.map +1 -0
  210. package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.d.ts +25 -0
  211. package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js +176 -0
  212. package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js.map +1 -0
  213. package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.d.ts +13 -0
  214. package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js +58 -0
  215. package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js.map +1 -0
  216. package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.d.ts +4 -0
  217. package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js +57 -0
  218. package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js.map +1 -0
  219. package/dist/src/plugins/typescript/features/utils.d.ts +81 -0
  220. package/dist/src/plugins/typescript/features/utils.js +331 -0
  221. package/dist/src/plugins/typescript/features/utils.js.map +1 -0
  222. package/dist/src/plugins/typescript/macroforgeAugmenter.d.ts +23 -0
  223. package/dist/src/plugins/typescript/macroforgeAugmenter.js +41 -0
  224. package/dist/src/plugins/typescript/macroforgeAugmenter.js.map +1 -0
  225. package/dist/src/plugins/typescript/module-loader.d.ts +28 -0
  226. package/dist/src/plugins/typescript/module-loader.js +254 -0
  227. package/dist/src/plugins/typescript/module-loader.js.map +1 -0
  228. package/dist/src/plugins/typescript/previewer.d.ts +7 -0
  229. package/dist/src/plugins/typescript/previewer.js +120 -0
  230. package/dist/src/plugins/typescript/previewer.js.map +1 -0
  231. package/dist/src/plugins/typescript/service.d.ts +105 -0
  232. package/dist/src/plugins/typescript/service.js +1073 -0
  233. package/dist/src/plugins/typescript/service.js.map +1 -0
  234. package/dist/src/plugins/typescript/serviceCache.d.ts +90 -0
  235. package/dist/src/plugins/typescript/serviceCache.js +50 -0
  236. package/dist/src/plugins/typescript/serviceCache.js.map +1 -0
  237. package/dist/src/plugins/typescript/svelte-ast-utils.d.ts +77 -0
  238. package/dist/src/plugins/typescript/svelte-ast-utils.js +100 -0
  239. package/dist/src/plugins/typescript/svelte-ast-utils.js.map +1 -0
  240. package/dist/src/plugins/typescript/svelte-sys.d.ts +9 -0
  241. package/dist/src/plugins/typescript/svelte-sys.js +79 -0
  242. package/dist/src/plugins/typescript/svelte-sys.js.map +1 -0
  243. package/dist/src/plugins/typescript/utils.d.ts +48 -0
  244. package/dist/src/plugins/typescript/utils.js +334 -0
  245. package/dist/src/plugins/typescript/utils.js.map +1 -0
  246. package/dist/src/server.d.ts +19 -0
  247. package/dist/src/server.js +434 -0
  248. package/dist/src/server.js.map +1 -0
  249. package/dist/src/svelte-check.d.ts +65 -0
  250. package/dist/src/svelte-check.js +288 -0
  251. package/dist/src/svelte-check.js.map +1 -0
  252. package/dist/src/utils.d.ts +111 -0
  253. package/dist/src/utils.js +337 -0
  254. package/dist/src/utils.js.map +1 -0
  255. package/dist/tsconfig.tsbuildinfo +1 -0
  256. package/package.json +79 -0
@@ -0,0 +1,407 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CSSPlugin = void 0;
4
+ const emmet_helper_1 = require("@vscode/emmet-helper");
5
+ const vscode_languageserver_1 = require("vscode-languageserver");
6
+ const documents_1 = require("../../lib/documents");
7
+ const CSSDocument_1 = require("./CSSDocument");
8
+ const service_1 = require("./service");
9
+ const global_vars_1 = require("./global-vars");
10
+ const getIdClassCompletion_1 = require("./features/getIdClassCompletion");
11
+ const parseHtml_1 = require("../../lib/documents/parseHtml");
12
+ const StyleAttributeDocument_1 = require("./StyleAttributeDocument");
13
+ const documentContext_1 = require("../documentContext");
14
+ const vscode_languageserver_types_1 = require("vscode-languageserver-types");
15
+ const indentFolding_1 = require("../../lib/foldingRange/indentFolding");
16
+ const wordHighlight_1 = require("../../lib/documentHighlight/wordHighlight");
17
+ const utils_1 = require("../../utils");
18
+ // https://github.com/microsoft/vscode/blob/c6f507deeb99925e713271b1048f21dbaab4bd54/extensions/css/language-configuration.json#L34
19
+ const wordPattern = /(#?-?\d*\.\d\w*%?)|(::?[\w-]*(?=[^,{;]*[,{]))|(([@#.!])?[\w-?]+%?|[@#!.])/g;
20
+ class CSSPlugin {
21
+ constructor(docManager, configManager, workspaceFolders, cssLanguageServices) {
22
+ this.__name = 'css';
23
+ this.cssDocuments = new WeakMap();
24
+ this.triggerCharacters = ['.', ':', '-', '/'];
25
+ this.cssLanguageServices = cssLanguageServices;
26
+ this.workspaceFolders = workspaceFolders;
27
+ this.configManager = configManager;
28
+ this.updateConfigs();
29
+ const workspacePaths = workspaceFolders
30
+ .map((folder) => (0, utils_1.urlToPath)(folder.uri))
31
+ .filter(utils_1.isNotNullOrUndefined);
32
+ this.globalVars = new global_vars_1.GlobalVars(workspacePaths);
33
+ this.globalVars.watchFiles(this.configManager.get('css.globals'));
34
+ this.configManager.onChange((config) => {
35
+ this.globalVars.watchFiles(config.get('css.globals'));
36
+ this.updateConfigs();
37
+ });
38
+ const sync = (document) => {
39
+ this.cssDocuments.set(document, new CSSDocument_1.CSSDocument(document, this.cssLanguageServices));
40
+ };
41
+ docManager.on('documentChange', sync);
42
+ docManager.on('documentOpen', sync);
43
+ docManager.on('documentClose', (document) => this.cssDocuments.delete(document));
44
+ }
45
+ getSelectionRange(document, position) {
46
+ if (!this.featureEnabled('selectionRange') || !(0, documents_1.isInTag)(position, document.styleInfo)) {
47
+ return null;
48
+ }
49
+ const cssDocument = this.getCSSDoc(document);
50
+ const [range] = this.getLanguageService(extractLanguage(cssDocument)).getSelectionRanges(cssDocument, [cssDocument.getGeneratedPosition(position)], cssDocument.stylesheet);
51
+ if (!range) {
52
+ return null;
53
+ }
54
+ return (0, documents_1.mapSelectionRangeToParent)(cssDocument, range);
55
+ }
56
+ getDiagnostics(document) {
57
+ if (!this.featureEnabled('diagnostics')) {
58
+ return [];
59
+ }
60
+ const cssDocument = this.getCSSDoc(document);
61
+ const kind = extractLanguage(cssDocument);
62
+ if (shouldExcludeValidation(kind)) {
63
+ return [];
64
+ }
65
+ return this.getLanguageService(kind)
66
+ .doValidation(cssDocument, cssDocument.stylesheet)
67
+ .map((diagnostic) => ({ ...diagnostic, source: (0, service_1.getLanguage)(kind) }))
68
+ .map((diagnostic) => (0, documents_1.mapObjWithRangeToOriginal)(cssDocument, diagnostic));
69
+ }
70
+ doHover(document, position) {
71
+ if (!this.featureEnabled('hover')) {
72
+ return null;
73
+ }
74
+ const cssDocument = this.getCSSDoc(document);
75
+ if (shouldExcludeHover(cssDocument)) {
76
+ return null;
77
+ }
78
+ if (cssDocument.isInGenerated(position)) {
79
+ return this.doHoverInternal(cssDocument, position);
80
+ }
81
+ const attributeContext = (0, parseHtml_1.getAttributeContextAtPosition)(document, position);
82
+ if (attributeContext &&
83
+ this.inStyleAttributeWithoutInterpolation(attributeContext, document.getText())) {
84
+ const [start, end] = attributeContext.valueRange;
85
+ return this.doHoverInternal(new StyleAttributeDocument_1.StyleAttributeDocument(document, start, end, this.cssLanguageServices), position);
86
+ }
87
+ return null;
88
+ }
89
+ doHoverInternal(cssDocument, position) {
90
+ const hoverInfo = this.getLanguageService(extractLanguage(cssDocument)).doHover(cssDocument, cssDocument.getGeneratedPosition(position), cssDocument.stylesheet);
91
+ return hoverInfo ? (0, documents_1.mapHoverToParent)(cssDocument, hoverInfo) : hoverInfo;
92
+ }
93
+ async getCompletions(document, position, completionContext) {
94
+ const triggerCharacter = completionContext?.triggerCharacter;
95
+ const triggerKind = completionContext?.triggerKind;
96
+ const isCustomTriggerCharacter = triggerKind === vscode_languageserver_1.CompletionTriggerKind.TriggerCharacter;
97
+ if (isCustomTriggerCharacter &&
98
+ triggerCharacter &&
99
+ !this.triggerCharacters.includes(triggerCharacter)) {
100
+ return null;
101
+ }
102
+ if (!this.featureEnabled('completions')) {
103
+ return null;
104
+ }
105
+ const cssDocument = this.getCSSDoc(document);
106
+ if (cssDocument.isInGenerated(position)) {
107
+ return this.getCompletionsInternal(document, position, cssDocument);
108
+ }
109
+ const attributeContext = (0, parseHtml_1.getAttributeContextAtPosition)(document, position);
110
+ if (!attributeContext) {
111
+ return null;
112
+ }
113
+ if (this.inStyleAttributeWithoutInterpolation(attributeContext, document.getText())) {
114
+ const [start, end] = attributeContext.valueRange;
115
+ return this.getCompletionsInternal(document, position, new StyleAttributeDocument_1.StyleAttributeDocument(document, start, end, this.cssLanguageServices));
116
+ }
117
+ else {
118
+ return (0, getIdClassCompletion_1.getIdClassCompletion)(cssDocument, attributeContext);
119
+ }
120
+ }
121
+ inStyleAttributeWithoutInterpolation(attrContext, text) {
122
+ return (attrContext.name === 'style' &&
123
+ !!attrContext.valueRange &&
124
+ !text.substring(attrContext.valueRange[0], attrContext.valueRange[1]).includes('{'));
125
+ }
126
+ async getCompletionsInternal(document, position, cssDocument) {
127
+ if (isSASS(cssDocument)) {
128
+ // the css language service does not support sass, still we can use
129
+ // the emmet helper directly to at least get emmet completions
130
+ return ((0, emmet_helper_1.doComplete)(document, position, 'sass', this.configManager.getEmmetConfig()) ||
131
+ null);
132
+ }
133
+ const type = extractLanguage(cssDocument);
134
+ if (shouldExcludeCompletion(type)) {
135
+ return null;
136
+ }
137
+ const lang = this.getLanguageService(type);
138
+ let emmetResults = {
139
+ isIncomplete: false,
140
+ items: []
141
+ };
142
+ if (this.configManager.getConfig().css.completions.emmet &&
143
+ this.configManager.getEmmetConfig().showExpandedAbbreviation !== 'never') {
144
+ lang.setCompletionParticipants([
145
+ {
146
+ onCssProperty: (context) => {
147
+ if (context?.propertyName) {
148
+ emmetResults =
149
+ (0, emmet_helper_1.doComplete)(cssDocument, cssDocument.getGeneratedPosition(position), (0, service_1.getLanguage)(type), this.configManager.getEmmetConfig()) || emmetResults;
150
+ }
151
+ },
152
+ onCssPropertyValue: (context) => {
153
+ if (context?.propertyValue) {
154
+ emmetResults =
155
+ (0, emmet_helper_1.doComplete)(cssDocument, cssDocument.getGeneratedPosition(position), (0, service_1.getLanguage)(type), this.configManager.getEmmetConfig()) || emmetResults;
156
+ }
157
+ }
158
+ }
159
+ ]);
160
+ }
161
+ const results = await lang.doComplete2(cssDocument, cssDocument.getGeneratedPosition(position), cssDocument.stylesheet, (0, documentContext_1.getDocumentContext)(cssDocument.uri, this.workspaceFolders));
162
+ return vscode_languageserver_1.CompletionList.create(this.appendGlobalVars([...(results ? results.items : []), ...emmetResults.items].map((completionItem) => (0, documents_1.mapCompletionItemToOriginal)(cssDocument, completionItem))),
163
+ // Emmet completions change on every keystroke, so they are never complete
164
+ emmetResults.items.length > 0);
165
+ }
166
+ appendGlobalVars(items) {
167
+ // Finding one value with that item kind means we are in a value completion scenario
168
+ const value = items.find((item) => item.kind === vscode_languageserver_1.CompletionItemKind.Value);
169
+ if (!value) {
170
+ return items;
171
+ }
172
+ const additionalItems = this.globalVars
173
+ .getGlobalVars()
174
+ .map((globalVar) => ({
175
+ label: `var(${globalVar.name})`,
176
+ sortText: '-',
177
+ detail: `${globalVar.filename}\n\n${globalVar.name}: ${globalVar.value}`,
178
+ kind: vscode_languageserver_1.CompletionItemKind.Value
179
+ }));
180
+ return [...items, ...additionalItems];
181
+ }
182
+ getDocumentColors(document) {
183
+ if (!this.featureEnabled('documentColors')) {
184
+ return [];
185
+ }
186
+ const cssDocument = this.getCSSDoc(document);
187
+ if (shouldExcludeColor(cssDocument)) {
188
+ return [];
189
+ }
190
+ return this.getLanguageService(extractLanguage(cssDocument))
191
+ .findDocumentColors(cssDocument, cssDocument.stylesheet)
192
+ .map((colorInfo) => (0, documents_1.mapObjWithRangeToOriginal)(cssDocument, colorInfo));
193
+ }
194
+ getColorPresentations(document, range, color) {
195
+ if (!this.featureEnabled('colorPresentations')) {
196
+ return [];
197
+ }
198
+ const cssDocument = this.getCSSDoc(document);
199
+ if ((!cssDocument.isInGenerated(range.start) && !cssDocument.isInGenerated(range.end)) ||
200
+ shouldExcludeColor(cssDocument)) {
201
+ return [];
202
+ }
203
+ return this.getLanguageService(extractLanguage(cssDocument))
204
+ .getColorPresentations(cssDocument, cssDocument.stylesheet, color, (0, documents_1.mapRangeToGenerated)(cssDocument, range))
205
+ .map((colorPres) => (0, documents_1.mapColorPresentationToOriginal)(cssDocument, colorPres));
206
+ }
207
+ getDocumentSymbols(document) {
208
+ if (!this.featureEnabled('documentColors')) {
209
+ return [];
210
+ }
211
+ const cssDocument = this.getCSSDoc(document);
212
+ if (shouldExcludeDocumentSymbols(cssDocument)) {
213
+ return [];
214
+ }
215
+ return this.getLanguageService(extractLanguage(cssDocument))
216
+ .findDocumentSymbols(cssDocument, cssDocument.stylesheet)
217
+ .map((symbol) => {
218
+ if (!symbol.containerName) {
219
+ return {
220
+ ...symbol,
221
+ // TODO: this could contain other things, e.g. style.myclass
222
+ containerName: 'style'
223
+ };
224
+ }
225
+ return symbol;
226
+ })
227
+ .map((symbol) => (0, documents_1.mapSymbolInformationToOriginal)(cssDocument, symbol));
228
+ }
229
+ getFoldingRanges(document) {
230
+ if (!document.styleInfo) {
231
+ return [];
232
+ }
233
+ const cssDocument = this.getCSSDoc(document);
234
+ if (shouldUseIndentBasedFolding(cssDocument.languageId)) {
235
+ return this.nonSyntacticFolding(document, document.styleInfo);
236
+ }
237
+ return this.getLanguageService(extractLanguage(cssDocument))
238
+ .getFoldingRanges(cssDocument)
239
+ .map((range) => {
240
+ const originalRange = (0, documents_1.mapRangeToOriginal)(cssDocument, {
241
+ start: { line: range.startLine, character: range.startCharacter ?? 0 },
242
+ end: { line: range.endLine, character: range.endCharacter ?? 0 }
243
+ });
244
+ return {
245
+ startLine: originalRange.start.line,
246
+ endLine: originalRange.end.line,
247
+ kind: range.kind
248
+ };
249
+ });
250
+ }
251
+ nonSyntacticFolding(document, styleInfo) {
252
+ const ranges = (0, indentFolding_1.indentBasedFoldingRangeForTag)(document, styleInfo);
253
+ const startRegion = /^\s*(\/\/|\/\*\*?)\s*#?region\b/;
254
+ const endRegion = /^\s*(\/\/|\/\*\*?)\s*#?endregion\b/;
255
+ const lines = document
256
+ .getText()
257
+ .split(/\r?\n/)
258
+ .slice(styleInfo.startPos.line, styleInfo.endPos.line);
259
+ let start = -1;
260
+ for (let index = 0; index < lines.length; index++) {
261
+ const line = lines[index];
262
+ if (startRegion.test(line)) {
263
+ start = index;
264
+ }
265
+ else if (endRegion.test(line)) {
266
+ if (start >= 0) {
267
+ ranges.push({
268
+ startLine: start + styleInfo.startPos.line,
269
+ endLine: index + styleInfo.startPos.line,
270
+ kind: vscode_languageserver_types_1.FoldingRangeKind.Region
271
+ });
272
+ }
273
+ start = -1;
274
+ }
275
+ }
276
+ return ranges.sort((a, b) => a.startLine - b.startLine);
277
+ }
278
+ findDocumentHighlight(document, position) {
279
+ const cssDocument = this.getCSSDoc(document);
280
+ if (cssDocument.isInGenerated(position)) {
281
+ if (shouldExcludeDocumentHighlights(cssDocument)) {
282
+ return (0, wordHighlight_1.wordHighlightForTag)(document, position, document.styleInfo, wordPattern);
283
+ }
284
+ return this.findDocumentHighlightInternal(cssDocument, position);
285
+ }
286
+ const attributeContext = (0, parseHtml_1.getAttributeContextAtPosition)(document, position);
287
+ if (attributeContext &&
288
+ this.inStyleAttributeWithoutInterpolation(attributeContext, document.getText())) {
289
+ const [start, end] = attributeContext.valueRange;
290
+ return this.findDocumentHighlightInternal(new StyleAttributeDocument_1.StyleAttributeDocument(document, start, end, this.cssLanguageServices), position);
291
+ }
292
+ return null;
293
+ }
294
+ findDocumentHighlightInternal(cssDocument, position) {
295
+ const kind = extractLanguage(cssDocument);
296
+ const result = (0, service_1.getLanguageService)(this.cssLanguageServices, kind)
297
+ .findDocumentHighlights(cssDocument, cssDocument.getGeneratedPosition(position), cssDocument.stylesheet)
298
+ .map((highlight) => (0, documents_1.mapObjWithRangeToOriginal)(cssDocument, highlight));
299
+ return result;
300
+ }
301
+ getCSSDoc(document) {
302
+ let cssDoc = this.cssDocuments.get(document);
303
+ if (!cssDoc || cssDoc.version < document.version) {
304
+ cssDoc = new CSSDocument_1.CSSDocument(document, this.cssLanguageServices);
305
+ this.cssDocuments.set(document, cssDoc);
306
+ }
307
+ return cssDoc;
308
+ }
309
+ updateConfigs() {
310
+ this.getLanguageService('css')?.configure(this.configManager.getCssConfig());
311
+ this.getLanguageService('scss')?.configure(this.configManager.getScssConfig());
312
+ this.getLanguageService('less')?.configure(this.configManager.getLessConfig());
313
+ }
314
+ featureEnabled(feature) {
315
+ return (this.configManager.enabled('css.enable') &&
316
+ this.configManager.enabled(`css.${feature}.enable`));
317
+ }
318
+ getLanguageService(kind) {
319
+ return (0, service_1.getLanguageService)(this.cssLanguageServices, kind);
320
+ }
321
+ }
322
+ exports.CSSPlugin = CSSPlugin;
323
+ function shouldExcludeValidation(kind) {
324
+ switch (kind) {
325
+ case 'postcss':
326
+ case 'sass':
327
+ case 'stylus':
328
+ case 'styl':
329
+ return true;
330
+ default:
331
+ return false;
332
+ }
333
+ }
334
+ function shouldExcludeCompletion(kind) {
335
+ switch (kind) {
336
+ case 'stylus':
337
+ case 'styl':
338
+ return true;
339
+ default:
340
+ return false;
341
+ }
342
+ }
343
+ function shouldExcludeDocumentSymbols(document) {
344
+ switch (extractLanguage(document)) {
345
+ case 'sass':
346
+ case 'stylus':
347
+ case 'styl':
348
+ return true;
349
+ default:
350
+ return false;
351
+ }
352
+ }
353
+ function shouldExcludeHover(document) {
354
+ switch (extractLanguage(document)) {
355
+ case 'sass':
356
+ case 'stylus':
357
+ case 'styl':
358
+ return true;
359
+ default:
360
+ return false;
361
+ }
362
+ }
363
+ function shouldExcludeColor(document) {
364
+ switch (extractLanguage(document)) {
365
+ case 'sass':
366
+ case 'stylus':
367
+ case 'styl':
368
+ return true;
369
+ default:
370
+ return false;
371
+ }
372
+ }
373
+ function shouldUseIndentBasedFolding(kind) {
374
+ switch (kind) {
375
+ case 'postcss':
376
+ case 'sass':
377
+ case 'stylus':
378
+ case 'styl':
379
+ return true;
380
+ default:
381
+ return false;
382
+ }
383
+ }
384
+ function shouldExcludeDocumentHighlights(document) {
385
+ switch (extractLanguage(document)) {
386
+ case 'postcss':
387
+ case 'sass':
388
+ case 'stylus':
389
+ case 'styl':
390
+ return true;
391
+ default:
392
+ return false;
393
+ }
394
+ }
395
+ function isSASS(document) {
396
+ switch (extractLanguage(document)) {
397
+ case 'sass':
398
+ return true;
399
+ default:
400
+ return false;
401
+ }
402
+ }
403
+ function extractLanguage(document) {
404
+ const lang = document.languageId;
405
+ return lang.replace(/^text\//, '');
406
+ }
407
+ //# sourceMappingURL=CSSPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSSPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/css/CSSPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { FileStat, FileSystemProvider as CSSFileSystemProvider, FileType } from 'vscode-css-languageservice';
2
+ export declare class FileSystemProvider implements CSSFileSystemProvider {
3
+ private promisifyStat;
4
+ private promisifyReaddir;
5
+ constructor();
6
+ stat(uri: string): Promise<FileStat>;
7
+ private unknownStat;
8
+ private getFileType;
9
+ readDirectory(uri: string): Promise<Array<[string, FileType]>>;
10
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileSystemProvider = void 0;
4
+ const fs_1 = require("fs");
5
+ const util_1 = require("util");
6
+ const vscode_css_languageservice_1 = require("vscode-css-languageservice");
7
+ const utils_1 = require("../../utils");
8
+ class FileSystemProvider {
9
+ constructor() {
10
+ // TODO use fs/promises after we bumps the target nodejs versions
11
+ this.promisifyStat = (0, util_1.promisify)(fs_1.stat);
12
+ this.promisifyReaddir = (0, util_1.promisify)(fs_1.readdir);
13
+ this.readDirectory = this.readDirectory.bind(this);
14
+ this.stat = this.stat.bind(this);
15
+ }
16
+ async stat(uri) {
17
+ const path = (0, utils_1.urlToPath)(uri);
18
+ if (!path) {
19
+ return this.unknownStat();
20
+ }
21
+ let stat;
22
+ try {
23
+ stat = await this.promisifyStat(path);
24
+ }
25
+ catch (error) {
26
+ if (error != null &&
27
+ typeof error === 'object' &&
28
+ 'code' in error &&
29
+ error.code === 'ENOENT') {
30
+ return {
31
+ type: vscode_css_languageservice_1.FileType.Unknown,
32
+ ctime: -1,
33
+ mtime: -1,
34
+ size: -1
35
+ };
36
+ }
37
+ throw error;
38
+ }
39
+ return {
40
+ ctime: stat.ctimeMs,
41
+ mtime: stat.mtimeMs,
42
+ size: stat.size,
43
+ type: this.getFileType(stat)
44
+ };
45
+ }
46
+ unknownStat() {
47
+ return {
48
+ type: vscode_css_languageservice_1.FileType.Unknown,
49
+ ctime: -1,
50
+ mtime: -1,
51
+ size: -1
52
+ };
53
+ }
54
+ getFileType(stat) {
55
+ return stat.isDirectory()
56
+ ? vscode_css_languageservice_1.FileType.Directory
57
+ : stat.isFile()
58
+ ? vscode_css_languageservice_1.FileType.File
59
+ : stat.isSymbolicLink()
60
+ ? vscode_css_languageservice_1.FileType.SymbolicLink
61
+ : vscode_css_languageservice_1.FileType.Unknown;
62
+ }
63
+ async readDirectory(uri) {
64
+ const path = (0, utils_1.urlToPath)(uri);
65
+ if (!path) {
66
+ return [];
67
+ }
68
+ const files = await this.promisifyReaddir(path, {
69
+ withFileTypes: true
70
+ });
71
+ return files.map((file) => [file.name, this.getFileType(file)]);
72
+ }
73
+ }
74
+ exports.FileSystemProvider = FileSystemProvider;
75
+ //# sourceMappingURL=FileSystemProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystemProvider.js","sourceRoot":"","sources":["../../../../src/plugins/css/FileSystemProvider.ts"],"names":[],"mappings":";;;AAAA,2BAA0C;AAC1C,+BAAiC;AACjC,2EAIoC;AACpC,uCAAwC;AAQxC,MAAa,kBAAkB;IAK3B;QAJA,iEAAiE;QACzD,kBAAa,GAAG,IAAA,gBAAS,EAAC,SAAI,CAAC,CAAC;QAChC,qBAAgB,GAAG,IAAA,gBAAS,EAAC,YAAO,CAAC,CAAC;QAG1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QAClB,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAW,CAAC;QAChB,IAAI,CAAC;YACD,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IACI,KAAK,IAAI,IAAI;gBACb,OAAO,KAAK,KAAK,QAAQ;gBACzB,MAAM,IAAI,KAAK;gBACd,KAA0B,CAAC,IAAI,KAAK,QAAQ,EAC/C,CAAC;gBACC,OAAO;oBACH,IAAI,EAAE,qCAAQ,CAAC,OAAO;oBACtB,KAAK,EAAE,CAAC,CAAC;oBACT,KAAK,EAAE,CAAC,CAAC;oBACT,IAAI,EAAE,CAAC,CAAC;iBACX,CAAC;YACN,CAAC;YAED,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;SAC/B,CAAC;IACN,CAAC;IAEO,WAAW;QACf,OAAO;YACH,IAAI,EAAE,qCAAQ,CAAC,OAAO;YACtB,KAAK,EAAE,CAAC,CAAC;YACT,KAAK,EAAE,CAAC,CAAC;YACT,IAAI,EAAE,CAAC,CAAC;SACX,CAAC;IACN,CAAC;IAEO,WAAW,CAAC,IAAc;QAC9B,OAAO,IAAI,CAAC,WAAW,EAAE;YACrB,CAAC,CAAC,qCAAQ,CAAC,SAAS;YACpB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;gBACb,CAAC,CAAC,qCAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;oBACrB,CAAC,CAAC,qCAAQ,CAAC,YAAY;oBACvB,CAAC,CAAC,qCAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC3B,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;YAC5C,aAAa,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CACJ;AA9ED,gDA8EC"}
@@ -0,0 +1,41 @@
1
+ import { Stylesheet } from 'vscode-css-languageservice';
2
+ import { Position } from 'vscode-languageserver';
3
+ import { CSSLanguageServices } from './service';
4
+ import { Document, DocumentMapper, ReadableDocument } from '../../lib/documents';
5
+ export declare class StyleAttributeDocument extends ReadableDocument implements DocumentMapper {
6
+ private readonly parent;
7
+ private readonly attrStart;
8
+ private readonly attrEnd;
9
+ readonly version: number;
10
+ stylesheet: Stylesheet;
11
+ languageId: string;
12
+ constructor(parent: Document, attrStart: number, attrEnd: number, languageServices: CSSLanguageServices);
13
+ /**
14
+ * Get the fragment position relative to the parent
15
+ * @param pos Position in fragment
16
+ */
17
+ getOriginalPosition(pos: Position): Position;
18
+ /**
19
+ * Get the position relative to the start of the fragment
20
+ * @param pos Position in parent
21
+ */
22
+ getGeneratedPosition(pos: Position): Position;
23
+ /**
24
+ * Returns true if the given parent position is inside of this fragment
25
+ * @param pos Position in parent
26
+ */
27
+ isInGenerated(pos: Position): boolean;
28
+ /**
29
+ * Get the fragment text from the parent
30
+ */
31
+ getText(): string;
32
+ /**
33
+ * Returns the length of the fragment as calculated from the start and end position
34
+ */
35
+ getTextLength(): number;
36
+ /**
37
+ * Return the parent file path
38
+ */
39
+ getFilePath(): string | null;
40
+ getURL(): string;
41
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StyleAttributeDocument = void 0;
4
+ const service_1 = require("./service");
5
+ const documents_1 = require("../../lib/documents");
6
+ const PREFIX = '__ {';
7
+ const SUFFIX = '}';
8
+ class StyleAttributeDocument extends documents_1.ReadableDocument {
9
+ constructor(parent, attrStart, attrEnd, languageServices) {
10
+ super();
11
+ this.parent = parent;
12
+ this.attrStart = attrStart;
13
+ this.attrEnd = attrEnd;
14
+ this.version = this.parent.version;
15
+ this.languageId = 'css';
16
+ this.stylesheet = (0, service_1.getLanguageService)(languageServices).parseStylesheet(this);
17
+ }
18
+ /**
19
+ * Get the fragment position relative to the parent
20
+ * @param pos Position in fragment
21
+ */
22
+ getOriginalPosition(pos) {
23
+ const parentOffset = this.attrStart + this.offsetAt(pos) - PREFIX.length;
24
+ return this.parent.positionAt(parentOffset);
25
+ }
26
+ /**
27
+ * Get the position relative to the start of the fragment
28
+ * @param pos Position in parent
29
+ */
30
+ getGeneratedPosition(pos) {
31
+ const fragmentOffset = this.parent.offsetAt(pos) - this.attrStart + PREFIX.length;
32
+ return this.positionAt(fragmentOffset);
33
+ }
34
+ /**
35
+ * Returns true if the given parent position is inside of this fragment
36
+ * @param pos Position in parent
37
+ */
38
+ isInGenerated(pos) {
39
+ const offset = this.parent.offsetAt(pos);
40
+ return offset >= this.attrStart && offset <= this.attrEnd;
41
+ }
42
+ /**
43
+ * Get the fragment text from the parent
44
+ */
45
+ getText() {
46
+ return PREFIX + this.parent.getText().slice(this.attrStart, this.attrEnd) + SUFFIX;
47
+ }
48
+ /**
49
+ * Returns the length of the fragment as calculated from the start and end position
50
+ */
51
+ getTextLength() {
52
+ return PREFIX.length + this.attrEnd - this.attrStart + SUFFIX.length;
53
+ }
54
+ /**
55
+ * Return the parent file path
56
+ */
57
+ getFilePath() {
58
+ return this.parent.getFilePath();
59
+ }
60
+ getURL() {
61
+ return this.parent.getURL();
62
+ }
63
+ }
64
+ exports.StyleAttributeDocument = StyleAttributeDocument;
65
+ //# sourceMappingURL=StyleAttributeDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyleAttributeDocument.js","sourceRoot":"","sources":["../../../../src/plugins/css/StyleAttributeDocument.ts"],"names":[],"mappings":";;;AAEA,uCAAoE;AACpE,mDAAiF;AAEjF,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,MAAM,GAAG,GAAG,CAAC;AAEnB,MAAa,sBAAuB,SAAQ,4BAAgB;IAMxD,YACqB,MAAgB,EAChB,SAAiB,EACjB,OAAe,EAChC,gBAAqC;QAErC,KAAK,EAAE,CAAC;QALS,WAAM,GAAN,MAAM,CAAU;QAChB,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAQ;QAR3B,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAGhC,eAAU,GAAG,KAAK,CAAC;QAUtB,IAAI,CAAC,UAAU,GAAG,IAAA,4BAAkB,EAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,GAAa;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACzE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,GAAa;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAClF,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,GAAa;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,OAAO;QACH,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,WAAW;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACJ;AApED,wDAoEC"}
@@ -0,0 +1,19 @@
1
+ import { CompletionItem, CompletionList } from 'vscode-languageserver';
2
+ import { AttributeContext } from '../../../lib/documents/parseHtml';
3
+ import { CSSDocument } from '../CSSDocument';
4
+ export declare function getIdClassCompletion(cssDoc: CSSDocument, attributeContext: AttributeContext): CompletionList | null;
5
+ /**
6
+ * incomplete see
7
+ * https://github.com/microsoft/vscode-css-languageservice/blob/master/src/parser/cssNodes.ts#L14
8
+ * The enum is not exported. we have to update this whenever it changes
9
+ */
10
+ export declare enum NodeType {
11
+ ClassSelector = 14,
12
+ IdentifierSelector = 15
13
+ }
14
+ export type CSSNode = {
15
+ type: number;
16
+ children: CSSNode[] | undefined;
17
+ getText(): string;
18
+ };
19
+ export declare function collectSelectors(stylesheet: CSSNode, type: number): CompletionItem[];