monaco-editor11 1.0.9 → 1.1.1

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 (232) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/monaco-editor11.es.js +12 -16
  3. package/dist/monaco-editor11.umd.js +1 -1
  4. package/package.json +2 -2
  5. package/dist/monaco.d.ts +0 -8
  6. package/dist/workers/common/initialize.js +0 -16
  7. package/dist/workers/common/workers.js +0 -141
  8. package/dist/workers/editor/common/abstractSyntaxTokenBackend.js +0 -128
  9. package/dist/workers/editor/common/abstractText.js +0 -89
  10. package/dist/workers/editor/common/ast.js +0 -485
  11. package/dist/workers/editor/common/autoIndent.js +0 -390
  12. package/dist/workers/editor/common/beforeEditPositionMapper.js +0 -110
  13. package/dist/workers/editor/common/bracketPairsImpl.js +0 -717
  14. package/dist/workers/editor/common/bracketPairsTree.js +0 -343
  15. package/dist/workers/editor/common/brackets.js +0 -108
  16. package/dist/workers/editor/common/characterClassifier.js +0 -59
  17. package/dist/workers/editor/common/characterPair.js +0 -40
  18. package/dist/workers/editor/common/colorizedBracketPairsDecorationProvider.js +0 -97
  19. package/dist/workers/editor/common/columnRange.js +0 -35
  20. package/dist/workers/editor/common/combineTextEditInfos.js +0 -124
  21. package/dist/workers/editor/common/common.js +0 -20
  22. package/dist/workers/editor/common/computeMovedLines.js +0 -249
  23. package/dist/workers/editor/common/concat23Trees.js +0 -192
  24. package/dist/workers/editor/common/contiguousMultilineTokens.js +0 -32
  25. package/dist/workers/editor/common/contiguousMultilineTokensBuilder.js +0 -23
  26. package/dist/workers/editor/common/contiguousTokensEditing.js +0 -128
  27. package/dist/workers/editor/common/contiguousTokensStore.js +0 -207
  28. package/dist/workers/editor/common/coordinatesConverter.js +0 -51
  29. package/dist/workers/editor/common/cursor.js +0 -899
  30. package/dist/workers/editor/common/cursorAtomicMoveOperations.js +0 -145
  31. package/dist/workers/editor/common/cursorCollection.js +0 -194
  32. package/dist/workers/editor/common/cursorColumnSelection.js +0 -93
  33. package/dist/workers/editor/common/cursorColumns.js +0 -112
  34. package/dist/workers/editor/common/cursorCommon.js +0 -250
  35. package/dist/workers/editor/common/cursorContext.js +0 -15
  36. package/dist/workers/editor/common/cursorDeleteOperations.js +0 -231
  37. package/dist/workers/editor/common/cursorMoveCommands.js +0 -676
  38. package/dist/workers/editor/common/cursorMoveOperations.js +0 -290
  39. package/dist/workers/editor/common/cursorTypeEditOperations.js +0 -968
  40. package/dist/workers/editor/common/cursorTypeOperations.js +0 -173
  41. package/dist/workers/editor/common/cursorUtils.js +0 -75
  42. package/dist/workers/editor/common/cursorWordOperations.js +0 -720
  43. package/dist/workers/editor/common/defaultDocumentColorsComputer.js +0 -138
  44. package/dist/workers/editor/common/defaultLinesDiffComputer.js +0 -188
  45. package/dist/workers/editor/common/diffAlgorithm.js +0 -139
  46. package/dist/workers/editor/common/diffEditor.js +0 -38
  47. package/dist/workers/editor/common/dynamicProgrammingDiffing.js +0 -101
  48. package/dist/workers/editor/common/edit.js +0 -183
  49. package/dist/workers/editor/common/editOperation.js +0 -36
  50. package/dist/workers/editor/common/editStack.js +0 -363
  51. package/dist/workers/editor/common/editorAction.js +0 -26
  52. package/dist/workers/editor/common/editorBaseApi.js +0 -43
  53. package/dist/workers/editor/common/editorColorRegistry.js +0 -102
  54. package/dist/workers/editor/common/editorCommon.js +0 -13
  55. package/dist/workers/editor/common/editorConfigurationSchema.js +0 -338
  56. package/dist/workers/editor/common/editorContextKeys.js +0 -84
  57. package/dist/workers/editor/common/editorFeatures.js +0 -17
  58. package/dist/workers/editor/common/editorOptions.js +0 -3440
  59. package/dist/workers/editor/common/editorTheme.js +0 -23
  60. package/dist/workers/editor/common/editorWebWorker.js +0 -299
  61. package/dist/workers/editor/common/editorWorker.js +0 -9
  62. package/dist/workers/editor/common/editorWorkerHost.js +0 -15
  63. package/dist/workers/editor/common/editorZoom.js +0 -26
  64. package/dist/workers/editor/common/electricCharacter.js +0 -55
  65. package/dist/workers/editor/common/encodedTokenAttributes.js +0 -79
  66. package/dist/workers/editor/common/enterAction.js +0 -53
  67. package/dist/workers/editor/common/eolCounter.js +0 -44
  68. package/dist/workers/editor/common/findSectionHeaders.js +0 -128
  69. package/dist/workers/editor/common/fixBrackets.js +0 -67
  70. package/dist/workers/editor/common/fixedArray.js +0 -70
  71. package/dist/workers/editor/common/fontInfo.js +0 -172
  72. package/dist/workers/editor/common/fontInfoFromSettings.js +0 -29
  73. package/dist/workers/editor/common/getIconClasses.js +0 -106
  74. package/dist/workers/editor/common/getPositionOffsetTransformerFromTextModel.js +0 -24
  75. package/dist/workers/editor/common/glyphLanesModel.js +0 -61
  76. package/dist/workers/editor/common/guidesTextModelPart.js +0 -405
  77. package/dist/workers/editor/common/heuristicSequenceOptimizations.js +0 -374
  78. package/dist/workers/editor/common/indentRules.js +0 -63
  79. package/dist/workers/editor/common/indentation.js +0 -39
  80. package/dist/workers/editor/common/indentationGuesser.js +0 -178
  81. package/dist/workers/editor/common/indentationLineProcessor.js +0 -193
  82. package/dist/workers/editor/common/inlineDecorations.js +0 -26
  83. package/dist/workers/editor/common/inplaceReplaceSupport.js +0 -87
  84. package/dist/workers/editor/common/inputMode.js +0 -22
  85. package/dist/workers/editor/common/intervalTree.js +0 -1002
  86. package/dist/workers/editor/common/language.js +0 -9
  87. package/dist/workers/editor/common/languageBracketsConfiguration.js +0 -133
  88. package/dist/workers/editor/common/languageConfiguration.js +0 -138
  89. package/dist/workers/editor/common/languageConfigurationRegistry.js +0 -361
  90. package/dist/workers/editor/common/languageFeatureDebounce.js +0 -137
  91. package/dist/workers/editor/common/languageFeatureRegistry.js +0 -180
  92. package/dist/workers/editor/common/languageFeatures.js +0 -9
  93. package/dist/workers/editor/common/languageFeaturesService.js +0 -47
  94. package/dist/workers/editor/common/languageSelector.js +0 -112
  95. package/dist/workers/editor/common/languageService.js +0 -92
  96. package/dist/workers/editor/common/languages.js +0 -522
  97. package/dist/workers/editor/common/languagesAssociations.js +0 -193
  98. package/dist/workers/editor/common/languagesRegistry.js +0 -237
  99. package/dist/workers/editor/common/legacyLinesDiffComputer.js +0 -468
  100. package/dist/workers/editor/common/length.js +0 -129
  101. package/dist/workers/editor/common/lineDecorations.js +0 -208
  102. package/dist/workers/editor/common/lineEdit.js +0 -75
  103. package/dist/workers/editor/common/lineHeights.js +0 -370
  104. package/dist/workers/editor/common/linePart.js +0 -25
  105. package/dist/workers/editor/common/lineRange.js +0 -312
  106. package/dist/workers/editor/common/lineSequence.js +0 -36
  107. package/dist/workers/editor/common/lineTokens.js +0 -405
  108. package/dist/workers/editor/common/linesDiffComputer.js +0 -29
  109. package/dist/workers/editor/common/linesDiffComputers.js +0 -13
  110. package/dist/workers/editor/common/linesLayout.js +0 -765
  111. package/dist/workers/editor/common/linesSliceCharSequence.js +0 -205
  112. package/dist/workers/editor/common/linkComputer.js +0 -269
  113. package/dist/workers/editor/common/markerDecorations.js +0 -9
  114. package/dist/workers/editor/common/markerDecorationsService.js +0 -248
  115. package/dist/workers/editor/common/minimapTokensColorTracker.js +0 -58
  116. package/dist/workers/editor/common/mirrorTextModel.js +0 -117
  117. package/dist/workers/editor/common/model.js +0 -9
  118. package/dist/workers/editor/common/modelLineProjection.js +0 -350
  119. package/dist/workers/editor/common/modelLineProjectionData.js +0 -297
  120. package/dist/workers/editor/common/modelService.js +0 -413
  121. package/dist/workers/editor/common/modesRegistry.js +0 -75
  122. package/dist/workers/editor/common/monospaceLineBreaksComputer.js +0 -473
  123. package/dist/workers/editor/common/myersDiffAlgorithm.js +0 -159
  124. package/dist/workers/editor/common/nodeReader.js +0 -127
  125. package/dist/workers/editor/common/nullTokenize.js +0 -29
  126. package/dist/workers/editor/common/offsetRange.js +0 -225
  127. package/dist/workers/editor/common/onEnter.js +0 -109
  128. package/dist/workers/editor/common/oneCursor.js +0 -117
  129. package/dist/workers/editor/common/overviewZoneManager.js +0 -176
  130. package/dist/workers/editor/common/parser.js +0 -121
  131. package/dist/workers/editor/common/pieceTreeBase.js +0 -1473
  132. package/dist/workers/editor/common/pieceTreeTextBuffer.js +0 -461
  133. package/dist/workers/editor/common/pieceTreeTextBufferBuilder.js +0 -140
  134. package/dist/workers/editor/common/point.js +0 -50
  135. package/dist/workers/editor/common/position.js +0 -142
  136. package/dist/workers/editor/common/positionToOffset.js +0 -17
  137. package/dist/workers/editor/common/positionToOffsetImpl.js +0 -98
  138. package/dist/workers/editor/common/prefixSumComputer.js +0 -226
  139. package/dist/workers/editor/common/range.js +0 -421
  140. package/dist/workers/editor/common/rangeMapping.js +0 -229
  141. package/dist/workers/editor/common/rangeSingleLine.js +0 -17
  142. package/dist/workers/editor/common/rbTreeBase.js +0 -362
  143. package/dist/workers/editor/common/rect.js +0 -163
  144. package/dist/workers/editor/common/replaceCommand.js +0 -158
  145. package/dist/workers/editor/common/resolverService.js +0 -5
  146. package/dist/workers/editor/common/rgba.js +0 -35
  147. package/dist/workers/editor/common/richEditBrackets.js +0 -356
  148. package/dist/workers/editor/common/selection.js +0 -145
  149. package/dist/workers/editor/common/semanticTokensDto.js +0 -82
  150. package/dist/workers/editor/common/semanticTokensProviderStyling.js +0 -263
  151. package/dist/workers/editor/common/semanticTokensStyling.js +0 -9
  152. package/dist/workers/editor/common/semanticTokensStylingService.js +0 -47
  153. package/dist/workers/editor/common/shiftCommand.js +0 -241
  154. package/dist/workers/editor/common/smallImmutableSet.js +0 -108
  155. package/dist/workers/editor/common/sparseMultilineTokens.js +0 -548
  156. package/dist/workers/editor/common/sparseTokensStore.js +0 -210
  157. package/dist/workers/editor/common/standaloneEnums.js +0 -1017
  158. package/dist/workers/editor/common/standaloneStrings.js +0 -42
  159. package/dist/workers/editor/common/stringBuilder.js +0 -122
  160. package/dist/workers/editor/common/stringEdit.js +0 -165
  161. package/dist/workers/editor/common/supports.js +0 -58
  162. package/dist/workers/editor/common/surroundSelectionCommand.js +0 -44
  163. package/dist/workers/editor/common/textChange.js +0 -248
  164. package/dist/workers/editor/common/textEdit.js +0 -269
  165. package/dist/workers/editor/common/textLength.js +0 -87
  166. package/dist/workers/editor/common/textModel.js +0 -2031
  167. package/dist/workers/editor/common/textModelBracketPairs.js +0 -45
  168. package/dist/workers/editor/common/textModelDefaults.js +0 -18
  169. package/dist/workers/editor/common/textModelEditSource.js +0 -166
  170. package/dist/workers/editor/common/textModelEvents.js +0 -216
  171. package/dist/workers/editor/common/textModelGuides.js +0 -40
  172. package/dist/workers/editor/common/textModelPart.js +0 -23
  173. package/dist/workers/editor/common/textModelSearch.js +0 -455
  174. package/dist/workers/editor/common/textModelStringEdit.js +0 -11
  175. package/dist/workers/editor/common/textModelSync.impl.js +0 -307
  176. package/dist/workers/editor/common/textModelText.js +0 -26
  177. package/dist/workers/editor/common/textModelTokens.js +0 -436
  178. package/dist/workers/editor/common/textResourceConfiguration.js +0 -6
  179. package/dist/workers/editor/common/textToHtmlTokenizer.js +0 -139
  180. package/dist/workers/editor/common/tokenStore.js +0 -407
  181. package/dist/workers/editor/common/tokenWithTextArray.js +0 -73
  182. package/dist/workers/editor/common/tokenization.js +0 -287
  183. package/dist/workers/editor/common/tokenizationRegistry.js +0 -123
  184. package/dist/workers/editor/common/tokenizationTextModelPart.js +0 -275
  185. package/dist/workers/editor/common/tokenizer.js +0 -301
  186. package/dist/workers/editor/common/tokenizerSyntaxTokenBackend.js +0 -261
  187. package/dist/workers/editor/common/treeSitterLibraryService.js +0 -9
  188. package/dist/workers/editor/common/treeSitterSyntaxTokenBackend.js +0 -167
  189. package/dist/workers/editor/common/treeSitterThemeService.js +0 -9
  190. package/dist/workers/editor/common/treeSitterTokenizationImpl.js +0 -713
  191. package/dist/workers/editor/common/treeSitterTree.js +0 -395
  192. package/dist/workers/editor/common/treeViewsDnd.js +0 -24
  193. package/dist/workers/editor/common/treeViewsDndService.js +0 -12
  194. package/dist/workers/editor/common/trimTrailingWhitespaceCommand.js +0 -98
  195. package/dist/workers/editor/common/unicodeTextModelHighlighter.js +0 -188
  196. package/dist/workers/editor/common/utils.js +0 -62
  197. package/dist/workers/editor/common/viewContext.js +0 -22
  198. package/dist/workers/editor/common/viewEventHandler.js +0 -186
  199. package/dist/workers/editor/common/viewEvents.js +0 -180
  200. package/dist/workers/editor/common/viewLayout.js +0 -368
  201. package/dist/workers/editor/common/viewLineRenderer.js +0 -948
  202. package/dist/workers/editor/common/viewLinesViewportData.js +0 -30
  203. package/dist/workers/editor/common/viewModel.js +0 -98
  204. package/dist/workers/editor/common/viewModelDecoration.js +0 -55
  205. package/dist/workers/editor/common/viewModelDecorations.js +0 -132
  206. package/dist/workers/editor/common/viewModelEventDispatcher.js +0 -398
  207. package/dist/workers/editor/common/viewModelImpl.js +0 -1163
  208. package/dist/workers/editor/common/viewModelLines.js +0 -938
  209. package/dist/workers/editor/common/wordCharacterClassifier.js +0 -87
  210. package/dist/workers/editor/common/wordHelper.js +0 -127
  211. package/dist/workers/language/cssMode.js +0 -198
  212. package/dist/workers/language/cssWorker.js +0 -183
  213. package/dist/workers/language/htmlMode.js +0 -213
  214. package/dist/workers/language/htmlWorker.js +0 -126
  215. package/dist/workers/language/jsonMode.js +0 -224
  216. package/dist/workers/language/jsonWorker.js +0 -187
  217. package/dist/workers/language/languageFeatures.js +0 -1009
  218. package/dist/workers/language/lib.index.js +0 -103
  219. package/dist/workers/language/lib.js +0 -1107
  220. package/dist/workers/language/lspLanguageFeatures.js +0 -716
  221. package/dist/workers/language/monaco.contribution.js +0 -144
  222. package/dist/workers/language/tokenization.js +0 -189
  223. package/dist/workers/language/tsMode.js +0 -212
  224. package/dist/workers/language/tsWorker.js +0 -352
  225. package/dist/workers/language/typescriptServices.js +0 -210154
  226. package/dist/workers/language/typescriptServicesMetadata.js +0 -3
  227. package/dist/workers/language/workerManager.js +0 -65
  228. /package/dist/workers/{language/css.worker.js → css.worker.js} +0 -0
  229. /package/dist/workers/{editor/editor.worker.js → editor.worker.js} +0 -0
  230. /package/dist/workers/{language/html.worker.js → html.worker.js} +0 -0
  231. /package/dist/workers/{language/json.worker.js → json.worker.js} +0 -0
  232. /package/dist/workers/{language/ts.worker.js → ts.worker.js} +0 -0
