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,173 @@
1
+ import { ShiftCommand } from '../commands/shiftCommand.js';
2
+ import { CompositionSurroundSelectionCommand } from '../commands/surroundSelectionCommand.js';
3
+ import { isQuote, EditOperationResult } from '../cursorCommon.js';
4
+ import { PasteOperation, TabOperation, CompositionOperation, CompositionEndOvertypeOperation, shouldSurroundChar, AutoClosingOvertypeWithInterceptorsOperation, AutoClosingOpenCharTypeOperation, EnterOperation, AutoIndentOperation, AutoClosingOvertypeOperation, SurroundSelectionOperation, InterceptorElectricCharOperation, SimpleCharacterTypeOperation, TypeWithoutInterceptorsOperation } from './cursorTypeEditOperations.js';
5
+
6
+ /*---------------------------------------------------------------------------------------------
7
+ * Copyright (c) Microsoft Corporation. All rights reserved.
8
+ * Licensed under the MIT License. See License.txt in the project root for license information.
9
+ *--------------------------------------------------------------------------------------------*/
10
+ class TypeOperations {
11
+ static indent(config, model, selections) {
12
+ if (model === null || selections === null) {
13
+ return [];
14
+ }
15
+ const commands = [];
16
+ for (let i = 0, len = selections.length; i < len; i++) {
17
+ commands[i] = new ShiftCommand(selections[i], {
18
+ isUnshift: false,
19
+ tabSize: config.tabSize,
20
+ indentSize: config.indentSize,
21
+ insertSpaces: config.insertSpaces,
22
+ useTabStops: config.useTabStops,
23
+ autoIndent: config.autoIndent
24
+ }, config.languageConfigurationService);
25
+ }
26
+ return commands;
27
+ }
28
+ static outdent(config, model, selections) {
29
+ const commands = [];
30
+ for (let i = 0, len = selections.length; i < len; i++) {
31
+ commands[i] = new ShiftCommand(selections[i], {
32
+ isUnshift: true,
33
+ tabSize: config.tabSize,
34
+ indentSize: config.indentSize,
35
+ insertSpaces: config.insertSpaces,
36
+ useTabStops: config.useTabStops,
37
+ autoIndent: config.autoIndent
38
+ }, config.languageConfigurationService);
39
+ }
40
+ return commands;
41
+ }
42
+ static paste(config, model, selections, text, pasteOnNewLine, multicursorText) {
43
+ return PasteOperation.getEdits(config, model, selections, text, pasteOnNewLine, multicursorText);
44
+ }
45
+ static tab(config, model, selections) {
46
+ return TabOperation.getCommands(config, model, selections);
47
+ }
48
+ static compositionType(prevEditOperationType, config, model, selections, text, replacePrevCharCnt, replaceNextCharCnt, positionDelta) {
49
+ return CompositionOperation.getEdits(prevEditOperationType, config, model, selections, text, replacePrevCharCnt, replaceNextCharCnt, positionDelta);
50
+ }
51
+ /**
52
+ * This is very similar with typing, but the character is already in the text buffer!
53
+ */
54
+ static compositionEndWithInterceptors(prevEditOperationType, config, model, compositions, selections, autoClosedCharacters) {
55
+ if (!compositions) {
56
+ // could not deduce what the composition did
57
+ return null;
58
+ }
59
+ let insertedText = null;
60
+ for (const composition of compositions) {
61
+ if (insertedText === null) {
62
+ insertedText = composition.insertedText;
63
+ }
64
+ else if (insertedText !== composition.insertedText) {
65
+ // not all selections agree on what was typed
66
+ return null;
67
+ }
68
+ }
69
+ if (!insertedText || insertedText.length !== 1) {
70
+ // we're only interested in the case where a single character was inserted
71
+ return CompositionEndOvertypeOperation.getEdits(config, compositions);
72
+ }
73
+ const ch = insertedText;
74
+ let hasDeletion = false;
75
+ for (const composition of compositions) {
76
+ if (composition.deletedText.length !== 0) {
77
+ hasDeletion = true;
78
+ break;
79
+ }
80
+ }
81
+ if (hasDeletion) {
82
+ // Check if this could have been a surround selection
83
+ if (!shouldSurroundChar(config, ch) || !config.surroundingPairs.hasOwnProperty(ch)) {
84
+ return null;
85
+ }
86
+ const isTypingAQuoteCharacter = isQuote(ch);
87
+ for (const composition of compositions) {
88
+ if (composition.deletedSelectionStart !== 0 || composition.deletedSelectionEnd !== composition.deletedText.length) {
89
+ // more text was deleted than was selected, so this could not have been a surround selection
90
+ return null;
91
+ }
92
+ if (/^[ \t]+$/.test(composition.deletedText)) {
93
+ // deleted text was only whitespace
94
+ return null;
95
+ }
96
+ if (isTypingAQuoteCharacter && isQuote(composition.deletedText)) {
97
+ // deleted text was a quote
98
+ return null;
99
+ }
100
+ }
101
+ const positions = [];
102
+ for (const selection of selections) {
103
+ if (!selection.isEmpty()) {
104
+ return null;
105
+ }
106
+ positions.push(selection.getPosition());
107
+ }
108
+ if (positions.length !== compositions.length) {
109
+ return null;
110
+ }
111
+ const commands = [];
112
+ for (let i = 0, len = positions.length; i < len; i++) {
113
+ commands.push(new CompositionSurroundSelectionCommand(positions[i], compositions[i].deletedText, config.surroundingPairs[ch]));
114
+ }
115
+ return new EditOperationResult(4 /* EditOperationType.TypingOther */, commands, {
116
+ shouldPushStackElementBefore: true,
117
+ shouldPushStackElementAfter: false
118
+ });
119
+ }
120
+ const autoClosingOvertypeEdits = AutoClosingOvertypeWithInterceptorsOperation.getEdits(config, model, selections, autoClosedCharacters, ch);
121
+ if (autoClosingOvertypeEdits !== undefined) {
122
+ return autoClosingOvertypeEdits;
123
+ }
124
+ const autoClosingOpenCharEdits = AutoClosingOpenCharTypeOperation.getEdits(config, model, selections, ch, true, false);
125
+ if (autoClosingOpenCharEdits !== undefined) {
126
+ return autoClosingOpenCharEdits;
127
+ }
128
+ return CompositionEndOvertypeOperation.getEdits(config, compositions);
129
+ }
130
+ static typeWithInterceptors(isDoingComposition, prevEditOperationType, config, model, selections, autoClosedCharacters, ch) {
131
+ const enterEdits = EnterOperation.getEdits(config, model, selections, ch, isDoingComposition);
132
+ if (enterEdits !== undefined) {
133
+ return enterEdits;
134
+ }
135
+ const autoIndentEdits = AutoIndentOperation.getEdits(config, model, selections, ch, isDoingComposition);
136
+ if (autoIndentEdits !== undefined) {
137
+ return autoIndentEdits;
138
+ }
139
+ const autoClosingOverTypeEdits = AutoClosingOvertypeOperation.getEdits(prevEditOperationType, config, model, selections, autoClosedCharacters, ch);
140
+ if (autoClosingOverTypeEdits !== undefined) {
141
+ return autoClosingOverTypeEdits;
142
+ }
143
+ const autoClosingOpenCharEdits = AutoClosingOpenCharTypeOperation.getEdits(config, model, selections, ch, false, isDoingComposition);
144
+ if (autoClosingOpenCharEdits !== undefined) {
145
+ return autoClosingOpenCharEdits;
146
+ }
147
+ const surroundSelectionEdits = SurroundSelectionOperation.getEdits(config, model, selections, ch, isDoingComposition);
148
+ if (surroundSelectionEdits !== undefined) {
149
+ return surroundSelectionEdits;
150
+ }
151
+ const interceptorElectricCharOperation = InterceptorElectricCharOperation.getEdits(prevEditOperationType, config, model, selections, ch, isDoingComposition);
152
+ if (interceptorElectricCharOperation !== undefined) {
153
+ return interceptorElectricCharOperation;
154
+ }
155
+ return SimpleCharacterTypeOperation.getEdits(config, prevEditOperationType, selections, ch, isDoingComposition);
156
+ }
157
+ static typeWithoutInterceptors(prevEditOperationType, config, model, selections, str) {
158
+ return TypeWithoutInterceptorsOperation.getEdits(prevEditOperationType, selections, str);
159
+ }
160
+ }
161
+ class CompositionOutcome {
162
+ constructor(deletedText, deletedSelectionStart, deletedSelectionEnd, insertedText, insertedSelectionStart, insertedSelectionEnd, insertedTextRange) {
163
+ this.deletedText = deletedText;
164
+ this.deletedSelectionStart = deletedSelectionStart;
165
+ this.deletedSelectionEnd = deletedSelectionEnd;
166
+ this.insertedText = insertedText;
167
+ this.insertedSelectionStart = insertedSelectionStart;
168
+ this.insertedSelectionEnd = insertedSelectionEnd;
169
+ this.insertedTextRange = insertedTextRange;
170
+ }
171
+ }
172
+
173
+ export { CompositionOutcome, TypeOperations };
@@ -0,0 +1,75 @@
1
+ function gotoNextSibling(newCursor, oldCursor) {
2
+ const n = newCursor.gotoNextSibling();
3
+ const o = oldCursor.gotoNextSibling();
4
+ if (n !== o) {
5
+ throw new Error('Trees are out of sync');
6
+ }
7
+ return n && o;
8
+ }
9
+ function gotoParent(newCursor, oldCursor) {
10
+ const n = newCursor.gotoParent();
11
+ const o = oldCursor.gotoParent();
12
+ if (n !== o) {
13
+ throw new Error('Trees are out of sync');
14
+ }
15
+ return n && o;
16
+ }
17
+ function gotoNthChild(newCursor, oldCursor, index) {
18
+ const n = newCursor.gotoFirstChild();
19
+ const o = oldCursor.gotoFirstChild();
20
+ if (n !== o) {
21
+ throw new Error('Trees are out of sync');
22
+ }
23
+ if (index === 0) {
24
+ return n && o;
25
+ }
26
+ for (let i = 1; i <= index; i++) {
27
+ const nn = newCursor.gotoNextSibling();
28
+ const oo = oldCursor.gotoNextSibling();
29
+ if (nn !== oo) {
30
+ throw new Error('Trees are out of sync');
31
+ }
32
+ if (!nn || !oo) {
33
+ return false;
34
+ }
35
+ }
36
+ return n && o;
37
+ }
38
+ function nextSiblingOrParentSibling(newCursor, oldCursor) {
39
+ do {
40
+ if (newCursor.currentNode.nextSibling) {
41
+ return gotoNextSibling(newCursor, oldCursor);
42
+ }
43
+ if (newCursor.currentNode.parent) {
44
+ gotoParent(newCursor, oldCursor);
45
+ }
46
+ } while (newCursor.currentNode.nextSibling || newCursor.currentNode.parent);
47
+ return false;
48
+ }
49
+ function getClosestPreviousNodes(cursor, tree) {
50
+ // Go up parents until the end of the parent is before the start of the current.
51
+ const findPrev = tree.walk();
52
+ findPrev.resetTo(cursor);
53
+ const startingNode = cursor.currentNode;
54
+ do {
55
+ if (findPrev.currentNode.previousSibling && ((findPrev.currentNode.endIndex - findPrev.currentNode.startIndex) !== 0)) {
56
+ findPrev.gotoPreviousSibling();
57
+ }
58
+ else {
59
+ while (!findPrev.currentNode.previousSibling && findPrev.currentNode.parent) {
60
+ findPrev.gotoParent();
61
+ }
62
+ findPrev.gotoPreviousSibling();
63
+ }
64
+ } while ((findPrev.currentNode.endIndex > startingNode.startIndex)
65
+ && (findPrev.currentNode.parent || findPrev.currentNode.previousSibling)
66
+ && (findPrev.currentNode.id !== startingNode.id));
67
+ if ((findPrev.currentNode.id !== startingNode.id) && findPrev.currentNode.endIndex <= startingNode.startIndex) {
68
+ return findPrev.currentNode;
69
+ }
70
+ else {
71
+ return undefined;
72
+ }
73
+ }
74
+
75
+ export { getClosestPreviousNodes, gotoNextSibling, gotoNthChild, gotoParent, nextSiblingOrParentSibling };