@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,507 @@
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/model/mergeEditorModel.ts,
22
+ // https://github.com/microsoft/vscode/blob/1.96.3/src/vs/workbench/contrib/mergeEditor/browser/view/viewModel.ts
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.MergeRangeData = exports.MergeEditorModel = exports.MergeEditorModelProps = void 0;
25
+ const tslib_1 = require("tslib");
26
+ const inversify_1 = require("@theia/core/shared/inversify");
27
+ const core_1 = require("@theia/core");
28
+ const observable_1 = require("@theia/core/lib/common/observable");
29
+ const diff_1 = require("@theia/core/lib/common/diff");
30
+ const monaco_to_protocol_converter_1 = require("@theia/monaco/lib/browser/monaco-to-protocol-converter");
31
+ const merge_range_1 = require("./merge-range");
32
+ const range_mapping_1 = require("./range-mapping");
33
+ const live_diff_1 = require("./live-diff");
34
+ const line_range_1 = require("./line-range");
35
+ const range_editing_1 = require("./range-editing");
36
+ exports.MergeEditorModelProps = Symbol('MergeEditorModelProps');
37
+ let MergeEditorModel = class MergeEditorModel {
38
+ constructor() {
39
+ this.toDispose = new core_1.DisposableCollection();
40
+ this.shouldRecomputeHandledState = true;
41
+ this.mergeRangesObservable = observable_1.DerivedObservable.create(() => this.computeMergeRanges());
42
+ this.mergeRangesDataObservable = observable_1.DerivedObservable.create(() => new Map(this.mergeRanges.map(mergeRange => [mergeRange, this.newMergeRangeData()])));
43
+ // #region Line Range Mapping
44
+ this.side1ToResultLineRangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentLineRangeMap(this.computeSideToResultDiff(this.side1Changes, this.resultChanges)));
45
+ this.resultToSide1LineRangeMapObservable = observable_1.DerivedObservable.create(() => this.side1ToResultLineRangeMap.reverse());
46
+ this.side2ToResultLineRangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentLineRangeMap(this.computeSideToResultDiff(this.side2Changes, this.resultChanges)));
47
+ this.resultToSide2LineRangeMapObservable = observable_1.DerivedObservable.create(() => this.side2ToResultLineRangeMap.reverse());
48
+ this.baseToSide1LineRangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentLineRangeMap(this.side1Changes));
49
+ this.side1ToBaseLineRangeMapObservable = observable_1.DerivedObservable.create(() => this.baseToSide1LineRangeMap.reverse());
50
+ this.baseToSide2LineRangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentLineRangeMap(this.side2Changes));
51
+ this.side2ToBaseLineRangeMapObservable = observable_1.DerivedObservable.create(() => this.baseToSide2LineRangeMap.reverse());
52
+ this.baseToResultLineRangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentLineRangeMap(this.resultChanges));
53
+ this.resultToBaseLineRangeMapObservable = observable_1.DerivedObservable.create(() => this.baseToResultLineRangeMap.reverse());
54
+ // #endregion
55
+ // #region Range Mapping
56
+ this.baseToSide1RangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentRangeMap(this.side1Changes.flatMap(change => change.rangeMappings)));
57
+ this.side1ToBaseRangeMapObservable = observable_1.DerivedObservable.create(() => this.baseToSide1RangeMap.reverse());
58
+ this.baseToSide2RangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentRangeMap(this.side2Changes.flatMap(change => change.rangeMappings)));
59
+ this.side2ToBaseRangeMapObservable = observable_1.DerivedObservable.create(() => this.baseToSide2RangeMap.reverse());
60
+ this.baseToResultRangeMapObservable = observable_1.DerivedObservable.create(() => this.newDocumentRangeMap(this.resultChanges.flatMap(change => change.rangeMappings)));
61
+ this.resultToBaseRangeMapObservable = observable_1.DerivedObservable.create(() => this.baseToResultRangeMap.reverse());
62
+ // #endregion
63
+ this.diffComputingStateObservable = observable_1.DerivedObservable.create(() => this.getDiffComputingState(this.side1LiveDiff, this.side2LiveDiff, this.resultLiveDiff));
64
+ this.diffComputingStateForSidesObservable = observable_1.DerivedObservable.create(() => this.getDiffComputingState(this.side1LiveDiff, this.side2LiveDiff));
65
+ this.isUpToDateObservable = observable_1.DerivedObservable.create(() => this.diffComputingStateObservable.get() === 1 /* DiffComputingState.UpToDate */);
66
+ this.unhandledMergeRangesCountObservable = observable_1.DerivedObservable.create(() => {
67
+ let result = 0;
68
+ const mergeRangesData = this.mergeRangesDataObservable.get();
69
+ for (const mergeRangeData of mergeRangesData.values()) {
70
+ if (!mergeRangeData.isHandledObservable.get()) {
71
+ result++;
72
+ }
73
+ }
74
+ return result;
75
+ });
76
+ }
77
+ get mergeRanges() {
78
+ return this.mergeRangesObservable.get();
79
+ }
80
+ get side1ToResultLineRangeMap() {
81
+ return this.side1ToResultLineRangeMapObservable.get();
82
+ }
83
+ get resultToSide1LineRangeMap() {
84
+ return this.resultToSide1LineRangeMapObservable.get();
85
+ }
86
+ get side2ToResultLineRangeMap() {
87
+ return this.side2ToResultLineRangeMapObservable.get();
88
+ }
89
+ get resultToSide2LineRangeMap() {
90
+ return this.resultToSide2LineRangeMapObservable.get();
91
+ }
92
+ get baseToSide1LineRangeMap() {
93
+ return this.baseToSide1LineRangeMapObservable.get();
94
+ }
95
+ get side1ToBaseLineRangeMap() {
96
+ return this.side1ToBaseLineRangeMapObservable.get();
97
+ }
98
+ get baseToSide2LineRangeMap() {
99
+ return this.baseToSide2LineRangeMapObservable.get();
100
+ }
101
+ get side2ToBaseLineRangeMap() {
102
+ return this.side2ToBaseLineRangeMapObservable.get();
103
+ }
104
+ get baseToResultLineRangeMap() {
105
+ return this.baseToResultLineRangeMapObservable.get();
106
+ }
107
+ get resultToBaseLineRangeMap() {
108
+ return this.resultToBaseLineRangeMapObservable.get();
109
+ }
110
+ get baseToSide1RangeMap() {
111
+ return this.baseToSide1RangeMapObservable.get();
112
+ }
113
+ get side1ToBaseRangeMap() {
114
+ return this.side1ToBaseRangeMapObservable.get();
115
+ }
116
+ get baseToSide2RangeMap() {
117
+ return this.baseToSide2RangeMapObservable.get();
118
+ }
119
+ get side2ToBaseRangeMap() {
120
+ return this.side2ToBaseRangeMapObservable.get();
121
+ }
122
+ get baseToResultRangeMap() {
123
+ return this.baseToResultRangeMapObservable.get();
124
+ }
125
+ get resultToBaseRangeMap() {
126
+ return this.resultToBaseRangeMapObservable.get();
127
+ }
128
+ get unhandledMergeRangesCount() {
129
+ return this.unhandledMergeRangesCountObservable.get();
130
+ }
131
+ get onInitialized() {
132
+ return this._onInitialized;
133
+ }
134
+ get baseDocument() {
135
+ return this.props.baseEditor.document;
136
+ }
137
+ get side1Document() {
138
+ return this.props.side1Editor.document;
139
+ }
140
+ get side2Document() {
141
+ return this.props.side2Editor.document;
142
+ }
143
+ get resultDocument() {
144
+ return this.props.resultEditor.document;
145
+ }
146
+ get resultEditor() {
147
+ return this.props.resultEditor;
148
+ }
149
+ get side1Changes() {
150
+ return this.side1LiveDiff.changes;
151
+ }
152
+ get side2Changes() {
153
+ return this.side2LiveDiff.changes;
154
+ }
155
+ get resultChanges() {
156
+ return this.resultLiveDiff.changes;
157
+ }
158
+ init() {
159
+ this.toDispose.push(this.side1LiveDiff = this.newLiveDiff(this.baseDocument, this.side1Document));
160
+ this.toDispose.push(this.side2LiveDiff = this.newLiveDiff(this.baseDocument, this.side2Document));
161
+ this.toDispose.push(this.resultLiveDiff = this.newLiveDiff(this.baseDocument, this.resultDocument));
162
+ this.toDispose.push(observable_1.Observable.keepObserved(this.mergeRangesDataObservable));
163
+ this.toDispose.push(observable_1.Observable.keepObserved(this.side1ToResultLineRangeMapObservable));
164
+ this.toDispose.push(observable_1.Observable.keepObserved(this.resultToSide1LineRangeMapObservable));
165
+ this.toDispose.push(observable_1.Observable.keepObserved(this.side2ToResultLineRangeMapObservable));
166
+ this.toDispose.push(observable_1.Observable.keepObserved(this.resultToSide2LineRangeMapObservable));
167
+ this.toDispose.push(observable_1.Observable.keepObserved(this.baseToSide1LineRangeMapObservable));
168
+ this.toDispose.push(observable_1.Observable.keepObserved(this.side1ToBaseLineRangeMapObservable));
169
+ this.toDispose.push(observable_1.Observable.keepObserved(this.baseToSide2LineRangeMapObservable));
170
+ this.toDispose.push(observable_1.Observable.keepObserved(this.side2ToBaseLineRangeMapObservable));
171
+ this.toDispose.push(observable_1.Observable.keepObserved(this.baseToResultLineRangeMapObservable));
172
+ this.toDispose.push(observable_1.Observable.keepObserved(this.resultToBaseLineRangeMapObservable));
173
+ this.toDispose.push(observable_1.Observable.keepObserved(this.baseToSide1RangeMapObservable));
174
+ this.toDispose.push(observable_1.Observable.keepObserved(this.side1ToBaseRangeMapObservable));
175
+ this.toDispose.push(observable_1.Observable.keepObserved(this.baseToSide2RangeMapObservable));
176
+ this.toDispose.push(observable_1.Observable.keepObserved(this.side2ToBaseRangeMapObservable));
177
+ this.toDispose.push(observable_1.Observable.keepObserved(this.baseToResultRangeMapObservable));
178
+ this.toDispose.push(observable_1.Observable.keepObserved(this.resultToBaseRangeMapObservable));
179
+ const initializePromise = this.doInit();
180
+ this._onInitialized = observable_1.ObservableUtils.waitForState(this.isUpToDateObservable).then(() => initializePromise);
181
+ initializePromise.then(() => {
182
+ this.toDispose.push(observable_1.Autorun.create(() => {
183
+ if (!this.isUpToDateObservable.get()) {
184
+ return;
185
+ }
186
+ observable_1.Observable.update(() => {
187
+ const mergeRangesData = this.mergeRangesDataObservable.get();
188
+ for (const [mergeRange, mergeRangeData] of mergeRangesData) {
189
+ const state = this.computeMergeRangeStateFromResult(mergeRange);
190
+ mergeRangeData.resultStateObservable.set(state);
191
+ if (this.shouldRecomputeHandledState) {
192
+ mergeRangeData.isHandledObservable.set(state !== 'Base');
193
+ }
194
+ }
195
+ this.shouldRecomputeHandledState = false;
196
+ });
197
+ }, {
198
+ willHandleChange: ctx => {
199
+ if (ctx.isChangeOf(this.mergeRangesDataObservable)) {
200
+ this.shouldRecomputeHandledState = true;
201
+ }
202
+ return true;
203
+ }
204
+ }));
205
+ const attachedHistory = new AttachedHistory(this.resultDocument);
206
+ this.toDispose.push(attachedHistory);
207
+ this.toDispose.push(this.resultDocument.textEditorModel.onDidChangeContent(event => {
208
+ if (event.isRedoing || event.isUndoing) {
209
+ return;
210
+ }
211
+ // Mark merge ranges affected by content changes as handled.
212
+ const mergeRanges = [];
213
+ for (const change of event.changes) {
214
+ const { start, end } = this.translateResultRangeToBase(this.m2p.asRange(change.range));
215
+ const affectedMergeRanges = this.findMergeRanges(new line_range_1.LineRange(start.line, end.line - start.line));
216
+ for (const mergeRange of affectedMergeRanges) {
217
+ if (!this.isMergeRangeHandled(mergeRange)) {
218
+ mergeRanges.push(mergeRange);
219
+ }
220
+ }
221
+ }
222
+ if (mergeRanges.length === 0) {
223
+ return;
224
+ }
225
+ const markMergeRangesAsHandled = (handled) => {
226
+ observable_1.Observable.update(() => {
227
+ const mergeRangesData = this.mergeRangesDataObservable.get();
228
+ for (const mergeRange of mergeRanges) {
229
+ const mergeRangeData = mergeRangesData.get(mergeRange);
230
+ if (mergeRangeData) {
231
+ mergeRangeData.isHandledObservable.set(handled);
232
+ }
233
+ }
234
+ });
235
+ };
236
+ const element = {
237
+ redo: () => {
238
+ markMergeRangesAsHandled(true);
239
+ },
240
+ undo: () => {
241
+ markMergeRangesAsHandled(false);
242
+ }
243
+ };
244
+ attachedHistory.pushAttachedHistoryElement(element);
245
+ element.redo();
246
+ }));
247
+ });
248
+ }
249
+ computeMergeRangeStateFromResult(mergeRange) {
250
+ const resultRange = this.getLineRangeInResult(mergeRange);
251
+ const existingLines = resultRange.getLines(this.resultDocument);
252
+ const states = [
253
+ 'Base',
254
+ 'Side1',
255
+ 'Side2',
256
+ 'Side1Side2Smart',
257
+ 'Side2Side1Smart',
258
+ 'Side1Side2',
259
+ 'Side2Side1'
260
+ ];
261
+ for (const state of states) {
262
+ const edit = mergeRange.getBaseRangeEdit(state);
263
+ if (core_1.ArrayUtils.equals(edit.newLines, existingLines)) {
264
+ return state;
265
+ }
266
+ }
267
+ return 'Unrecognized';
268
+ }
269
+ async doInit() {
270
+ var _a;
271
+ if ((_a = this.props.options) === null || _a === void 0 ? void 0 : _a.resetResult) {
272
+ await this.reset();
273
+ }
274
+ }
275
+ dispose() {
276
+ this.toDispose.dispose();
277
+ }
278
+ isDisposed() {
279
+ return this.toDispose.disposed;
280
+ }
281
+ async reset() {
282
+ await observable_1.ObservableUtils.waitForState(this.diffComputingStateForSidesObservable, state => state === 1 /* DiffComputingState.UpToDate */);
283
+ this.shouldRecomputeHandledState = true;
284
+ this.resultDocument.textEditorModel.setValue(this.computeAutoMergedResult());
285
+ }
286
+ computeAutoMergedResult() {
287
+ const baseLines = this.baseDocument.textEditorModel.getLinesContent();
288
+ const side1Lines = this.side1Document.textEditorModel.getLinesContent();
289
+ const side2Lines = this.side2Document.textEditorModel.getLinesContent();
290
+ const resultLines = [];
291
+ function appendLinesToResult(documentLines, lineRange) {
292
+ for (let i = lineRange.startLineNumber; i < lineRange.endLineNumberExclusive; i++) {
293
+ resultLines.push(documentLines[i]);
294
+ }
295
+ }
296
+ let baseStartLineNumber = 0;
297
+ for (const mergeRange of this.mergeRanges) {
298
+ appendLinesToResult(baseLines, line_range_1.LineRange.fromLineNumbers(baseStartLineNumber, mergeRange.baseRange.startLineNumber));
299
+ if (mergeRange.side1Changes.length === 0) {
300
+ appendLinesToResult(side2Lines, mergeRange.side2Range);
301
+ }
302
+ else if (mergeRange.side2Changes.length === 0) {
303
+ appendLinesToResult(side1Lines, mergeRange.side1Range);
304
+ }
305
+ else if (mergeRange.isEqualChange) {
306
+ appendLinesToResult(side1Lines, mergeRange.side1Range);
307
+ }
308
+ else {
309
+ appendLinesToResult(baseLines, mergeRange.baseRange);
310
+ }
311
+ baseStartLineNumber = mergeRange.baseRange.endLineNumberExclusive;
312
+ }
313
+ appendLinesToResult(baseLines, line_range_1.LineRange.fromLineNumbers(baseStartLineNumber, baseLines.length));
314
+ return resultLines.join(this.resultDocument.textEditorModel.getEOL());
315
+ }
316
+ computeMergeRanges() {
317
+ return merge_range_1.MergeRange.computeMergeRanges(this.side1Changes, this.side2Changes, this.baseDocument, this.side1Document, this.side2Document);
318
+ }
319
+ hasMergeRange(mergeRange) {
320
+ return this.mergeRangesDataObservable.get().has(mergeRange);
321
+ }
322
+ getMergeRangeData(mergeRange) {
323
+ const mergeRangeData = this.mergeRangesDataObservable.get().get(mergeRange);
324
+ if (!mergeRangeData) {
325
+ throw new Error('Unknown merge range');
326
+ }
327
+ return mergeRangeData;
328
+ }
329
+ getMergeRangeResultState(mergeRange) {
330
+ return this.getMergeRangeData(mergeRange).resultStateObservable.get();
331
+ }
332
+ applyMergeRangeAcceptedState(mergeRange, state) {
333
+ if (!this.isUpToDateObservable.get()) {
334
+ throw new Error('Cannot apply merge range accepted state while updating');
335
+ }
336
+ if (state !== 'Base' && this.getMergeRangeResultState(mergeRange) === 'Unrecognized') {
337
+ throw new Error('Cannot apply merge range accepted state to an unrecognized result state');
338
+ }
339
+ const { originalRange: baseRange, modifiedRange: resultRange } = this.getResultLineRangeMapping(mergeRange);
340
+ let newLines;
341
+ if (state === 'Base') {
342
+ newLines = baseRange.getLines(this.baseDocument);
343
+ }
344
+ else {
345
+ if (!baseRange.equals(mergeRange.baseRange)) {
346
+ throw new Error('Assertion error');
347
+ }
348
+ newLines = mergeRange.getBaseRangeEdit(state).newLines;
349
+ }
350
+ const resultEdit = new range_editing_1.LineRangeEdit(resultRange, newLines);
351
+ const editOperation = resultEdit.toRangeEdit(this.resultDocument.lineCount).toMonacoEdit();
352
+ const cursorState = this.resultEditor.getControl().getSelections();
353
+ this.resultDocument.textEditorModel.pushStackElement();
354
+ this.resultDocument.textEditorModel.pushEditOperations(cursorState, [editOperation], () => cursorState);
355
+ this.resultDocument.textEditorModel.pushStackElement();
356
+ }
357
+ isMergeRangeHandled(mergeRange) {
358
+ return this.getMergeRangeData(mergeRange).isHandledObservable.get();
359
+ }
360
+ getLineRangeInResult(mergeRange) {
361
+ return this.getResultLineRangeMapping(mergeRange).modifiedRange;
362
+ }
363
+ getResultLineRangeMapping(mergeRange) {
364
+ const projectLine = (lineNumber) => {
365
+ let offset = 0;
366
+ const changes = this.resultChanges;
367
+ for (const change of changes) {
368
+ const { originalRange } = change;
369
+ if (originalRange.containsLine(lineNumber) || originalRange.endLineNumberExclusive === lineNumber) {
370
+ return change;
371
+ }
372
+ else if (originalRange.endLineNumberExclusive < lineNumber) {
373
+ offset = change.modifiedRange.endLineNumberExclusive - originalRange.endLineNumberExclusive;
374
+ }
375
+ else {
376
+ break;
377
+ }
378
+ }
379
+ return lineNumber + offset;
380
+ };
381
+ let startBase = mergeRange.baseRange.startLineNumber;
382
+ let startResult = projectLine(startBase);
383
+ if (typeof startResult !== 'number') {
384
+ startBase = startResult.originalRange.startLineNumber;
385
+ startResult = startResult.modifiedRange.startLineNumber;
386
+ }
387
+ let endExclusiveBase = mergeRange.baseRange.endLineNumberExclusive;
388
+ let endExclusiveResult = projectLine(endExclusiveBase);
389
+ if (typeof endExclusiveResult !== 'number') {
390
+ endExclusiveBase = endExclusiveResult.originalRange.endLineNumberExclusive;
391
+ endExclusiveResult = endExclusiveResult.modifiedRange.endLineNumberExclusive;
392
+ }
393
+ return new range_mapping_1.LineRangeMapping(line_range_1.LineRange.fromLineNumbers(startBase, endExclusiveBase), line_range_1.LineRange.fromLineNumbers(startResult, endExclusiveResult));
394
+ }
395
+ translateBaseRangeToSide(range, side) {
396
+ const rangeMap = side === 1 ? this.baseToSide1RangeMap : this.baseToSide2RangeMap;
397
+ return rangeMap.projectRange(range).modifiedRange;
398
+ }
399
+ translateSideRangeToBase(range, side) {
400
+ const rangeMap = side === 1 ? this.side1ToBaseRangeMap : this.side2ToBaseRangeMap;
401
+ return rangeMap.projectRange(range).modifiedRange;
402
+ }
403
+ translateBaseRangeToResult(range) {
404
+ return this.baseToResultRangeMap.projectRange(range).modifiedRange;
405
+ }
406
+ translateResultRangeToBase(range) {
407
+ return this.resultToBaseRangeMap.projectRange(range).modifiedRange;
408
+ }
409
+ findMergeRanges(baseRange) {
410
+ return this.mergeRanges.filter(mergeRange => mergeRange.baseRange.touches(baseRange));
411
+ }
412
+ computeSideToResultDiff(sideChanges, resultChanges) {
413
+ return range_mapping_1.DocumentLineRangeMap.betweenModifiedSides(sideChanges, resultChanges).lineRangeMappings;
414
+ }
415
+ newMergeRangeData() {
416
+ return new MergeRangeData();
417
+ }
418
+ newLiveDiff(originalDocument, modifiedDocument) {
419
+ return new live_diff_1.LiveDiff(originalDocument, modifiedDocument, this.diffComputer);
420
+ }
421
+ newDocumentLineRangeMap(lineRangeMappings) {
422
+ return new range_mapping_1.DocumentLineRangeMap(lineRangeMappings);
423
+ }
424
+ newDocumentRangeMap(rangeMappings) {
425
+ return new range_mapping_1.DocumentRangeMap(rangeMappings);
426
+ }
427
+ getDiffComputingState(...liveDiffs) {
428
+ const liveDiffStates = liveDiffs.map(liveDiff => liveDiff.state);
429
+ if (liveDiffStates.some(state => state === 0 /* LiveDiffState.Initializing */)) {
430
+ return 0 /* DiffComputingState.Initializing */;
431
+ }
432
+ if (liveDiffStates.some(state => state === 2 /* LiveDiffState.Updating */)) {
433
+ return 2 /* DiffComputingState.Updating */;
434
+ }
435
+ return 1 /* DiffComputingState.UpToDate */;
436
+ }
437
+ };
438
+ exports.MergeEditorModel = MergeEditorModel;
439
+ tslib_1.__decorate([
440
+ (0, inversify_1.inject)(exports.MergeEditorModelProps),
441
+ tslib_1.__metadata("design:type", Object)
442
+ ], MergeEditorModel.prototype, "props", void 0);
443
+ tslib_1.__decorate([
444
+ (0, inversify_1.inject)(diff_1.DiffComputer),
445
+ tslib_1.__metadata("design:type", Object)
446
+ ], MergeEditorModel.prototype, "diffComputer", void 0);
447
+ tslib_1.__decorate([
448
+ (0, inversify_1.inject)(monaco_to_protocol_converter_1.MonacoToProtocolConverter),
449
+ tslib_1.__metadata("design:type", monaco_to_protocol_converter_1.MonacoToProtocolConverter)
450
+ ], MergeEditorModel.prototype, "m2p", void 0);
451
+ tslib_1.__decorate([
452
+ (0, inversify_1.postConstruct)(),
453
+ tslib_1.__metadata("design:type", Function),
454
+ tslib_1.__metadata("design:paramtypes", []),
455
+ tslib_1.__metadata("design:returntype", void 0)
456
+ ], MergeEditorModel.prototype, "init", null);
457
+ exports.MergeEditorModel = MergeEditorModel = tslib_1.__decorate([
458
+ (0, inversify_1.injectable)()
459
+ ], MergeEditorModel);
460
+ class MergeRangeData {
461
+ constructor() {
462
+ this.resultStateObservable = observable_1.SettableObservable.create('Base');
463
+ this.isHandledObservable = observable_1.SettableObservable.create(false);
464
+ }
465
+ }
466
+ exports.MergeRangeData = MergeRangeData;
467
+ class AttachedHistory {
468
+ constructor(model) {
469
+ this.model = model;
470
+ this.toDispose = new core_1.DisposableCollection();
471
+ this.attachedHistory = [];
472
+ let previousAltId = this.model.textEditorModel.getAlternativeVersionId();
473
+ this.toDispose.push(model.textEditorModel.onDidChangeContent(event => {
474
+ const currentAltId = model.textEditorModel.getAlternativeVersionId();
475
+ if (event.isRedoing) {
476
+ for (const item of this.attachedHistory) {
477
+ if (previousAltId < item.altId && item.altId <= currentAltId) {
478
+ item.element.redo();
479
+ }
480
+ }
481
+ }
482
+ else if (event.isUndoing) {
483
+ for (let i = this.attachedHistory.length - 1; i >= 0; i--) {
484
+ const item = this.attachedHistory[i];
485
+ if (currentAltId < item.altId && item.altId <= previousAltId) {
486
+ item.element.undo();
487
+ }
488
+ }
489
+ }
490
+ else {
491
+ // The user destroyed the redo stack by performing a non redo/undo operation.
492
+ while (this.attachedHistory.length > 0
493
+ && this.attachedHistory[this.attachedHistory.length - 1].altId > previousAltId) {
494
+ this.attachedHistory.pop();
495
+ }
496
+ }
497
+ previousAltId = currentAltId;
498
+ }));
499
+ }
500
+ dispose() {
501
+ this.toDispose.dispose();
502
+ }
503
+ pushAttachedHistoryElement(element) {
504
+ this.attachedHistory.push({ altId: this.model.textEditorModel.getAlternativeVersionId(), element });
505
+ }
506
+ }
507
+ //# sourceMappingURL=merge-editor-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-editor-model.js","sourceRoot":"","sources":["../../../../src/browser/merge-editor/model/merge-editor-model.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,6CAA6C;AAC7C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF;;;gGAGgG;AAChG,mJAAmJ;AACnJ,iHAAiH;;;;AAEjH,4DAAiF;AACjF,sCAA2E;AAC3E,kEAAgI;AAChI,sDAA2D;AAI3D,yGAAmG;AACnG,+CAAsG;AACtG,mDAAmI;AACnI,2CAAsD;AACtD,6CAAyC;AACzC,mDAAgD;AAEnC,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAY9D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAAtB;QAWgB,cAAS,GAAG,IAAI,2BAAoB,EAAE,CAAC;QAMhD,gCAA2B,GAAG,IAAI,CAAC;QAE1B,0BAAqB,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAKlF,8BAAyB,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CACjF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAC7E,CAAC,CAAC;QAEH,6BAA6B;QACV,wCAAmC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAChH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CACtE,CAAC,CAAC;QAKgB,wCAAmC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC;QAK/G,wCAAmC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAChH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CACtE,CAAC,CAAC;QAKgB,wCAAmC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC;QAK/G,sCAAiC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAKpH,sCAAiC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC;QAK3G,sCAAiC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAKpH,sCAAiC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC;QAK3G,uCAAkC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAKtH,uCAAkC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC;QAIhI,aAAa;QAEb,wBAAwB;QACL,kCAA6B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CACtG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAC5D,CAAC,CAAC;QAKgB,kCAA6B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;QAKnG,kCAA6B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CACtG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAC5D,CAAC,CAAC;QAKgB,kCAA6B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;QAKnG,mCAA8B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CACvG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAC7D,CAAC,CAAC;QAKgB,mCAA8B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC;QAIxH,aAAa;QAEM,iCAA4B,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACvJ,yCAAoC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAEpJ,yBAAoB,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,EAAE,wCAAgC,CAAC,CAAC;QAErH,wCAAmC,GAAG,8BAAiB,CAAC,MAAM,CAAC,GAAG,EAAE;YACnF,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC;YAC7D,KAAK,MAAM,cAAc,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC5C,MAAM,EAAE,CAAC;gBACb,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IAyXP,CAAC;IA7eG,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IAUD,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IAC1D,CAAC;IAGD,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IAC1D,CAAC;IAKD,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IAC1D,CAAC;IAGD,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IAC1D,CAAC;IAGD,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IAGD,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IAOD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAGD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAKD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAGD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAKD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;IAGD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;IAkBD,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IAC1D,CAAC;IAGD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,IAAc,YAAY;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IACvC,CAAC;IAGS,IAAI;QACV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAEpG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAE7E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAErF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAErF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAEjF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAEjF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAElF,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAExC,IAAI,CAAC,cAAc,GAAG,4BAAe,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAE5G,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAO,CAAC,MAAM,CAAC,GAAG,EAAE;gBACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC;oBACnC,OAAO;gBACX,CAAC;gBACD,uBAAU,CAAC,MAAM,CAAC,GAAG,EAAE;oBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC;oBAE7D,KAAK,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,eAAe,EAAE,CAAC;wBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC;wBAChE,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAChD,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;4BACnC,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;wBAC7D,CAAC;oBACL,CAAC;oBAED,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACP,CAAC,EAAE;gBACC,gBAAgB,EAAE,GAAG,CAAC,EAAE;oBACpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;wBACjD,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;oBAC5C,CAAC;oBACD,OAAO,IAAI,CAAC;gBAChB,CAAC;aACJ,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;gBAC/E,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACrC,OAAO;gBACX,CAAC;gBAED,4DAA4D;gBAC5D,MAAM,WAAW,GAAiB,EAAE,CAAC;gBAErC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACjC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvF,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,sBAAS,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACnG,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;wBAC3C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;4BACxC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACjC,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO;gBACX,CAAC;gBAED,MAAM,wBAAwB,GAAG,CAAC,OAAgB,EAAE,EAAE;oBAClD,uBAAU,CAAC,MAAM,CAAC,GAAG,EAAE;wBACnB,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC;wBAC7D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;4BACnC,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACvD,IAAI,cAAc,EAAE,CAAC;gCACjB,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;4BACpD,CAAC;wBACL,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,OAAO,GAA4B;oBACrC,IAAI,EAAE,GAAG,EAAE;wBACP,wBAAwB,CAAC,IAAI,CAAC,CAAC;oBACnC,CAAC;oBACD,IAAI,EAAE,GAAG,EAAE;wBACP,wBAAwB,CAAC,KAAK,CAAC,CAAC;oBACpC,CAAC;iBACJ,CAAC;gBACF,eAAe,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;IACP,CAAC;IAES,gCAAgC,CAAC,UAAsB;QAE7D,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEhE,MAAM,MAAM,GAA8B;YACtC,MAAM;YACN,OAAO;YACP,OAAO;YACP,iBAAiB;YACjB,iBAAiB;YACjB,YAAY;YACZ,YAAY;SACf,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,iBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAES,KAAK,CAAC,MAAM;;QAClB,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,0CAAE,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,4BAAe,CAAC,YAAY,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,wCAAgC,CAAC,CAAC;QAE9H,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACjF,CAAC;IAES,uBAAuB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC;QAExE,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,SAAS,mBAAmB,CAAC,aAAuB,EAAE,SAAoB;YACtE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChF,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAED,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAE5B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,mBAAmB,CAAC,SAAS,EAAE,sBAAS,CAAC,eAAe,CAAC,mBAAmB,EAAE,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YAErH,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAClC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACJ,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YACzD,CAAC;YAED,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAAC,sBAAsB,CAAC;QACtE,CAAC;QAED,mBAAmB,CAAC,SAAS,EAAE,sBAAS,CAAC,eAAe,CAAC,mBAAmB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjG,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAES,kBAAkB;QACxB,OAAO,wBAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1I,CAAC;IAED,aAAa,CAAC,UAAsB;QAChC,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAES,iBAAiB,CAAC,UAAsB;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,wBAAwB,CAAC,UAAsB;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;IAC1E,CAAC;IAED,4BAA4B,CAAC,UAAsB,EAAE,KAA8B;QAC/E,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,KAAK,cAAc,EAAE,CAAC;YACnF,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC/F,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAC5G,IAAI,QAAkB,CAAC;QACvB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACnB,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACvC,CAAC;YACD,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAC3D,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,6BAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;QAE3F,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACxG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,UAAsB;QACtC,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;IACxE,CAAC;IAED,oBAAoB,CAAC,UAAsB;QACvC,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;IACpE,CAAC;IAES,yBAAyB,CAAC,UAAsB;QACtD,MAAM,WAAW,GAAG,CAAC,UAAkB,EAA6B,EAAE;YAClE,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;gBACjC,IAAI,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,sBAAsB,KAAK,UAAU,EAAE,CAAC;oBAChG,OAAO,MAAM,CAAC;gBAClB,CAAC;qBAAM,IAAI,aAAa,CAAC,sBAAsB,GAAG,UAAU,EAAE,CAAC;oBAC3D,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAC;gBAChG,CAAC;qBAAM,CAAC;oBACJ,MAAM;gBACV,CAAC;YACL,CAAC;YACD,OAAO,UAAU,GAAG,MAAM,CAAC;QAC/B,CAAC,CAAC;QACF,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC;QACrD,IAAI,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClC,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC;YACtD,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC;QAC5D,CAAC;QACD,IAAI,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,sBAAsB,CAAC;QACnE,IAAI,kBAAkB,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YACzC,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,CAAC,sBAAsB,CAAC;YAC3E,kBAAkB,GAAG,kBAAkB,CAAC,aAAa,CAAC,sBAAsB,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,gCAAgB,CAAC,sBAAS,CAAC,eAAe,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,sBAAS,CAAC,eAAe,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpJ,CAAC;IAED,wBAAwB,CAAC,KAAY,EAAE,IAAe;QAClD,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAClF,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;IACtD,CAAC;IAED,wBAAwB,CAAC,KAAY,EAAE,IAAe;QAClD,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAClF,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;IACtD,CAAC;IAED,0BAA0B,CAAC,KAAY;QACnC,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;IACvE,CAAC;IAED,0BAA0B,CAAC,KAAY;QACnC,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;IACvE,CAAC;IAED,eAAe,CAAC,SAAoB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;IAES,uBAAuB,CAAC,WAAwC,EAAE,aAA0C;QAClH,OAAO,oCAAoB,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,iBAAiB,CAAC;IACnG,CAAC;IAES,iBAAiB;QACvB,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;IAES,WAAW,CAAC,gBAAmC,EAAE,gBAAmC;QAC1F,OAAO,IAAI,oBAAQ,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/E,CAAC;IAES,uBAAuB,CAAC,iBAA8C;QAC5E,OAAO,IAAI,oCAAoB,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC;IAES,mBAAmB,CAAC,aAAsC;QAChE,OAAO,IAAI,gCAAgB,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IAES,qBAAqB,CAAC,GAAG,SAAqB;QACpD,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEjE,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,uCAA+B,CAAC,EAAE,CAAC;YACrE,+CAAuC;QAC3C,CAAC;QAED,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,mCAA2B,CAAC,EAAE,CAAC;YACjE,2CAAmC;QACvC,CAAC;QAED,2CAAmC;IACvC,CAAC;CACJ,CAAA;AAjgBY,4CAAgB;AAGN;IADlB,IAAA,kBAAM,EAAC,6BAAqB,CAAC;;+CACkB;AAG7B;IADlB,IAAA,kBAAM,EAAC,mBAAY,CAAC;;sDACyB;AAG7B;IADhB,IAAA,kBAAM,EAAC,wDAAyB,CAAC;sCACZ,wDAAyB;6CAAC;AA0KtC;IADT,IAAA,yBAAa,GAAE;;;;4CA8Gf;2BAhSQ,gBAAgB;IAD5B,IAAA,sBAAU,GAAE;GACA,gBAAgB,CAigB5B;AAQD,MAAa,cAAc;IAA3B;QACa,0BAAqB,GAAG,+BAAkB,CAAC,MAAM,CAAwB,MAAM,CAAC,CAAC;QACjF,wBAAmB,GAAG,+BAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;CAAA;AAHD,wCAGC;AAED,MAAM,eAAe;IAIjB,YAA6B,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QAHpC,cAAS,GAAG,IAAI,2BAAoB,EAAE,CAAC;QACvC,oBAAe,GAA0D,EAAE,CAAC;QAGzF,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;YACjE,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;YAErE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACtC,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;wBAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxB,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACrC,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,aAAa,EAAE,CAAC;wBAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACxB,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,6EAA6E;gBAC7E,OACI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;uBAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,EAChF,CAAC;oBACC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;gBAC/B,CAAC;YACL,CAAC;YAED,aAAa,GAAG,YAAY,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,0BAA0B,CAAC,OAAgC;QACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACxG,CAAC;CACJ"}
@@ -0,0 +1,50 @@
1
+ import { TextEditorDocument } from '@theia/editor/lib/browser/editor';
2
+ import { DetailedLineRangeMapping } from './range-mapping';
3
+ import { LineRange } from './line-range';
4
+ import { LineRangeEdit, RangeEdit } from './range-editing';
5
+ /**
6
+ * Describes modifications in side 1 and side 2 for a specific range in base.
7
+ */
8
+ export declare class MergeRange {
9
+ readonly baseRange: LineRange;
10
+ readonly baseDocument: TextEditorDocument;
11
+ readonly side1Range: LineRange;
12
+ readonly side1Changes: readonly DetailedLineRangeMapping[];
13
+ readonly side1Document: TextEditorDocument;
14
+ readonly side2Range: LineRange;
15
+ readonly side2Changes: readonly DetailedLineRangeMapping[];
16
+ readonly side2Document: TextEditorDocument;
17
+ static computeMergeRanges(side1Diff: readonly DetailedLineRangeMapping[], side2Diff: readonly DetailedLineRangeMapping[], baseDocument: TextEditorDocument, side1Document: TextEditorDocument, side2Document: TextEditorDocument): MergeRange[];
18
+ readonly side1CombinedChange: DetailedLineRangeMapping | undefined;
19
+ readonly side2CombinedChange: DetailedLineRangeMapping | undefined;
20
+ readonly isEqualChange: boolean;
21
+ constructor(baseRange: LineRange, baseDocument: TextEditorDocument, side1Range: LineRange, side1Changes: readonly DetailedLineRangeMapping[], side1Document: TextEditorDocument, side2Range: LineRange, side2Changes: readonly DetailedLineRangeMapping[], side2Document: TextEditorDocument);
22
+ getModifiedRange(side: MergeSide): LineRange;
23
+ getCombinedChange(side: MergeSide): DetailedLineRangeMapping | undefined;
24
+ getChanges(side: MergeSide): readonly DetailedLineRangeMapping[];
25
+ get isConflicting(): boolean;
26
+ canBeSmartCombined(firstSide: MergeSide): boolean;
27
+ get isSmartCombinationOrderRelevant(): boolean;
28
+ getBaseRangeEdit(state: MergeRangeAcceptedState): LineRangeEdit;
29
+ protected smartCombinationEdit1?: {
30
+ value: LineRangeEdit | undefined;
31
+ };
32
+ protected smartCombinationEdit2?: {
33
+ value: LineRangeEdit | undefined;
34
+ };
35
+ protected smartCombineChanges(firstSide: MergeSide): LineRangeEdit | undefined;
36
+ protected editsToLineRangeEdit(range: LineRange, sortedEdits: RangeEdit[], document: TextEditorDocument): LineRangeEdit | undefined;
37
+ protected dumbCombinationEdit1?: LineRangeEdit;
38
+ protected dumbCombinationEdit2?: LineRangeEdit;
39
+ protected dumbCombineChanges(firstSide: MergeSide): LineRangeEdit;
40
+ }
41
+ export type MergeSide = 1 | 2;
42
+ export type MergeRangeAcceptedState = 'Base' | 'Side1' | 'Side2' | 'Side1Side2' | 'Side2Side1' | 'Side1Side2Smart' | 'Side2Side1Smart';
43
+ export declare namespace MergeRangeAcceptedState {
44
+ function addSide(state: MergeRangeAcceptedState, side: MergeSide, options?: {
45
+ smartCombination?: boolean;
46
+ }): MergeRangeAcceptedState;
47
+ function removeSide(state: MergeRangeAcceptedState, side: MergeSide): MergeRangeAcceptedState;
48
+ }
49
+ export type MergeRangeResultState = MergeRangeAcceptedState | 'Unrecognized';
50
+ //# sourceMappingURL=merge-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-range.d.ts","sourceRoot":"","sources":["../../../../src/browser/merge-editor/model/merge-range.ts"],"names":[],"mappings":"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"}