@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,464 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2019 Arm 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.ScmAmendComponent = void 0;
19
+ require("../../src/browser/style/scm-amend-component.css");
20
+ const React = require("@theia/core/shared/react");
21
+ const browser_1 = require("@theia/core/lib/browser");
22
+ const core_1 = require("@theia/core");
23
+ const nls_1 = require("@theia/core/lib/common/nls");
24
+ const TRANSITION_TIME_MS = 300;
25
+ const REPOSITORY_STORAGE_KEY = 'scmRepository';
26
+ class ScmAmendComponent extends React.Component {
27
+ constructor(props) {
28
+ super(props);
29
+ /**
30
+ * a hint on how to animate an update, set by certain user action handlers
31
+ * and used when updating the view based on a repository change
32
+ */
33
+ this.transitionHint = 'none';
34
+ this.lastCommitHeight = 0;
35
+ this.lastCommitScrollRef = (instance) => {
36
+ if (instance && this.lastCommitHeight === 0) {
37
+ this.lastCommitHeight = instance.getBoundingClientRect().height;
38
+ }
39
+ };
40
+ this.toDisposeOnUnmount = new core_1.DisposableCollection();
41
+ /**
42
+ * This function will update the 'model' (lastCommit, amendingCommits) only
43
+ * when the repository sees the last commit change.
44
+ * 'render' can be called at any time, so be sure we don't update any 'model'
45
+ * fields until we actually start the transition.
46
+ */
47
+ this.amend = async () => {
48
+ if (this.state.transition.state !== 'none' && this.transitionHint !== 'none') {
49
+ return;
50
+ }
51
+ this.transitionHint = 'amend';
52
+ await this.resetAndSetMessage('HEAD~', 'HEAD');
53
+ };
54
+ this.unamend = async () => {
55
+ if (this.state.transition.state !== 'none' && this.transitionHint !== 'none') {
56
+ return;
57
+ }
58
+ const commitToRestore = (this.state.amendingCommits.length >= 1)
59
+ ? this.state.amendingCommits[this.state.amendingCommits.length - 1]
60
+ : undefined;
61
+ const oldestAmendCommit = (this.state.amendingCommits.length >= 2)
62
+ ? this.state.amendingCommits[this.state.amendingCommits.length - 2]
63
+ : undefined;
64
+ if (commitToRestore) {
65
+ const commitToUseForMessage = oldestAmendCommit
66
+ ? oldestAmendCommit.commit.id
67
+ : undefined;
68
+ this.transitionHint = 'unamend';
69
+ await this.resetAndSetMessage(commitToRestore.commit.id, commitToUseForMessage);
70
+ }
71
+ };
72
+ this.unamendAll = () => this.doUnamendAll();
73
+ this.clearAmending = () => this.doClearAmending();
74
+ this.state = {
75
+ transition: { state: 'none' },
76
+ amendingCommits: [],
77
+ lastCommit: undefined
78
+ };
79
+ const setState = this.setState.bind(this);
80
+ this.setState = newState => {
81
+ if (!this.toDisposeOnUnmount.disposed) {
82
+ setState(newState);
83
+ }
84
+ };
85
+ }
86
+ async componentDidMount() {
87
+ this.toDisposeOnUnmount.push(core_1.Disposable.create(() => { }));
88
+ const lastCommit = await this.getLastCommit();
89
+ this.setState({ amendingCommits: await this.buildAmendingList(lastCommit ? lastCommit.commit : undefined), lastCommit });
90
+ if (this.toDisposeOnUnmount.disposed) {
91
+ return;
92
+ }
93
+ this.toDisposeOnUnmount.push(this.props.repository.provider.onDidChange(() => this.fetchStatusAndSetState()));
94
+ }
95
+ componentWillUnmount() {
96
+ this.toDisposeOnUnmount.dispose();
97
+ }
98
+ async fetchStatusAndSetState() {
99
+ const storageKey = this.getStorageKey();
100
+ const nextCommit = await this.getLastCommit();
101
+ if (nextCommit && this.state.lastCommit && nextCommit.commit.id === this.state.lastCommit.commit.id) {
102
+ // No change here
103
+ }
104
+ else if (nextCommit === undefined && this.state.lastCommit === undefined) {
105
+ // No change here
106
+ }
107
+ else if (this.transitionHint === 'none') {
108
+ // If the 'last' commit changes, but we are not expecting an 'amend'
109
+ // or 'unamend' to occur, then we clear out the list of amended commits.
110
+ // This is because an unexpected change has happened to the repository,
111
+ // perhaps the user committed, merged, or something. The amended commits
112
+ // will no longer be valid.
113
+ // Note that there may or may not have been a previous lastCommit (if the
114
+ // repository was previously empty with no initial commit then lastCommit
115
+ // will be undefined). Either way we clear the amending commits.
116
+ await this.clearAmendingCommits();
117
+ // There is a change to the last commit, but no transition hint so
118
+ // the view just updates without transition.
119
+ this.setState({ amendingCommits: [], lastCommit: nextCommit });
120
+ }
121
+ else {
122
+ const amendingCommits = this.state.amendingCommits.concat([]); // copy the array
123
+ const direction = this.transitionHint === 'amend' ? 'up' : 'down';
124
+ switch (this.transitionHint) {
125
+ case 'amend':
126
+ if (this.state.lastCommit) {
127
+ amendingCommits.push(this.state.lastCommit);
128
+ const serializedState = JSON.stringify({
129
+ amendingHeadCommitSha: amendingCommits[0].commit.id,
130
+ latestCommitSha: nextCommit ? nextCommit.commit.id : undefined
131
+ });
132
+ this.props.storageService.setData(storageKey, serializedState);
133
+ }
134
+ break;
135
+ case 'unamend':
136
+ amendingCommits.pop();
137
+ if (amendingCommits.length === 0) {
138
+ this.props.storageService.setData(storageKey, undefined);
139
+ }
140
+ else {
141
+ const serializedState = JSON.stringify({
142
+ amendingHeadCommitSha: amendingCommits[0].commit.id,
143
+ latestCommitSha: nextCommit ? nextCommit.commit.id : undefined
144
+ });
145
+ this.props.storageService.setData(storageKey, serializedState);
146
+ }
147
+ break;
148
+ }
149
+ if (this.state.lastCommit && nextCommit) {
150
+ const transitionData = { direction, previousLastCommit: this.state.lastCommit };
151
+ this.setState({ lastCommit: nextCommit, amendingCommits, transition: { ...transitionData, state: 'start' } });
152
+ this.onNextFrame(() => {
153
+ this.setState({ transition: { ...transitionData, state: 'transitioning' } });
154
+ });
155
+ setTimeout(() => {
156
+ this.setState({ transition: { state: 'none' } });
157
+ }, TRANSITION_TIME_MS);
158
+ }
159
+ else {
160
+ // No previous last commit so no transition
161
+ this.setState({ transition: { state: 'none' }, amendingCommits, lastCommit: nextCommit });
162
+ }
163
+ }
164
+ this.transitionHint = 'none';
165
+ }
166
+ async clearAmendingCommits() {
167
+ const storageKey = this.getStorageKey();
168
+ await this.props.storageService.setData(storageKey, undefined);
169
+ }
170
+ async buildAmendingList(lastCommit) {
171
+ const storageKey = this.getStorageKey();
172
+ const storedState = await this.props.storageService.getData(storageKey, undefined);
173
+ // Restore list of commits from saved amending head commit up through parents until the
174
+ // current commit. (If we don't reach the current commit, the repository has been changed in such
175
+ // a way then unamending commits can no longer be done).
176
+ if (storedState) {
177
+ const { amendingHeadCommitSha, latestCommitSha } = JSON.parse(storedState);
178
+ if (!this.commitsAreEqual(lastCommit, latestCommitSha)) {
179
+ // The head commit in the repository has changed. It is not the same commit that was the
180
+ // head commit after the last 'amend'.
181
+ return [];
182
+ }
183
+ const commits = await this.props.scmAmendSupport.getInitialAmendingCommits(amendingHeadCommitSha, lastCommit ? lastCommit.id : undefined);
184
+ const amendingCommitPromises = commits.map(async (commit) => {
185
+ const avatar = await this.props.avatarService.getAvatar(commit.authorEmail);
186
+ return { commit, avatar };
187
+ });
188
+ return Promise.all(amendingCommitPromises);
189
+ }
190
+ else {
191
+ return [];
192
+ }
193
+ }
194
+ getStorageKey() {
195
+ return REPOSITORY_STORAGE_KEY + ':' + this.props.repository.provider.rootUri;
196
+ }
197
+ /**
198
+ * Commits are equal if the ids are equal or if both are undefined.
199
+ * (If a commit is undefined, it represents the initial empty state of a repository,
200
+ * before the initial commit).
201
+ */
202
+ commitsAreEqual(lastCommit, savedLastCommitId) {
203
+ return lastCommit
204
+ ? lastCommit.id === savedLastCommitId
205
+ : savedLastCommitId === undefined;
206
+ }
207
+ async resetAndSetMessage(commitToRestore, commitToUseForMessage) {
208
+ const message = commitToUseForMessage
209
+ ? await this.props.scmAmendSupport.getMessage(commitToUseForMessage)
210
+ : '';
211
+ await this.props.scmAmendSupport.reset(commitToRestore);
212
+ this.props.setCommitMessage(message);
213
+ }
214
+ render() {
215
+ const neverShrink = this.state.amendingCommits.length <= 3;
216
+ const style = neverShrink
217
+ ? {
218
+ ...this.props.style,
219
+ flexShrink: 0,
220
+ }
221
+ : {
222
+ ...this.props.style,
223
+ flexShrink: 1,
224
+ minHeight: 240 // height with three commits
225
+ };
226
+ return (React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_CONTAINER + ' no-select', style: style },
227
+ this.state.amendingCommits.length > 0 || (this.state.lastCommit && this.state.transition.state !== 'none' && this.state.transition.direction === 'down')
228
+ ? this.renderAmendingCommits()
229
+ : '',
230
+ this.state.lastCommit ?
231
+ React.createElement("div", null,
232
+ React.createElement("div", { id: 'lastCommit', className: 'theia-scm-amend' },
233
+ React.createElement("div", { className: 'theia-header scm-theia-header' }, nls_1.nls.localize('theia/scm/amendHeadCommit', 'HEAD Commit')),
234
+ this.renderLastCommit()))
235
+ : ''));
236
+ }
237
+ async getLastCommit() {
238
+ const commit = await this.props.scmAmendSupport.getLastCommit();
239
+ if (commit) {
240
+ const avatar = await this.props.avatarService.getAvatar(commit.authorEmail);
241
+ return { commit, avatar };
242
+ }
243
+ return undefined;
244
+ }
245
+ renderAmendingCommits() {
246
+ const neverShrink = this.state.amendingCommits.length <= 3;
247
+ const style = neverShrink
248
+ ? {
249
+ flexShrink: 0,
250
+ }
251
+ : {
252
+ flexShrink: 1,
253
+ // parent minHeight controls height, we just need any value smaller than
254
+ // what the height would be when the parent is at its minHeight
255
+ minHeight: 0
256
+ };
257
+ return React.createElement("div", { id: 'amendedCommits', className: 'theia-scm-amend-outer-container', style: style },
258
+ React.createElement("div", { className: 'theia-header scm-theia-header' },
259
+ React.createElement("div", { className: 'noWrapInfo' }, "Commits being Amended"),
260
+ this.renderAmendCommitListButtons(),
261
+ this.renderCommitCount(this.state.amendingCommits.length)),
262
+ React.createElement("div", { style: this.styleAmendedCommits() },
263
+ this.state.amendingCommits.map((commitData, index, array) => this.renderCommitBeingAmended(commitData, index === array.length - 1)),
264
+ this.state.lastCommit && this.state.transition.state !== 'none' && this.state.transition.direction === 'down'
265
+ ? this.renderCommitBeingAmended(this.state.lastCommit, false)
266
+ : ''));
267
+ }
268
+ renderAmendCommitListButtons() {
269
+ return React.createElement("div", { className: 'theia-scm-inline-actions-container' },
270
+ React.createElement("div", { className: 'theia-scm-inline-actions' },
271
+ React.createElement("div", { className: 'theia-scm-inline-action' },
272
+ React.createElement("a", { className: (0, browser_1.codicon)('dash'), title: 'Unamend All Commits', onClick: this.unamendAll })),
273
+ React.createElement("div", { className: 'theia-scm-inline-action' },
274
+ React.createElement("a", { className: (0, browser_1.codicon)('close'), title: 'Clear Amending Commits', onClick: this.clearAmending }))));
275
+ }
276
+ renderLastCommit() {
277
+ if (!this.state.lastCommit) {
278
+ return '';
279
+ }
280
+ const canAmend = true;
281
+ return React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_AND_BUTTON, style: { flexGrow: 0, flexShrink: 0 }, key: this.state.lastCommit.commit.id },
282
+ this.renderLastCommitNoButton(this.state.lastCommit),
283
+ canAmend
284
+ ? React.createElement("div", { className: ScmAmendComponent.Styles.FLEX_CENTER },
285
+ React.createElement("button", { className: 'theia-button', title: nls_1.nls.localize('theia/scm/amendLastCommit', 'Amend last commit'), onClick: this.amend }, nls_1.nls.localize('theia/scm/amend', 'Amend')))
286
+ : '');
287
+ }
288
+ renderLastCommitNoButton(lastCommit) {
289
+ switch (this.state.transition.state) {
290
+ case 'none':
291
+ return React.createElement("div", { ref: this.lastCommitScrollRef, className: 'theia-scm-scrolling-container' }, this.renderCommitAvatarAndDetail(lastCommit));
292
+ case 'start':
293
+ case 'transitioning':
294
+ switch (this.state.transition.direction) {
295
+ case 'up':
296
+ return React.createElement("div", { style: this.styleLastCommitMovingUp(this.state.transition.state) },
297
+ this.renderCommitAvatarAndDetail(this.state.transition.previousLastCommit),
298
+ this.renderCommitAvatarAndDetail(lastCommit));
299
+ case 'down':
300
+ return React.createElement("div", { style: this.styleLastCommitMovingDown(this.state.transition.state) },
301
+ this.renderCommitAvatarAndDetail(lastCommit),
302
+ this.renderCommitAvatarAndDetail(this.state.transition.previousLastCommit));
303
+ }
304
+ }
305
+ }
306
+ /**
307
+ * See https://stackoverflow.com/questions/26556436/react-after-render-code
308
+ *
309
+ * @param callback
310
+ */
311
+ onNextFrame(callback) {
312
+ setTimeout(() => window.requestAnimationFrame(callback), 0);
313
+ }
314
+ renderCommitAvatarAndDetail(commitData) {
315
+ const { commit, avatar } = commitData;
316
+ return React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_AVATAR_AND_TEXT, key: commit.id },
317
+ React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_MESSAGE_AVATAR },
318
+ React.createElement("img", { src: avatar })),
319
+ React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_DETAILS },
320
+ React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_MESSAGE_SUMMARY }, commit.summary),
321
+ React.createElement("div", { className: ScmAmendComponent.Styles.LAST_COMMIT_MESSAGE_TIME }, `${commit.authorDateRelative} by ${commit.authorName}`)));
322
+ }
323
+ renderCommitCount(commits) {
324
+ return React.createElement("div", { className: 'notification-count-container scm-change-count' },
325
+ React.createElement("span", { className: 'notification-count' }, commits));
326
+ }
327
+ renderCommitBeingAmended(commitData, isOldestAmendCommit) {
328
+ if (isOldestAmendCommit && this.state.transition.state !== 'none' && this.state.transition.direction === 'up') {
329
+ return React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_AVATAR_AND_TEXT, style: { flexGrow: 0, flexShrink: 0 }, key: commitData.commit.id },
330
+ React.createElement("div", { className: 'fixed-height-commit-container' }, this.renderCommitAvatarAndDetail(commitData)));
331
+ }
332
+ else {
333
+ return React.createElement("div", { className: ScmAmendComponent.Styles.COMMIT_AVATAR_AND_TEXT, style: { flexGrow: 0, flexShrink: 0 }, key: commitData.commit.id },
334
+ this.renderCommitAvatarAndDetail(commitData),
335
+ isOldestAmendCommit
336
+ ? React.createElement("div", { className: ScmAmendComponent.Styles.FLEX_CENTER },
337
+ React.createElement("button", { className: 'theia-button', title: nls_1.nls.localize('theia/scm/unamendCommit', 'Unamend commit'), onClick: this.unamend }, nls_1.nls.localize('theia/scm/unamend', 'Unamend')))
338
+ : '');
339
+ }
340
+ }
341
+ /*
342
+ * The style for the <div> containing the list of commits being amended.
343
+ * This div is scrollable.
344
+ */
345
+ styleAmendedCommits() {
346
+ const base = {
347
+ display: 'flex',
348
+ whitespace: 'nowrap',
349
+ width: '100%',
350
+ minHeight: 0,
351
+ flexShrink: 1,
352
+ paddingTop: '2px',
353
+ };
354
+ switch (this.state.transition.state) {
355
+ case 'none':
356
+ return {
357
+ ...base,
358
+ flexDirection: 'column',
359
+ overflowY: 'auto',
360
+ marginBottom: '0',
361
+ };
362
+ case 'start':
363
+ case 'transitioning':
364
+ let startingMargin = 0;
365
+ let endingMargin = 0;
366
+ switch (this.state.transition.direction) {
367
+ case 'down':
368
+ startingMargin = 0;
369
+ endingMargin = -32;
370
+ break;
371
+ case 'up':
372
+ startingMargin = -32;
373
+ endingMargin = 0;
374
+ break;
375
+ }
376
+ switch (this.state.transition.state) {
377
+ case 'start':
378
+ return {
379
+ ...base,
380
+ flexDirection: 'column',
381
+ overflowY: 'hidden',
382
+ marginBottom: `${startingMargin}px`,
383
+ };
384
+ case 'transitioning':
385
+ return {
386
+ ...base,
387
+ flexDirection: 'column',
388
+ overflowY: 'hidden',
389
+ marginBottom: `${endingMargin}px`,
390
+ transitionProperty: 'margin-bottom',
391
+ transitionDuration: `${TRANSITION_TIME_MS}ms`,
392
+ transitionTimingFunction: 'linear'
393
+ };
394
+ }
395
+ }
396
+ }
397
+ styleLastCommitMovingUp(transitionState) {
398
+ return this.styleLastCommit(transitionState, 0, -28);
399
+ }
400
+ styleLastCommitMovingDown(transitionState) {
401
+ return this.styleLastCommit(transitionState, -28, 0);
402
+ }
403
+ styleLastCommit(transitionState, startingMarginTop, startingMarginBottom) {
404
+ const base = {
405
+ display: 'flex',
406
+ width: '100%',
407
+ overflow: 'hidden',
408
+ paddingTop: 0,
409
+ paddingBottom: 0,
410
+ borderTop: 0,
411
+ borderBottom: 0,
412
+ height: this.lastCommitHeight * 2
413
+ };
414
+ // We end with top and bottom margins switched
415
+ const endingMarginTop = startingMarginBottom;
416
+ const endingMarginBottom = startingMarginTop;
417
+ switch (transitionState) {
418
+ case 'start':
419
+ return {
420
+ ...base,
421
+ position: 'relative',
422
+ flexDirection: 'column',
423
+ marginTop: startingMarginTop,
424
+ marginBottom: startingMarginBottom,
425
+ };
426
+ case 'transitioning':
427
+ return {
428
+ ...base,
429
+ position: 'relative',
430
+ flexDirection: 'column',
431
+ marginTop: endingMarginTop,
432
+ marginBottom: endingMarginBottom,
433
+ transitionProperty: 'margin-top margin-bottom',
434
+ transitionDuration: `${TRANSITION_TIME_MS}ms`,
435
+ transitionTimingFunction: 'linear'
436
+ };
437
+ }
438
+ }
439
+ async doUnamendAll() {
440
+ while (this.state.amendingCommits.length > 0) {
441
+ this.unamend();
442
+ await new Promise(resolve => setTimeout(resolve, TRANSITION_TIME_MS));
443
+ }
444
+ }
445
+ async doClearAmending() {
446
+ await this.clearAmendingCommits();
447
+ this.setState({ amendingCommits: [] });
448
+ }
449
+ }
450
+ exports.ScmAmendComponent = ScmAmendComponent;
451
+ (function (ScmAmendComponent) {
452
+ let Styles;
453
+ (function (Styles) {
454
+ Styles.COMMIT_CONTAINER = 'theia-scm-commit-container';
455
+ Styles.COMMIT_AND_BUTTON = 'theia-scm-commit-and-button';
456
+ Styles.COMMIT_AVATAR_AND_TEXT = 'theia-scm-commit-avatar-and-text';
457
+ Styles.COMMIT_DETAILS = 'theia-scm-commit-details';
458
+ Styles.COMMIT_MESSAGE_AVATAR = 'theia-scm-commit-message-avatar';
459
+ Styles.COMMIT_MESSAGE_SUMMARY = 'theia-scm-commit-message-summary';
460
+ Styles.LAST_COMMIT_MESSAGE_TIME = 'theia-scm-commit-message-time';
461
+ Styles.FLEX_CENTER = 'theia-scm-flex-container-center';
462
+ })(Styles = ScmAmendComponent.Styles || (ScmAmendComponent.Styles = {}));
463
+ })(ScmAmendComponent || (exports.ScmAmendComponent = ScmAmendComponent = {}));
464
+ //# sourceMappingURL=scm-amend-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-amend-component.js","sourceRoot":"","sources":["../../src/browser/scm-amend-component.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import { SelectionService } from '@theia/core/lib/common';
3
+ import * as React from '@theia/core/shared/react';
4
+ import { ContextMenuRenderer, ReactWidget, LabelProvider, KeybindingRegistry, StorageService } from '@theia/core/lib/browser';
5
+ import { ScmService } from './scm-service';
6
+ import { ScmAvatarService } from './scm-avatar-service';
7
+ export declare class ScmAmendWidget extends ReactWidget {
8
+ protected readonly contextMenuRenderer: ContextMenuRenderer;
9
+ static ID: string;
10
+ protected readonly scmService: ScmService;
11
+ protected readonly avatarService: ScmAvatarService;
12
+ protected readonly storageService: StorageService;
13
+ protected readonly selectionService: SelectionService;
14
+ protected readonly labelProvider: LabelProvider;
15
+ protected readonly keybindings: KeybindingRegistry;
16
+ protected shouldScrollToRow: boolean;
17
+ constructor(contextMenuRenderer: ContextMenuRenderer);
18
+ protected render(): React.ReactNode;
19
+ protected setInputValue: (event: React.FormEvent<HTMLTextAreaElement> | React.ChangeEvent<HTMLTextAreaElement> | string) => void;
20
+ }
21
+ //# sourceMappingURL=scm-amend-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-amend-widget.d.ts","sourceRoot":"","sources":["../../src/browser/scm-amend-widget.tsx"],"names":[],"mappings":";AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EACH,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EACtF,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,qBACa,cAAe,SAAQ,WAAW;IAcV,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB;IAZ5F,MAAM,CAAC,EAAE,SAAsB;IAEX,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAE/E,SAAS,CAAC,iBAAiB,UAAQ;gBAGiB,mBAAmB,EAAE,mBAAmB;IAU5F,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;IAkBnC,SAAS,CAAC,aAAa,UAAW,MAAM,SAAS,CAAC,mBAAmB,CAAC,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC,GAAG,MAAM,UAKtH;CAEL"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2020 Arm 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
+ var ScmAmendWidget_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ScmAmendWidget = void 0;
20
+ const tslib_1 = require("tslib");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const common_1 = require("@theia/core/lib/common");
23
+ const React = require("@theia/core/shared/react");
24
+ const browser_1 = require("@theia/core/lib/browser");
25
+ const scm_service_1 = require("./scm-service");
26
+ const scm_avatar_service_1 = require("./scm-avatar-service");
27
+ const scm_amend_component_1 = require("./scm-amend-component");
28
+ let ScmAmendWidget = ScmAmendWidget_1 = class ScmAmendWidget extends browser_1.ReactWidget {
29
+ constructor(contextMenuRenderer) {
30
+ super();
31
+ this.contextMenuRenderer = contextMenuRenderer;
32
+ this.shouldScrollToRow = true;
33
+ this.setInputValue = (event) => {
34
+ const repository = this.scmService.selectedRepository;
35
+ if (repository) {
36
+ repository.input.value = typeof event === 'string' ? event : event.currentTarget.value;
37
+ }
38
+ };
39
+ this.scrollOptions = {
40
+ suppressScrollX: true,
41
+ minScrollbarLength: 35
42
+ };
43
+ this.id = ScmAmendWidget_1.ID;
44
+ }
45
+ render() {
46
+ const repository = this.scmService.selectedRepository;
47
+ if (repository && repository.provider.amendSupport) {
48
+ return React.createElement(scm_amend_component_1.ScmAmendComponent, {
49
+ key: `amend:${repository.provider.rootUri}`,
50
+ style: { flexGrow: 0 },
51
+ repository: repository,
52
+ scmAmendSupport: repository.provider.amendSupport,
53
+ setCommitMessage: this.setInputValue,
54
+ avatarService: this.avatarService,
55
+ storageService: this.storageService,
56
+ });
57
+ }
58
+ }
59
+ };
60
+ exports.ScmAmendWidget = ScmAmendWidget;
61
+ ScmAmendWidget.ID = 'scm-amend-widget';
62
+ tslib_1.__decorate([
63
+ (0, inversify_1.inject)(scm_service_1.ScmService),
64
+ tslib_1.__metadata("design:type", scm_service_1.ScmService)
65
+ ], ScmAmendWidget.prototype, "scmService", void 0);
66
+ tslib_1.__decorate([
67
+ (0, inversify_1.inject)(scm_avatar_service_1.ScmAvatarService),
68
+ tslib_1.__metadata("design:type", scm_avatar_service_1.ScmAvatarService)
69
+ ], ScmAmendWidget.prototype, "avatarService", void 0);
70
+ tslib_1.__decorate([
71
+ (0, inversify_1.inject)(browser_1.StorageService),
72
+ tslib_1.__metadata("design:type", Object)
73
+ ], ScmAmendWidget.prototype, "storageService", void 0);
74
+ tslib_1.__decorate([
75
+ (0, inversify_1.inject)(common_1.SelectionService),
76
+ tslib_1.__metadata("design:type", common_1.SelectionService)
77
+ ], ScmAmendWidget.prototype, "selectionService", void 0);
78
+ tslib_1.__decorate([
79
+ (0, inversify_1.inject)(browser_1.LabelProvider),
80
+ tslib_1.__metadata("design:type", browser_1.LabelProvider)
81
+ ], ScmAmendWidget.prototype, "labelProvider", void 0);
82
+ tslib_1.__decorate([
83
+ (0, inversify_1.inject)(browser_1.KeybindingRegistry),
84
+ tslib_1.__metadata("design:type", browser_1.KeybindingRegistry)
85
+ ], ScmAmendWidget.prototype, "keybindings", void 0);
86
+ exports.ScmAmendWidget = ScmAmendWidget = ScmAmendWidget_1 = tslib_1.__decorate([
87
+ (0, inversify_1.injectable)(),
88
+ tslib_1.__param(0, (0, inversify_1.inject)(browser_1.ContextMenuRenderer)),
89
+ tslib_1.__metadata("design:paramtypes", [browser_1.ContextMenuRenderer])
90
+ ], ScmAmendWidget);
91
+ //# sourceMappingURL=scm-amend-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-amend-widget.js","sourceRoot":"","sources":["../../src/browser/scm-amend-widget.tsx"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,qCAAqC;AACrC,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;;;;;AAEhF,4DAAkE;AAClE,mDAA0D;AAC1D,kDAAkD;AAClD,qDAEiC;AACjC,+CAA2C;AAC3C,6DAAwD;AACxD,+DAA0D;AAGnD,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,qBAAW;IAa3C,YACiC,mBAA2D;QAExF,KAAK,EAAE,CAAC;QAFwC,wBAAmB,GAAnB,mBAAmB,CAAqB;QAHlF,sBAAiB,GAAG,IAAI,CAAC;QA+BzB,kBAAa,GAAG,CAAC,KAA6F,EAAE,EAAE;YACxH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;YACtD,IAAI,UAAU,EAAE,CAAC;gBACb,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;YAC3F,CAAC;QACL,CAAC,CAAC;QA9BE,IAAI,CAAC,aAAa,GAAG;YACjB,eAAe,EAAE,IAAI;YACrB,kBAAkB,EAAE,EAAE;SACzB,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,gBAAc,CAAC,EAAE,CAAC;IAChC,CAAC;IAES,MAAM;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;QACtD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC,aAAa,CACtB,uCAAiB,EACjB;gBACI,GAAG,EAAE,SAAS,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC3C,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;gBACtB,UAAU,EAAE,UAAU;gBACtB,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY;gBACjD,gBAAgB,EAAE,IAAI,CAAC,aAAa;gBACpC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,cAAc,EAAE,IAAI,CAAC,cAAc;aACtC,CACJ,CAAC;QACN,CAAC;IACL,CAAC;;AAxCQ,wCAAc;AAEhB,iBAAE,GAAG,kBAAkB,AAArB,CAAsB;AAEQ;IAAtC,IAAA,kBAAM,EAAC,wBAAU,CAAC;sCAAgC,wBAAU;kDAAC;AACjB;IAA5C,IAAA,kBAAM,EAAC,qCAAgB,CAAC;sCAAmC,qCAAgB;qDAAC;AAClC;IAA1C,IAAA,kBAAM,EAAC,wBAAc,CAAC;;sDAAmD;AAC7B;IAA5C,IAAA,kBAAM,EAAC,yBAAgB,CAAC;sCAAsC,yBAAgB;wDAAC;AACtC;IAAzC,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCAAmC,uBAAa;qDAAC;AACxB;IAA9C,IAAA,kBAAM,EAAC,4BAAkB,CAAC;sCAAiC,4BAAkB;mDAAC;yBATtE,cAAc;IAD1B,IAAA,sBAAU,GAAE;IAeJ,mBAAA,IAAA,kBAAM,EAAC,6BAAmB,CAAC,CAAA;6CAAyC,6BAAmB;GAdnF,cAAc,CAiD1B"}
@@ -0,0 +1,4 @@
1
+ export declare class ScmAvatarService {
2
+ getAvatar(email: string): Promise<string>;
3
+ }
4
+ //# sourceMappingURL=scm-avatar-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scm-avatar-service.d.ts","sourceRoot":"","sources":["../../src/browser/scm-avatar-service.ts"],"names":[],"mappings":"AAmBA,qBACa,gBAAgB;IAEnB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAIlD"}