xtralab 0.15.0 → 0.15.1

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 (228) hide show
  1. package/README.md +10 -0
  2. package/lib/about/icons.d.ts +0 -5
  3. package/lib/about/icons.js +0 -5
  4. package/lib/about/index.d.ts +4 -8
  5. package/lib/about/index.js +6 -17
  6. package/lib/agentSessions.d.ts +9 -29
  7. package/lib/agentSessions.js +2 -7
  8. package/lib/askAgent/editorSelection.d.ts +20 -26
  9. package/lib/askAgent/editorSelection.js +11 -26
  10. package/lib/askAgent/icons.d.ts +2 -3
  11. package/lib/askAgent/icons.js +2 -3
  12. package/lib/askAgent/index.d.ts +4 -26
  13. package/lib/askAgent/index.js +54 -158
  14. package/lib/askAgent/popup.d.ts +12 -16
  15. package/lib/askAgent/popup.js +18 -37
  16. package/lib/askAgent/prompt.d.ts +3 -5
  17. package/lib/askAgent/prompt.js +6 -19
  18. package/lib/askAgent/queue.d.ts +11 -21
  19. package/lib/askAgent/queue.js +9 -19
  20. package/lib/askAgent/queuePanel.d.ts +13 -18
  21. package/lib/askAgent/queuePanel.js +15 -37
  22. package/lib/askAgent/targetPicker.d.ts +2 -9
  23. package/lib/askAgent/targetPicker.js +6 -11
  24. package/lib/askAgent/tokens.d.ts +32 -46
  25. package/lib/askAgent/tokens.js +4 -6
  26. package/lib/commandBar/index.d.ts +4 -13
  27. package/lib/commandBar/index.js +21 -39
  28. package/lib/customPanel/index.js +15 -0
  29. package/lib/editorBreadcrumbs/index.d.ts +3 -6
  30. package/lib/editorBreadcrumbs/index.js +10 -6
  31. package/lib/editorBreadcrumbs/widget.d.ts +17 -4
  32. package/lib/editorBreadcrumbs/widget.js +11 -17
  33. package/lib/editorIndent/index.d.ts +4 -12
  34. package/lib/editorIndent/index.js +8 -23
  35. package/lib/fileBrowser/commands.d.ts +28 -19
  36. package/lib/fileBrowser/commands.js +39 -98
  37. package/lib/fileBrowser/contents.d.ts +3 -0
  38. package/lib/fileBrowser/dragAndDrop.d.ts +17 -4
  39. package/lib/fileBrowser/dragAndDrop.js +2 -7
  40. package/lib/fileBrowser/fileBrowser.d.ts +19 -9
  41. package/lib/fileBrowser/fileBrowser.js +68 -216
  42. package/lib/fileBrowser/gitStatus.d.ts +4 -9
  43. package/lib/fileBrowser/gitStatus.js +7 -17
  44. package/lib/fileBrowser/gitignore.d.ts +4 -17
  45. package/lib/fileBrowser/gitignore.js +4 -25
  46. package/lib/fileBrowser/icons.d.ts +7 -17
  47. package/lib/fileBrowser/icons.js +25 -80
  48. package/lib/fileBrowser/index.js +2 -4
  49. package/lib/fileBrowser/widget.d.ts +126 -48
  50. package/lib/fileBrowser/widget.js +89 -4
  51. package/lib/fileTypeIcons/index.js +0 -10
  52. package/lib/git/api.d.ts +5 -13
  53. package/lib/git/api.js +10 -36
  54. package/lib/git/askRequest.d.ts +4 -8
  55. package/lib/git/askRequest.js +6 -20
  56. package/lib/git/commands.d.ts +40 -5
  57. package/lib/git/commands.js +16 -10
  58. package/lib/git/diffModel.js +4 -0
  59. package/lib/git/diffSurface.d.ts +41 -55
  60. package/lib/git/diffSurface.js +42 -117
  61. package/lib/git/diffWidget.d.ts +81 -2
  62. package/lib/git/diffWidget.js +62 -12
  63. package/lib/git/imageDiff.d.ts +5 -6
  64. package/lib/git/imageDiff.js +18 -48
  65. package/lib/git/index.d.ts +0 -3
  66. package/lib/git/index.js +3 -8
  67. package/lib/git/notebookDiff.d.ts +110 -33
  68. package/lib/git/notebookDiff.js +52 -195
  69. package/lib/git/tokens.d.ts +73 -31
  70. package/lib/git/tokens.js +2 -3
  71. package/lib/highlight/index.d.ts +4 -10
  72. package/lib/highlight/index.js +10 -41
  73. package/lib/index.d.ts +0 -9
  74. package/lib/index.js +0 -9
  75. package/lib/launcher/agents.d.ts +55 -51
  76. package/lib/launcher/agents.js +15 -57
  77. package/lib/launcher/availability.d.ts +3 -9
  78. package/lib/launcher/availability.js +3 -9
  79. package/lib/launcher/commands.d.ts +7 -32
  80. package/lib/launcher/commands.js +14 -45
  81. package/lib/launcher/dashboard.d.ts +19 -24
  82. package/lib/launcher/dashboard.js +21 -67
  83. package/lib/launcher/editorRegistry.d.ts +10 -22
  84. package/lib/launcher/editorRegistry.js +14 -18
  85. package/lib/launcher/editors.d.ts +39 -45
  86. package/lib/launcher/editors.js +8 -34
  87. package/lib/launcher/icons.d.ts +0 -12
  88. package/lib/launcher/icons.js +5 -39
  89. package/lib/launcher/index.js +12 -55
  90. package/lib/launcher/invocation.d.ts +4 -10
  91. package/lib/launcher/invocation.js +7 -22
  92. package/lib/launcher/registry.d.ts +9 -7
  93. package/lib/launcher/registry.js +9 -7
  94. package/lib/launcher/tokens.d.ts +10 -22
  95. package/lib/launcher/tokens.js +5 -8
  96. package/lib/menuBar/index.d.ts +3 -10
  97. package/lib/menuBar/index.js +11 -28
  98. package/lib/menus/index.d.ts +3 -9
  99. package/lib/menus/index.js +14 -30
  100. package/lib/omnibox/files.d.ts +2 -4
  101. package/lib/omnibox/files.js +5 -11
  102. package/lib/omnibox/index.d.ts +4 -14
  103. package/lib/omnibox/index.js +9 -27
  104. package/lib/omnibox/model.d.ts +38 -10
  105. package/lib/omnibox/model.js +15 -33
  106. package/lib/omnibox/recents.d.ts +15 -17
  107. package/lib/omnibox/recents.js +12 -17
  108. package/lib/omnibox/tokens.d.ts +5 -10
  109. package/lib/omnibox/tokens.js +2 -6
  110. package/lib/omnibox/widget.d.ts +11 -7
  111. package/lib/omnibox/widget.js +8 -16
  112. package/lib/searchReplace/index.d.ts +4 -20
  113. package/lib/searchReplace/index.js +7 -27
  114. package/lib/showOutput/index.d.ts +3 -12
  115. package/lib/showOutput/index.js +6 -22
  116. package/lib/sidebar/index.d.ts +4 -7
  117. package/lib/sidebar/index.js +5 -12
  118. package/lib/terminalNotifications/index.d.ts +4 -10
  119. package/lib/terminalNotifications/index.js +6 -20
  120. package/lib/terminals/agentTerminals.d.ts +12 -5
  121. package/lib/terminals/agentTerminals.js +25 -44
  122. package/lib/terminals/detection.d.ts +4 -8
  123. package/lib/terminals/detection.js +4 -8
  124. package/lib/terminals/index.d.ts +0 -35
  125. package/lib/terminals/index.js +12 -101
  126. package/lib/terminals/model.d.ts +64 -139
  127. package/lib/terminals/model.js +80 -220
  128. package/lib/terminals/tokens.d.ts +11 -22
  129. package/lib/terminals/tokens.js +2 -2
  130. package/lib/terminals/widget.d.ts +43 -13
  131. package/lib/terminals/widget.js +33 -18
  132. package/lib/topBar/icons.d.ts +3 -8
  133. package/lib/topBar/icons.js +3 -8
  134. package/lib/topBar/index.d.ts +4 -11
  135. package/lib/topBar/index.js +10 -38
  136. package/lib/walkthrough/index.d.ts +4 -9
  137. package/lib/walkthrough/index.js +6 -20
  138. package/lib/walkthrough/panel.d.ts +40 -9
  139. package/lib/walkthrough/panel.js +4 -10
  140. package/package.json +2 -2
  141. package/src/about/icons.ts +0 -5
  142. package/src/about/index.tsx +6 -17
  143. package/src/agentSessions.ts +9 -29
  144. package/src/askAgent/editorSelection.ts +22 -29
  145. package/src/askAgent/icons.ts +2 -3
  146. package/src/askAgent/index.ts +54 -158
  147. package/src/askAgent/popup.tsx +23 -45
  148. package/src/askAgent/prompt.ts +6 -19
  149. package/src/askAgent/queue.ts +13 -24
  150. package/src/askAgent/queuePanel.tsx +21 -46
  151. package/src/askAgent/targetPicker.tsx +5 -15
  152. package/src/askAgent/tokens.ts +32 -46
  153. package/src/commandBar/index.ts +24 -39
  154. package/src/customPanel/index.ts +15 -0
  155. package/src/editorBreadcrumbs/index.ts +10 -6
  156. package/src/editorBreadcrumbs/widget.ts +23 -17
  157. package/src/editorIndent/index.ts +17 -23
  158. package/src/fileBrowser/commands.ts +57 -98
  159. package/src/fileBrowser/contents.ts +3 -0
  160. package/src/fileBrowser/dragAndDrop.ts +17 -7
  161. package/src/fileBrowser/fileBrowser.tsx +84 -223
  162. package/src/fileBrowser/gitStatus.ts +7 -17
  163. package/src/fileBrowser/gitignore.ts +4 -25
  164. package/src/fileBrowser/icons.ts +25 -80
  165. package/src/fileBrowser/index.ts +2 -4
  166. package/src/fileBrowser/widget.tsx +149 -50
  167. package/src/fileTypeIcons/index.ts +0 -10
  168. package/src/git/api.ts +10 -36
  169. package/src/git/askRequest.ts +6 -20
  170. package/src/git/commands.ts +70 -10
  171. package/src/git/diffModel.ts +25 -0
  172. package/src/git/diffSurface.tsx +71 -159
  173. package/src/git/diffWidget.tsx +104 -14
  174. package/src/git/imageDiff.tsx +45 -51
  175. package/src/git/index.ts +3 -8
  176. package/src/git/notebookDiff.tsx +211 -238
  177. package/src/git/tokens.ts +73 -31
  178. package/src/highlight/index.ts +10 -41
  179. package/src/index.ts +0 -9
  180. package/src/launcher/agents.ts +64 -95
  181. package/src/launcher/availability.ts +3 -9
  182. package/src/launcher/commands.ts +14 -51
  183. package/src/launcher/dashboard.tsx +49 -88
  184. package/src/launcher/editorRegistry.ts +21 -29
  185. package/src/launcher/editors.ts +39 -58
  186. package/src/launcher/icons.ts +5 -39
  187. package/src/launcher/index.ts +12 -55
  188. package/src/launcher/invocation.ts +7 -22
  189. package/src/launcher/registry.ts +9 -7
  190. package/src/launcher/tokens.ts +10 -22
  191. package/src/menuBar/index.ts +11 -28
  192. package/src/menus/index.ts +14 -30
  193. package/src/omnibox/files.ts +10 -14
  194. package/src/omnibox/index.ts +9 -27
  195. package/src/omnibox/model.ts +50 -38
  196. package/src/omnibox/recents.ts +17 -22
  197. package/src/omnibox/tokens.ts +5 -10
  198. package/src/omnibox/widget.tsx +14 -19
  199. package/src/searchReplace/index.ts +7 -27
  200. package/src/showOutput/index.ts +6 -22
  201. package/src/sidebar/index.ts +20 -12
  202. package/src/terminalNotifications/index.ts +42 -25
  203. package/src/terminals/agentTerminals.ts +25 -49
  204. package/src/terminals/detection.ts +4 -8
  205. package/src/terminals/index.ts +12 -101
  206. package/src/terminals/model.ts +130 -246
  207. package/src/terminals/tokens.ts +11 -22
  208. package/src/terminals/widget.tsx +48 -31
  209. package/src/topBar/icons.ts +3 -8
  210. package/src/topBar/index.ts +21 -44
  211. package/src/walkthrough/index.ts +6 -20
  212. package/src/walkthrough/panel.ts +40 -10
  213. package/style/about.css +2 -7
  214. package/style/askAgent.css +8 -40
  215. package/style/base.css +9 -45
  216. package/style/chrome.css +108 -308
  217. package/style/commandBar.css +4 -20
  218. package/style/customPanel.css +1 -4
  219. package/style/git.css +22 -184
  220. package/style/highlight.css +1 -3
  221. package/style/launcher.css +6 -70
  222. package/style/omnibox.css +2 -14
  223. package/style/showOutput.css +0 -6
  224. package/style/sidebar.css +29 -9
  225. package/style/tabs.css +5 -13
  226. package/style/terminals.css +6 -53
  227. package/style/topBar.css +2 -22
  228. package/style/walkthrough.css +0 -8
