monaco-editor11 1.0.7 → 1.0.9

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 (237) hide show
  1. package/dist/assets/css.worker-C7FogG4G.js +93 -0
  2. package/dist/assets/editor.worker-iXcRX1Tq.js +26 -0
  3. package/dist/assets/html.worker-C8VxctEJ.js +470 -0
  4. package/dist/assets/json.worker-CMC9kgPL.js +58 -0
  5. package/dist/assets/ts.worker-CtTJ3hNN.js +67731 -0
  6. package/dist/index.d.ts +0 -6
  7. package/dist/monaco-editor11.es.js +49 -78
  8. package/dist/monaco-editor11.umd.js +1 -50
  9. package/dist/monaco.d.ts +8 -0
  10. package/dist/workers/common/initialize.js +16 -0
  11. package/dist/workers/common/workers.js +141 -0
  12. package/dist/workers/editor/common/abstractSyntaxTokenBackend.js +128 -0
  13. package/dist/workers/editor/common/abstractText.js +89 -0
  14. package/dist/workers/editor/common/ast.js +485 -0
  15. package/dist/workers/editor/common/autoIndent.js +390 -0
  16. package/dist/workers/editor/common/beforeEditPositionMapper.js +110 -0
  17. package/dist/workers/editor/common/bracketPairsImpl.js +717 -0
  18. package/dist/workers/editor/common/bracketPairsTree.js +343 -0
  19. package/dist/workers/editor/common/brackets.js +108 -0
  20. package/dist/workers/editor/common/characterClassifier.js +59 -0
  21. package/dist/workers/editor/common/characterPair.js +40 -0
  22. package/dist/workers/editor/common/colorizedBracketPairsDecorationProvider.js +97 -0
  23. package/dist/workers/editor/common/columnRange.js +35 -0
  24. package/dist/workers/editor/common/combineTextEditInfos.js +124 -0
  25. package/dist/workers/editor/common/common.js +20 -0
  26. package/dist/workers/editor/common/computeMovedLines.js +249 -0
  27. package/dist/workers/editor/common/concat23Trees.js +192 -0
  28. package/dist/workers/editor/common/contiguousMultilineTokens.js +32 -0
  29. package/dist/workers/editor/common/contiguousMultilineTokensBuilder.js +23 -0
  30. package/dist/workers/editor/common/contiguousTokensEditing.js +128 -0
  31. package/dist/workers/editor/common/contiguousTokensStore.js +207 -0
  32. package/dist/workers/editor/common/coordinatesConverter.js +51 -0
  33. package/dist/workers/editor/common/cursor.js +899 -0
  34. package/dist/workers/editor/common/cursorAtomicMoveOperations.js +145 -0
  35. package/dist/workers/editor/common/cursorCollection.js +194 -0
  36. package/dist/workers/editor/common/cursorColumnSelection.js +93 -0
  37. package/dist/workers/editor/common/cursorColumns.js +112 -0
  38. package/dist/workers/editor/common/cursorCommon.js +250 -0
  39. package/dist/workers/editor/common/cursorContext.js +15 -0
  40. package/dist/workers/editor/common/cursorDeleteOperations.js +231 -0
  41. package/dist/workers/editor/common/cursorMoveCommands.js +676 -0
  42. package/dist/workers/editor/common/cursorMoveOperations.js +290 -0
  43. package/dist/workers/editor/common/cursorTypeEditOperations.js +968 -0
  44. package/dist/workers/editor/common/cursorTypeOperations.js +173 -0
  45. package/dist/workers/editor/common/cursorUtils.js +75 -0
  46. package/dist/workers/editor/common/cursorWordOperations.js +720 -0
  47. package/dist/workers/editor/common/defaultDocumentColorsComputer.js +138 -0
  48. package/dist/workers/editor/common/defaultLinesDiffComputer.js +188 -0
  49. package/dist/workers/editor/common/diffAlgorithm.js +139 -0
  50. package/dist/workers/editor/common/diffEditor.js +38 -0
  51. package/dist/workers/editor/common/dynamicProgrammingDiffing.js +101 -0
  52. package/dist/workers/editor/common/edit.js +183 -0
  53. package/dist/workers/editor/common/editOperation.js +36 -0
  54. package/dist/workers/editor/common/editStack.js +363 -0
  55. package/dist/workers/editor/common/editorAction.js +26 -0
  56. package/dist/workers/editor/common/editorBaseApi.js +43 -0
  57. package/dist/workers/editor/common/editorColorRegistry.js +102 -0
  58. package/dist/workers/editor/common/editorCommon.js +13 -0
  59. package/dist/workers/editor/common/editorConfigurationSchema.js +338 -0
  60. package/dist/workers/editor/common/editorContextKeys.js +84 -0
  61. package/dist/workers/editor/common/editorFeatures.js +17 -0
  62. package/dist/workers/editor/common/editorOptions.js +3440 -0
  63. package/dist/workers/editor/common/editorTheme.js +23 -0
  64. package/dist/workers/editor/common/editorWebWorker.js +299 -0
  65. package/dist/workers/editor/common/editorWorker.js +9 -0
  66. package/dist/workers/editor/common/editorWorkerHost.js +15 -0
  67. package/dist/workers/editor/common/editorZoom.js +26 -0
  68. package/dist/workers/editor/common/electricCharacter.js +55 -0
  69. package/dist/workers/editor/common/encodedTokenAttributes.js +79 -0
  70. package/dist/workers/editor/common/enterAction.js +53 -0
  71. package/dist/workers/editor/common/eolCounter.js +44 -0
  72. package/dist/workers/editor/common/findSectionHeaders.js +128 -0
  73. package/dist/workers/editor/common/fixBrackets.js +67 -0
  74. package/dist/workers/editor/common/fixedArray.js +70 -0
  75. package/dist/workers/editor/common/fontInfo.js +172 -0
  76. package/dist/workers/editor/common/fontInfoFromSettings.js +29 -0
  77. package/dist/workers/editor/common/getIconClasses.js +106 -0
  78. package/dist/workers/editor/common/getPositionOffsetTransformerFromTextModel.js +24 -0
  79. package/dist/workers/editor/common/glyphLanesModel.js +61 -0
  80. package/dist/workers/editor/common/guidesTextModelPart.js +405 -0
  81. package/dist/workers/editor/common/heuristicSequenceOptimizations.js +374 -0
  82. package/dist/workers/editor/common/indentRules.js +63 -0
  83. package/dist/workers/editor/common/indentation.js +39 -0
  84. package/dist/workers/editor/common/indentationGuesser.js +178 -0
  85. package/dist/workers/editor/common/indentationLineProcessor.js +193 -0
  86. package/dist/workers/editor/common/inlineDecorations.js +26 -0
  87. package/dist/workers/editor/common/inplaceReplaceSupport.js +87 -0
  88. package/dist/workers/editor/common/inputMode.js +22 -0
  89. package/dist/workers/editor/common/intervalTree.js +1002 -0
  90. package/dist/workers/editor/common/language.js +9 -0
  91. package/dist/workers/editor/common/languageBracketsConfiguration.js +133 -0
  92. package/dist/workers/editor/common/languageConfiguration.js +138 -0
  93. package/dist/workers/editor/common/languageConfigurationRegistry.js +361 -0
  94. package/dist/workers/editor/common/languageFeatureDebounce.js +137 -0
  95. package/dist/workers/editor/common/languageFeatureRegistry.js +180 -0
  96. package/dist/workers/editor/common/languageFeatures.js +9 -0
  97. package/dist/workers/editor/common/languageFeaturesService.js +47 -0
  98. package/dist/workers/editor/common/languageSelector.js +112 -0
  99. package/dist/workers/editor/common/languageService.js +92 -0
  100. package/dist/workers/editor/common/languages.js +522 -0
  101. package/dist/workers/editor/common/languagesAssociations.js +193 -0
  102. package/dist/workers/editor/common/languagesRegistry.js +237 -0
  103. package/dist/workers/editor/common/legacyLinesDiffComputer.js +468 -0
  104. package/dist/workers/editor/common/length.js +129 -0
  105. package/dist/workers/editor/common/lineDecorations.js +208 -0
  106. package/dist/workers/editor/common/lineEdit.js +75 -0
  107. package/dist/workers/editor/common/lineHeights.js +370 -0
  108. package/dist/workers/editor/common/linePart.js +25 -0
  109. package/dist/workers/editor/common/lineRange.js +312 -0
  110. package/dist/workers/editor/common/lineSequence.js +36 -0
  111. package/dist/workers/editor/common/lineTokens.js +405 -0
  112. package/dist/workers/editor/common/linesDiffComputer.js +29 -0
  113. package/dist/workers/editor/common/linesDiffComputers.js +13 -0
  114. package/dist/workers/editor/common/linesLayout.js +765 -0
  115. package/dist/workers/editor/common/linesSliceCharSequence.js +205 -0
  116. package/dist/workers/editor/common/linkComputer.js +269 -0
  117. package/dist/workers/editor/common/markerDecorations.js +9 -0
  118. package/dist/workers/editor/common/markerDecorationsService.js +248 -0
  119. package/dist/workers/editor/common/minimapTokensColorTracker.js +58 -0
  120. package/dist/workers/editor/common/mirrorTextModel.js +117 -0
  121. package/dist/workers/editor/common/model.js +9 -0
  122. package/dist/workers/editor/common/modelLineProjection.js +350 -0
  123. package/dist/workers/editor/common/modelLineProjectionData.js +297 -0
  124. package/dist/workers/editor/common/modelService.js +413 -0
  125. package/dist/workers/editor/common/modesRegistry.js +75 -0
  126. package/dist/workers/editor/common/monospaceLineBreaksComputer.js +473 -0
  127. package/dist/workers/editor/common/myersDiffAlgorithm.js +159 -0
  128. package/dist/workers/editor/common/nodeReader.js +127 -0
  129. package/dist/workers/editor/common/nullTokenize.js +29 -0
  130. package/dist/workers/editor/common/offsetRange.js +225 -0
  131. package/dist/workers/editor/common/onEnter.js +109 -0
  132. package/dist/workers/editor/common/oneCursor.js +117 -0
  133. package/dist/workers/editor/common/overviewZoneManager.js +176 -0
  134. package/dist/workers/editor/common/parser.js +121 -0
  135. package/dist/workers/editor/common/pieceTreeBase.js +1473 -0
  136. package/dist/workers/editor/common/pieceTreeTextBuffer.js +461 -0
  137. package/dist/workers/editor/common/pieceTreeTextBufferBuilder.js +140 -0
  138. package/dist/workers/editor/common/point.js +50 -0
  139. package/dist/workers/editor/common/position.js +142 -0
  140. package/dist/workers/editor/common/positionToOffset.js +17 -0
  141. package/dist/workers/editor/common/positionToOffsetImpl.js +98 -0
  142. package/dist/workers/editor/common/prefixSumComputer.js +226 -0
  143. package/dist/workers/editor/common/range.js +421 -0
  144. package/dist/workers/editor/common/rangeMapping.js +229 -0
  145. package/dist/workers/editor/common/rangeSingleLine.js +17 -0
  146. package/dist/workers/editor/common/rbTreeBase.js +362 -0
  147. package/dist/workers/editor/common/rect.js +163 -0
  148. package/dist/workers/editor/common/replaceCommand.js +158 -0
  149. package/dist/workers/editor/common/resolverService.js +5 -0
  150. package/dist/workers/editor/common/rgba.js +35 -0
  151. package/dist/workers/editor/common/richEditBrackets.js +356 -0
  152. package/dist/workers/editor/common/selection.js +145 -0
  153. package/dist/workers/editor/common/semanticTokensDto.js +82 -0
  154. package/dist/workers/editor/common/semanticTokensProviderStyling.js +263 -0
  155. package/dist/workers/editor/common/semanticTokensStyling.js +9 -0
  156. package/dist/workers/editor/common/semanticTokensStylingService.js +47 -0
  157. package/dist/workers/editor/common/shiftCommand.js +241 -0
  158. package/dist/workers/editor/common/smallImmutableSet.js +108 -0
  159. package/dist/workers/editor/common/sparseMultilineTokens.js +548 -0
  160. package/dist/workers/editor/common/sparseTokensStore.js +210 -0
  161. package/dist/workers/editor/common/standaloneEnums.js +1017 -0
  162. package/dist/workers/editor/common/standaloneStrings.js +42 -0
  163. package/dist/workers/editor/common/stringBuilder.js +122 -0
  164. package/dist/workers/editor/common/stringEdit.js +165 -0
  165. package/dist/workers/editor/common/supports.js +58 -0
  166. package/dist/workers/editor/common/surroundSelectionCommand.js +44 -0
  167. package/dist/workers/editor/common/textChange.js +248 -0
  168. package/dist/workers/editor/common/textEdit.js +269 -0
  169. package/dist/workers/editor/common/textLength.js +87 -0
  170. package/dist/workers/editor/common/textModel.js +2031 -0
  171. package/dist/workers/editor/common/textModelBracketPairs.js +45 -0
  172. package/dist/workers/editor/common/textModelDefaults.js +18 -0
  173. package/dist/workers/editor/common/textModelEditSource.js +166 -0
  174. package/dist/workers/editor/common/textModelEvents.js +216 -0
  175. package/dist/workers/editor/common/textModelGuides.js +40 -0
  176. package/dist/workers/editor/common/textModelPart.js +23 -0
  177. package/dist/workers/editor/common/textModelSearch.js +455 -0
  178. package/dist/workers/editor/common/textModelStringEdit.js +11 -0
  179. package/dist/workers/editor/common/textModelSync.impl.js +307 -0
  180. package/dist/workers/editor/common/textModelText.js +26 -0
  181. package/dist/workers/editor/common/textModelTokens.js +436 -0
  182. package/dist/workers/editor/common/textResourceConfiguration.js +6 -0
  183. package/dist/workers/editor/common/textToHtmlTokenizer.js +139 -0
  184. package/dist/workers/editor/common/tokenStore.js +407 -0
  185. package/dist/workers/editor/common/tokenWithTextArray.js +73 -0
  186. package/dist/workers/editor/common/tokenization.js +287 -0
  187. package/dist/workers/editor/common/tokenizationRegistry.js +123 -0
  188. package/dist/workers/editor/common/tokenizationTextModelPart.js +275 -0
  189. package/dist/workers/editor/common/tokenizer.js +301 -0
  190. package/dist/workers/editor/common/tokenizerSyntaxTokenBackend.js +261 -0
  191. package/dist/workers/editor/common/treeSitterLibraryService.js +9 -0
  192. package/dist/workers/editor/common/treeSitterSyntaxTokenBackend.js +167 -0
  193. package/dist/workers/editor/common/treeSitterThemeService.js +9 -0
  194. package/dist/workers/editor/common/treeSitterTokenizationImpl.js +713 -0
  195. package/dist/workers/editor/common/treeSitterTree.js +395 -0
  196. package/dist/workers/editor/common/treeViewsDnd.js +24 -0
  197. package/dist/workers/editor/common/treeViewsDndService.js +12 -0
  198. package/dist/workers/editor/common/trimTrailingWhitespaceCommand.js +98 -0
  199. package/dist/workers/editor/common/unicodeTextModelHighlighter.js +188 -0
  200. package/dist/workers/editor/common/utils.js +62 -0
  201. package/dist/workers/editor/common/viewContext.js +22 -0
  202. package/dist/workers/editor/common/viewEventHandler.js +186 -0
  203. package/dist/workers/editor/common/viewEvents.js +180 -0
  204. package/dist/workers/editor/common/viewLayout.js +368 -0
  205. package/dist/workers/editor/common/viewLineRenderer.js +948 -0
  206. package/dist/workers/editor/common/viewLinesViewportData.js +30 -0
  207. package/dist/workers/editor/common/viewModel.js +98 -0
  208. package/dist/workers/editor/common/viewModelDecoration.js +55 -0
  209. package/dist/workers/editor/common/viewModelDecorations.js +132 -0
  210. package/dist/workers/editor/common/viewModelEventDispatcher.js +398 -0
  211. package/dist/workers/editor/common/viewModelImpl.js +1163 -0
  212. package/dist/workers/editor/common/viewModelLines.js +938 -0
  213. package/dist/workers/editor/common/wordCharacterClassifier.js +87 -0
  214. package/dist/workers/editor/common/wordHelper.js +127 -0
  215. package/dist/workers/editor/editor.worker.js +11 -0
  216. package/dist/workers/language/css.worker.js +8 -0
  217. package/dist/workers/language/cssMode.js +198 -0
  218. package/dist/workers/language/cssWorker.js +183 -0
  219. package/dist/workers/language/html.worker.js +8 -0
  220. package/dist/workers/language/htmlMode.js +213 -0
  221. package/dist/workers/language/htmlWorker.js +126 -0
  222. package/dist/workers/language/json.worker.js +8 -0
  223. package/dist/workers/language/jsonMode.js +224 -0
  224. package/dist/workers/language/jsonWorker.js +187 -0
  225. package/dist/workers/language/languageFeatures.js +1009 -0
  226. package/dist/workers/language/lib.index.js +103 -0
  227. package/dist/workers/language/lib.js +1107 -0
  228. package/dist/workers/language/lspLanguageFeatures.js +716 -0
  229. package/dist/workers/language/monaco.contribution.js +144 -0
  230. package/dist/workers/language/tokenization.js +189 -0
  231. package/dist/workers/language/ts.worker.js +14 -0
  232. package/dist/workers/language/tsMode.js +212 -0
  233. package/dist/workers/language/tsWorker.js +352 -0
  234. package/dist/workers/language/typescriptServices.js +210154 -0
  235. package/dist/workers/language/typescriptServicesMetadata.js +3 -0
  236. package/dist/workers/language/workerManager.js +65 -0
  237. package/package.json +3 -2
