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,368 @@
1
+ import { Emitter } from '../../../base/common/event.js';
2
+ import { Disposable } from '../../../base/common/lifecycle.js';
3
+ import { Scrollable } from '../../../base/common/scrollable.js';
4
+ import { LinesLayout } from './linesLayout.js';
5
+ import { Viewport } from '../viewModel.js';
6
+ import { ContentSizeChangedEvent } from '../viewModelEventDispatcher.js';
7
+
8
+ /*---------------------------------------------------------------------------------------------
9
+ * Copyright (c) Microsoft Corporation. All rights reserved.
10
+ * Licensed under the MIT License. See License.txt in the project root for license information.
11
+ *--------------------------------------------------------------------------------------------*/
12
+ const SMOOTH_SCROLLING_TIME = 125;
13
+ class EditorScrollDimensions {
14
+ constructor(width, contentWidth, height, contentHeight) {
15
+ width = width | 0;
16
+ contentWidth = contentWidth | 0;
17
+ height = height | 0;
18
+ contentHeight = contentHeight | 0;
19
+ if (width < 0) {
20
+ width = 0;
21
+ }
22
+ if (contentWidth < 0) {
23
+ contentWidth = 0;
24
+ }
25
+ if (height < 0) {
26
+ height = 0;
27
+ }
28
+ if (contentHeight < 0) {
29
+ contentHeight = 0;
30
+ }
31
+ this.width = width;
32
+ this.contentWidth = contentWidth;
33
+ this.scrollWidth = Math.max(width, contentWidth);
34
+ this.height = height;
35
+ this.contentHeight = contentHeight;
36
+ this.scrollHeight = Math.max(height, contentHeight);
37
+ }
38
+ equals(other) {
39
+ return (this.width === other.width
40
+ && this.contentWidth === other.contentWidth
41
+ && this.height === other.height
42
+ && this.contentHeight === other.contentHeight);
43
+ }
44
+ }
45
+ class EditorScrollable extends Disposable {
46
+ constructor(smoothScrollDuration, scheduleAtNextAnimationFrame) {
47
+ super();
48
+ this._onDidContentSizeChange = this._register(new Emitter());
49
+ this.onDidContentSizeChange = this._onDidContentSizeChange.event;
50
+ this._dimensions = new EditorScrollDimensions(0, 0, 0, 0);
51
+ this._scrollable = this._register(new Scrollable({
52
+ forceIntegerValues: true,
53
+ smoothScrollDuration,
54
+ scheduleAtNextAnimationFrame
55
+ }));
56
+ this.onDidScroll = this._scrollable.onScroll;
57
+ }
58
+ getScrollable() {
59
+ return this._scrollable;
60
+ }
61
+ setSmoothScrollDuration(smoothScrollDuration) {
62
+ this._scrollable.setSmoothScrollDuration(smoothScrollDuration);
63
+ }
64
+ validateScrollPosition(scrollPosition) {
65
+ return this._scrollable.validateScrollPosition(scrollPosition);
66
+ }
67
+ getScrollDimensions() {
68
+ return this._dimensions;
69
+ }
70
+ setScrollDimensions(dimensions) {
71
+ if (this._dimensions.equals(dimensions)) {
72
+ return;
73
+ }
74
+ const oldDimensions = this._dimensions;
75
+ this._dimensions = dimensions;
76
+ this._scrollable.setScrollDimensions({
77
+ width: dimensions.width,
78
+ scrollWidth: dimensions.scrollWidth,
79
+ height: dimensions.height,
80
+ scrollHeight: dimensions.scrollHeight
81
+ }, true);
82
+ const contentWidthChanged = (oldDimensions.contentWidth !== dimensions.contentWidth);
83
+ const contentHeightChanged = (oldDimensions.contentHeight !== dimensions.contentHeight);
84
+ if (contentWidthChanged || contentHeightChanged) {
85
+ this._onDidContentSizeChange.fire(new ContentSizeChangedEvent(oldDimensions.contentWidth, oldDimensions.contentHeight, dimensions.contentWidth, dimensions.contentHeight));
86
+ }
87
+ }
88
+ getFutureScrollPosition() {
89
+ return this._scrollable.getFutureScrollPosition();
90
+ }
91
+ getCurrentScrollPosition() {
92
+ return this._scrollable.getCurrentScrollPosition();
93
+ }
94
+ setScrollPositionNow(update) {
95
+ this._scrollable.setScrollPositionNow(update);
96
+ }
97
+ setScrollPositionSmooth(update) {
98
+ this._scrollable.setScrollPositionSmooth(update);
99
+ }
100
+ hasPendingScrollAnimation() {
101
+ return this._scrollable.hasPendingScrollAnimation();
102
+ }
103
+ }
104
+ class ViewLayout extends Disposable {
105
+ constructor(configuration, lineCount, customLineHeightData, scheduleAtNextAnimationFrame) {
106
+ super();
107
+ this._configuration = configuration;
108
+ const options = this._configuration.options;
109
+ const layoutInfo = options.get(165 /* EditorOption.layoutInfo */);
110
+ const padding = options.get(96 /* EditorOption.padding */);
111
+ this._linesLayout = new LinesLayout(lineCount, options.get(75 /* EditorOption.lineHeight */), padding.top, padding.bottom, customLineHeightData);
112
+ this._maxLineWidth = 0;
113
+ this._overlayWidgetsMinWidth = 0;
114
+ this._scrollable = this._register(new EditorScrollable(0, scheduleAtNextAnimationFrame));
115
+ this._configureSmoothScrollDuration();
116
+ this._scrollable.setScrollDimensions(new EditorScrollDimensions(layoutInfo.contentWidth, 0, layoutInfo.height, 0));
117
+ this.onDidScroll = this._scrollable.onDidScroll;
118
+ this.onDidContentSizeChange = this._scrollable.onDidContentSizeChange;
119
+ this._updateHeight();
120
+ }
121
+ dispose() {
122
+ super.dispose();
123
+ }
124
+ getScrollable() {
125
+ return this._scrollable.getScrollable();
126
+ }
127
+ onHeightMaybeChanged() {
128
+ this._updateHeight();
129
+ }
130
+ _configureSmoothScrollDuration() {
131
+ this._scrollable.setSmoothScrollDuration(this._configuration.options.get(130 /* EditorOption.smoothScrolling */) ? SMOOTH_SCROLLING_TIME : 0);
132
+ }
133
+ // ---- begin view event handlers
134
+ onConfigurationChanged(e) {
135
+ const options = this._configuration.options;
136
+ if (e.hasChanged(75 /* EditorOption.lineHeight */)) {
137
+ this._linesLayout.setDefaultLineHeight(options.get(75 /* EditorOption.lineHeight */));
138
+ }
139
+ if (e.hasChanged(96 /* EditorOption.padding */)) {
140
+ const padding = options.get(96 /* EditorOption.padding */);
141
+ this._linesLayout.setPadding(padding.top, padding.bottom);
142
+ }
143
+ if (e.hasChanged(165 /* EditorOption.layoutInfo */)) {
144
+ const layoutInfo = options.get(165 /* EditorOption.layoutInfo */);
145
+ const width = layoutInfo.contentWidth;
146
+ const height = layoutInfo.height;
147
+ const scrollDimensions = this._scrollable.getScrollDimensions();
148
+ const contentWidth = scrollDimensions.contentWidth;
149
+ this._scrollable.setScrollDimensions(new EditorScrollDimensions(width, scrollDimensions.contentWidth, height, this._getContentHeight(width, height, contentWidth)));
150
+ }
151
+ else {
152
+ this._updateHeight();
153
+ }
154
+ if (e.hasChanged(130 /* EditorOption.smoothScrolling */)) {
155
+ this._configureSmoothScrollDuration();
156
+ }
157
+ }
158
+ onFlushed(lineCount, customLineHeightData) {
159
+ this._linesLayout.onFlushed(lineCount, customLineHeightData);
160
+ }
161
+ onLinesDeleted(fromLineNumber, toLineNumber) {
162
+ this._linesLayout.onLinesDeleted(fromLineNumber, toLineNumber);
163
+ }
164
+ onLinesInserted(fromLineNumber, toLineNumber) {
165
+ this._linesLayout.onLinesInserted(fromLineNumber, toLineNumber);
166
+ }
167
+ // ---- end view event handlers
168
+ _getHorizontalScrollbarHeight(width, scrollWidth) {
169
+ const options = this._configuration.options;
170
+ const scrollbar = options.get(117 /* EditorOption.scrollbar */);
171
+ if (scrollbar.horizontal === 2 /* ScrollbarVisibility.Hidden */) {
172
+ // horizontal scrollbar not visible
173
+ return 0;
174
+ }
175
+ if (width >= scrollWidth) {
176
+ // horizontal scrollbar not visible
177
+ return 0;
178
+ }
179
+ return scrollbar.horizontalScrollbarSize;
180
+ }
181
+ _getContentHeight(width, height, contentWidth) {
182
+ const options = this._configuration.options;
183
+ let result = this._linesLayout.getLinesTotalHeight();
184
+ if (options.get(119 /* EditorOption.scrollBeyondLastLine */)) {
185
+ result += Math.max(0, height - options.get(75 /* EditorOption.lineHeight */) - options.get(96 /* EditorOption.padding */).bottom);
186
+ }
187
+ else if (!options.get(117 /* EditorOption.scrollbar */).ignoreHorizontalScrollbarInContentHeight) {
188
+ result += this._getHorizontalScrollbarHeight(width, contentWidth);
189
+ }
190
+ return result;
191
+ }
192
+ _updateHeight() {
193
+ const scrollDimensions = this._scrollable.getScrollDimensions();
194
+ const width = scrollDimensions.width;
195
+ const height = scrollDimensions.height;
196
+ const contentWidth = scrollDimensions.contentWidth;
197
+ this._scrollable.setScrollDimensions(new EditorScrollDimensions(width, scrollDimensions.contentWidth, height, this._getContentHeight(width, height, contentWidth)));
198
+ }
199
+ // ---- Layouting logic
200
+ getCurrentViewport() {
201
+ const scrollDimensions = this._scrollable.getScrollDimensions();
202
+ const currentScrollPosition = this._scrollable.getCurrentScrollPosition();
203
+ return new Viewport(currentScrollPosition.scrollTop, currentScrollPosition.scrollLeft, scrollDimensions.width, scrollDimensions.height);
204
+ }
205
+ getFutureViewport() {
206
+ const scrollDimensions = this._scrollable.getScrollDimensions();
207
+ const currentScrollPosition = this._scrollable.getFutureScrollPosition();
208
+ return new Viewport(currentScrollPosition.scrollTop, currentScrollPosition.scrollLeft, scrollDimensions.width, scrollDimensions.height);
209
+ }
210
+ _computeContentWidth() {
211
+ const options = this._configuration.options;
212
+ const maxLineWidth = this._maxLineWidth;
213
+ const wrappingInfo = options.get(166 /* EditorOption.wrappingInfo */);
214
+ const fontInfo = options.get(59 /* EditorOption.fontInfo */);
215
+ const layoutInfo = options.get(165 /* EditorOption.layoutInfo */);
216
+ if (wrappingInfo.isViewportWrapping) {
217
+ const minimap = options.get(81 /* EditorOption.minimap */);
218
+ if (maxLineWidth > layoutInfo.contentWidth + fontInfo.typicalHalfwidthCharacterWidth) {
219
+ // This is a case where viewport wrapping is on, but the line extends above the viewport
220
+ if (minimap.enabled && minimap.side === 'right') {
221
+ // We need to accomodate the scrollbar width
222
+ return maxLineWidth + layoutInfo.verticalScrollbarWidth;
223
+ }
224
+ }
225
+ return maxLineWidth;
226
+ }
227
+ else {
228
+ const extraHorizontalSpace = options.get(118 /* EditorOption.scrollBeyondLastColumn */) * fontInfo.typicalHalfwidthCharacterWidth;
229
+ const whitespaceMinWidth = this._linesLayout.getWhitespaceMinWidth();
230
+ return Math.max(maxLineWidth + extraHorizontalSpace + layoutInfo.verticalScrollbarWidth, whitespaceMinWidth, this._overlayWidgetsMinWidth);
231
+ }
232
+ }
233
+ setMaxLineWidth(maxLineWidth) {
234
+ this._maxLineWidth = maxLineWidth;
235
+ this._updateContentWidth();
236
+ }
237
+ setOverlayWidgetsMinWidth(maxMinWidth) {
238
+ this._overlayWidgetsMinWidth = maxMinWidth;
239
+ this._updateContentWidth();
240
+ }
241
+ _updateContentWidth() {
242
+ const scrollDimensions = this._scrollable.getScrollDimensions();
243
+ this._scrollable.setScrollDimensions(new EditorScrollDimensions(scrollDimensions.width, this._computeContentWidth(), scrollDimensions.height, scrollDimensions.contentHeight));
244
+ // The height might depend on the fact that there is a horizontal scrollbar or not
245
+ this._updateHeight();
246
+ }
247
+ // ---- view state
248
+ saveState() {
249
+ const currentScrollPosition = this._scrollable.getFutureScrollPosition();
250
+ const scrollTop = currentScrollPosition.scrollTop;
251
+ const firstLineNumberInViewport = this._linesLayout.getLineNumberAtOrAfterVerticalOffset(scrollTop);
252
+ const whitespaceAboveFirstLine = this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(firstLineNumberInViewport);
253
+ return {
254
+ scrollTop: scrollTop,
255
+ scrollTopWithoutViewZones: scrollTop - whitespaceAboveFirstLine,
256
+ scrollLeft: currentScrollPosition.scrollLeft
257
+ };
258
+ }
259
+ // ----
260
+ changeWhitespace(callback) {
261
+ const hadAChange = this._linesLayout.changeWhitespace(callback);
262
+ if (hadAChange) {
263
+ this.onHeightMaybeChanged();
264
+ }
265
+ return hadAChange;
266
+ }
267
+ changeSpecialLineHeights(callback) {
268
+ const hadAChange = this._linesLayout.changeLineHeights(callback);
269
+ if (hadAChange) {
270
+ this.onHeightMaybeChanged();
271
+ }
272
+ return hadAChange;
273
+ }
274
+ getVerticalOffsetForLineNumber(lineNumber, includeViewZones = false) {
275
+ return this._linesLayout.getVerticalOffsetForLineNumber(lineNumber, includeViewZones);
276
+ }
277
+ getVerticalOffsetAfterLineNumber(lineNumber, includeViewZones = false) {
278
+ return this._linesLayout.getVerticalOffsetAfterLineNumber(lineNumber, includeViewZones);
279
+ }
280
+ getLineHeightForLineNumber(lineNumber) {
281
+ return this._linesLayout.getLineHeightForLineNumber(lineNumber);
282
+ }
283
+ isAfterLines(verticalOffset) {
284
+ return this._linesLayout.isAfterLines(verticalOffset);
285
+ }
286
+ isInTopPadding(verticalOffset) {
287
+ return this._linesLayout.isInTopPadding(verticalOffset);
288
+ }
289
+ isInBottomPadding(verticalOffset) {
290
+ return this._linesLayout.isInBottomPadding(verticalOffset);
291
+ }
292
+ getLineNumberAtVerticalOffset(verticalOffset) {
293
+ return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(verticalOffset);
294
+ }
295
+ getWhitespaceAtVerticalOffset(verticalOffset) {
296
+ return this._linesLayout.getWhitespaceAtVerticalOffset(verticalOffset);
297
+ }
298
+ getLinesViewportData() {
299
+ const visibleBox = this.getCurrentViewport();
300
+ return this._linesLayout.getLinesViewportData(visibleBox.top, visibleBox.top + visibleBox.height);
301
+ }
302
+ getLinesViewportDataAtScrollTop(scrollTop) {
303
+ // do some minimal validations on scrollTop
304
+ const scrollDimensions = this._scrollable.getScrollDimensions();
305
+ if (scrollTop + scrollDimensions.height > scrollDimensions.scrollHeight) {
306
+ scrollTop = scrollDimensions.scrollHeight - scrollDimensions.height;
307
+ }
308
+ if (scrollTop < 0) {
309
+ scrollTop = 0;
310
+ }
311
+ return this._linesLayout.getLinesViewportData(scrollTop, scrollTop + scrollDimensions.height);
312
+ }
313
+ getWhitespaceViewportData() {
314
+ const visibleBox = this.getCurrentViewport();
315
+ return this._linesLayout.getWhitespaceViewportData(visibleBox.top, visibleBox.top + visibleBox.height);
316
+ }
317
+ getWhitespaces() {
318
+ return this._linesLayout.getWhitespaces();
319
+ }
320
+ // ----
321
+ getContentWidth() {
322
+ const scrollDimensions = this._scrollable.getScrollDimensions();
323
+ return scrollDimensions.contentWidth;
324
+ }
325
+ getScrollWidth() {
326
+ const scrollDimensions = this._scrollable.getScrollDimensions();
327
+ return scrollDimensions.scrollWidth;
328
+ }
329
+ getContentHeight() {
330
+ const scrollDimensions = this._scrollable.getScrollDimensions();
331
+ return scrollDimensions.contentHeight;
332
+ }
333
+ getScrollHeight() {
334
+ const scrollDimensions = this._scrollable.getScrollDimensions();
335
+ return scrollDimensions.scrollHeight;
336
+ }
337
+ getCurrentScrollLeft() {
338
+ const currentScrollPosition = this._scrollable.getCurrentScrollPosition();
339
+ return currentScrollPosition.scrollLeft;
340
+ }
341
+ getCurrentScrollTop() {
342
+ const currentScrollPosition = this._scrollable.getCurrentScrollPosition();
343
+ return currentScrollPosition.scrollTop;
344
+ }
345
+ validateScrollPosition(scrollPosition) {
346
+ return this._scrollable.validateScrollPosition(scrollPosition);
347
+ }
348
+ setScrollPosition(position, type) {
349
+ if (type === 1 /* ScrollType.Immediate */) {
350
+ this._scrollable.setScrollPositionNow(position);
351
+ }
352
+ else {
353
+ this._scrollable.setScrollPositionSmooth(position);
354
+ }
355
+ }
356
+ hasPendingScrollAnimation() {
357
+ return this._scrollable.hasPendingScrollAnimation();
358
+ }
359
+ deltaScrollNow(deltaScrollLeft, deltaScrollTop) {
360
+ const currentScrollPosition = this._scrollable.getCurrentScrollPosition();
361
+ this._scrollable.setScrollPositionNow({
362
+ scrollLeft: currentScrollPosition.scrollLeft + deltaScrollLeft,
363
+ scrollTop: currentScrollPosition.scrollTop + deltaScrollTop
364
+ });
365
+ }
366
+ }
367
+
368
+ export { ViewLayout };