@@ -28,16 +28,25 @@ export namespace CommandIDs {
28
28
  * Argument shapes used by {@link CommandIDs.openDiff}.
29
29
  */
30
30
  export namespace CommandArguments {
31
+ /**
32
+ * The arguments for the open-diff command.
33
+ */
31
34
  export interface IOpenDiff {
35
+ /**
36
+ * The server-relative path of the repository containing the change.
37
+ */
32
38
  repoPath: string;
39
+ /**
40
+ * The file change to show.
41
+ */
33
42
  change: IFileChange;
43
+ /**
44
+ * Whether to open the diff as a pinned tab instead of the shared preview.
45
+ */
34
46
  pin?: boolean;
35
47
  }
36
48
  }
37
49
 
38
- /**
39
- * Widget id of the single, reused preview diff tab.
40
- */
41
50
  export const PREVIEW_DIFF_WIDGET_ID = 'xtralab:diff:preview';
42
51
 
43
52
  /**
@@ -70,14 +79,23 @@ export class DiffMainAreaWidget extends MainAreaWidget<XtralabDiffWidget> {
70
79
  this._trans = trans;
71
80
  }
72
81
 
82
+ /**
83
+ * The file change currently displayed.
84
+ */
73
85
  get change(): IFileChange {
74
86
  return this._change;
75
87
  }
76
88
 
89
+ /**
90
+ * Whether the widget is pinned rather than the shared preview.
91
+ */
77
92
  get pinned(): boolean {
78
93
  return this._pinned;
79
94
  }
80
95
 
96
+ /**
97
+ * Pin the widget; a no-op when already pinned.
98
+ */
81
99
  pin(): void {
82
100
  if (this._pinned) {
83
101
  return;
@@ -86,10 +104,16 @@ export class DiffMainAreaWidget extends MainAreaWidget<XtralabDiffWidget> {
86
104
  this._pinnedChanged.emit(true);
87
105
  }
88
106
 
107
+ /**
108
+ * A signal emitted when the widget becomes pinned.
109
+ */
89
110
  get pinnedChanged(): ISignal<this, boolean> {
90
111
  return this._pinnedChanged;
91
112
  }
92
113
 
114
+ /**
115
+ * Display a new file change and update the tab title, caption, and icon.
116
+ */
93
117
  setChange(repoPath: string, change: IFileChange): void {
94
118
  this._change = change;
95
119
  this.content.setModel(fileChangeToDiffModel(repoPath, change));
@@ -104,21 +128,48 @@ export class DiffMainAreaWidget extends MainAreaWidget<XtralabDiffWidget> {
104
128
  private _pinnedChanged = new Signal<this, boolean>(this);
105
129
  }
106
130
 
131
+ /**
132
+ * The options used to create a diff main area widget.
133
+ */
107
134
  interface ICreateDiffWidgetOptions {
135
+ /**
136
+ * The server-relative path of the repository containing the change.
137
+ */
108
138
  repoPath: string;
139
+ /**
140
+ * The file change to display.
141
+ */
109
142
  change: IFileChange;
143
+ /**
144
+ * Theme manager the diff view follows; may be `null`.
145
+ */
110
146
  themeManager: IThemeManager | null;
147
+ /**
148
+ * Contents manager used to write hunk-discard results.
149
+ */
111
150
  contentsManager: Contents.IManager;
151
+ /**
152
+ * Rendermime registry used by notebook diffs; may be `null`.
153
+ */
112
154
  rendermime: IRenderMimeRegistry | null;
155
+ /**
156
+ * Ask-agent popup for prompting an agent about diff lines; may be `null`.
157
+ */
113
158
  askAgent: IAskAgent | null;
159
+ /**
160
+ * Translation bundle for user-facing strings.
161
+ */
114
162
  trans: TranslationBundle;
163
+ /**
164
+ * Whether the widget opens pinned instead of as the shared preview.
165
+ */
115
166
  pinned?: boolean;
167
+ /**
168
+ * Callback invoked when the widget becomes pinned.
169
+ */
116
170
  onPinned?: (widget: DiffMainAreaWidget) => void;
117
171
  }
118
172
 
119
- /**
120
- * Build the launcher's diff tab around the shared diff widget.
121
- */
122
173
  function createDiffWidget(
123
174
  options: ICreateDiffWidgetOptions
124
175
  ): DiffMainAreaWidget {
@@ -158,7 +209,6 @@ function createDiffWidget(
158
209
  widget.toolbar.addItem('pin', pinButton);
159
210
  addDiffToolbarItems(widget.toolbar, content);
160
211
 
161
- // Keep chrome visible only while there is a relevant toolbar control.
162
212
  const syncToolbarVisibility = (): void => {
163
213
  if (widget.isDisposed) {
164
214
  return;
@@ -186,7 +236,6 @@ function createDiffWidget(
186
236
  }
187
237
  syncToolbarVisibility();
188
238
  };
189
- // Auto-close once a discard leaves nothing to show.
190
239
  const onEmptied = (): void => {
191
240
  if (!widget.isDisposed) {
192
241
  widget.close();
@@ -206,8 +255,17 @@ function createDiffWidget(
206
255
  return widget;
207
256
  }
208
257
 
258
+ /**
259
+ * The options for {@link registerGitCommands}.
260
+ */
209
261
  interface IRegisterGitCommandsOptions {
262
+ /**
263
+ * The JupyterLab application, providing the commands registry and shell.
264
+ */
210
265
  app: JupyterFrontEnd;
266
+ /**
267
+ * Theme manager the diff views follow; may be `null`.
268
+ */
211
269
  themeManager: IThemeManager | null;
212
270
  /**
213
271
  * Contents manager used to write hunk-discard results.
@@ -233,12 +291,14 @@ interface IRegisterGitCommandsOptions {
233
291
  * Look up an already-open diff widget for a file change.
234
292
  */
235
293
  findDiff(change: IFileChange, pin?: boolean): DiffMainAreaWidget | undefined;
294
+ /**
295
+ * Callback invoked when a preview diff widget becomes pinned.
296
+ */
236
297
  onPinned(widget: DiffMainAreaWidget): void;
237
298
  }
238
299
 
239
300
  /**
240
- * Register the launcher's git diff command on the application command
241
- * registry.
301
+ * Register the launcher's git diff command.
242
302
  */
243
303
  export function registerGitCommands(
244
304
  options: IRegisterGitCommandsOptions
@@ -80,14 +80,39 @@ class FileChangeDiffModel implements IXtralabDiffModel {
80
80
  };
81
81
  }
82
82
 
83
+ /**
84
+ * A signal emitted when the reference or challenger changes; this static
85
+ * model never emits it.
86
+ */
83
87
  readonly changed: ISignal<Git.Diff.IModel, Git.Diff.IModelChange> =
84
88
  new Signal<Git.Diff.IModel, Git.Diff.IModelChange>(this);
89
+ /**
90
+ * The reference (old) side of the diff.
91
+ */
85
92
  reference: Git.Diff.IContent;
93
+ /**
94
+ * The challenger (new) side of the diff.
95
+ */
86
96
  challenger: Git.Diff.IContent;
97
+ /**
98
+ * Repo-relative path of the changed file.
99
+ */
87
100
  readonly filename: string;
101
+ /**
102
+ * The rename source path; `undefined` for non-renames.
103
+ */
88
104
  readonly oldFilename: string | undefined;
105
+ /**
106
+ * Path of the git repository, relative to the server root.
107
+ */
89
108
  readonly repositoryPath: string;
109
+ /**
110
+ * Whether the file content is binary.
111
+ */
90
112
  readonly isBinary: boolean;
113
+ /**
114
+ * Whether hunks can be discarded through a working-tree save.
115
+ */
91
116
  readonly canDiscard: boolean;
92
117
  }
93
118