@@ -1,421 +0,0 @@
1
- import { Position } from './position.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
- /**
8
- * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)
9
- */
10
- class Range {
11
- constructor(startLineNumber, startColumn, endLineNumber, endColumn) {
12
- if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) {
13
- this.startLineNumber = endLineNumber;
14
- this.startColumn = endColumn;
15
- this.endLineNumber = startLineNumber;
16
- this.endColumn = startColumn;
17
- }
18
- else {
19
- this.startLineNumber = startLineNumber;
20
- this.startColumn = startColumn;
21
- this.endLineNumber = endLineNumber;
22
- this.endColumn = endColumn;
23
- }
24
- }
25
- /**
26
- * Test if this range is empty.
27
- */
28
- isEmpty() {
29
- return Range.isEmpty(this);
30
- }
31
- /**
32
- * Test if `range` is empty.
33
- */
34
- static isEmpty(range) {
35
- return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn);
36
- }
37
- /**
38
- * Test if position is in this range. If the position is at the edges, will return true.
39
- */
40
- containsPosition(position) {
41
- return Range.containsPosition(this, position);
42
- }
43
- /**
44
- * Test if `position` is in `range`. If the position is at the edges, will return true.
45
- */
46
- static containsPosition(range, position) {
47
- if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {
48
- return false;
49
- }
50
- if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) {
51
- return false;
52
- }
53
- if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) {
54
- return false;
55
- }
56
- return true;
57
- }
58
- /**
59
- * Test if `position` is in `range`. If the position is at the edges, will return false.
60
- * @internal
61
- */
62
- static strictContainsPosition(range, position) {
63
- if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {
64
- return false;
65
- }
66
- if (position.lineNumber === range.startLineNumber && position.column <= range.startColumn) {
67
- return false;
68
- }
69
- if (position.lineNumber === range.endLineNumber && position.column >= range.endColumn) {
70
- return false;
71
- }
72
- return true;
73
- }
74
- /**
75
- * Test if range is in this range. If the range is equal to this range, will return true.
76
- */
77
- containsRange(range) {
78
- return Range.containsRange(this, range);
79
- }
80
- /**
81
- * Test if `otherRange` is in `range`. If the ranges are equal, will return true.
82
- */
83
- static containsRange(range, otherRange) {
84
- if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {
85
- return false;
86
- }
87
- if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {
88
- return false;
89
- }
90
- if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) {
91
- return false;
92
- }
93
- if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) {
94
- return false;
95
- }
96
- return true;
97
- }
98
- /**
99
- * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.
100
- */
101
- strictContainsRange(range) {
102
- return Range.strictContainsRange(this, range);
103
- }
104
- /**
105
- * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.
106
- */
107
- static strictContainsRange(range, otherRange) {
108
- if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {
109
- return false;
110
- }
111
- if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {
112
- return false;
113
- }
114
- if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) {
115
- return false;
116
- }
117
- if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) {
118
- return false;
119
- }
120
- return true;
121
- }
122
- /**
123
- * A reunion of the two ranges.
124
- * The smallest position will be used as the start point, and the largest one as the end point.
125
- */
126
- plusRange(range) {
127
- return Range.plusRange(this, range);
128
- }
129
- /**
130
- * A reunion of the two ranges.
131
- * The smallest position will be used as the start point, and the largest one as the end point.
132
- */
133
- static plusRange(a, b) {
134
- let startLineNumber;
135
- let startColumn;
136
- let endLineNumber;
137
- let endColumn;
138
- if (b.startLineNumber < a.startLineNumber) {
139
- startLineNumber = b.startLineNumber;
140
- startColumn = b.startColumn;
141
- }
142
- else if (b.startLineNumber === a.startLineNumber) {
143
- startLineNumber = b.startLineNumber;
144
- startColumn = Math.min(b.startColumn, a.startColumn);
145
- }
146
- else {
147
- startLineNumber = a.startLineNumber;
148
- startColumn = a.startColumn;
149
- }
150
- if (b.endLineNumber > a.endLineNumber) {
151
- endLineNumber = b.endLineNumber;
152
- endColumn = b.endColumn;
153
- }
154
- else if (b.endLineNumber === a.endLineNumber) {
155
- endLineNumber = b.endLineNumber;
156
- endColumn = Math.max(b.endColumn, a.endColumn);
157
- }
158
- else {
159
- endLineNumber = a.endLineNumber;
160
- endColumn = a.endColumn;
161
- }
162
- return new Range(startLineNumber, startColumn, endLineNumber, endColumn);
163
- }
164
- /**
165
- * A intersection of the two ranges.
166
- */
167
- intersectRanges(range) {
168
- return Range.intersectRanges(this, range);
169
- }
170
- /**
171
- * A intersection of the two ranges.
172
- */
173
- static intersectRanges(a, b) {
174
- let resultStartLineNumber = a.startLineNumber;
175
- let resultStartColumn = a.startColumn;
176
- let resultEndLineNumber = a.endLineNumber;
177
- let resultEndColumn = a.endColumn;
178
- const otherStartLineNumber = b.startLineNumber;
179
- const otherStartColumn = b.startColumn;
180
- const otherEndLineNumber = b.endLineNumber;
181
- const otherEndColumn = b.endColumn;
182
- if (resultStartLineNumber < otherStartLineNumber) {
183
- resultStartLineNumber = otherStartLineNumber;
184
- resultStartColumn = otherStartColumn;
185
- }
186
- else if (resultStartLineNumber === otherStartLineNumber) {
187
- resultStartColumn = Math.max(resultStartColumn, otherStartColumn);
188
- }
189
- if (resultEndLineNumber > otherEndLineNumber) {
190
- resultEndLineNumber = otherEndLineNumber;
191
- resultEndColumn = otherEndColumn;
192
- }
193
- else if (resultEndLineNumber === otherEndLineNumber) {
194
- resultEndColumn = Math.min(resultEndColumn, otherEndColumn);
195
- }
196
- // Check if selection is now empty
197
- if (resultStartLineNumber > resultEndLineNumber) {
198
- return null;
199
- }
200
- if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) {
201
- return null;
202
- }
203
- return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);
204
- }
205
- /**
206
- * Test if this range equals other.
207
- */
208
- equalsRange(other) {
209
- return Range.equalsRange(this, other);
210
- }
211
- /**
212
- * Test if range `a` equals `b`.
213
- */
214
- static equalsRange(a, b) {
215
- if (!a && !b) {
216
- return true;
217
- }
218
- return (!!a &&
219
- !!b &&
220
- a.startLineNumber === b.startLineNumber &&
221
- a.startColumn === b.startColumn &&
222
- a.endLineNumber === b.endLineNumber &&
223
- a.endColumn === b.endColumn);
224
- }
225
- /**
226
- * Return the end position (which will be after or equal to the start position)
227
- */
228
- getEndPosition() {
229
- return Range.getEndPosition(this);
230
- }
231
- /**
232
- * Return the end position (which will be after or equal to the start position)
233
- */
234
- static getEndPosition(range) {
235
- return new Position(range.endLineNumber, range.endColumn);
236
- }
237
- /**
238
- * Return the start position (which will be before or equal to the end position)
239
- */
240
- getStartPosition() {
241
- return Range.getStartPosition(this);
242
- }
243
- /**
244
- * Return the start position (which will be before or equal to the end position)
245
- */
246
- static getStartPosition(range) {
247
- return new Position(range.startLineNumber, range.startColumn);
248
- }
249
- /**
250
- * Transform to a user presentable string representation.
251
- */
252
- toString() {
253
- return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']';
254
- }
255
- /**
256
- * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.
257
- */
258
- setEndPosition(endLineNumber, endColumn) {
259
- return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);
260
- }
261
- /**
262
- * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.
263
- */
264
- setStartPosition(startLineNumber, startColumn) {
265
- return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);
266
- }
267
- /**
268
- * Create a new empty range using this range's start position.
269
- */
270
- collapseToStart() {
271
- return Range.collapseToStart(this);
272
- }
273
- /**
274
- * Create a new empty range using this range's start position.
275
- */
276
- static collapseToStart(range) {
277
- return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);
278
- }
279
- /**
280
- * Create a new empty range using this range's end position.
281
- */
282
- collapseToEnd() {
283
- return Range.collapseToEnd(this);
284
- }
285
- /**
286
- * Create a new empty range using this range's end position.
287
- */
288
- static collapseToEnd(range) {
289
- return new Range(range.endLineNumber, range.endColumn, range.endLineNumber, range.endColumn);
290
- }
291
- /**
292
- * Moves the range by the given amount of lines.
293
- */
294
- delta(lineCount) {
295
- return new Range(this.startLineNumber + lineCount, this.startColumn, this.endLineNumber + lineCount, this.endColumn);
296
- }
297
- isSingleLine() {
298
- return this.startLineNumber === this.endLineNumber;
299
- }
300
- // ---
301
- static fromPositions(start, end = start) {
302
- return new Range(start.lineNumber, start.column, end.lineNumber, end.column);
303
- }
304
- static lift(range) {
305
- if (!range) {
306
- return null;
307
- }
308
- return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);
309
- }
310
- /**
311
- * Test if `obj` is an `IRange`.
312
- */
313
- static isIRange(obj) {
314
- return (!!obj
315
- && (typeof obj.startLineNumber === 'number')
316
- && (typeof obj.startColumn === 'number')
317
- && (typeof obj.endLineNumber === 'number')
318
- && (typeof obj.endColumn === 'number'));
319
- }
320
- /**
321
- * Test if the two ranges are touching in any way.
322
- */
323
- static areIntersectingOrTouching(a, b) {
324
- // Check if `a` is before `b`
325
- if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) {
326
- return false;
327
- }
328
- // Check if `b` is before `a`
329
- if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) {
330
- return false;
331
- }
332
- // These ranges must intersect
333
- return true;
334
- }
335
- /**
336
- * Test if the two ranges are intersecting. If the ranges are touching it returns true.
337
- */
338
- static areIntersecting(a, b) {
339
- // Check if `a` is before `b`
340
- if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) {
341
- return false;
342
- }
343
- // Check if `b` is before `a`
344
- if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) {
345
- return false;
346
- }
347
- // These ranges must intersect
348
- return true;
349
- }
350
- /**
351
- * Test if the two ranges are intersecting, but not touching at all.
352
- */
353
- static areOnlyIntersecting(a, b) {
354
- // Check if `a` is before `b`
355
- if (a.endLineNumber < (b.startLineNumber - 1) || (a.endLineNumber === b.startLineNumber && a.endColumn < (b.startColumn - 1))) {
356
- return false;
357
- }
358
- // Check if `b` is before `a`
359
- if (b.endLineNumber < (a.startLineNumber - 1) || (b.endLineNumber === a.startLineNumber && b.endColumn < (a.startColumn - 1))) {
360
- return false;
361
- }
362
- // These ranges must intersect
363
- return true;
364
- }
365
- /**
366
- * A function that compares ranges, useful for sorting ranges
367
- * It will first compare ranges on the startPosition and then on the endPosition
368
- */
369
- static compareRangesUsingStarts(a, b) {
370
- if (a && b) {
371
- const aStartLineNumber = a.startLineNumber | 0;
372
- const bStartLineNumber = b.startLineNumber | 0;
373
- if (aStartLineNumber === bStartLineNumber) {
374
- const aStartColumn = a.startColumn | 0;
375
- const bStartColumn = b.startColumn | 0;
376
- if (aStartColumn === bStartColumn) {
377
- const aEndLineNumber = a.endLineNumber | 0;
378
- const bEndLineNumber = b.endLineNumber | 0;
379
- if (aEndLineNumber === bEndLineNumber) {
380
- const aEndColumn = a.endColumn | 0;
381
- const bEndColumn = b.endColumn | 0;
382
- return aEndColumn - bEndColumn;
383
- }
384
- return aEndLineNumber - bEndLineNumber;
385
- }
386
- return aStartColumn - bStartColumn;
387
- }
388
- return aStartLineNumber - bStartLineNumber;
389
- }
390
- const aExists = (a ? 1 : 0);
391
- const bExists = (b ? 1 : 0);
392
- return aExists - bExists;
393
- }
394
- /**
395
- * A function that compares ranges, useful for sorting ranges
396
- * It will first compare ranges on the endPosition and then on the startPosition
397
- */
398
- static compareRangesUsingEnds(a, b) {
399
- if (a.endLineNumber === b.endLineNumber) {
400
- if (a.endColumn === b.endColumn) {
401
- if (a.startLineNumber === b.startLineNumber) {
402
- return a.startColumn - b.startColumn;
403
- }
404
- return a.startLineNumber - b.startLineNumber;
405
- }
406
- return a.endColumn - b.endColumn;
407
- }
408
- return a.endLineNumber - b.endLineNumber;
409
- }
410
- /**
411
- * Test if the range spans multiple lines.
412
- */
413
- static spansMultipleLines(range) {
414
- return range.endLineNumber > range.startLineNumber;
415
- }
416
- toJSON() {
417
- return this;
418
- }
419
- }
420
-
421
- export { Range };
@@ -1,229 +0,0 @@
1
- import { groupAdjacentBy } from '../../../base/common/arrays.js';
2
- import { assertFn, checkAdjacentItems } from '../../../base/common/assert.js';
3
- import { BugIndicatingError } from '../../../base/common/errors.js';
4
- import { LineRange } from '../core/ranges/lineRange.js';
5
- import { Position } from '../core/position.js';
6
- import { Range } from '../core/range.js';
7
- import { TextReplacement } from '../core/edits/textEdit.js';
8
-
9
- /*---------------------------------------------------------------------------------------------
10
- * Copyright (c) Microsoft Corporation. All rights reserved.
11
- * Licensed under the MIT License. See License.txt in the project root for license information.
12
- *--------------------------------------------------------------------------------------------*/
13
- /**
14
- * Maps a line range in the original text model to a line range in the modified text model.
15
- */
16
- class LineRangeMapping {
17
- static inverse(mapping, originalLineCount, modifiedLineCount) {
18
- const result = [];
19
- let lastOriginalEndLineNumber = 1;
20
- let lastModifiedEndLineNumber = 1;
21
- for (const m of mapping) {
22
- const r = new LineRangeMapping(new LineRange(lastOriginalEndLineNumber, m.original.startLineNumber), new LineRange(lastModifiedEndLineNumber, m.modified.startLineNumber));
23
- if (!r.modified.isEmpty) {
24
- result.push(r);
25
- }
26
- lastOriginalEndLineNumber = m.original.endLineNumberExclusive;
27
- lastModifiedEndLineNumber = m.modified.endLineNumberExclusive;
28
- }
29
- const r = new LineRangeMapping(new LineRange(lastOriginalEndLineNumber, originalLineCount + 1), new LineRange(lastModifiedEndLineNumber, modifiedLineCount + 1));
30
- if (!r.modified.isEmpty) {
31
- result.push(r);
32
- }
33
- return result;
34
- }
35
- static clip(mapping, originalRange, modifiedRange) {
36
- const result = [];
37
- for (const m of mapping) {
38
- const original = m.original.intersect(originalRange);
39
- const modified = m.modified.intersect(modifiedRange);
40
- if (original && !original.isEmpty && modified && !modified.isEmpty) {
41
- result.push(new LineRangeMapping(original, modified));
42
- }
43
- }
44
- return result;
45
- }
46
- constructor(originalRange, modifiedRange) {
47
- this.original = originalRange;
48
- this.modified = modifiedRange;
49
- }
50
- toString() {
51
- return `{${this.original.toString()}->${this.modified.toString()}}`;
52
- }
53
- flip() {
54
- return new LineRangeMapping(this.modified, this.original);
55
- }
56
- join(other) {
57
- return new LineRangeMapping(this.original.join(other.original), this.modified.join(other.modified));
58
- }
59
- /**
60
- * This method assumes that the LineRangeMapping describes a valid diff!
61
- * I.e. if one range is empty, the other range cannot be the entire document.
62
- * It avoids various problems when the line range points to non-existing line-numbers.
63
- */
64
- toRangeMapping() {
65
- const origInclusiveRange = this.original.toInclusiveRange();
66
- const modInclusiveRange = this.modified.toInclusiveRange();
67
- if (origInclusiveRange && modInclusiveRange) {
68
- return new RangeMapping(origInclusiveRange, modInclusiveRange);
69
- }
70
- else if (this.original.startLineNumber === 1 || this.modified.startLineNumber === 1) {
71
- if (!(this.modified.startLineNumber === 1 && this.original.startLineNumber === 1)) {
72
- // If one line range starts at 1, the other one must start at 1 as well.
73
- throw new BugIndicatingError('not a valid diff');
74
- }
75
- // Because one range is empty and both ranges start at line 1, none of the ranges can cover all lines.
76
- // Thus, `endLineNumberExclusive` is a valid line number.
77
- return new RangeMapping(new Range(this.original.startLineNumber, 1, this.original.endLineNumberExclusive, 1), new Range(this.modified.startLineNumber, 1, this.modified.endLineNumberExclusive, 1));
78
- }
79
- else {
80
- // We can assume here that both startLineNumbers are greater than 1.
81
- return new RangeMapping(new Range(this.original.startLineNumber - 1, Number.MAX_SAFE_INTEGER, this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), new Range(this.modified.startLineNumber - 1, Number.MAX_SAFE_INTEGER, this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER));
82
- }
83
- }
84
- /**
85
- * This method assumes that the LineRangeMapping describes a valid diff!
86
- * I.e. if one range is empty, the other range cannot be the entire document.
87
- * It avoids various problems when the line range points to non-existing line-numbers.
88
- */
89
- toRangeMapping2(original, modified) {
90
- if (isValidLineNumber(this.original.endLineNumberExclusive, original)
91
- && isValidLineNumber(this.modified.endLineNumberExclusive, modified)) {
92
- return new RangeMapping(new Range(this.original.startLineNumber, 1, this.original.endLineNumberExclusive, 1), new Range(this.modified.startLineNumber, 1, this.modified.endLineNumberExclusive, 1));
93
- }
94
- if (!this.original.isEmpty && !this.modified.isEmpty) {
95
- return new RangeMapping(Range.fromPositions(new Position(this.original.startLineNumber, 1), normalizePosition(new Position(this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), original)), Range.fromPositions(new Position(this.modified.startLineNumber, 1), normalizePosition(new Position(this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), modified)));
96
- }
97
- if (this.original.startLineNumber > 1 && this.modified.startLineNumber > 1) {
98
- return new RangeMapping(Range.fromPositions(normalizePosition(new Position(this.original.startLineNumber - 1, Number.MAX_SAFE_INTEGER), original), normalizePosition(new Position(this.original.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), original)), Range.fromPositions(normalizePosition(new Position(this.modified.startLineNumber - 1, Number.MAX_SAFE_INTEGER), modified), normalizePosition(new Position(this.modified.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER), modified)));
99
- }
100
- // Situation now: one range is empty and one range touches the last line and one range starts at line 1.
101
- // I don't think this can happen.
102
- throw new BugIndicatingError();
103
- }
104
- }
105
- function normalizePosition(position, content) {
106
- if (position.lineNumber < 1) {
107
- return new Position(1, 1);
108
- }
109
- if (position.lineNumber > content.length) {
110
- return new Position(content.length, content[content.length - 1].length + 1);
111
- }
112
- const line = content[position.lineNumber - 1];
113
- if (position.column > line.length + 1) {
114
- return new Position(position.lineNumber, line.length + 1);
115
- }
116
- return position;
117
- }
118
- function isValidLineNumber(lineNumber, lines) {
119
- return lineNumber >= 1 && lineNumber <= lines.length;
120
- }
121
- /**
122
- * Maps a line range in the original text model to a line range in the modified text model.
123
- * Also contains inner range mappings.
124
- */
125
- class DetailedLineRangeMapping extends LineRangeMapping {
126
- static fromRangeMappings(rangeMappings) {
127
- const originalRange = LineRange.join(rangeMappings.map(r => LineRange.fromRangeInclusive(r.originalRange)));
128
- const modifiedRange = LineRange.join(rangeMappings.map(r => LineRange.fromRangeInclusive(r.modifiedRange)));
129
- return new DetailedLineRangeMapping(originalRange, modifiedRange, rangeMappings);
130
- }
131
- constructor(originalRange, modifiedRange, innerChanges) {
132
- super(originalRange, modifiedRange);
133
- this.innerChanges = innerChanges;
134
- }
135
- flip() {
136
- return new DetailedLineRangeMapping(this.modified, this.original, this.innerChanges?.map(c => c.flip()));
137
- }
138
- withInnerChangesFromLineRanges() {
139
- return new DetailedLineRangeMapping(this.original, this.modified, [this.toRangeMapping()]);
140
- }
141
- }
142
- /**
143
- * Maps a range in the original text model to a range in the modified text model.
144
- */
145
- class RangeMapping {
146
- static fromEdit(edit) {
147
- const newRanges = edit.getNewRanges();
148
- const result = edit.replacements.map((e, idx) => new RangeMapping(e.range, newRanges[idx]));
149
- return result;
150
- }
151
- static assertSorted(rangeMappings) {
152
- for (let i = 1; i < rangeMappings.length; i++) {
153
- const previous = rangeMappings[i - 1];
154
- const current = rangeMappings[i];
155
- if (!(previous.originalRange.getEndPosition().isBeforeOrEqual(current.originalRange.getStartPosition())
156
- && previous.modifiedRange.getEndPosition().isBeforeOrEqual(current.modifiedRange.getStartPosition()))) {
157
- throw new BugIndicatingError('Range mappings must be sorted');
158
- }
159
- }
160
- }
161
- constructor(originalRange, modifiedRange) {
162
- this.originalRange = originalRange;
163
- this.modifiedRange = modifiedRange;
164
- }
165
- toString() {
166
- return `{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`;
167
- }
168
- flip() {
169
- return new RangeMapping(this.modifiedRange, this.originalRange);
170
- }
171
- /**
172
- * Creates a single text edit that describes the change from the original to the modified text.
173
- */
174
- toTextEdit(modified) {
175
- const newText = modified.getValueOfRange(this.modifiedRange);
176
- return new TextReplacement(this.originalRange, newText);
177
- }
178
- }
179
- function lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines, dontAssertStartLine = false) {
180
- const changes = [];
181
- for (const g of groupAdjacentBy(alignments.map(a => getLineRangeMapping(a, originalLines, modifiedLines)), (a1, a2) => a1.original.intersectsOrTouches(a2.original)
182
- || a1.modified.intersectsOrTouches(a2.modified))) {
183
- const first = g[0];
184
- const last = g[g.length - 1];
185
- changes.push(new DetailedLineRangeMapping(first.original.join(last.original), first.modified.join(last.modified), g.map(a => a.innerChanges[0])));
186
- }
187
- assertFn(() => {
188
- if (!dontAssertStartLine && changes.length > 0) {
189
- if (changes[0].modified.startLineNumber !== changes[0].original.startLineNumber) {
190
- return false;
191
- }
192
- if (modifiedLines.length.lineCount - changes[changes.length - 1].modified.endLineNumberExclusive !== originalLines.length.lineCount - changes[changes.length - 1].original.endLineNumberExclusive) {
193
- return false;
194
- }
195
- }
196
- return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive &&
197
- // There has to be an unchanged line in between (otherwise both diffs should have been joined)
198
- m1.original.endLineNumberExclusive < m2.original.startLineNumber &&
199
- m1.modified.endLineNumberExclusive < m2.modified.startLineNumber);
200
- });
201
- return changes;
202
- }
203
- function getLineRangeMapping(rangeMapping, originalLines, modifiedLines) {
204
- let lineStartDelta = 0;
205
- let lineEndDelta = 0;
206
- // rangeMapping describes the edit that replaces `rangeMapping.originalRange` with `newText := getText(modifiedLines, rangeMapping.modifiedRange)`.
207
- // original: ]xxx \n <- this line is not modified
208
- // modified: ]xx \n
209
- if (rangeMapping.modifiedRange.endColumn === 1 && rangeMapping.originalRange.endColumn === 1
210
- && rangeMapping.originalRange.startLineNumber + lineStartDelta <= rangeMapping.originalRange.endLineNumber
211
- && rangeMapping.modifiedRange.startLineNumber + lineStartDelta <= rangeMapping.modifiedRange.endLineNumber) {
212
- // We can only do this if the range is not empty yet
213
- lineEndDelta = -1;
214
- }
215
- // original: xxx[ \n <- this line is not modified
216
- // modified: xxx[ \n
217
- if (rangeMapping.modifiedRange.startColumn - 1 >= modifiedLines.getLineLength(rangeMapping.modifiedRange.startLineNumber)
218
- && rangeMapping.originalRange.startColumn - 1 >= originalLines.getLineLength(rangeMapping.originalRange.startLineNumber)
219
- && rangeMapping.originalRange.startLineNumber <= rangeMapping.originalRange.endLineNumber + lineEndDelta
220
- && rangeMapping.modifiedRange.startLineNumber <= rangeMapping.modifiedRange.endLineNumber + lineEndDelta) {
221
- // We can only do this if the range is not empty yet
222
- lineStartDelta = 1;
223
- }
224
- const originalLineRange = new LineRange(rangeMapping.originalRange.startLineNumber + lineStartDelta, rangeMapping.originalRange.endLineNumber + 1 + lineEndDelta);
225
- const modifiedLineRange = new LineRange(rangeMapping.modifiedRange.startLineNumber + lineStartDelta, rangeMapping.modifiedRange.endLineNumber + 1 + lineEndDelta);
226
- return new DetailedLineRangeMapping(originalLineRange, modifiedLineRange, [rangeMapping]);
227
- }
228
-
229
- export { DetailedLineRangeMapping, LineRangeMapping, RangeMapping, getLineRangeMapping, lineRangeMappingFromRangeMappings };
@@ -1,17 +0,0 @@
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
- /**
6
- * Represents a column range in a single line.
7
- */
8
- class RangeSingleLine {
9
- constructor(
10
- /** 1-based */
11
- lineNumber, columnRange) {
12
- this.lineNumber = lineNumber;
13
- this.columnRange = columnRange;
14
- }
15
- }
16
-
17
- export { RangeSingleLine };