xtralab 0.15.0 → 0.15.2
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.
- package/README.md +65 -30
- package/lib/about/icons.d.ts +0 -5
- package/lib/about/icons.js +0 -5
- package/lib/about/index.d.ts +4 -8
- package/lib/about/index.js +6 -17
- package/lib/agentSessions.d.ts +9 -29
- package/lib/agentSessions.js +2 -7
- package/lib/askAgent/editorSelection.d.ts +20 -26
- package/lib/askAgent/editorSelection.js +11 -26
- package/lib/askAgent/icons.d.ts +2 -3
- package/lib/askAgent/icons.js +2 -3
- package/lib/askAgent/index.d.ts +4 -26
- package/lib/askAgent/index.js +54 -158
- package/lib/askAgent/popup.d.ts +12 -16
- package/lib/askAgent/popup.js +18 -37
- package/lib/askAgent/prompt.d.ts +3 -5
- package/lib/askAgent/prompt.js +6 -19
- package/lib/askAgent/queue.d.ts +11 -21
- package/lib/askAgent/queue.js +9 -19
- package/lib/askAgent/queuePanel.d.ts +13 -18
- package/lib/askAgent/queuePanel.js +15 -37
- package/lib/askAgent/targetPicker.d.ts +2 -9
- package/lib/askAgent/targetPicker.js +6 -11
- package/lib/askAgent/tokens.d.ts +32 -46
- package/lib/askAgent/tokens.js +4 -6
- package/lib/commandBar/index.d.ts +4 -13
- package/lib/commandBar/index.js +21 -39
- package/lib/customPanel/index.js +15 -0
- package/lib/editorBreadcrumbs/index.d.ts +3 -6
- package/lib/editorBreadcrumbs/index.js +10 -6
- package/lib/editorBreadcrumbs/widget.d.ts +17 -4
- package/lib/editorBreadcrumbs/widget.js +11 -17
- package/lib/editorIndent/index.d.ts +4 -12
- package/lib/editorIndent/index.js +8 -23
- package/lib/fileBrowser/commands.d.ts +29 -19
- package/lib/fileBrowser/commands.js +83 -97
- package/lib/fileBrowser/contents.d.ts +3 -0
- package/lib/fileBrowser/dragAndDrop.d.ts +17 -4
- package/lib/fileBrowser/dragAndDrop.js +2 -7
- package/lib/fileBrowser/fileBrowser.d.ts +19 -9
- package/lib/fileBrowser/fileBrowser.js +70 -222
- package/lib/fileBrowser/gitStatus.d.ts +16 -10
- package/lib/fileBrowser/gitStatus.js +31 -30
- package/lib/fileBrowser/gitignore.d.ts +4 -17
- package/lib/fileBrowser/gitignore.js +4 -25
- package/lib/fileBrowser/icons.d.ts +7 -17
- package/lib/fileBrowser/icons.js +25 -80
- package/lib/fileBrowser/index.js +2 -4
- package/lib/fileBrowser/widget.d.ts +141 -48
- package/lib/fileBrowser/widget.js +102 -4
- package/lib/fileTypeIcons/index.js +0 -10
- package/lib/git/api.d.ts +5 -13
- package/lib/git/api.js +10 -36
- package/lib/git/askRequest.d.ts +4 -8
- package/lib/git/askRequest.js +6 -20
- package/lib/git/commands.d.ts +45 -5
- package/lib/git/commands.js +20 -13
- package/lib/git/diffModel.js +4 -0
- package/lib/git/diffPreferences.d.ts +90 -0
- package/lib/git/diffPreferences.js +107 -0
- package/lib/git/diffProvider.js +10 -2
- package/lib/git/diffSurface.d.ts +64 -63
- package/lib/git/diffSurface.js +72 -213
- package/lib/git/diffTheme.d.ts +7 -0
- package/lib/git/diffTheme.js +23 -0
- package/lib/git/diffWidget.d.ts +70 -14
- package/lib/git/diffWidget.js +100 -94
- package/lib/git/imageDiff.d.ts +14 -6
- package/lib/git/imageDiff.js +19 -75
- package/lib/git/index.d.ts +0 -3
- package/lib/git/index.js +44 -10
- package/lib/git/notebookDiff.d.ts +110 -33
- package/lib/git/notebookDiff.js +55 -197
- package/lib/git/tokens.d.ts +73 -31
- package/lib/git/tokens.js +2 -3
- package/lib/highlight/index.d.ts +4 -10
- package/lib/highlight/index.js +10 -41
- package/lib/index.d.ts +0 -9
- package/lib/index.js +0 -9
- package/lib/launcher/agents.d.ts +55 -51
- package/lib/launcher/agents.js +15 -57
- package/lib/launcher/availability.d.ts +3 -9
- package/lib/launcher/availability.js +3 -9
- package/lib/launcher/commands.d.ts +7 -32
- package/lib/launcher/commands.js +14 -45
- package/lib/launcher/dashboard.d.ts +19 -24
- package/lib/launcher/dashboard.js +21 -67
- package/lib/launcher/editorRegistry.d.ts +10 -22
- package/lib/launcher/editorRegistry.js +14 -18
- package/lib/launcher/editors.d.ts +39 -45
- package/lib/launcher/editors.js +8 -34
- package/lib/launcher/icons.d.ts +0 -12
- package/lib/launcher/icons.js +5 -39
- package/lib/launcher/index.js +12 -55
- package/lib/launcher/invocation.d.ts +4 -10
- package/lib/launcher/invocation.js +7 -22
- package/lib/launcher/registry.d.ts +9 -7
- package/lib/launcher/registry.js +9 -7
- package/lib/launcher/tokens.d.ts +10 -22
- package/lib/launcher/tokens.js +5 -8
- package/lib/menuBar/index.d.ts +3 -10
- package/lib/menuBar/index.js +11 -28
- package/lib/menus/index.d.ts +3 -9
- package/lib/menus/index.js +14 -30
- package/lib/omnibox/files.d.ts +2 -4
- package/lib/omnibox/files.js +5 -11
- package/lib/omnibox/index.d.ts +4 -14
- package/lib/omnibox/index.js +9 -27
- package/lib/omnibox/model.d.ts +38 -10
- package/lib/omnibox/model.js +15 -33
- package/lib/omnibox/recents.d.ts +15 -17
- package/lib/omnibox/recents.js +12 -17
- package/lib/omnibox/tokens.d.ts +5 -10
- package/lib/omnibox/tokens.js +2 -6
- package/lib/omnibox/widget.d.ts +11 -7
- package/lib/omnibox/widget.js +8 -16
- package/lib/searchReplace/index.d.ts +4 -20
- package/lib/searchReplace/index.js +7 -27
- package/lib/showOutput/index.d.ts +3 -12
- package/lib/showOutput/index.js +6 -22
- package/lib/sidebar/index.d.ts +4 -7
- package/lib/sidebar/index.js +5 -12
- package/lib/terminalNotifications/index.d.ts +4 -10
- package/lib/terminalNotifications/index.js +6 -20
- package/lib/terminals/agentTerminals.d.ts +12 -5
- package/lib/terminals/agentTerminals.js +25 -44
- package/lib/terminals/detection.d.ts +4 -8
- package/lib/terminals/detection.js +4 -8
- package/lib/terminals/index.d.ts +0 -35
- package/lib/terminals/index.js +12 -101
- package/lib/terminals/model.d.ts +64 -139
- package/lib/terminals/model.js +80 -220
- package/lib/terminals/tokens.d.ts +11 -22
- package/lib/terminals/tokens.js +2 -2
- package/lib/terminals/widget.d.ts +43 -13
- package/lib/terminals/widget.js +33 -18
- package/lib/topBar/icons.d.ts +3 -8
- package/lib/topBar/icons.js +3 -8
- package/lib/topBar/index.d.ts +4 -11
- package/lib/topBar/index.js +10 -38
- package/lib/walkthrough/index.d.ts +4 -9
- package/lib/walkthrough/index.js +6 -20
- package/lib/walkthrough/panel.d.ts +40 -9
- package/lib/walkthrough/panel.js +4 -10
- package/package.json +5 -3
- package/schema/git-diff-preferences.json +42 -0
- package/src/about/icons.ts +0 -5
- package/src/about/index.tsx +6 -17
- package/src/agentSessions.ts +9 -29
- package/src/askAgent/editorSelection.ts +22 -29
- package/src/askAgent/icons.ts +2 -3
- package/src/askAgent/index.ts +54 -158
- package/src/askAgent/popup.tsx +23 -45
- package/src/askAgent/prompt.ts +6 -19
- package/src/askAgent/queue.ts +13 -24
- package/src/askAgent/queuePanel.tsx +21 -46
- package/src/askAgent/targetPicker.tsx +5 -15
- package/src/askAgent/tokens.ts +32 -46
- package/src/commandBar/index.ts +24 -39
- package/src/customPanel/index.ts +15 -0
- package/src/editorBreadcrumbs/index.ts +10 -6
- package/src/editorBreadcrumbs/widget.ts +23 -17
- package/src/editorIndent/index.ts +17 -23
- package/src/fileBrowser/commands.ts +119 -96
- package/src/fileBrowser/contents.ts +3 -0
- package/src/fileBrowser/dragAndDrop.ts +17 -7
- package/src/fileBrowser/fileBrowser.tsx +86 -230
- package/src/fileBrowser/gitStatus.ts +36 -33
- package/src/fileBrowser/gitignore.ts +4 -25
- package/src/fileBrowser/icons.ts +25 -80
- package/src/fileBrowser/index.ts +2 -4
- package/src/fileBrowser/widget.tsx +171 -50
- package/src/fileTypeIcons/index.ts +0 -10
- package/src/git/api.ts +10 -36
- package/src/git/askRequest.ts +6 -20
- package/src/git/commands.ts +83 -11
- package/src/git/diffModel.ts +25 -0
- package/src/git/diffPreferences.ts +192 -0
- package/src/git/diffProvider.tsx +11 -2
- package/src/git/diffSurface.tsx +165 -286
- package/src/git/diffTheme.ts +24 -0
- package/src/git/diffWidget.tsx +194 -134
- package/src/git/imageDiff.tsx +56 -84
- package/src/git/index.ts +54 -10
- package/src/git/notebookDiff.tsx +214 -240
- package/src/git/tokens.ts +73 -31
- package/src/highlight/index.ts +10 -41
- package/src/index.ts +0 -9
- package/src/launcher/agents.ts +64 -95
- package/src/launcher/availability.ts +3 -9
- package/src/launcher/commands.ts +14 -51
- package/src/launcher/dashboard.tsx +49 -88
- package/src/launcher/editorRegistry.ts +21 -29
- package/src/launcher/editors.ts +39 -58
- package/src/launcher/icons.ts +5 -39
- package/src/launcher/index.ts +12 -55
- package/src/launcher/invocation.ts +7 -22
- package/src/launcher/registry.ts +9 -7
- package/src/launcher/tokens.ts +10 -22
- package/src/menuBar/index.ts +11 -28
- package/src/menus/index.ts +14 -30
- package/src/omnibox/files.ts +10 -14
- package/src/omnibox/index.ts +9 -27
- package/src/omnibox/model.ts +50 -38
- package/src/omnibox/recents.ts +17 -22
- package/src/omnibox/tokens.ts +5 -10
- package/src/omnibox/widget.tsx +14 -19
- package/src/searchReplace/index.ts +7 -27
- package/src/showOutput/index.ts +6 -22
- package/src/sidebar/index.ts +20 -12
- package/src/terminalNotifications/index.ts +42 -25
- package/src/terminals/agentTerminals.ts +25 -49
- package/src/terminals/detection.ts +4 -8
- package/src/terminals/index.ts +12 -101
- package/src/terminals/model.ts +130 -246
- package/src/terminals/tokens.ts +11 -22
- package/src/terminals/widget.tsx +48 -31
- package/src/topBar/icons.ts +3 -8
- package/src/topBar/index.ts +21 -44
- package/src/walkthrough/index.ts +6 -20
- package/src/walkthrough/panel.ts +40 -10
- package/style/about.css +2 -7
- package/style/askAgent.css +8 -40
- package/style/base.css +9 -45
- package/style/chrome.css +108 -308
- package/style/commandBar.css +4 -20
- package/style/customPanel.css +1 -4
- package/style/git.css +26 -186
- package/style/highlight.css +1 -3
- package/style/launcher.css +6 -70
- package/style/omnibox.css +2 -14
- package/style/showOutput.css +0 -6
- package/style/sidebar.css +29 -9
- package/style/tabs.css +5 -13
- package/style/terminals.css +6 -53
- package/style/topBar.css +2 -22
- package/style/walkthrough.css +0 -8
package/style/commandBar.css
CHANGED
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* The widget is a settings-driven item of JupyterLab's top bar toolbar
|
|
5
|
-
* (`#jp-top-bar`, factory "TopBar"), declared in schema/command-bar.json with
|
|
6
|
-
* a rank past the toolbar's built-in spacer, so it sits at the trailing end of
|
|
7
|
-
* the toolbar next to the right-sidebar toggle button.
|
|
8
|
-
*
|
|
9
|
-
* The widget's root (`.jp-xtralab-CommandBar`) is a plain wrapper that takes
|
|
10
|
-
* the core `.jp-Toolbar > .jp-Toolbar-item` sizing — full toolbar height,
|
|
11
|
-
* centered flex — so it needs no rules of its own; the pill button inside
|
|
12
|
-
* keeps its own compact height. It is styled with the theme's input-field
|
|
13
|
-
* fill so it reads as a search box and tracks each theme's input styling
|
|
14
|
-
* across light and dark (a flat layout color is near-black in some dark
|
|
15
|
-
* themes).
|
|
16
|
-
*/
|
|
1
|
+
/* The bare root takes core toolbar-item sizing; the input-field fill reads as
|
|
2
|
+
* a search box (a flat layout color is near-black in some dark themes). */
|
|
17
3
|
.jp-xtralab-CommandBar-button {
|
|
18
4
|
display: flex;
|
|
19
5
|
flex: 0 0 auto;
|
|
@@ -56,9 +42,8 @@
|
|
|
56
42
|
height: 14px;
|
|
57
43
|
}
|
|
58
44
|
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
tracks the pill's text color and brightens with the label on hover. */
|
|
45
|
+
/* Core's search icon paints with a fixed `jp-icon3` gray; currentColor makes
|
|
46
|
+
the magnifier track the pill's text color. */
|
|
62
47
|
.jp-xtralab-CommandBar-button .jp-icon3[fill] {
|
|
63
48
|
fill: currentcolor;
|
|
64
49
|
}
|
|
@@ -70,7 +55,6 @@
|
|
|
70
55
|
white-space: nowrap;
|
|
71
56
|
}
|
|
72
57
|
|
|
73
|
-
/* Keyboard-shortcut hint, pushed to the trailing edge by the growing label. */
|
|
74
58
|
.jp-xtralab-CommandBar-shortcut {
|
|
75
59
|
flex: 0 0 auto;
|
|
76
60
|
margin-left: 6px;
|
package/style/customPanel.css
CHANGED
package/style/git.css
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* providers, so these rules cover both hosts.
|
|
2
|
+
* @pierre/diffs viewer styles, shared by the launcher dashboard's diff tab
|
|
3
|
+
* and the jupyterlab-git diff providers.
|
|
5
4
|
*/
|
|
6
5
|
|
|
7
|
-
/*
|
|
8
|
-
* Diff viewer (main area). The `MainAreaWidget` holding the React content
|
|
9
|
-
* gets sized by JupyterLab's box layout; the inner content div fills it
|
|
10
|
-
* and provides vertical scroll. Horizontal scrolling within each code
|
|
11
|
-
* block is owned by `@pierre/diffs` via its internal `data-code` rules.
|
|
12
|
-
*
|
|
13
|
-
* The block also forwards JupyterLab's theme variables onto the
|
|
14
|
-
* `--diffs-*-override` properties the library exposes, so the diff
|
|
15
|
-
* recolors with the active theme.
|
|
16
|
-
*/
|
|
17
6
|
.jp-xtralab-DiffWidget {
|
|
18
7
|
background-color: var(--jp-layout-color1);
|
|
19
8
|
color: var(--jp-ui-font-color1);
|
|
@@ -23,13 +12,6 @@
|
|
|
23
12
|
font-style: italic;
|
|
24
13
|
}
|
|
25
14
|
|
|
26
|
-
/*
|
|
27
|
-
* Flex-column container: an optional toolbar at the top (notebook view
|
|
28
|
-
* mode toggle) plus a body that hosts the scrollable diff and the
|
|
29
|
-
* column resize handle. Splitting these responsibilities keeps the
|
|
30
|
-
* resize handle pinned to the visible viewport while the diff content
|
|
31
|
-
* scrolls underneath, and keeps the toolbar always visible.
|
|
32
|
-
*/
|
|
33
15
|
.jp-xtralab-DiffWidget-content {
|
|
34
16
|
display: flex;
|
|
35
17
|
flex-direction: column;
|
|
@@ -38,9 +20,6 @@
|
|
|
38
20
|
background-color: var(--jp-layout-color1);
|
|
39
21
|
color: var(--jp-ui-font-color1);
|
|
40
22
|
|
|
41
|
-
/*
|
|
42
|
-
* Feed JupyterLab theme colors into @pierre/diffs.
|
|
43
|
-
*/
|
|
44
23
|
--diffs-bg-override: var(--jp-layout-color1);
|
|
45
24
|
--diffs-bg-buffer-override: var(--jp-layout-color1);
|
|
46
25
|
--diffs-bg-context-override: var(--jp-layout-color1);
|
|
@@ -56,12 +35,8 @@
|
|
|
56
35
|
--diffs-deletion-color-override: var(--jp-error-color1);
|
|
57
36
|
}
|
|
58
37
|
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
* its own positioning context so the resizer can be absolutely placed
|
|
62
|
-
* within the body's bounds (and therefore aligned with the visible
|
|
63
|
-
* scroll area, not the toolbar above it).
|
|
64
|
-
*/
|
|
38
|
+
/* Positioning context for the resizer, aligning it with the scroll area
|
|
39
|
+
rather than the toolbar. */
|
|
65
40
|
.jp-xtralab-DiffWidget-body {
|
|
66
41
|
position: relative;
|
|
67
42
|
flex: 1 1 auto;
|
|
@@ -74,23 +49,16 @@
|
|
|
74
49
|
overflow: auto;
|
|
75
50
|
}
|
|
76
51
|
|
|
77
|
-
/*
|
|
78
|
-
* Segmented selectors that live in the diff toolbar: the Notebook/JSON
|
|
79
|
-
* view-mode toggle (for `.ipynb` diffs) and the Split/Unified diff-style
|
|
80
|
-
* toggle (for textual/code diffs). The host toolbar provides its own
|
|
81
|
-
* background and border, so these are just the segmented controls.
|
|
82
|
-
*/
|
|
83
52
|
.jp-xtralab-DiffWidget-viewModeToolbarItem,
|
|
84
|
-
.jp-xtralab-DiffWidget-diffStyleToolbarItem
|
|
53
|
+
.jp-xtralab-DiffWidget-diffStyleToolbarItem,
|
|
54
|
+
.jp-xtralab-DiffWidget-lineWrapToolbarItem {
|
|
85
55
|
display: flex;
|
|
86
56
|
align-items: center;
|
|
87
57
|
font-size: var(--jp-ui-font-size0);
|
|
88
58
|
}
|
|
89
59
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
*/
|
|
93
|
-
.jp-xtralab-DiffWidget-diffStyleToolbarItem {
|
|
60
|
+
.jp-xtralab-DiffWidget-diffStyleToolbarItem,
|
|
61
|
+
.jp-xtralab-DiffWidget-lineWrapToolbarItem {
|
|
94
62
|
margin-left: 4px;
|
|
95
63
|
}
|
|
96
64
|
|
|
@@ -116,12 +84,6 @@
|
|
|
116
84
|
background-color: var(--jp-layout-color2);
|
|
117
85
|
}
|
|
118
86
|
|
|
119
|
-
/*
|
|
120
|
-
* Active segment: brand-colour fill with the inverse UI font colour — the
|
|
121
|
-
* same pair JupyterLab uses to mark selected items (the command palette
|
|
122
|
-
* active item, the file browser selection). The inverse font colour adapts
|
|
123
|
-
* per theme, so the label stays legible on the brand fill in both themes.
|
|
124
|
-
*/
|
|
125
87
|
.jp-xtralab-DiffWidget-segmentedButton[data-active='true'] {
|
|
126
88
|
background-color: var(--jp-brand-color1);
|
|
127
89
|
color: var(--jp-ui-inverse-font-color1);
|
|
@@ -131,11 +93,6 @@
|
|
|
131
93
|
background-color: var(--jp-brand-color1);
|
|
132
94
|
}
|
|
133
95
|
|
|
134
|
-
/*
|
|
135
|
-
* Icon variant of the segmented button, used by the Split/Unified toggle.
|
|
136
|
-
* The inline SVGs fill with `currentColor`, so the active/hover color rules
|
|
137
|
-
* above carry over to the glyph.
|
|
138
|
-
*/
|
|
139
96
|
.jp-xtralab-DiffWidget-segmentedButton-icon {
|
|
140
97
|
display: inline-flex;
|
|
141
98
|
align-items: center;
|
|
@@ -149,12 +106,6 @@
|
|
|
149
106
|
height: 14px;
|
|
150
107
|
}
|
|
151
108
|
|
|
152
|
-
/*
|
|
153
|
-
* Draggable column splitter. Sits on top of the diff (z-index above the
|
|
154
|
-
* content) but stays a thin strip so it doesn't visually intrude. The
|
|
155
|
-
* `transform: translateX(-50%)` centers the strip on the column boundary
|
|
156
|
-
* the inline `left` percentage points to.
|
|
157
|
-
*/
|
|
158
109
|
.jp-xtralab-DiffWidget-resizer {
|
|
159
110
|
position: absolute;
|
|
160
111
|
top: 0;
|
|
@@ -192,12 +143,7 @@
|
|
|
192
143
|
color: var(--jp-ui-font-color1);
|
|
193
144
|
}
|
|
194
145
|
|
|
195
|
-
/*
|
|
196
|
-
* Per-hunk action overlay. The diff library injects a row at the
|
|
197
|
-
* annotation's anchor line and renders this content inside it; we keep the
|
|
198
|
-
* row visually unobtrusive — a single small icon button that fades in on
|
|
199
|
-
* row hover — so the annotation does not compete with the diff content.
|
|
200
|
-
*/
|
|
146
|
+
/* The diff library injects this per-hunk row at the anchor line. */
|
|
201
147
|
.jp-xtralab-DiffWidget-hunkAnnotation {
|
|
202
148
|
display: flex;
|
|
203
149
|
justify-content: flex-end;
|
|
@@ -234,16 +180,8 @@
|
|
|
234
180
|
height: 14px;
|
|
235
181
|
}
|
|
236
182
|
|
|
237
|
-
/*
|
|
238
|
-
|
|
239
|
-
* optional notebook-level metadata block at the bottom. Each cell carries
|
|
240
|
-
* its own header (kind badge + cell index + cell type) and a body with the
|
|
241
|
-
* source / outputs / metadata sub-diffs the @pierre/diffs library produces.
|
|
242
|
-
*
|
|
243
|
-
* The sticky header keeps the scope visible while the user scrolls through
|
|
244
|
-
* a long cell, and the data-kind attributes drive the colored badges and
|
|
245
|
-
* left borders that distinguish added / removed / modified / unchanged.
|
|
246
|
-
*/
|
|
183
|
+
/* Notebook diff: one block per cell plus an optional notebook-level
|
|
184
|
+
metadata block. */
|
|
247
185
|
.jp-xtralab-NotebookDiff {
|
|
248
186
|
display: flex;
|
|
249
187
|
flex-direction: column;
|
|
@@ -251,13 +189,6 @@
|
|
|
251
189
|
gap: 8px;
|
|
252
190
|
}
|
|
253
191
|
|
|
254
|
-
/*
|
|
255
|
-
* The cell entry grid. Two equal columns mirror the old / new mental model
|
|
256
|
-
* the column header bar establishes; each cell entry below either spans
|
|
257
|
-
* both columns (modified / unchanged) or sits in a single column with an
|
|
258
|
-
* empty placeholder on the other side (added / removed). Auto rows let
|
|
259
|
-
* each cell pick its own height naturally.
|
|
260
|
-
*/
|
|
261
192
|
.jp-xtralab-NotebookDiff-grid {
|
|
262
193
|
display: grid;
|
|
263
194
|
grid-template-columns: 1fr 1fr;
|
|
@@ -277,12 +208,6 @@
|
|
|
277
208
|
grid-column: 2;
|
|
278
209
|
}
|
|
279
210
|
|
|
280
|
-
/*
|
|
281
|
-
* Empty placeholder rendered in the column opposite an added or removed
|
|
282
|
-
* cell. Visible (dashed outline) so the user can see the alignment gap
|
|
283
|
-
* the missing cell creates between old and new. Sized roughly like a
|
|
284
|
-
* minimal cell card so the row height is consistent.
|
|
285
|
-
*/
|
|
286
211
|
.jp-xtralab-NotebookDiff-empty {
|
|
287
212
|
display: flex;
|
|
288
213
|
align-items: center;
|
|
@@ -437,12 +362,6 @@
|
|
|
437
362
|
border-bottom: 1px solid var(--jp-border-color3);
|
|
438
363
|
}
|
|
439
364
|
|
|
440
|
-
/*
|
|
441
|
-
* The verbatim source listing rendered when the user expands an unchanged
|
|
442
|
-
* cell. We don't pass it through @pierre/diffs because there is no diff —
|
|
443
|
-
* just the cell contents — but match the diff library's monospace rhythm
|
|
444
|
-
* so the surrounding cells still look uniform.
|
|
445
|
-
*/
|
|
446
365
|
.jp-xtralab-NotebookDiff-unchangedSource {
|
|
447
366
|
margin: 0;
|
|
448
367
|
padding: 8px 12px;
|
|
@@ -463,12 +382,6 @@
|
|
|
463
382
|
border-top: 1px solid var(--jp-border-color3);
|
|
464
383
|
}
|
|
465
384
|
|
|
466
|
-
/*
|
|
467
|
-
* Side-by-side panes used by both OutputsSection and MarkdownPreviewSection.
|
|
468
|
-
* The grid columns mirror the split-mode FileDiff above so the two halves
|
|
469
|
-
* read as the same left=old / right=new mental model the user is already
|
|
470
|
-
* tracking on the source diff.
|
|
471
|
-
*/
|
|
472
385
|
.jp-xtralab-NotebookDiff-sideBySide {
|
|
473
386
|
display: flex;
|
|
474
387
|
flex-direction: column;
|
|
@@ -486,11 +399,6 @@
|
|
|
486
399
|
grid-template-columns: 1fr;
|
|
487
400
|
}
|
|
488
401
|
|
|
489
|
-
/*
|
|
490
|
-
* Each pane takes one column. The data-side colored bar on the left edge
|
|
491
|
-
* matches the cell-block kind colors so the pane's role (old vs new) is
|
|
492
|
-
* clear even in dark theme where the diff library's column-tint is subtle.
|
|
493
|
-
*/
|
|
494
402
|
.jp-xtralab-NotebookDiff-sidePane {
|
|
495
403
|
padding: 8px 12px;
|
|
496
404
|
min-width: 0;
|
|
@@ -507,11 +415,6 @@
|
|
|
507
415
|
background-color: var(--jp-layout-color1);
|
|
508
416
|
}
|
|
509
417
|
|
|
510
|
-
/*
|
|
511
|
-
* Rendermime widgets bring their own padding/margin defaults; we constrain
|
|
512
|
-
* them to the pane width so a wide HTML output (table, image) doesn't push
|
|
513
|
-
* the grid out of shape.
|
|
514
|
-
*/
|
|
515
418
|
.jp-xtralab-NotebookDiff-sidePane .jp-RenderedHTMLCommon,
|
|
516
419
|
.jp-xtralab-NotebookDiff-sidePane .jp-OutputArea {
|
|
517
420
|
max-width: 100%;
|
|
@@ -532,16 +435,10 @@
|
|
|
532
435
|
}
|
|
533
436
|
|
|
534
437
|
/*
|
|
535
|
-
* Image diff
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
*
|
|
539
|
-
* Every mode is sized to *fit the widget*: the images are contained
|
|
540
|
-
* within the available area (never upscaled past their natural size, and
|
|
541
|
-
* scaled down to fit when larger) so nothing overflows. In particular the
|
|
542
|
-
* swipe/onion slider stays on screen even when the two revisions have very
|
|
543
|
-
* different dimensions. A neutral checkerboard sits behind each image so
|
|
544
|
-
* transparency reads clearly in both light and dark themes.
|
|
438
|
+
* Image diff: xtralab's replacement for the jupyterlab-git image diff —
|
|
439
|
+
* 2-up / swipe / onion-skin under a sticky mode selector. Every mode fits
|
|
440
|
+
* the widget (images scale down, never upscale past natural size), with a
|
|
441
|
+
* theme-aware checkerboard behind transparency.
|
|
545
442
|
*/
|
|
546
443
|
.jp-xtralab-ImageDiff {
|
|
547
444
|
display: flex;
|
|
@@ -559,12 +456,8 @@
|
|
|
559
456
|
border-bottom: 1px solid var(--jp-border-color2);
|
|
560
457
|
}
|
|
561
458
|
|
|
562
|
-
/*
|
|
563
|
-
|
|
564
|
-
* flex child that fits inside it (`min-height: 0` lets the flex/grid
|
|
565
|
-
* children shrink below their intrinsic size so `max-height` on the
|
|
566
|
-
* images can take effect).
|
|
567
|
-
*/
|
|
459
|
+
/* The body never scrolls; min-height: 0 lets children shrink below their
|
|
460
|
+
intrinsic size so the image max-heights engage. */
|
|
568
461
|
.jp-xtralab-ImageDiff-body {
|
|
569
462
|
flex: 1 1 auto;
|
|
570
463
|
min-height: 0;
|
|
@@ -591,18 +484,6 @@
|
|
|
591
484
|
margin: 0;
|
|
592
485
|
}
|
|
593
486
|
|
|
594
|
-
/*
|
|
595
|
-
* Checkerboard + border so transparent regions read clearly. The squares
|
|
596
|
-
* are theme-aware (JupyterLab layout colors) so the frame stays a calm
|
|
597
|
-
* light checkerboard in the light theme and a calm dark one in the dark
|
|
598
|
-
* theme, rather than a bright white block.
|
|
599
|
-
*
|
|
600
|
-
* 2-up and onion fill their whole panel with it; the swipe view instead
|
|
601
|
-
* carries it on its image-sized *frame* (not the surrounding area) so the
|
|
602
|
-
* checkerboard hugs the image. That keeps the divider's top/bottom handles
|
|
603
|
-
* sitting at the image edges instead of floating in the middle of a
|
|
604
|
-
* checkerboard expanse.
|
|
605
|
-
*/
|
|
606
487
|
.jp-xtralab-ImageDiff-frame,
|
|
607
488
|
.jp-xtralab-ImageDiff-stack,
|
|
608
489
|
.jp-xtralab-ImageDiff-swipeFrame {
|
|
@@ -665,12 +546,7 @@
|
|
|
665
546
|
gap: 12px;
|
|
666
547
|
}
|
|
667
548
|
|
|
668
|
-
/*
|
|
669
|
-
* Onion-skin view: both revisions occupy the same grid cell so they
|
|
670
|
-
* overlay. `place-items: center` keeps each image at its own size (no
|
|
671
|
-
* stretching the smaller revision up to the larger one's box) while
|
|
672
|
-
* `max-height/width` scale either one down to fit the available space.
|
|
673
|
-
*/
|
|
549
|
+
/* Onion-skin: both revisions share one grid cell. */
|
|
674
550
|
.jp-xtralab-ImageDiff-stack {
|
|
675
551
|
flex: 1 1 auto;
|
|
676
552
|
min-height: 0;
|
|
@@ -691,12 +567,6 @@
|
|
|
691
567
|
object-fit: contain;
|
|
692
568
|
}
|
|
693
569
|
|
|
694
|
-
/*
|
|
695
|
-
* Swipe view: a transparent container that just centers the image-sized
|
|
696
|
-
* frame in whatever space the body leaves. The checkerboard lives on the
|
|
697
|
-
* frame (above), not here, so it hugs the image rather than spanning the
|
|
698
|
-
* panel.
|
|
699
|
-
*/
|
|
700
570
|
.jp-xtralab-ImageDiff-swipeArea {
|
|
701
571
|
flex: 1 1 auto;
|
|
702
572
|
min-height: 0;
|
|
@@ -708,17 +578,11 @@
|
|
|
708
578
|
}
|
|
709
579
|
|
|
710
580
|
/*
|
|
711
|
-
* The frame is sized
|
|
712
|
-
*
|
|
713
|
-
*
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
* as it is dragged. (A full-width frame instead let the line drift off the
|
|
717
|
-
* seam by up to half the surrounding letterbox.)
|
|
718
|
-
*
|
|
719
|
-
* The whole frame is the drag target: pressing anywhere over the image
|
|
720
|
-
* jumps the divider to that x and then drag-tracks the pointer (GitHub /
|
|
721
|
-
* Pierre style), keeping cursor, divider and seam together.
|
|
581
|
+
* The frame is JS-sized (inline width/height) to exactly the displayed
|
|
582
|
+
* image box, so the divider's `left: N%`, the pointer mapping in
|
|
583
|
+
* setFromClientX, and the images' clip-path insets all resolve against the
|
|
584
|
+
* same width — the divider stays on the seam. The whole frame is the drag
|
|
585
|
+
* target: pressing jumps the divider there, then drag-tracks the pointer.
|
|
722
586
|
*/
|
|
723
587
|
.jp-xtralab-ImageDiff-swipeFrame {
|
|
724
588
|
position: relative;
|
|
@@ -728,12 +592,6 @@
|
|
|
728
592
|
touch-action: none;
|
|
729
593
|
}
|
|
730
594
|
|
|
731
|
-
/*
|
|
732
|
-
* Both revisions fill the frame, so an image's clip inset of N% and the
|
|
733
|
-
* divider at `left: N%` cut at the same x. `object-fit: contain` only
|
|
734
|
-
* letterboxes when the two revisions differ in aspect ratio; for the
|
|
735
|
-
* common same-dimensions edit it fills the box exactly.
|
|
736
|
-
*/
|
|
737
595
|
.jp-xtralab-ImageDiff-swipeImg {
|
|
738
596
|
position: absolute;
|
|
739
597
|
inset: 0;
|
|
@@ -743,19 +601,9 @@
|
|
|
743
601
|
object-fit: contain;
|
|
744
602
|
}
|
|
745
603
|
|
|
746
|
-
/*
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
* barely visible — especially on light content where it disappears into
|
|
750
|
-
* the background — so an explicit divider with high-contrast styling is
|
|
751
|
-
* drawn on top. White core with dark outline + soft shadow keeps it
|
|
752
|
-
* legible against any image, light or dark.
|
|
753
|
-
*
|
|
754
|
-
* The divider and its handles are the only elements that show the
|
|
755
|
-
* `ew-resize` cursor — clicks anywhere over the image still bubble up
|
|
756
|
-
* to the frame's drag handler, but the cursor only signals "drag me"
|
|
757
|
-
* over the actual control affordances.
|
|
758
|
-
*/
|
|
604
|
+
/* The natural seam between the clipped revisions is barely visible, so an
|
|
605
|
+
explicit high-contrast divider is drawn on top: white core + dark
|
|
606
|
+
outline reads on any image. */
|
|
759
607
|
.jp-xtralab-ImageDiff-swipeDivider {
|
|
760
608
|
position: absolute;
|
|
761
609
|
top: 0;
|
|
@@ -777,11 +625,6 @@
|
|
|
777
625
|
0 0 6px rgb(0 0 0 / 45%);
|
|
778
626
|
}
|
|
779
627
|
|
|
780
|
-
/*
|
|
781
|
-
* Handle pucks at the top and bottom of the divider. The two arrows
|
|
782
|
-
* inside (left + right chevrons) signal that the line can be dragged
|
|
783
|
-
* sideways — matching GitHub's image diff swipe affordance.
|
|
784
|
-
*/
|
|
785
628
|
.jp-xtralab-ImageDiff-swipeDividerHandle {
|
|
786
629
|
position: absolute;
|
|
787
630
|
left: 50%;
|
|
@@ -808,9 +651,6 @@
|
|
|
808
651
|
bottom: -14px;
|
|
809
652
|
}
|
|
810
653
|
|
|
811
|
-
/*
|
|
812
|
-
* Chevron triangles drawn with borders so no asset is needed.
|
|
813
|
-
*/
|
|
814
654
|
.jp-xtralab-ImageDiff-swipeDividerArrow {
|
|
815
655
|
width: 0;
|
|
816
656
|
height: 0;
|
package/style/highlight.css
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Line highlight applied by `xtralab:highlight-lines`. The class lands on the
|
|
3
|
-
* CodeMirror
|
|
4
|
-
* and a left accent bar marks the run. The translucent background keeps the
|
|
5
|
-
* code legible on both light and dark themes.
|
|
3
|
+
* CodeMirror `.cm-line` wrapper, so the tint spans the full editor width.
|
|
6
4
|
*/
|
|
7
5
|
|
|
8
6
|
.jp-xtralab-highlightLine {
|
package/style/launcher.css
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Styling for the launcher dashboard widget. The widget replaces
|
|
3
|
-
* JupyterLab's stock `jp-Launcher`, so we don't piggy-back on the
|
|
4
|
-
* `jp-Launcher-*` classes — every selector is scoped under
|
|
5
|
-
* `jp-xtralab-Launcher` to keep the rules from leaking elsewhere.
|
|
6
|
-
*
|
|
7
|
-
* Colors and spacing pull from the active JupyterLab theme via the
|
|
8
|
-
* standard `--jp-*` custom properties so the launcher tracks dark/light
|
|
9
|
-
* mode automatically.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
1
|
.jp-xtralab-Launcher {
|
|
13
2
|
display: flex;
|
|
14
3
|
flex-direction: column;
|
|
@@ -32,12 +21,6 @@
|
|
|
32
21
|
box-sizing: border-box;
|
|
33
22
|
}
|
|
34
23
|
|
|
35
|
-
/*
|
|
36
|
-
* Sections — grouped content blocks. The agent picker uses a regular
|
|
37
|
-
* `<section>`; the changes panel uses a `<details>` so the user can
|
|
38
|
-
* collapse it. Both share the same gap + alignment so the page reads
|
|
39
|
-
* uniformly regardless of which element type is underneath.
|
|
40
|
-
*/
|
|
41
24
|
.jp-xtralab-Launcher-section {
|
|
42
25
|
display: flex;
|
|
43
26
|
flex-direction: column;
|
|
@@ -53,15 +36,10 @@
|
|
|
53
36
|
text-transform: uppercase;
|
|
54
37
|
}
|
|
55
38
|
|
|
56
|
-
/*
|
|
57
|
-
* Collapsible changes section. The native `<summary>` is a flex row
|
|
58
|
-
* that hosts the title, count badge, and refresh action; the disclosure
|
|
59
|
-
* triangle is the browser default — it rotates when the section opens.
|
|
60
|
-
*/
|
|
61
39
|
.jp-xtralab-Launcher-changes-section,
|
|
62
40
|
.jp-xtralab-Launcher-mcp-section {
|
|
63
41
|
/* Reset the default `<details>` block so its contents inherit the
|
|
64
|
-
section's gap-aligned column layout
|
|
42
|
+
section's gap-aligned column layout. */
|
|
65
43
|
display: flex;
|
|
66
44
|
flex-direction: column;
|
|
67
45
|
gap: 8px;
|
|
@@ -87,11 +65,8 @@
|
|
|
87
65
|
outline-offset: 1px;
|
|
88
66
|
}
|
|
89
67
|
|
|
90
|
-
/*
|
|
91
|
-
*
|
|
92
|
-
* native triangle, so draw one (a CSS border triangle in `currentColor`) and
|
|
93
|
-
* rotate it from pointing right to pointing down when the section is open.
|
|
94
|
-
*/
|
|
68
|
+
/* `display: flex` on the `<summary>` drops the browser's native disclosure
|
|
69
|
+
* triangle, so draw a border triangle and rotate it when the section opens. */
|
|
95
70
|
.jp-xtralab-Launcher-section-summary::-webkit-details-marker {
|
|
96
71
|
display: none;
|
|
97
72
|
}
|
|
@@ -164,11 +139,6 @@
|
|
|
164
139
|
font-size: var(--jp-ui-font-size1);
|
|
165
140
|
}
|
|
166
141
|
|
|
167
|
-
/*
|
|
168
|
-
* Changed files list. Each row is a button so click + keyboard activate
|
|
169
|
-
* both work; the letter on the left is the file's single-letter git status,
|
|
170
|
-
* colored to match the @pierre/trees file tree's decorations.
|
|
171
|
-
*/
|
|
172
142
|
.jp-xtralab-Launcher-changes {
|
|
173
143
|
list-style: none;
|
|
174
144
|
margin: 0;
|
|
@@ -179,13 +149,8 @@
|
|
|
179
149
|
border-radius: 4px;
|
|
180
150
|
overflow: hidden;
|
|
181
151
|
|
|
182
|
-
/*
|
|
183
|
-
|
|
184
|
-
* defaults. The file tree resolves those through `light-dark()` under
|
|
185
|
-
* `color-scheme: light dark` — i.e. by OS appearance — so the
|
|
186
|
-
* `prefers-color-scheme` override below reproduces that exact resolution
|
|
187
|
-
* and keeps these letters in lockstep with the tree's.
|
|
188
|
-
*/
|
|
152
|
+
/* Mirrors the @pierre/trees `--trees-status-*` defaults, which resolve via
|
|
153
|
+
`light-dark()` by OS appearance — hence the `prefers-color-scheme` override below. */
|
|
189
154
|
--xtralab-git-status-added: #16a994;
|
|
190
155
|
--xtralab-git-status-modified: #1ca1c7;
|
|
191
156
|
--xtralab-git-status-renamed: #d5a910;
|
|
@@ -228,11 +193,6 @@
|
|
|
228
193
|
outline-offset: -1px;
|
|
229
194
|
}
|
|
230
195
|
|
|
231
|
-
/*
|
|
232
|
-
* Bare colored letter, not a filled badge — the same treatment the
|
|
233
|
-
* @pierre/trees file tree gives its git status decorations. The fixed width
|
|
234
|
-
* keeps the letters in a tidy gutter so the paths stay column-aligned.
|
|
235
|
-
*/
|
|
236
196
|
.jp-xtralab-Launcher-change-badge {
|
|
237
197
|
display: inline-flex;
|
|
238
198
|
align-items: center;
|
|
@@ -283,10 +243,6 @@
|
|
|
283
243
|
letter-spacing: 0.04em;
|
|
284
244
|
}
|
|
285
245
|
|
|
286
|
-
/*
|
|
287
|
-
* Prompt textarea + agent grid. The textarea is full-width and resizable
|
|
288
|
-
* vertically; the grid renders agent buttons as compact, icon-led tiles.
|
|
289
|
-
*/
|
|
290
246
|
.jp-xtralab-Launcher-prompt {
|
|
291
247
|
width: 100%;
|
|
292
248
|
min-height: 72px;
|
|
@@ -373,20 +329,6 @@
|
|
|
373
329
|
text-align: center;
|
|
374
330
|
}
|
|
375
331
|
|
|
376
|
-
/*
|
|
377
|
-
* MCP registration hint. A collapsed-by-default `<details>` listing the
|
|
378
|
-
* one-line `mcp add` command for each installed agent that supports one,
|
|
379
|
-
* each paired with a Copy button. The command sits in a read-only `<code>`
|
|
380
|
-
* box — the user copies it and runs it in their own terminal — so the row
|
|
381
|
-
* is not itself a button.
|
|
382
|
-
*/
|
|
383
|
-
|
|
384
|
-
/*
|
|
385
|
-
* The MCP hint is an optional helper, not a primary section, so its summary
|
|
386
|
-
* is rendered lighter and in sentence case rather than reusing the bold,
|
|
387
|
-
* uppercase treatment of the `START AN AGENT` / `OPEN` headers — otherwise a
|
|
388
|
-
* collapsed disclosure reads as a misplaced top-level section.
|
|
389
|
-
*/
|
|
390
332
|
.jp-xtralab-Launcher-mcp-section .jp-xtralab-Launcher-section-title {
|
|
391
333
|
font-weight: 500;
|
|
392
334
|
text-transform: none;
|
|
@@ -421,11 +363,7 @@
|
|
|
421
363
|
overflow-x: auto;
|
|
422
364
|
}
|
|
423
365
|
|
|
424
|
-
/*
|
|
425
|
-
* Copy buttons are sized to the longest label ("Copied!") and centered, so
|
|
426
|
-
* swapping "Copy" ↔ "Copied!" never resizes the button or ragged-aligns the
|
|
427
|
-
* column.
|
|
428
|
-
*/
|
|
366
|
+
/* Sized to the longest label ("Copied!") so the swap never resizes the button. */
|
|
429
367
|
.jp-xtralab-Launcher-mcp-copy {
|
|
430
368
|
flex: 0 0 auto;
|
|
431
369
|
min-width: 4.5rem;
|
|
@@ -451,8 +389,6 @@
|
|
|
451
389
|
outline-offset: 1px;
|
|
452
390
|
}
|
|
453
391
|
|
|
454
|
-
/* Confirmation state after a successful copy — a clear color shift, paired
|
|
455
|
-
with the button's "Copied!" label, so the action is unmistakable. */
|
|
456
392
|
.jp-xtralab-Launcher-mcp-copy.jp-mod-copied {
|
|
457
393
|
color: var(--jp-success-color1, var(--jp-ui-font-color1));
|
|
458
394
|
border-color: var(--jp-success-color1, var(--jp-border-color1));
|
package/style/omnibox.css
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* The widget node is attached to `document.body` (outside the shell) and only
|
|
5
|
-
* carries theme variables via `jp-ThemedContainer`; the React tree renders the
|
|
6
|
-
* fixed full-screen overlay below it.
|
|
7
|
-
*/
|
|
1
|
+
/* The widget node attaches to `document.body` and carries `jp-ThemedContainer`
|
|
2
|
+
for theme variables; the React tree renders the fixed overlay below. */
|
|
8
3
|
.jp-xtralab-Omnibox {
|
|
9
4
|
position: absolute;
|
|
10
5
|
}
|
|
11
6
|
|
|
12
|
-
/* Transparent full-viewport layer that centers the panel and catches
|
|
13
|
-
click-outside to dismiss. */
|
|
14
7
|
.jp-xtralab-Omnibox-overlay {
|
|
15
8
|
position: fixed;
|
|
16
9
|
inset: 0;
|
|
@@ -26,8 +19,6 @@
|
|
|
26
19
|
width: min(640px, 92vw);
|
|
27
20
|
max-height: 60vh;
|
|
28
21
|
overflow: hidden;
|
|
29
|
-
|
|
30
|
-
/* Drop just below the top bar so it reads as a command-center dropdown. */
|
|
31
22
|
margin-top: calc(var(--jp-private-menubar-height, 28px) + 4px);
|
|
32
23
|
background: var(--jp-layout-color1);
|
|
33
24
|
border: var(--jp-border-width) solid
|
|
@@ -51,9 +42,6 @@
|
|
|
51
42
|
color: var(--jp-ui-font-color3);
|
|
52
43
|
}
|
|
53
44
|
|
|
54
|
-
/* Side gutters float the active-row highlight inside the panel edge,
|
|
55
|
-
matching the menu/palette treatment; section headers and items shift
|
|
56
|
-
together so their left alignment is preserved. */
|
|
57
45
|
.jp-xtralab-Omnibox-results {
|
|
58
46
|
padding: 5px 6px;
|
|
59
47
|
overflow-y: auto;
|
package/style/showOutput.css
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* The panel `xtralab:show` renders into. It holds a single rendered output and
|
|
3
|
-
* scrolls when that output is taller (or wider) than the panel, which matters
|
|
4
|
-
* most in the narrow side area.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
1
|
.jp-xtralab-ShowPanel {
|
|
8
2
|
overflow: auto;
|
|
9
3
|
padding: 8px;
|