@theia/scm 1.67.0-next.56 → 1.67.0-next.59

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 (217) hide show
  1. package/lib/browser/decorations/scm-decorations-service.d.ts +21 -0
  2. package/lib/browser/decorations/scm-decorations-service.d.ts.map +1 -0
  3. package/lib/browser/decorations/scm-decorations-service.js +134 -0
  4. package/lib/browser/decorations/scm-decorations-service.js.map +1 -0
  5. package/lib/browser/decorations/scm-navigator-decorator.d.ts +26 -0
  6. package/lib/browser/decorations/scm-navigator-decorator.d.ts.map +1 -0
  7. package/lib/browser/decorations/scm-navigator-decorator.js +122 -0
  8. package/lib/browser/decorations/scm-navigator-decorator.js.map +1 -0
  9. package/lib/browser/dirty-diff/content-lines.d.ts +15 -0
  10. package/lib/browser/dirty-diff/content-lines.d.ts.map +1 -0
  11. package/lib/browser/dirty-diff/content-lines.js +114 -0
  12. package/lib/browser/dirty-diff/content-lines.js.map +1 -0
  13. package/lib/browser/dirty-diff/content-lines.spec.d.ts +2 -0
  14. package/lib/browser/dirty-diff/content-lines.spec.d.ts.map +1 -0
  15. package/lib/browser/dirty-diff/content-lines.spec.js +40 -0
  16. package/lib/browser/dirty-diff/content-lines.spec.js.map +1 -0
  17. package/lib/browser/dirty-diff/diff-computer.d.ts +39 -0
  18. package/lib/browser/dirty-diff/diff-computer.d.ts.map +1 -0
  19. package/lib/browser/dirty-diff/diff-computer.js +167 -0
  20. package/lib/browser/dirty-diff/diff-computer.js.map +1 -0
  21. package/lib/browser/dirty-diff/diff-computer.spec.d.ts +2 -0
  22. package/lib/browser/dirty-diff/diff-computer.spec.d.ts.map +1 -0
  23. package/lib/browser/dirty-diff/diff-computer.spec.js +384 -0
  24. package/lib/browser/dirty-diff/diff-computer.spec.js.map +1 -0
  25. package/lib/browser/dirty-diff/dirty-diff-decorator.d.ts +17 -0
  26. package/lib/browser/dirty-diff/dirty-diff-decorator.d.ts.map +1 -0
  27. package/lib/browser/dirty-diff/dirty-diff-decorator.js +101 -0
  28. package/lib/browser/dirty-diff/dirty-diff-decorator.js.map +1 -0
  29. package/lib/browser/dirty-diff/dirty-diff-module.d.ts +4 -0
  30. package/lib/browser/dirty-diff/dirty-diff-module.d.ts.map +1 -0
  31. package/lib/browser/dirty-diff/dirty-diff-module.js +34 -0
  32. package/lib/browser/dirty-diff/dirty-diff-module.js.map +1 -0
  33. package/lib/browser/dirty-diff/dirty-diff-navigator.d.ts +49 -0
  34. package/lib/browser/dirty-diff/dirty-diff-navigator.d.ts.map +1 -0
  35. package/lib/browser/dirty-diff/dirty-diff-navigator.js +295 -0
  36. package/lib/browser/dirty-diff/dirty-diff-navigator.js.map +1 -0
  37. package/lib/browser/dirty-diff/dirty-diff-widget.d.ts +50 -0
  38. package/lib/browser/dirty-diff/dirty-diff-widget.d.ts.map +1 -0
  39. package/lib/browser/dirty-diff/dirty-diff-widget.js +357 -0
  40. package/lib/browser/dirty-diff/dirty-diff-widget.js.map +1 -0
  41. package/lib/browser/merge-editor/merge-editor-contribution.d.ts +34 -0
  42. package/lib/browser/merge-editor/merge-editor-contribution.d.ts.map +1 -0
  43. package/lib/browser/merge-editor/merge-editor-contribution.js +335 -0
  44. package/lib/browser/merge-editor/merge-editor-contribution.js.map +1 -0
  45. package/lib/browser/merge-editor/merge-editor-dev-contribution.d.ts +31 -0
  46. package/lib/browser/merge-editor/merge-editor-dev-contribution.d.ts.map +1 -0
  47. package/lib/browser/merge-editor/merge-editor-dev-contribution.js +151 -0
  48. package/lib/browser/merge-editor/merge-editor-dev-contribution.js.map +1 -0
  49. package/lib/browser/merge-editor/merge-editor-module.d.ts +24 -0
  50. package/lib/browser/merge-editor/merge-editor-module.d.ts.map +1 -0
  51. package/lib/browser/merge-editor/merge-editor-module.js +109 -0
  52. package/lib/browser/merge-editor/merge-editor-module.js.map +1 -0
  53. package/lib/browser/merge-editor/merge-editor.d.ts +122 -0
  54. package/lib/browser/merge-editor/merge-editor.d.ts.map +1 -0
  55. package/lib/browser/merge-editor/merge-editor.js +560 -0
  56. package/lib/browser/merge-editor/merge-editor.js.map +1 -0
  57. package/lib/browser/merge-editor/model/line-range.d.ts +37 -0
  58. package/lib/browser/merge-editor/model/line-range.d.ts.map +1 -0
  59. package/lib/browser/merge-editor/model/line-range.js +111 -0
  60. package/lib/browser/merge-editor/model/line-range.js.map +1 -0
  61. package/lib/browser/merge-editor/model/live-diff.d.ts +26 -0
  62. package/lib/browser/merge-editor/model/live-diff.d.ts.map +1 -0
  63. package/lib/browser/merge-editor/model/live-diff.js +85 -0
  64. package/lib/browser/merge-editor/model/live-diff.js.map +1 -0
  65. package/lib/browser/merge-editor/model/merge-editor-model.d.ts +116 -0
  66. package/lib/browser/merge-editor/model/merge-editor-model.d.ts.map +1 -0
  67. package/lib/browser/merge-editor/model/merge-editor-model.js +507 -0
  68. package/lib/browser/merge-editor/model/merge-editor-model.js.map +1 -0
  69. package/lib/browser/merge-editor/model/merge-range.d.ts +50 -0
  70. package/lib/browser/merge-editor/model/merge-range.d.ts.map +1 -0
  71. package/lib/browser/merge-editor/model/merge-range.js +215 -0
  72. package/lib/browser/merge-editor/model/merge-range.js.map +1 -0
  73. package/lib/browser/merge-editor/model/range-editing.d.ts +21 -0
  74. package/lib/browser/merge-editor/model/range-editing.d.ts.map +1 -0
  75. package/lib/browser/merge-editor/model/range-editing.js +68 -0
  76. package/lib/browser/merge-editor/model/range-editing.js.map +1 -0
  77. package/lib/browser/merge-editor/model/range-mapping.d.ts +106 -0
  78. package/lib/browser/merge-editor/model/range-mapping.d.ts.map +1 -0
  79. package/lib/browser/merge-editor/model/range-mapping.js +252 -0
  80. package/lib/browser/merge-editor/model/range-mapping.js.map +1 -0
  81. package/lib/browser/merge-editor/model/range-mapping.spec.d.ts +2 -0
  82. package/lib/browser/merge-editor/model/range-mapping.spec.d.ts.map +1 -0
  83. package/lib/browser/merge-editor/model/range-mapping.spec.js +48 -0
  84. package/lib/browser/merge-editor/model/range-mapping.spec.js.map +1 -0
  85. package/lib/browser/merge-editor/model/range-utils.d.ts +25 -0
  86. package/lib/browser/merge-editor/model/range-utils.d.ts.map +1 -0
  87. package/lib/browser/merge-editor/model/range-utils.js +118 -0
  88. package/lib/browser/merge-editor/model/range-utils.js.map +1 -0
  89. package/lib/browser/merge-editor/view/diff-spacers.d.ts +50 -0
  90. package/lib/browser/merge-editor/view/diff-spacers.d.ts.map +1 -0
  91. package/lib/browser/merge-editor/view/diff-spacers.js +133 -0
  92. package/lib/browser/merge-editor/view/diff-spacers.js.map +1 -0
  93. package/lib/browser/merge-editor/view/merge-editor-panes/index.d.ts +6 -0
  94. package/lib/browser/merge-editor/view/merge-editor-panes/index.d.ts.map +1 -0
  95. package/lib/browser/merge-editor/view/merge-editor-panes/index.js +24 -0
  96. package/lib/browser/merge-editor/view/merge-editor-panes/index.js.map +1 -0
  97. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-base-pane.d.ts +12 -0
  98. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-base-pane.d.ts.map +1 -0
  99. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-base-pane.js +65 -0
  100. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-base-pane.js.map +1 -0
  101. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.d.ts +30 -0
  102. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.d.ts.map +1 -0
  103. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js +102 -0
  104. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane-header.js.map +1 -0
  105. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane.d.ts +49 -0
  106. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane.d.ts.map +1 -0
  107. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane.js +214 -0
  108. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-pane.js.map +1 -0
  109. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.d.ts +16 -0
  110. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.d.ts.map +1 -0
  111. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.js +107 -0
  112. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-result-pane.js.map +1 -0
  113. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.d.ts +27 -0
  114. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.d.ts.map +1 -0
  115. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.js +135 -0
  116. package/lib/browser/merge-editor/view/merge-editor-panes/merge-editor-side-pane.js.map +1 -0
  117. package/lib/browser/merge-editor/view/merge-editor-scroll-sync.d.ts +20 -0
  118. package/lib/browser/merge-editor/view/merge-editor-scroll-sync.d.ts.map +1 -0
  119. package/lib/browser/merge-editor/view/merge-editor-scroll-sync.js +218 -0
  120. package/lib/browser/merge-editor/view/merge-editor-scroll-sync.js.map +1 -0
  121. package/lib/browser/merge-editor/view/merge-editor-view-zones.d.ts +57 -0
  122. package/lib/browser/merge-editor/view/merge-editor-view-zones.d.ts.map +1 -0
  123. package/lib/browser/merge-editor/view/merge-editor-view-zones.js +218 -0
  124. package/lib/browser/merge-editor/view/merge-editor-view-zones.js.map +1 -0
  125. package/lib/browser/merge-editor/view/merge-range-actions.d.ts +23 -0
  126. package/lib/browser/merge-editor/view/merge-range-actions.d.ts.map +1 -0
  127. package/lib/browser/merge-editor/view/merge-range-actions.js +142 -0
  128. package/lib/browser/merge-editor/view/merge-range-actions.js.map +1 -0
  129. package/lib/browser/scm-amend-component.d.ts +124 -0
  130. package/lib/browser/scm-amend-component.d.ts.map +1 -0
  131. package/lib/browser/scm-amend-component.js +464 -0
  132. package/lib/browser/scm-amend-component.js.map +1 -0
  133. package/lib/browser/scm-amend-widget.d.ts +21 -0
  134. package/lib/browser/scm-amend-widget.d.ts.map +1 -0
  135. package/lib/browser/scm-amend-widget.js +91 -0
  136. package/lib/browser/scm-amend-widget.js.map +1 -0
  137. package/lib/browser/scm-avatar-service.d.ts +4 -0
  138. package/lib/browser/scm-avatar-service.d.ts.map +1 -0
  139. package/lib/browser/scm-avatar-service.js +32 -0
  140. package/lib/browser/scm-avatar-service.js.map +1 -0
  141. package/lib/browser/scm-colors.d.ts +8 -0
  142. package/lib/browser/scm-colors.d.ts.map +1 -0
  143. package/lib/browser/scm-colors.js +27 -0
  144. package/lib/browser/scm-colors.js.map +1 -0
  145. package/lib/browser/scm-commit-widget.d.ts +53 -0
  146. package/lib/browser/scm-commit-widget.d.ts.map +1 -0
  147. package/lib/browser/scm-commit-widget.js +188 -0
  148. package/lib/browser/scm-commit-widget.js.map +1 -0
  149. package/lib/browser/scm-context-key-service.d.ts +13 -0
  150. package/lib/browser/scm-context-key-service.d.ts.map +1 -0
  151. package/lib/browser/scm-context-key-service.js +55 -0
  152. package/lib/browser/scm-context-key-service.js.map +1 -0
  153. package/lib/browser/scm-contribution.d.ts +98 -0
  154. package/lib/browser/scm-contribution.d.ts.map +1 -0
  155. package/lib/browser/scm-contribution.js +480 -0
  156. package/lib/browser/scm-contribution.js.map +1 -0
  157. package/lib/browser/scm-frontend-module.d.ts +7 -0
  158. package/lib/browser/scm-frontend-module.d.ts.map +1 -0
  159. package/lib/browser/scm-frontend-module.js +129 -0
  160. package/lib/browser/scm-frontend-module.js.map +1 -0
  161. package/lib/browser/scm-groups-tree-model.d.ts +15 -0
  162. package/lib/browser/scm-groups-tree-model.d.ts.map +1 -0
  163. package/lib/browser/scm-groups-tree-model.js +90 -0
  164. package/lib/browser/scm-groups-tree-model.js.map +1 -0
  165. package/lib/browser/scm-input.d.ts +54 -0
  166. package/lib/browser/scm-input.d.ts.map +1 -0
  167. package/lib/browser/scm-input.js +128 -0
  168. package/lib/browser/scm-input.js.map +1 -0
  169. package/lib/browser/scm-layout-migrations.d.ts +10 -0
  170. package/lib/browser/scm-layout-migrations.d.ts.map +1 -0
  171. package/lib/browser/scm-layout-migrations.js +75 -0
  172. package/lib/browser/scm-layout-migrations.js.map +1 -0
  173. package/lib/browser/scm-no-repository-widget.d.ts +9 -0
  174. package/lib/browser/scm-no-repository-widget.d.ts.map +1 -0
  175. package/lib/browser/scm-no-repository-widget.js +42 -0
  176. package/lib/browser/scm-no-repository-widget.js.map +1 -0
  177. package/lib/browser/scm-provider.d.ts +60 -0
  178. package/lib/browser/scm-provider.d.ts.map +1 -0
  179. package/lib/browser/scm-provider.js +20 -0
  180. package/lib/browser/scm-provider.js.map +1 -0
  181. package/lib/browser/scm-quick-open-service.d.ts +12 -0
  182. package/lib/browser/scm-quick-open-service.d.ts.map +1 -0
  183. package/lib/browser/scm-quick-open-service.js +66 -0
  184. package/lib/browser/scm-quick-open-service.js.map +1 -0
  185. package/lib/browser/scm-repository.d.ts +18 -0
  186. package/lib/browser/scm-repository.d.ts.map +1 -0
  187. package/lib/browser/scm-repository.js +42 -0
  188. package/lib/browser/scm-repository.js.map +1 -0
  189. package/lib/browser/scm-service.d.ts +27 -0
  190. package/lib/browser/scm-service.d.ts.map +1 -0
  191. package/lib/browser/scm-service.js +101 -0
  192. package/lib/browser/scm-service.js.map +1 -0
  193. package/lib/browser/scm-tree-label-provider.d.ts +8 -0
  194. package/lib/browser/scm-tree-label-provider.d.ts.map +1 -0
  195. package/lib/browser/scm-tree-label-provider.js +50 -0
  196. package/lib/browser/scm-tree-label-provider.js.map +1 -0
  197. package/lib/browser/scm-tree-model.d.ts +76 -0
  198. package/lib/browser/scm-tree-model.d.ts.map +1 -0
  199. package/lib/browser/scm-tree-model.js +349 -0
  200. package/lib/browser/scm-tree-model.js.map +1 -0
  201. package/lib/browser/scm-tree-widget.d.ts +206 -0
  202. package/lib/browser/scm-tree-widget.d.ts.map +1 -0
  203. package/lib/browser/scm-tree-widget.js +677 -0
  204. package/lib/browser/scm-tree-widget.js.map +1 -0
  205. package/lib/browser/scm-widget.d.ts +42 -0
  206. package/lib/browser/scm-widget.d.ts.map +1 -0
  207. package/lib/browser/scm-widget.js +220 -0
  208. package/lib/browser/scm-widget.js.map +1 -0
  209. package/lib/common/scm-preferences.d.ts +12 -0
  210. package/lib/common/scm-preferences.d.ts.map +1 -0
  211. package/lib/common/scm-preferences.js +51 -0
  212. package/lib/common/scm-preferences.js.map +1 -0
  213. package/lib/node/scm-backend-module.d.ts +4 -0
  214. package/lib/node/scm-backend-module.d.ts.map +1 -0
  215. package/lib/node/scm-backend-module.js +23 -0
  216. package/lib/node/scm-backend-module.js.map +1 -0
  217. package/package.json +6 -6
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 1C-Soft LLC and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ /*---------------------------------------------------------------------------------------------
18
+ * Copyright (c) Microsoft Corporation. All rights reserved.
19
+ * Licensed under the MIT License. See License.txt in the project root for license information.
20
+ *--------------------------------------------------------------------------------------------*/
21
+ // copied and modified from https://github.com/microsoft/vscode/blob/1.96.3/src/vs/workbench/contrib/mergeEditor/browser/view/scrollSynchronizer.ts
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.MergeEditorScrollSync = void 0;
24
+ const core_1 = require("@theia/core");
25
+ class MergeEditorScrollSync {
26
+ constructor(mergeEditor) {
27
+ this.mergeEditor = mergeEditor;
28
+ this.toDispose = new core_1.DisposableCollection();
29
+ this.isSyncing = false;
30
+ const { side1Pane, side2Pane, resultPane, basePane } = mergeEditor;
31
+ const syncingHandler = (handler) => (event) => {
32
+ if (this.isSyncing) {
33
+ return;
34
+ }
35
+ this.isSyncing = true;
36
+ try {
37
+ handler(event);
38
+ }
39
+ finally {
40
+ this.isSyncing = false;
41
+ }
42
+ };
43
+ this.toDispose.push(side1Pane.editor.getControl().onDidScrollChange(syncingHandler(event => {
44
+ if (event.scrollTopChanged) {
45
+ this.handleSide1ScrollTopChanged(event.scrollTop);
46
+ }
47
+ if (event.scrollLeftChanged) {
48
+ basePane.editor.getControl().setScrollLeft(event.scrollLeft);
49
+ side2Pane.editor.getControl().setScrollLeft(event.scrollLeft);
50
+ resultPane.editor.getControl().setScrollLeft(event.scrollLeft);
51
+ }
52
+ })));
53
+ this.toDispose.push(side2Pane.editor.getControl().onDidScrollChange(syncingHandler(event => {
54
+ if (event.scrollTopChanged) {
55
+ this.handleSide2ScrollTopChanged(event.scrollTop);
56
+ }
57
+ if (event.scrollLeftChanged) {
58
+ basePane.editor.getControl().setScrollLeft(event.scrollLeft);
59
+ side1Pane.editor.getControl().setScrollLeft(event.scrollLeft);
60
+ resultPane.editor.getControl().setScrollLeft(event.scrollLeft);
61
+ }
62
+ })));
63
+ this.toDispose.push(resultPane.editor.getControl().onDidScrollChange(syncingHandler(event => {
64
+ if (event.scrollTopChanged) {
65
+ this.handleResultScrollTopChanged(event.scrollTop);
66
+ }
67
+ if (event.scrollLeftChanged) {
68
+ basePane.editor.getControl().setScrollLeft(event.scrollLeft);
69
+ side1Pane.editor.getControl().setScrollLeft(event.scrollLeft);
70
+ side2Pane.editor.getControl().setScrollLeft(event.scrollLeft);
71
+ }
72
+ })));
73
+ this.toDispose.push(basePane.editor.getControl().onDidScrollChange(syncingHandler(event => {
74
+ if (event.scrollTopChanged) {
75
+ this.handleBaseScrollTopChanged(event.scrollTop);
76
+ }
77
+ if (event.scrollLeftChanged) {
78
+ side1Pane.editor.getControl().setScrollLeft(event.scrollLeft);
79
+ side2Pane.editor.getControl().setScrollLeft(event.scrollLeft);
80
+ resultPane.editor.getControl().setScrollLeft(event.scrollLeft);
81
+ }
82
+ })));
83
+ }
84
+ dispose() {
85
+ this.toDispose.dispose();
86
+ }
87
+ storeScrollState() {
88
+ return this.mergeEditor.side1Pane.editor.getControl().getScrollTop();
89
+ }
90
+ restoreScrollState(state) {
91
+ if (typeof state === 'number') {
92
+ const scrollTop = this.mergeEditor.side1Pane.editor.getControl().getScrollTop();
93
+ if (state !== scrollTop) {
94
+ this.mergeEditor.side1Pane.editor.getControl().setScrollTop(state);
95
+ }
96
+ else {
97
+ this.update();
98
+ }
99
+ }
100
+ }
101
+ update() {
102
+ if (this.isSyncing) {
103
+ return;
104
+ }
105
+ this.isSyncing = true;
106
+ try {
107
+ const scrollTop = this.mergeEditor.side1Pane.editor.getControl().getScrollTop();
108
+ this.handleSide1ScrollTopChanged(scrollTop);
109
+ }
110
+ finally {
111
+ this.isSyncing = false;
112
+ }
113
+ }
114
+ handleSide1ScrollTopChanged(scrollTop) {
115
+ const { side1Pane, side2Pane, resultPane, basePane, shouldAlignBase, shouldAlignResult, model } = this.mergeEditor;
116
+ side2Pane.editor.getControl().setScrollTop(scrollTop);
117
+ if (shouldAlignResult) {
118
+ resultPane.editor.getControl().setScrollTop(scrollTop);
119
+ }
120
+ else {
121
+ const targetScrollTop = this.computeTargetScrollTop(side1Pane.editor, resultPane.editor, model.side1ToResultLineRangeMap);
122
+ resultPane.editor.getControl().setScrollTop(targetScrollTop);
123
+ }
124
+ if (shouldAlignBase) {
125
+ basePane.editor.getControl().setScrollTop(scrollTop);
126
+ }
127
+ else {
128
+ const targetScrollTop = this.computeTargetScrollTop(side1Pane.editor, basePane.editor, model.side1ToBaseLineRangeMap);
129
+ basePane.editor.getControl().setScrollTop(targetScrollTop);
130
+ }
131
+ }
132
+ handleSide2ScrollTopChanged(scrollTop) {
133
+ const { side1Pane, side2Pane, resultPane, basePane, shouldAlignBase, shouldAlignResult, model } = this.mergeEditor;
134
+ side1Pane.editor.getControl().setScrollTop(scrollTop);
135
+ if (shouldAlignResult) {
136
+ resultPane.editor.getControl().setScrollTop(scrollTop);
137
+ }
138
+ else {
139
+ const targetScrollTop = this.computeTargetScrollTop(side2Pane.editor, resultPane.editor, model.side2ToResultLineRangeMap);
140
+ resultPane.editor.getControl().setScrollTop(targetScrollTop);
141
+ }
142
+ if (shouldAlignBase) {
143
+ basePane.editor.getControl().setScrollTop(scrollTop);
144
+ }
145
+ else {
146
+ const targetScrollTop = this.computeTargetScrollTop(side2Pane.editor, basePane.editor, model.side2ToBaseLineRangeMap);
147
+ basePane.editor.getControl().setScrollTop(targetScrollTop);
148
+ }
149
+ }
150
+ handleResultScrollTopChanged(scrollTop) {
151
+ const { side1Pane, side2Pane, resultPane, basePane, shouldAlignBase, shouldAlignResult, model } = this.mergeEditor;
152
+ if (shouldAlignResult) {
153
+ side1Pane.editor.getControl().setScrollTop(scrollTop);
154
+ side2Pane.editor.getControl().setScrollTop(scrollTop);
155
+ }
156
+ else {
157
+ const targetScrollTop = this.computeTargetScrollTop(resultPane.editor, side1Pane.editor, model.resultToSide1LineRangeMap);
158
+ side1Pane.editor.getControl().setScrollTop(targetScrollTop);
159
+ side2Pane.editor.getControl().setScrollTop(targetScrollTop);
160
+ if (shouldAlignBase) {
161
+ basePane.editor.getControl().setScrollTop(targetScrollTop);
162
+ }
163
+ }
164
+ if (!shouldAlignBase) {
165
+ const targetScrollTop = this.computeTargetScrollTop(resultPane.editor, basePane.editor, model.resultToBaseLineRangeMap);
166
+ basePane.editor.getControl().setScrollTop(targetScrollTop);
167
+ }
168
+ }
169
+ handleBaseScrollTopChanged(scrollTop) {
170
+ const { side1Pane, side2Pane, resultPane, basePane, shouldAlignBase, shouldAlignResult, model } = this.mergeEditor;
171
+ if (shouldAlignBase) {
172
+ side1Pane.editor.getControl().setScrollTop(scrollTop);
173
+ side2Pane.editor.getControl().setScrollTop(scrollTop);
174
+ }
175
+ else {
176
+ const targetScrollTop = this.computeTargetScrollTop(basePane.editor, side1Pane.editor, model.baseToSide1LineRangeMap);
177
+ side1Pane.editor.getControl().setScrollTop(targetScrollTop);
178
+ side2Pane.editor.getControl().setScrollTop(targetScrollTop);
179
+ if (shouldAlignResult) {
180
+ resultPane.editor.getControl().setScrollTop(targetScrollTop);
181
+ }
182
+ }
183
+ if (!shouldAlignResult) {
184
+ const targetScrollTop = this.computeTargetScrollTop(basePane.editor, resultPane.editor, model.baseToResultLineRangeMap);
185
+ resultPane.editor.getControl().setScrollTop(targetScrollTop);
186
+ }
187
+ }
188
+ computeTargetScrollTop(sourceEditor, targetEditor, lineRangeMap) {
189
+ const visibleRanges = sourceEditor.getVisibleRanges();
190
+ if (visibleRanges.length === 0) {
191
+ return 0;
192
+ }
193
+ const topLineNumber = visibleRanges[0].start.line;
194
+ const scrollTop = sourceEditor.getControl().getScrollTop();
195
+ let sourceStartTopPx;
196
+ let sourceEndPx;
197
+ let targetStartTopPx;
198
+ let targetEndPx;
199
+ if (topLineNumber === 0 && scrollTop <= sourceEditor.getControl().getTopForLineNumber(1)) { // special case: scrollTop is before or at the top of the first line
200
+ sourceStartTopPx = 0;
201
+ sourceEndPx = sourceEditor.getControl().getTopForLineNumber(1);
202
+ targetStartTopPx = 0;
203
+ targetEndPx = targetEditor.getControl().getTopForLineNumber(1);
204
+ }
205
+ else {
206
+ const { originalRange: sourceRange, modifiedRange: targetRange } = lineRangeMap.projectLine(Math.max(topLineNumber - 1, 0));
207
+ sourceStartTopPx = sourceEditor.getControl().getTopForLineNumber(sourceRange.startLineNumber + 1);
208
+ sourceEndPx = sourceEditor.getControl().getTopForLineNumber(sourceRange.endLineNumberExclusive + 1);
209
+ targetStartTopPx = targetEditor.getControl().getTopForLineNumber(targetRange.startLineNumber + 1);
210
+ targetEndPx = targetEditor.getControl().getTopForLineNumber(targetRange.endLineNumberExclusive + 1);
211
+ }
212
+ const factor = Math.min(sourceEndPx === sourceStartTopPx ? 0 : (scrollTop - sourceStartTopPx) / (sourceEndPx - sourceStartTopPx), 1);
213
+ const targetScrollTop = targetStartTopPx + (targetEndPx - targetStartTopPx) * factor;
214
+ return targetScrollTop;
215
+ }
216
+ }
217
+ exports.MergeEditorScrollSync = MergeEditorScrollSync;
218
+ //# sourceMappingURL=merge-editor-scroll-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-editor-scroll-sync.js","sourceRoot":"","sources":["../../../../src/browser/merge-editor/view/merge-editor-scroll-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { Disposable } from '@theia/core';
2
+ import { Observable } from '@theia/core/lib/common/observable';
3
+ import { MonacoEditorViewZone } from '@theia/monaco/lib/browser/monaco-editor-zone-widget';
4
+ import { MergeEditor } from '../merge-editor';
5
+ import { MergeRange } from '../model/merge-range';
6
+ import { MergeRangeAction, MergeRangeActions } from './merge-range-actions';
7
+ import { MergeEditorPane } from './merge-editor-panes';
8
+ import { DiffSpacerService } from './diff-spacers';
9
+ export interface MergeEditorViewZone {
10
+ create(ctx: MergeEditorViewZone.CreationContext): void;
11
+ }
12
+ export declare namespace MergeEditorViewZone {
13
+ interface CreationContext {
14
+ createViewZone(viewZone: Omit<MonacoEditorViewZone, 'id'>): void;
15
+ register(disposable: Disposable): void;
16
+ }
17
+ }
18
+ export interface MergeEditorViewZones {
19
+ readonly baseViewZones: readonly MergeEditorViewZone[];
20
+ readonly side1ViewZones: readonly MergeEditorViewZone[];
21
+ readonly side2ViewZones: readonly MergeEditorViewZone[];
22
+ readonly resultViewZones: readonly MergeEditorViewZone[];
23
+ }
24
+ export declare class MergeEditorViewZoneComputer {
25
+ protected readonly diffSpacerService: DiffSpacerService;
26
+ computeViewZones(mergeEditor: MergeEditor): MergeEditorViewZones;
27
+ protected createSpacerZones(spacers: number[], viewZones: MergeEditorViewZone[]): void;
28
+ protected newMergeRangeActions(mergeEditor: MergeEditor, mergeRange: MergeRange): MergeRangeActions;
29
+ protected getActionZoneMinHeight(pane: MergeEditorPane): number;
30
+ protected newActionZone(pane: MergeEditorPane, actions: Observable<readonly MergeRangeAction[]>, afterLineNumber: number, heightInPx: number): MergeEditorViewZone;
31
+ protected newActionZonePlaceholder(afterLineNumber: number, heightInPx: number): MergeEditorViewZone;
32
+ protected newSpacerZone(afterLineNumber: number, heightInLines: number): MergeEditorViewZone;
33
+ }
34
+ export declare class MergeEditorActionZone implements MergeEditorViewZone {
35
+ protected readonly pane: MergeEditorPane;
36
+ protected readonly actionsObservable: Observable<readonly MergeRangeAction[]>;
37
+ protected readonly afterLineNumber: number;
38
+ protected readonly heightInPx: number;
39
+ protected static counter: number;
40
+ constructor(pane: MergeEditorPane, actionsObservable: Observable<readonly MergeRangeAction[]>, afterLineNumber: number, heightInPx: number);
41
+ create(ctx: MergeEditorViewZone.CreationContext): void;
42
+ protected renderActions(parent: HTMLElement, actions: readonly MergeRangeAction[]): void;
43
+ protected getActionTitle(action: MergeRangeAction): string;
44
+ }
45
+ export declare class MergeEditorActionZonePlaceholder implements MergeEditorViewZone {
46
+ protected readonly afterLineNumber: number;
47
+ protected readonly heightInPx: number;
48
+ constructor(afterLineNumber: number, heightInPx: number);
49
+ create(ctx: MergeEditorViewZone.CreationContext): void;
50
+ }
51
+ export declare class MergeEditorSpacerZone implements MergeEditorViewZone {
52
+ protected readonly afterLineNumber: number;
53
+ protected readonly heightInLines: number;
54
+ constructor(afterLineNumber: number, heightInLines: number);
55
+ create(ctx: MergeEditorViewZone.CreationContext): void;
56
+ }
57
+ //# sourceMappingURL=merge-editor-view-zones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-editor-view-zones.d.ts","sourceRoot":"","sources":["../../../../src/browser/merge-editor/view/merge-editor-view-zones.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 1C-Soft LLC and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.MergeEditorSpacerZone = exports.MergeEditorActionZonePlaceholder = exports.MergeEditorActionZone = exports.MergeEditorViewZoneComputer = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const core_1 = require("@theia/core");
22
+ const observable_1 = require("@theia/core/lib/common/observable");
23
+ const monaco = require("@theia/monaco-editor-core");
24
+ const merge_range_actions_1 = require("./merge-range-actions");
25
+ const diff_spacers_1 = require("./diff-spacers");
26
+ let MergeEditorViewZoneComputer = class MergeEditorViewZoneComputer {
27
+ computeViewZones(mergeEditor) {
28
+ const baseViewZones = [];
29
+ const side1ViewZones = [];
30
+ const side2ViewZones = [];
31
+ const resultViewZones = [];
32
+ const { model, shouldAlignResult, shouldAlignBase } = mergeEditor;
33
+ for (const mergeRange of model.mergeRanges) {
34
+ const { side1Pane, side2Pane, resultPane } = mergeEditor;
35
+ const actions = this.newMergeRangeActions(mergeEditor, mergeRange);
36
+ let resultActionZoneHeight = this.getActionZoneMinHeight(resultPane);
37
+ if (actions.hasSideActions || (shouldAlignResult && actions.hasResultActions)) {
38
+ let actionZoneHeight = Math.max(this.getActionZoneMinHeight(side1Pane), this.getActionZoneMinHeight(side2Pane));
39
+ if (shouldAlignResult) {
40
+ resultActionZoneHeight = actionZoneHeight = Math.max(actionZoneHeight, resultActionZoneHeight);
41
+ }
42
+ side1ViewZones.push(this.newActionZone(side1Pane, actions.side1ActionsObservable, mergeRange.side1Range.startLineNumber - 1, actionZoneHeight));
43
+ side2ViewZones.push(this.newActionZone(side2Pane, actions.side2ActionsObservable, mergeRange.side2Range.startLineNumber - 1, actionZoneHeight));
44
+ if (shouldAlignBase) {
45
+ baseViewZones.push(this.newActionZonePlaceholder(mergeRange.baseRange.startLineNumber - 1, actionZoneHeight));
46
+ }
47
+ }
48
+ if (actions.hasResultActions) {
49
+ resultViewZones.push(this.newActionZone(resultPane, actions.resultActionsObservable, model.getLineRangeInResult(mergeRange).startLineNumber - 1, resultActionZoneHeight));
50
+ }
51
+ else if (shouldAlignResult && actions.hasSideActions) {
52
+ resultViewZones.push(this.newActionZonePlaceholder(model.getLineRangeInResult(mergeRange).startLineNumber - 1, resultActionZoneHeight));
53
+ }
54
+ }
55
+ const baseLineCount = model.baseDocument.lineCount;
56
+ const multiDiffSpacers = [];
57
+ multiDiffSpacers.push(this.diffSpacerService.computeDiffSpacers(model.side1Changes, baseLineCount));
58
+ multiDiffSpacers.push(this.diffSpacerService.computeDiffSpacers(model.side2Changes, baseLineCount));
59
+ if (shouldAlignResult) {
60
+ multiDiffSpacers.push(this.diffSpacerService.computeDiffSpacers(model.resultChanges, baseLineCount));
61
+ }
62
+ const combinedMultiDiffSpacers = this.diffSpacerService.combineMultiDiffSpacers(multiDiffSpacers);
63
+ if (shouldAlignBase) {
64
+ this.createSpacerZones(combinedMultiDiffSpacers.originalSpacers, baseViewZones);
65
+ }
66
+ const { modifiedSides } = shouldAlignBase ? combinedMultiDiffSpacers : this.diffSpacerService.excludeOriginalSide(combinedMultiDiffSpacers);
67
+ this.createSpacerZones(modifiedSides[0].modifiedSpacers, side1ViewZones);
68
+ this.createSpacerZones(modifiedSides[1].modifiedSpacers, side2ViewZones);
69
+ if (shouldAlignResult) {
70
+ this.createSpacerZones(modifiedSides[2].modifiedSpacers, resultViewZones);
71
+ }
72
+ return { baseViewZones, side1ViewZones, side2ViewZones, resultViewZones };
73
+ }
74
+ createSpacerZones(spacers, viewZones) {
75
+ const lineNumbers = Object.keys(spacers).map(Number); // note: spacers is a sparse array
76
+ for (const lineNumber of lineNumbers) {
77
+ const heightInLines = spacers[lineNumber];
78
+ if (heightInLines) {
79
+ viewZones.push(this.newSpacerZone(lineNumber - 1, heightInLines));
80
+ }
81
+ }
82
+ }
83
+ newMergeRangeActions(mergeEditor, mergeRange) {
84
+ return new merge_range_actions_1.MergeRangeActions(mergeEditor, mergeRange);
85
+ }
86
+ getActionZoneMinHeight(pane) {
87
+ return pane.editor.getControl().getOption(monaco.editor.EditorOption.lineHeight);
88
+ }
89
+ newActionZone(pane, actions, afterLineNumber, heightInPx) {
90
+ return new MergeEditorActionZone(pane, actions, afterLineNumber, heightInPx);
91
+ }
92
+ newActionZonePlaceholder(afterLineNumber, heightInPx) {
93
+ return new MergeEditorActionZonePlaceholder(afterLineNumber, heightInPx);
94
+ }
95
+ newSpacerZone(afterLineNumber, heightInLines) {
96
+ return new MergeEditorSpacerZone(afterLineNumber, heightInLines);
97
+ }
98
+ };
99
+ exports.MergeEditorViewZoneComputer = MergeEditorViewZoneComputer;
100
+ tslib_1.__decorate([
101
+ (0, inversify_1.inject)(diff_spacers_1.DiffSpacerService),
102
+ tslib_1.__metadata("design:type", diff_spacers_1.DiffSpacerService)
103
+ ], MergeEditorViewZoneComputer.prototype, "diffSpacerService", void 0);
104
+ exports.MergeEditorViewZoneComputer = MergeEditorViewZoneComputer = tslib_1.__decorate([
105
+ (0, inversify_1.injectable)()
106
+ ], MergeEditorViewZoneComputer);
107
+ class MergeEditorActionZone {
108
+ constructor(pane, actionsObservable, afterLineNumber, heightInPx) {
109
+ this.pane = pane;
110
+ this.actionsObservable = actionsObservable;
111
+ this.afterLineNumber = afterLineNumber;
112
+ this.heightInPx = heightInPx;
113
+ }
114
+ create(ctx) {
115
+ const overlayWidgetNode = document.createElement('div');
116
+ overlayWidgetNode.className = 'action-zone';
117
+ ctx.createViewZone({
118
+ domNode: document.createElement('div'),
119
+ afterLineNumber: this.afterLineNumber + 1, // + 1, since line numbers in Monaco are 1-based
120
+ heightInPx: this.heightInPx,
121
+ onComputedHeight: height => overlayWidgetNode.style.height = `${height}px`,
122
+ onDomNodeTop: top => overlayWidgetNode.style.top = `${top}px`
123
+ });
124
+ const editor = this.pane.editor.getControl();
125
+ const setLeftPosition = () => overlayWidgetNode.style.left = editor.getLayoutInfo().contentLeft + 'px';
126
+ setLeftPosition();
127
+ ctx.register(editor.onDidLayoutChange(setLeftPosition));
128
+ const overlayWidgetId = `mergeEditorActionZone${MergeEditorActionZone.counter++}`;
129
+ const overlayWidget = {
130
+ getId: () => overlayWidgetId,
131
+ getDomNode: () => overlayWidgetNode,
132
+ // eslint-disable-next-line no-null/no-null
133
+ getPosition: () => null
134
+ };
135
+ editor.addOverlayWidget(overlayWidget);
136
+ ctx.register(core_1.Disposable.create(() => {
137
+ editor.removeOverlayWidget(overlayWidget);
138
+ }));
139
+ const actionContainer = document.createElement('div');
140
+ actionContainer.className = 'codelens-decoration';
141
+ overlayWidgetNode.appendChild(actionContainer);
142
+ ctx.register(observable_1.Autorun.create(() => this.renderActions(actionContainer, this.actionsObservable.get())));
143
+ }
144
+ ;
145
+ renderActions(parent, actions) {
146
+ const children = [];
147
+ let isFirst = true;
148
+ for (const action of actions) {
149
+ if (isFirst) {
150
+ isFirst = false;
151
+ }
152
+ else {
153
+ const actionSeparator = document.createElement('span');
154
+ actionSeparator.append('\u00a0|\u00a0');
155
+ children.push(actionSeparator);
156
+ }
157
+ const title = this.getActionTitle(action);
158
+ if (action.run) {
159
+ const actionLink = document.createElement('a');
160
+ actionLink.role = 'button';
161
+ actionLink.onclick = () => action.run();
162
+ if (action.tooltip) {
163
+ actionLink.title = action.tooltip;
164
+ }
165
+ actionLink.append(title);
166
+ children.push(actionLink);
167
+ }
168
+ else {
169
+ const actionLabel = document.createElement('span');
170
+ if (action.tooltip) {
171
+ actionLabel.title = action.tooltip;
172
+ }
173
+ actionLabel.append(title);
174
+ children.push(actionLabel);
175
+ }
176
+ }
177
+ parent.innerText = ''; // reset children
178
+ parent.append(...children);
179
+ }
180
+ getActionTitle(action) {
181
+ return action.text;
182
+ }
183
+ }
184
+ exports.MergeEditorActionZone = MergeEditorActionZone;
185
+ MergeEditorActionZone.counter = 0;
186
+ class MergeEditorActionZonePlaceholder {
187
+ constructor(afterLineNumber, heightInPx) {
188
+ this.afterLineNumber = afterLineNumber;
189
+ this.heightInPx = heightInPx;
190
+ }
191
+ create(ctx) {
192
+ const domNode = document.createElement('div');
193
+ domNode.className = 'action-zone-placeholder';
194
+ ctx.createViewZone({
195
+ afterLineNumber: this.afterLineNumber + 1, // + 1, since line numbers in Monaco are 1-based
196
+ heightInPx: this.heightInPx,
197
+ domNode
198
+ });
199
+ }
200
+ }
201
+ exports.MergeEditorActionZonePlaceholder = MergeEditorActionZonePlaceholder;
202
+ class MergeEditorSpacerZone {
203
+ constructor(afterLineNumber, heightInLines) {
204
+ this.afterLineNumber = afterLineNumber;
205
+ this.heightInLines = heightInLines;
206
+ }
207
+ create(ctx) {
208
+ const domNode = document.createElement('div');
209
+ domNode.className = 'diagonal-fill';
210
+ ctx.createViewZone({
211
+ afterLineNumber: this.afterLineNumber + 1, // + 1, since line numbers in Monaco are 1-based
212
+ heightInLines: this.heightInLines,
213
+ domNode
214
+ });
215
+ }
216
+ }
217
+ exports.MergeEditorSpacerZone = MergeEditorSpacerZone;
218
+ //# sourceMappingURL=merge-editor-view-zones.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-editor-view-zones.js","sourceRoot":"","sources":["../../../../src/browser/merge-editor/view/merge-editor-view-zones.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { MergeRange, MergeRangeAcceptedState, MergeSide } from '../model/merge-range';
2
+ import { MergeEditor } from '../merge-editor';
3
+ export interface MergeRangeAction {
4
+ readonly text: string;
5
+ readonly tooltip?: string;
6
+ run?(): unknown;
7
+ }
8
+ export declare class MergeRangeActions {
9
+ protected readonly mergeEditor: MergeEditor;
10
+ protected readonly mergeRange: MergeRange;
11
+ readonly side1ActionsObservable: import("@theia/core/lib/common/observable").Observable<readonly MergeRangeAction[], void>;
12
+ readonly side2ActionsObservable: import("@theia/core/lib/common/observable").Observable<readonly MergeRangeAction[], void>;
13
+ readonly resultActionsObservable: import("@theia/core/lib/common/observable").Observable<readonly MergeRangeAction[], void>;
14
+ protected readonly hasSideActionsObservable: import("@theia/core/lib/common/observable").Observable<boolean, void>;
15
+ get hasSideActions(): boolean;
16
+ protected readonly hasResultActionsObservable: import("@theia/core/lib/common/observable").Observable<boolean, void>;
17
+ get hasResultActions(): boolean;
18
+ constructor(mergeEditor: MergeEditor, mergeRange: MergeRange);
19
+ protected getActionsForSide(side: MergeSide): readonly MergeRangeAction[];
20
+ protected getResultActions(): readonly MergeRangeAction[];
21
+ protected applyMergeRangeAcceptedState(mergeRange: MergeRange, state: MergeRangeAcceptedState): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=merge-range-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-range-actions.d.ts","sourceRoot":"","sources":["../../../../src/browser/merge-editor/view/merge-range-actions.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,IAAI,OAAO,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAatB,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;IAZ7C,QAAQ,CAAC,sBAAsB,4FAA6D;IAC5F,QAAQ,CAAC,sBAAsB,4FAA6D;IAC5F,QAAQ,CAAC,uBAAuB,4FAA2D;IAE3F,SAAS,CAAC,QAAQ,CAAC,wBAAwB,wEAA2H;IACtK,IAAI,cAAc,IAAI,OAAO,CAAgD;IAE7E,SAAS,CAAC,QAAQ,CAAC,0BAA0B,wEAAiF;IAC9H,IAAI,gBAAgB,IAAI,OAAO,CAAkD;gBAG1D,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU;IAG7C,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,gBAAgB,EAAE;IAmCzE,SAAS,CAAC,gBAAgB,IAAI,SAAS,gBAAgB,EAAE;cAiEzC,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAStH"}