@@ -0,0 +1,128 @@
1
+ import { LineTokens } from './lineTokens.js';
2
+
3
+ /*---------------------------------------------------------------------------------------------
4
+ * Copyright (c) Microsoft Corporation. All rights reserved.
5
+ * Licensed under the MIT License. See License.txt in the project root for license information.
6
+ *--------------------------------------------------------------------------------------------*/
7
+ const EMPTY_LINE_TOKENS = (new Uint32Array(0)).buffer;
8
+ class ContiguousTokensEditing {
9
+ static deleteBeginning(lineTokens, toChIndex) {
10
+ if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {
11
+ return lineTokens;
12
+ }
13
+ return ContiguousTokensEditing.delete(lineTokens, 0, toChIndex);
14
+ }
15
+ static deleteEnding(lineTokens, fromChIndex) {
16
+ if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {
17
+ return lineTokens;
18
+ }
19
+ const tokens = toUint32Array(lineTokens);
20
+ const lineTextLength = tokens[tokens.length - 2];
21
+ return ContiguousTokensEditing.delete(lineTokens, fromChIndex, lineTextLength);
22
+ }
23
+ static delete(lineTokens, fromChIndex, toChIndex) {
24
+ if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS || fromChIndex === toChIndex) {
25
+ return lineTokens;
26
+ }
27
+ const tokens = toUint32Array(lineTokens);
28
+ const tokensCount = (tokens.length >>> 1);
29
+ // special case: deleting everything
30
+ if (fromChIndex === 0 && tokens[tokens.length - 2] === toChIndex) {
31
+ return EMPTY_LINE_TOKENS;
32
+ }
33
+ const fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, fromChIndex);
34
+ const fromTokenStartOffset = (fromTokenIndex > 0 ? tokens[(fromTokenIndex - 1) << 1] : 0);
35
+ const fromTokenEndOffset = tokens[fromTokenIndex << 1];
36
+ if (toChIndex < fromTokenEndOffset) {
37
+ // the delete range is inside a single token
38
+ const delta = (toChIndex - fromChIndex);
39
+ for (let i = fromTokenIndex; i < tokensCount; i++) {
40
+ tokens[i << 1] -= delta;
41
+ }
42
+ return lineTokens;
43
+ }
44
+ let dest;
45
+ let lastEnd;
46
+ if (fromTokenStartOffset !== fromChIndex) {
47
+ tokens[fromTokenIndex << 1] = fromChIndex;
48
+ dest = ((fromTokenIndex + 1) << 1);
49
+ lastEnd = fromChIndex;
50
+ }
51
+ else {
52
+ dest = (fromTokenIndex << 1);
53
+ lastEnd = fromTokenStartOffset;
54
+ }
55
+ const delta = (toChIndex - fromChIndex);
56
+ for (let tokenIndex = fromTokenIndex + 1; tokenIndex < tokensCount; tokenIndex++) {
57
+ const tokenEndOffset = tokens[tokenIndex << 1] - delta;
58
+ if (tokenEndOffset > lastEnd) {
59
+ tokens[dest++] = tokenEndOffset;
60
+ tokens[dest++] = tokens[(tokenIndex << 1) + 1];
61
+ lastEnd = tokenEndOffset;
62
+ }
63
+ }
64
+ if (dest === tokens.length) {
65
+ // nothing to trim
66
+ return lineTokens;
67
+ }
68
+ const tmp = new Uint32Array(dest);
69
+ tmp.set(tokens.subarray(0, dest), 0);
70
+ return tmp.buffer;
71
+ }
72
+ static append(lineTokens, _otherTokens) {
73
+ if (_otherTokens === EMPTY_LINE_TOKENS) {
74
+ return lineTokens;
75
+ }
76
+ if (lineTokens === EMPTY_LINE_TOKENS) {
77
+ return _otherTokens;
78
+ }
79
+ if (lineTokens === null) {
80
+ return lineTokens;
81
+ }
82
+ if (_otherTokens === null) {
83
+ // cannot determine combined line length...
84
+ return null;
85
+ }
86
+ const myTokens = toUint32Array(lineTokens);
87
+ const otherTokens = toUint32Array(_otherTokens);
88
+ const otherTokensCount = (otherTokens.length >>> 1);
89
+ const result = new Uint32Array(myTokens.length + otherTokens.length);
90
+ result.set(myTokens, 0);
91
+ let dest = myTokens.length;
92
+ const delta = myTokens[myTokens.length - 2];
93
+ for (let i = 0; i < otherTokensCount; i++) {
94
+ result[dest++] = otherTokens[(i << 1)] + delta;
95
+ result[dest++] = otherTokens[(i << 1) + 1];
96
+ }
97
+ return result.buffer;
98
+ }
99
+ static insert(lineTokens, chIndex, textLength) {
100
+ if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {
101
+ // nothing to do
102
+ return lineTokens;
103
+ }
104
+ const tokens = toUint32Array(lineTokens);
105
+ const tokensCount = (tokens.length >>> 1);
106
+ let fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, chIndex);
107
+ if (fromTokenIndex > 0) {
108
+ const fromTokenStartOffset = tokens[(fromTokenIndex - 1) << 1];
109
+ if (fromTokenStartOffset === chIndex) {
110
+ fromTokenIndex--;
111
+ }
112
+ }
113
+ for (let tokenIndex = fromTokenIndex; tokenIndex < tokensCount; tokenIndex++) {
114
+ tokens[tokenIndex << 1] += textLength;
115
+ }
116
+ return lineTokens;
117
+ }
118
+ }
119
+ function toUint32Array(arr) {
120
+ if (arr instanceof Uint32Array) {
121
+ return arr;
122
+ }
123
+ else {
124
+ return new Uint32Array(arr);
125
+ }
126
+ }
127
+
128
+ export { ContiguousTokensEditing, EMPTY_LINE_TOKENS, toUint32Array };
@@ -0,0 +1,207 @@
1
+ import { arrayInsert } from '../../../base/common/arrays.js';
2
+ import { Position } from '../core/position.js';
3
+ import { EMPTY_LINE_TOKENS, toUint32Array, ContiguousTokensEditing } from './contiguousTokensEditing.js';
4
+ import { LineTokens } from './lineTokens.js';
5
+ import { TokenMetadata } from '../encodedTokenAttributes.js';
6
+
7
+ /*---------------------------------------------------------------------------------------------
8
+ * Copyright (c) Microsoft Corporation. All rights reserved.
9
+ * Licensed under the MIT License. See License.txt in the project root for license information.
10
+ *--------------------------------------------------------------------------------------------*/
11
+ /**
12
+ * Represents contiguous tokens in a text model.
13
+ */
14
+ class ContiguousTokensStore {
15
+ constructor(languageIdCodec) {
16
+ this._lineTokens = [];
17
+ this._len = 0;
18
+ this._languageIdCodec = languageIdCodec;
19
+ }
20
+ flush() {
21
+ this._lineTokens = [];
22
+ this._len = 0;
23
+ }
24
+ get hasTokens() {
25
+ return this._lineTokens.length > 0;
26
+ }
27
+ getTokens(topLevelLanguageId, lineIndex, lineText) {
28
+ let rawLineTokens = null;
29
+ if (lineIndex < this._len) {
30
+ rawLineTokens = this._lineTokens[lineIndex];
31
+ }
32
+ if (rawLineTokens !== null && rawLineTokens !== EMPTY_LINE_TOKENS) {
33
+ return new LineTokens(toUint32Array(rawLineTokens), lineText, this._languageIdCodec);
34
+ }
35
+ const lineTokens = new Uint32Array(2);
36
+ lineTokens[0] = lineText.length;
37
+ lineTokens[1] = getDefaultMetadata(this._languageIdCodec.encodeLanguageId(topLevelLanguageId));
38
+ return new LineTokens(lineTokens, lineText, this._languageIdCodec);
39
+ }
40
+ static _massageTokens(topLevelLanguageId, lineTextLength, _tokens) {
41
+ const tokens = _tokens ? toUint32Array(_tokens) : null;
42
+ if (lineTextLength === 0) {
43
+ let hasDifferentLanguageId = false;
44
+ if (tokens && tokens.length > 1) {
45
+ hasDifferentLanguageId = (TokenMetadata.getLanguageId(tokens[1]) !== topLevelLanguageId);
46
+ }
47
+ if (!hasDifferentLanguageId) {
48
+ return EMPTY_LINE_TOKENS;
49
+ }
50
+ }
51
+ if (!tokens || tokens.length === 0) {
52
+ const tokens = new Uint32Array(2);
53
+ tokens[0] = lineTextLength;
54
+ tokens[1] = getDefaultMetadata(topLevelLanguageId);
55
+ return tokens.buffer;
56
+ }
57
+ // Ensure the last token covers the end of the text
58
+ tokens[tokens.length - 2] = lineTextLength;
59
+ if (tokens.byteOffset === 0 && tokens.byteLength === tokens.buffer.byteLength) {
60
+ // Store directly the ArrayBuffer pointer to save an object
61
+ return tokens.buffer;
62
+ }
63
+ return tokens;
64
+ }
65
+ _ensureLine(lineIndex) {
66
+ while (lineIndex >= this._len) {
67
+ this._lineTokens[this._len] = null;
68
+ this._len++;
69
+ }
70
+ }
71
+ _deleteLines(start, deleteCount) {
72
+ if (deleteCount === 0) {
73
+ return;
74
+ }
75
+ if (start + deleteCount > this._len) {
76
+ deleteCount = this._len - start;
77
+ }
78
+ this._lineTokens.splice(start, deleteCount);
79
+ this._len -= deleteCount;
80
+ }
81
+ _insertLines(insertIndex, insertCount) {
82
+ if (insertCount === 0) {
83
+ return;
84
+ }
85
+ const lineTokens = [];
86
+ for (let i = 0; i < insertCount; i++) {
87
+ lineTokens[i] = null;
88
+ }
89
+ this._lineTokens = arrayInsert(this._lineTokens, insertIndex, lineTokens);
90
+ this._len += insertCount;
91
+ }
92
+ setTokens(topLevelLanguageId, lineIndex, lineTextLength, _tokens, checkEquality) {
93
+ const tokens = ContiguousTokensStore._massageTokens(this._languageIdCodec.encodeLanguageId(topLevelLanguageId), lineTextLength, _tokens);
94
+ this._ensureLine(lineIndex);
95
+ const oldTokens = this._lineTokens[lineIndex];
96
+ this._lineTokens[lineIndex] = tokens;
97
+ if (checkEquality) {
98
+ return !ContiguousTokensStore._equals(oldTokens, tokens);
99
+ }
100
+ return false;
101
+ }
102
+ static _equals(_a, _b) {
103
+ if (!_a || !_b) {
104
+ return !_a && !_b;
105
+ }
106
+ const a = toUint32Array(_a);
107
+ const b = toUint32Array(_b);
108
+ if (a.length !== b.length) {
109
+ return false;
110
+ }
111
+ for (let i = 0, len = a.length; i < len; i++) {
112
+ if (a[i] !== b[i]) {
113
+ return false;
114
+ }
115
+ }
116
+ return true;
117
+ }
118
+ //#region Editing
119
+ acceptEdit(range, eolCount, firstLineLength) {
120
+ this._acceptDeleteRange(range);
121
+ this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength);
122
+ }
123
+ _acceptDeleteRange(range) {
124
+ const firstLineIndex = range.startLineNumber - 1;
125
+ if (firstLineIndex >= this._len) {
126
+ return;
127
+ }
128
+ if (range.startLineNumber === range.endLineNumber) {
129
+ if (range.startColumn === range.endColumn) {
130
+ // Nothing to delete
131
+ return;
132
+ }
133
+ this._lineTokens[firstLineIndex] = ContiguousTokensEditing.delete(this._lineTokens[firstLineIndex], range.startColumn - 1, range.endColumn - 1);
134
+ return;
135
+ }
136
+ this._lineTokens[firstLineIndex] = ContiguousTokensEditing.deleteEnding(this._lineTokens[firstLineIndex], range.startColumn - 1);
137
+ const lastLineIndex = range.endLineNumber - 1;
138
+ let lastLineTokens = null;
139
+ if (lastLineIndex < this._len) {
140
+ lastLineTokens = ContiguousTokensEditing.deleteBeginning(this._lineTokens[lastLineIndex], range.endColumn - 1);
141
+ }
142
+ // Take remaining text on last line and append it to remaining text on first line
143
+ this._lineTokens[firstLineIndex] = ContiguousTokensEditing.append(this._lineTokens[firstLineIndex], lastLineTokens);
144
+ // Delete middle lines
145
+ this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);
146
+ }
147
+ _acceptInsertText(position, eolCount, firstLineLength) {
148
+ if (eolCount === 0 && firstLineLength === 0) {
149
+ // Nothing to insert
150
+ return;
151
+ }
152
+ const lineIndex = position.lineNumber - 1;
153
+ if (lineIndex >= this._len) {
154
+ return;
155
+ }
156
+ if (eolCount === 0) {
157
+ // Inserting text on one line
158
+ this._lineTokens[lineIndex] = ContiguousTokensEditing.insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);
159
+ return;
160
+ }
161
+ this._lineTokens[lineIndex] = ContiguousTokensEditing.deleteEnding(this._lineTokens[lineIndex], position.column - 1);
162
+ this._lineTokens[lineIndex] = ContiguousTokensEditing.insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);
163
+ this._insertLines(position.lineNumber, eolCount);
164
+ }
165
+ //#endregion
166
+ setMultilineTokens(tokens, textModel) {
167
+ if (tokens.length === 0) {
168
+ return { changes: [] };
169
+ }
170
+ const ranges = [];
171
+ for (let i = 0, len = tokens.length; i < len; i++) {
172
+ const element = tokens[i];
173
+ let minChangedLineNumber = 0;
174
+ let maxChangedLineNumber = 0;
175
+ let hasChange = false;
176
+ for (let lineNumber = element.startLineNumber; lineNumber <= element.endLineNumber; lineNumber++) {
177
+ if (hasChange) {
178
+ this.setTokens(textModel.getLanguageId(), lineNumber - 1, textModel.getLineLength(lineNumber), element.getLineTokens(lineNumber), false);
179
+ maxChangedLineNumber = lineNumber;
180
+ }
181
+ else {
182
+ const lineHasChange = this.setTokens(textModel.getLanguageId(), lineNumber - 1, textModel.getLineLength(lineNumber), element.getLineTokens(lineNumber), true);
183
+ if (lineHasChange) {
184
+ hasChange = true;
185
+ minChangedLineNumber = lineNumber;
186
+ maxChangedLineNumber = lineNumber;
187
+ }
188
+ }
189
+ }
190
+ if (hasChange) {
191
+ ranges.push({ fromLineNumber: minChangedLineNumber, toLineNumber: maxChangedLineNumber, });
192
+ }
193
+ }
194
+ return { changes: ranges };
195
+ }
196
+ }
197
+ function getDefaultMetadata(topLevelLanguageId) {
198
+ return ((topLevelLanguageId << 0 /* MetadataConsts.LANGUAGEID_OFFSET */)
199
+ | (0 /* StandardTokenType.Other */ << 8 /* MetadataConsts.TOKEN_TYPE_OFFSET */)
200
+ | (0 /* FontStyle.None */ << 11 /* MetadataConsts.FONT_STYLE_OFFSET */)
201
+ | (1 /* ColorId.DefaultForeground */ << 15 /* MetadataConsts.FOREGROUND_OFFSET */)
202
+ | (2 /* ColorId.DefaultBackground */ << 24 /* MetadataConsts.BACKGROUND_OFFSET */)
203
+ // If there is no grammar, we just take a guess and try to match brackets.
204
+ | (1024 /* MetadataConsts.BALANCED_BRACKETS_MASK */)) >>> 0;
205
+ }
206
+
207
+ export { ContiguousTokensStore };
@@ -0,0 +1,51 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ class IdentityCoordinatesConverter {
6
+ constructor(model) {
7
+ this._model = model;
8
+ }
9
+ _validPosition(pos) {
10
+ return this._model.validatePosition(pos);
11
+ }
12
+ _validRange(range) {
13
+ return this._model.validateRange(range);
14
+ }
15
+ // View -> Model conversion and related methods
16
+ convertViewPositionToModelPosition(viewPosition) {
17
+ return this._validPosition(viewPosition);
18
+ }
19
+ convertViewRangeToModelRange(viewRange) {
20
+ return this._validRange(viewRange);
21
+ }
22
+ validateViewPosition(_viewPosition, expectedModelPosition) {
23
+ return this._validPosition(expectedModelPosition);
24
+ }
25
+ validateViewRange(_viewRange, expectedModelRange) {
26
+ return this._validRange(expectedModelRange);
27
+ }
28
+ // Model -> View conversion and related methods
29
+ convertModelPositionToViewPosition(modelPosition) {
30
+ return this._validPosition(modelPosition);
31
+ }
32
+ convertModelRangeToViewRange(modelRange) {
33
+ return this._validRange(modelRange);
34
+ }
35
+ modelPositionIsVisible(modelPosition) {
36
+ const lineCount = this._model.getLineCount();
37
+ if (modelPosition.lineNumber < 1 || modelPosition.lineNumber > lineCount) {
38
+ // invalid arguments
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+ getModelLineViewLineCount(modelLineNumber) {
44
+ return 1;
45
+ }
46
+ getViewLineNumberOfModelPosition(modelLineNumber, modelColumn) {
47
+ return modelLineNumber;
48
+ }
49
+ }
50
+
51
+ export { IdentityCoordinatesConverter };