@perspective-dev/viewer 5.3.1 → 5.4.0
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/dist/cdn/perspective-viewer.js +6 -6
- package/dist/cdn/perspective-viewer.js.map +2 -2
- package/dist/css/blueprint.css +1 -1
- package/dist/css/botanical.css +1 -1
- package/dist/css/dracula.css +1 -1
- package/dist/css/eggplant.css +1 -1
- package/dist/css/gruvbox-dark.css +1 -1
- package/dist/css/gruvbox.css +1 -1
- package/dist/css/icons.css +1 -1
- package/dist/css/intl/ar.css +1 -0
- package/dist/css/intl/de.css +1 -1
- package/dist/css/intl/es.css +1 -1
- package/dist/css/intl/fr.css +1 -1
- package/dist/css/intl/ja.css +1 -1
- package/dist/css/intl/pt.css +1 -1
- package/dist/css/intl/zh.css +1 -1
- package/dist/css/intl.css +1 -1
- package/dist/css/ledger.css +1 -1
- package/dist/css/monokai.css +1 -1
- package/dist/css/nord.css +1 -1
- package/dist/css/phosphor.css +1 -1
- package/dist/css/pro-dark.css +1 -1
- package/dist/css/pro.css +1 -1
- package/dist/css/solarized-dark.css +1 -1
- package/dist/css/solarized.css +1 -1
- package/dist/css/themes.css +1 -1
- package/dist/css/vaporwave.css +1 -1
- package/dist/css/velvet.css +1 -1
- package/dist/docs/perspective-docs.json +1 -1
- package/dist/esm/extensions.d.ts +0 -5
- package/dist/esm/perspective-viewer.inline.js +9 -9
- package/dist/esm/perspective-viewer.inline.js.map +3 -3
- package/dist/esm/perspective-viewer.js +5 -5
- package/dist/esm/perspective-viewer.js.map +2 -2
- package/dist/esm/ts-rs/ViewOnUpdateResp.d.ts +1 -1
- package/dist/wasm/perspective-viewer.d.ts +62 -73
- package/dist/wasm/perspective-viewer.js +226 -238
- package/dist/wasm/perspective-viewer.wasm +0 -0
- package/dist/wasm/perspective-viewer.wasm.d.ts +18 -28
- package/package.json +7 -7
- package/src/css/_context_menu.css +1 -1
- package/src/css/_dropdown_menu.css +1 -1
- package/src/css/_viewer_bundle.css +7 -8
- package/src/css/column-dropdown.css +0 -3
- package/src/css/column-selector.css +8 -5
- package/src/css/column-settings-panel.css +0 -225
- package/src/css/column-style.css +13 -0
- package/src/css/config-selector.css +18 -10
- package/src/css/filter-dropdown.css +5 -5
- package/src/css/form/debug.css +28 -4
- package/src/css/function-dropdown.css +5 -5
- package/src/css/panel-tab.css +23 -0
- package/src/css/plugin-selector.css +5 -5
- package/src/css/render-warning.css +1 -1
- package/src/css/status-bar.css +52 -21
- package/src/css/type-icon.css +1 -3
- package/src/css/{containers → ui/containers}/context-menu.css +22 -16
- package/src/css/ui/containers/dropdown-menu-items.css +66 -0
- package/src/css/{containers → ui/containers}/dropdown-menu.css +8 -53
- package/src/css/viewer.css +32 -26
- package/src/rust/components/chat_panel.rs +1 -1
- package/src/rust/components/{form/code_editor.rs → code_editor.rs} +4 -2
- package/src/rust/components/column_dropdown.rs +2 -2
- package/src/rust/components/column_selector/active_column.rs +15 -9
- package/src/rust/components/column_selector/aggregate_selector.rs +1 -1
- package/src/rust/components/column_selector/config_selector.rs +2 -2
- package/src/rust/components/column_selector/filter_column.rs +8 -5
- package/src/rust/components/column_selector/inactive_column.rs +4 -2
- package/src/rust/components/column_selector/pivot_column.rs +4 -3
- package/src/rust/components/column_selector/sort_column.rs +7 -4
- package/src/rust/components/column_selector.rs +3 -3
- package/src/rust/components/column_settings_sidebar/style_tab/agg_depth_selector.rs +1 -1
- package/src/rust/components/column_settings_sidebar/style_tab/primitive_field.rs +15 -17
- package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_selector.rs +1 -1
- package/src/rust/components/column_settings_sidebar/style_tab.rs +4 -5
- package/src/rust/components/column_settings_sidebar.rs +3 -4
- package/src/rust/components/copy_dropdown.rs +1 -1
- package/src/rust/components/datetime_column_style/custom.rs +1 -3
- package/src/rust/components/datetime_column_style/simple.rs +1 -2
- package/src/rust/components/datetime_column_style.rs +1 -2
- package/src/rust/components/{form/debug.rs → debug_panel.rs} +5 -5
- package/src/rust/components/{containers/dragdrop_list.rs → dragdrop_list.rs} +2 -10
- package/src/rust/components/export_dropdown.rs +1 -1
- package/src/rust/components/expression_editor.rs +1 -1
- package/src/rust/components/filter_dropdown.rs +2 -2
- package/src/rust/components/function_dropdown.rs +2 -2
- package/src/rust/components/main_panel/frame_theme.rs +3 -59
- package/src/rust/components/main_panel/reconcile.rs +9 -4
- package/src/rust/components/main_panel/render.rs +62 -11
- package/src/rust/components/main_panel/update.rs +39 -10
- package/src/rust/components/main_panel.rs +26 -2
- package/src/rust/components/mod.rs +5 -7
- package/src/rust/components/new_panel_menu.rs +97 -0
- package/src/rust/components/number_series_style.rs +2 -3
- package/src/rust/components/panel_menu.rs +61 -87
- package/src/rust/components/panel_tab.rs +100 -43
- package/src/rust/components/plugin_tab.rs +1 -1
- package/src/rust/components/render_warning.rs +2 -2
- package/src/rust/components/{status_bar_counter.rs → rows_counter.rs} +10 -10
- package/src/rust/components/settings_panel.rs +2 -2
- package/src/rust/components/status_bar.rs +113 -19
- package/src/rust/components/status_indicator.rs +5 -14
- package/src/rust/components/string_column_style.rs +1 -2
- package/src/rust/components/{style/mod.rs → style.rs} +32 -15
- package/src/rust/components/style_controls/number_string_format/digits_section.rs +3 -5
- package/src/rust/components/style_controls/number_string_format/misc_section.rs +1 -1
- package/src/rust/components/style_controls/number_string_format/style_section.rs +1 -1
- package/src/rust/components/viewer/msg.rs +43 -30
- package/src/rust/components/viewer/panels.rs +50 -19
- package/src/rust/components/viewer/render.rs +15 -13
- package/src/rust/components/viewer/settings.rs +137 -68
- package/src/rust/components/viewer/snapshots.rs +5 -10
- package/src/rust/components/viewer/wiring.rs +1 -21
- package/src/rust/components/viewer.rs +15 -10
- package/src/rust/components/window_editor.rs +8 -9
- package/src/rust/config/column_config_schema.rs +2 -27
- package/src/rust/config/mod.rs +0 -2
- package/src/rust/config/workspace_config.rs +2 -1
- package/src/rust/custom_elements/debug_plugin.rs +1 -10
- package/src/rust/custom_elements/mod.rs +0 -3
- package/src/rust/custom_elements/viewer.rs +0 -18
- package/src/rust/js/plugin.rs +0 -86
- package/src/rust/lib.rs +12 -15
- package/src/rust/presentation/column_locator.rs +3 -7
- package/src/rust/presentation.rs +68 -38
- package/src/rust/queries/hosted_tables.rs +38 -0
- package/src/rust/queries/mod.rs +2 -0
- package/src/rust/queries/palette_set.rs +1 -1
- package/src/rust/renderer/activate.rs +1 -3
- package/src/rust/renderer/dispatch.rs +83 -22
- package/src/rust/renderer/limits.rs +24 -5
- package/src/rust/renderer/plugin_config.rs +1 -0
- package/src/rust/renderer/props.rs +2 -1
- package/src/rust/renderer.rs +14 -27
- package/src/rust/session/props.rs +4 -3
- package/src/rust/session/view_subscription.rs +19 -6
- package/src/rust/session.rs +38 -70
- package/src/rust/tasks/create_panel.rs +1 -1
- package/src/rust/tasks/dismiss_render_warning.rs +1 -1
- package/src/rust/tasks/eject.rs +1 -0
- package/src/rust/tasks/pipeline.rs +0 -60
- package/src/rust/tasks/presize_panels.rs +24 -1
- package/src/rust/tasks/restore_and_render.rs +0 -17
- package/src/rust/tasks/send_column_config.rs +1 -1
- package/src/rust/tasks/send_plugin_config.rs +1 -1
- package/src/rust/tasks/set_edit_mode.rs +1 -1
- package/src/rust/{components → ui}/containers/control_group.rs +25 -3
- package/src/rust/{components → ui}/containers/dropdown_menu.rs +5 -2
- package/src/rust/{components → ui}/containers/mod.rs +0 -4
- package/src/rust/{components → ui}/containers/scroll_panel.rs +0 -22
- package/src/rust/{components → ui}/containers/scroll_panel_item.rs +0 -13
- package/src/rust/{components → ui}/containers/select.rs +0 -6
- package/src/rust/{components → ui}/containers/sidebar.rs +5 -32
- package/src/rust/{components → ui}/containers/split_panel.rs +8 -80
- package/src/rust/{components → ui}/containers/tab_list.rs +15 -9
- package/src/rust/{components → ui}/context_menu.rs +8 -13
- package/src/rust/{presentation/drag_helpers.rs → ui/dragdrop.rs} +26 -31
- package/src/rust/{components → ui}/font_loader.rs +0 -26
- package/src/rust/{components → ui}/form/color_selector.rs +4 -2
- package/src/rust/ui/form/intl_label.rs +81 -0
- package/src/rust/{components → ui}/form/mirrored_textarea.rs +0 -53
- package/src/rust/{components → ui}/form/mod.rs +1 -10
- package/src/rust/{components → ui}/form/multi_stop_gradient_selector.rs +4 -5
- package/src/rust/{components → ui}/form/named_value_picker.rs +1 -6
- package/src/rust/{components → ui}/form/number_field.rs +1 -1
- package/src/rust/{components → ui}/form/number_range_field.rs +1 -1
- package/src/rust/{components → ui}/form/optional_field.rs +3 -1
- package/src/rust/{components → ui}/form/palette_selector.rs +4 -5
- package/src/rust/{components → ui}/form/select_enum_field.rs +2 -2
- package/src/rust/{components → ui}/form/select_value_field.rs +2 -2
- package/src/rust/ui/mod.rs +56 -0
- package/src/rust/ui/modal.rs +61 -0
- package/src/rust/{components → ui}/portal.rs +174 -79
- package/src/rust/{components/style/style_provider.rs → ui/style.rs} +4 -34
- package/src/rust/utils/completion.rs +0 -6
- package/src/rust/{config/css_scale.rs → utils/css.rs} +38 -35
- package/src/rust/utils/mod.rs +2 -0
- package/src/rust/workspace.rs +35 -0
- package/src/svg/boolean-type.svg +3 -2
- package/src/svg/checkbox-checked-icon.svg +4 -7
- package/src/svg/checkbox-hover.svg +3 -3
- package/src/svg/checkbox-off.svg +2 -3
- package/src/svg/checkbox-on.svg +3 -3
- package/src/svg/checkbox-unchecked-icon.svg +3 -3
- package/src/svg/datagrid-select-column.svg +8 -15
- package/src/svg/datagrid-select-region.svg +8 -15
- package/src/svg/datagrid-select-row-tree.svg +7 -12
- package/src/svg/datagrid-select-row.svg +8 -13
- package/src/svg/date-type.svg +4 -23
- package/src/svg/drawer-tab-hover.svg +4 -6
- package/src/svg/drawer-tab-invert-hover.svg +5 -5
- package/src/svg/drawer-tab-invert.svg +3 -5
- package/src/svg/drawer-tab.svg +5 -5
- package/src/svg/mega-menu-icons-candlestick.svg +5 -37
- package/src/svg/mega-menu-icons-ohlc.svg +4 -39
- package/src/svg/mega-menu-icons-sunburst.svg +4 -38
- package/src/svg/mega-menu-icons-treemap.svg +3 -43
- package/src/svg/mega-menu-icons-y-scatter.svg +12 -72
- package/src/svg/new-panel-icon.svg +4 -0
- package/src/svg/number-type.svg +3 -3
- package/src/svg/radio-hover.svg +3 -3
- package/src/svg/radio-off.svg +3 -3
- package/src/svg/radio-on.svg +3 -3
- package/src/svg/status_ok.svg +3 -26
- package/src/svg/string-type.svg +4 -8
- package/src/svg/theme-icon.svg +5 -5
- package/src/themes/blueprint.css +0 -57
- package/src/themes/botanical.css +0 -36
- package/src/themes/defaults.css +1 -24
- package/src/themes/dracula.css +0 -58
- package/src/themes/eggplant.css +0 -58
- package/src/themes/gruvbox-dark.css +0 -65
- package/src/themes/gruvbox.css +1 -39
- package/src/themes/icons.css +1 -8
- package/src/themes/intl/ar.css +185 -0
- package/src/themes/intl/de.css +45 -35
- package/src/themes/intl/es.css +40 -30
- package/src/themes/intl/fr.css +39 -29
- package/src/themes/intl/ja.css +41 -31
- package/src/themes/intl/pt.css +37 -27
- package/src/themes/intl/zh.css +47 -37
- package/src/themes/intl.css +16 -3
- package/src/themes/ledger.css +1 -59
- package/src/themes/monokai.css +0 -51
- package/src/themes/nord.css +0 -55
- package/src/themes/phosphor.css +0 -48
- package/src/themes/pro-dark.css +0 -37
- package/src/themes/pro.css +3 -23
- package/src/themes/solarized-dark.css +0 -31
- package/src/themes/solarized.css +1 -24
- package/src/themes/vaporwave.css +0 -44
- package/src/themes/velvet.css +0 -60
- package/src/ts/extensions.ts +0 -13
- package/src/ts/ts-rs/ViewOnUpdateResp.ts +1 -1
- package/src/css/plugin-settings-panel.css +0 -171
- package/src/rust/components/modal.rs +0 -177
- package/src/rust/custom_elements/copy_dropdown.rs +0 -219
- package/src/rust/custom_elements/export_dropdown.rs +0 -216
- package/src/rust/custom_elements/modal.rs +0 -299
- /package/dist/wasm/snippets/{perspective-viewer-87bd21b215d0631a → perspective-viewer-adc6f3f79141112b}/inline0.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-87bd21b215d0631a → perspective-viewer-adc6f3f79141112b}/inline1.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-87bd21b215d0631a → perspective-viewer-adc6f3f79141112b}/inline2.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-87bd21b215d0631a → perspective-viewer-adc6f3f79141112b}/inline3.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-87bd21b215d0631a → perspective-viewer-adc6f3f79141112b}/inline4.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-87bd21b215d0631a → perspective-viewer-adc6f3f79141112b}/inline5.js +0 -0
- /package/src/css/{containers → ui/containers}/scroll-panel.css +0 -0
- /package/src/css/{containers → ui/containers}/split-panel.css +0 -0
- /package/src/css/{containers → ui/containers}/tabs.css +0 -0
- /package/src/css/{dom → ui/dom}/checkbox.css +0 -0
- /package/src/css/{dom → ui/dom}/scrollbar.css +0 -0
- /package/src/css/{dom → ui/dom}/select.css +0 -0
- /package/src/css/{form → ui/form}/mirrored-textarea.css +0 -0
- /package/src/rust/components/{form → code_editor}/highlight.rs +0 -0
- /package/src/rust/{components → ui}/containers/sidebar_close_button.rs +0 -0
- /package/src/rust/{components → ui}/form/number_input.rs +0 -0
package/src/css/panel-tab.css
CHANGED
|
@@ -90,6 +90,10 @@
|
|
|
90
90
|
mask-image: var(--psp-icon--active-indicator--mask-image);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
:host([part~="tab"].closing) {
|
|
94
|
+
pointer-events: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
93
97
|
/* A lone tab (its viewer has a single plugin child) has no stack to open —
|
|
94
98
|
* no caret. Must follow the `.active` rule (equal specificity) to win when
|
|
95
99
|
* the lone tab is also active. */
|
|
@@ -139,6 +143,25 @@
|
|
|
139
143
|
outline: none;
|
|
140
144
|
}
|
|
141
145
|
|
|
146
|
+
span#rows {
|
|
147
|
+
display: flex;
|
|
148
|
+
align-items: baseline;
|
|
149
|
+
gap: 6px;
|
|
150
|
+
margin-left: 12px;
|
|
151
|
+
margin-right: 6px;
|
|
152
|
+
pointer-events: none;
|
|
153
|
+
white-space: nowrap;
|
|
154
|
+
overflow: hidden;
|
|
155
|
+
text-overflow: ellipsis;
|
|
156
|
+
flex: 0 100000000 auto;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
span#rows span.x,
|
|
160
|
+
span#rows span.total {
|
|
161
|
+
text-overflow: ellipsis;
|
|
162
|
+
color: var(--psp-inactive--color);
|
|
163
|
+
}
|
|
164
|
+
|
|
142
165
|
.psp-tab-master {
|
|
143
166
|
margin-right: 6px;
|
|
144
167
|
}
|
|
@@ -34,11 +34,12 @@
|
|
|
34
34
|
margin: 0 0px 0 -9px;
|
|
35
35
|
|
|
36
36
|
#plugin_selector_border {
|
|
37
|
-
height:
|
|
38
|
-
min-height:
|
|
37
|
+
height: 3px;
|
|
38
|
+
min-height: 3px;
|
|
39
39
|
width: 100%;
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
margin-top: 1px;
|
|
41
|
+
background-color: #00000020;
|
|
42
|
+
border-bottom: 1px solid var(--psp-inactive--color, #6e6e6e);
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
.plugin-selector-options {
|
|
@@ -85,7 +86,6 @@
|
|
|
85
86
|
);
|
|
86
87
|
display: flex;
|
|
87
88
|
align-items: center;
|
|
88
|
-
border-bottom: 1px solid transparent;
|
|
89
89
|
box-shadow: 0px 1px var(--psp-inactive--color, #6e6e6e);
|
|
90
90
|
cursor: pointer;
|
|
91
91
|
}
|
package/src/css/status-bar.css
CHANGED
|
@@ -46,10 +46,9 @@
|
|
|
46
46
|
box-shadow: 0 1px 0 0px var(--psp-inactive--color);
|
|
47
47
|
z-index: 6;
|
|
48
48
|
display: var(--psp-status-bar--display, flex);
|
|
49
|
-
gap: 4px;
|
|
50
49
|
align-items: center;
|
|
51
50
|
background: var(--psp--background-color);
|
|
52
|
-
padding: var(--psp-status-bar--padding, 0
|
|
51
|
+
padding: var(--psp-status-bar--padding, 0 26px 0 4px);
|
|
53
52
|
position: relative;
|
|
54
53
|
height: var(--psp-status-bar--height, 38px);
|
|
55
54
|
min-height: var(--psp-status-bar--height, 38px);
|
|
@@ -69,21 +68,28 @@
|
|
|
69
68
|
flex: 1 1000 auto;
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
71
|
+
#panel-bar {
|
|
72
|
+
flex: 0 0 auto;
|
|
73
|
+
height: 100%;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
span#new_panel {
|
|
77
|
+
& > .icon {
|
|
78
|
+
-webkit-mask-image: var(--psp-icon--new-panel--mask-image);
|
|
79
|
+
mask-image: var(--psp-icon--new-panel--mask-image);
|
|
80
|
+
display: inline-flex;
|
|
81
|
+
&:before {
|
|
82
|
+
line-height: 0;
|
|
83
|
+
content: var(--psp-icon--new-panel--mask-image);
|
|
84
|
+
visibility: hidden;
|
|
85
|
+
}
|
|
82
86
|
}
|
|
83
87
|
|
|
84
|
-
span.
|
|
85
|
-
|
|
86
|
-
|
|
88
|
+
span:not(.icon):before {
|
|
89
|
+
content: var(
|
|
90
|
+
--psp-label--new-panel-button--content,
|
|
91
|
+
var(--psp-missing)
|
|
92
|
+
);
|
|
87
93
|
}
|
|
88
94
|
}
|
|
89
95
|
|
|
@@ -371,7 +377,10 @@
|
|
|
371
377
|
}
|
|
372
378
|
|
|
373
379
|
span:not(.icon):before {
|
|
374
|
-
content: var(
|
|
380
|
+
content: var(
|
|
381
|
+
--psp-label--export-button--content,
|
|
382
|
+
var(--psp-missing)
|
|
383
|
+
);
|
|
375
384
|
}
|
|
376
385
|
}
|
|
377
386
|
|
|
@@ -400,7 +409,10 @@
|
|
|
400
409
|
}
|
|
401
410
|
}
|
|
402
411
|
span:not(.icon):before {
|
|
403
|
-
content: var(
|
|
412
|
+
content: var(
|
|
413
|
+
--psp-label--reset-button--content,
|
|
414
|
+
var(--psp-missing)
|
|
415
|
+
);
|
|
404
416
|
}
|
|
405
417
|
}
|
|
406
418
|
|
|
@@ -418,7 +430,10 @@
|
|
|
418
430
|
}
|
|
419
431
|
|
|
420
432
|
span:not(.icon):before {
|
|
421
|
-
content: var(
|
|
433
|
+
content: var(
|
|
434
|
+
--psp-label--copy-button--content,
|
|
435
|
+
var(--psp-missing)
|
|
436
|
+
);
|
|
422
437
|
}
|
|
423
438
|
}
|
|
424
439
|
|
|
@@ -440,8 +455,12 @@
|
|
|
440
455
|
height: 100%;
|
|
441
456
|
}
|
|
442
457
|
|
|
458
|
+
.select-arrow {
|
|
459
|
+
margin: 0;
|
|
460
|
+
}
|
|
461
|
+
|
|
443
462
|
& > .icon {
|
|
444
|
-
margin: 0
|
|
463
|
+
margin: 0 2px 0 2px;
|
|
445
464
|
height: auto;
|
|
446
465
|
-webkit-mask-image: var(--psp-icon--theme--mask-image);
|
|
447
466
|
mask-image: var(--psp-icon--theme--mask-image);
|
|
@@ -452,6 +471,10 @@
|
|
|
452
471
|
visibility: hidden;
|
|
453
472
|
}
|
|
454
473
|
}
|
|
474
|
+
|
|
475
|
+
& > .dropdown-width-container {
|
|
476
|
+
padding-left: 5px;
|
|
477
|
+
}
|
|
455
478
|
}
|
|
456
479
|
|
|
457
480
|
#theme_icon.modified:hover + #theme > .icon {
|
|
@@ -488,6 +511,10 @@
|
|
|
488
511
|
}
|
|
489
512
|
}
|
|
490
513
|
|
|
514
|
+
.modal-target .button > span.icon-label {
|
|
515
|
+
display: none !important;
|
|
516
|
+
}
|
|
517
|
+
|
|
491
518
|
.hover-target {
|
|
492
519
|
margin: 0;
|
|
493
520
|
display: inline-flex;
|
|
@@ -495,11 +522,15 @@
|
|
|
495
522
|
align-items: center;
|
|
496
523
|
|
|
497
524
|
&:focus-within,
|
|
498
|
-
&:hover
|
|
499
|
-
&.modal-target {
|
|
525
|
+
&:hover:not(.modal-target) {
|
|
500
526
|
box-shadow:
|
|
501
527
|
-4px 0 0 var(--psp--color),
|
|
502
528
|
4px 0 0 var(--psp--color);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
&:focus-within,
|
|
532
|
+
&:hover,
|
|
533
|
+
&.modal-target {
|
|
503
534
|
background-color: var(--psp--color);
|
|
504
535
|
}
|
|
505
536
|
|
package/src/css/type-icon.css
CHANGED
|
@@ -12,24 +12,30 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
/* Panel context menu (right-click a panel). The `<perspective-context-menu>`
|
|
15
|
-
* host is
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
* host is a viewer light-DOM child in the top layer (see `PortalModal`),
|
|
16
|
+
* themed by the `--psp-*` vars it inherits; its chrome lives here, exactly
|
|
17
|
+
* like the Copy/Export menus' surface. */
|
|
18
|
+
|
|
19
|
+
@import "./dropdown-menu-items.css";
|
|
20
20
|
|
|
21
21
|
:host {
|
|
22
|
+
overflow: visible;
|
|
23
|
+
padding: 0;
|
|
24
|
+
background-color: var(--psp--background-color, #ffffff);
|
|
25
|
+
color: var(--psp--color, #161616);
|
|
26
|
+
border: 1px solid var(--psp-inactive--color, #ababab);
|
|
27
|
+
border-radius: 0 0 2px 2px;
|
|
22
28
|
outline: none;
|
|
23
29
|
user-select: none;
|
|
24
30
|
font-size: 12px;
|
|
25
|
-
box-shadow:
|
|
31
|
+
box-shadow: var(--psp-dropdown--box-shadow);
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
.context-menu {
|
|
29
35
|
display: flex;
|
|
30
36
|
flex-direction: column;
|
|
31
37
|
min-width: 120px;
|
|
32
|
-
padding:
|
|
38
|
+
padding: 0px 0;
|
|
33
39
|
}
|
|
34
40
|
|
|
35
41
|
.context-menu-item {
|
|
@@ -73,17 +79,11 @@
|
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
|
|
76
|
-
/* Hover flyout. Positioned OUTSIDE the host's box, so the host-level theme
|
|
77
|
-
* chrome (see the :host comment above) doesn't paint it — rebuild the same
|
|
78
|
-
* chrome from the modal selector groups' vars. Edge-adjacent (`left: 100%`,
|
|
79
|
-
* no gap) so the pointer never leaves the hover chain crossing into it;
|
|
80
|
-
* `top: -5px` aligns its first row with the parent row (4px menu padding +
|
|
81
|
-
* 1px border). */
|
|
82
82
|
.context-menu-submenu {
|
|
83
83
|
display: none;
|
|
84
84
|
position: absolute;
|
|
85
85
|
left: 100%;
|
|
86
|
-
top: -
|
|
86
|
+
top: -1px;
|
|
87
87
|
max-height: 50vh;
|
|
88
88
|
overflow-y: auto;
|
|
89
89
|
background-color: var(--psp--background-color, white);
|
|
@@ -93,10 +93,16 @@
|
|
|
93
93
|
* foreground. */
|
|
94
94
|
color: var(--psp--color);
|
|
95
95
|
border: 1px solid var(--psp-inactive--color);
|
|
96
|
-
box-shadow:
|
|
96
|
+
box-shadow: var(--psp-dropdown--box-shadow);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.context-menu-submenu > .new-panel-menu {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-direction: column;
|
|
102
|
+
padding: 8px;
|
|
103
|
+
min-width: 120px;
|
|
97
104
|
}
|
|
98
105
|
|
|
99
|
-
/* Non-interactive group label (e.g. client names in the "New" sub-menu). */
|
|
100
106
|
.context-menu-header {
|
|
101
107
|
padding: 4px 12px 2px;
|
|
102
108
|
cursor: default;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
2
|
+
* ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
|
3
|
+
* ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
|
4
|
+
* ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
|
5
|
+
* ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
|
6
|
+
* ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
7
|
+
* ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
|
8
|
+
* ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
|
9
|
+
* ┃ This file is part of the Perspective library, distributed under the terms ┃
|
|
10
|
+
* ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
11
|
+
* ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
.dropdown-group-label {
|
|
15
|
+
font-size: 0.75em;
|
|
16
|
+
color: var(--psp-inactive--color);
|
|
17
|
+
&:not(:first-of-type) {
|
|
18
|
+
margin-top: 16px;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.dropdown-group-label[data-label="new-from-table"]::before {
|
|
23
|
+
content: var(--psp-label--new-from-table--content, var(--psp-missing));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.dropdown-group-label[data-label="new-from-panel"]::before {
|
|
27
|
+
content: var(--psp-label--new-from-panel--content, var(--psp-missing));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.dropdown-group-sublabel {
|
|
31
|
+
font-size: 0.75em;
|
|
32
|
+
text-transform: uppercase;
|
|
33
|
+
color: var(--psp-inactive--color);
|
|
34
|
+
margin-top: 6px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.dropdown-group-container {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
margin: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.dropdown-group-label,
|
|
44
|
+
.dropdown-group-sublabel,
|
|
45
|
+
.dropdown-group-container > span,
|
|
46
|
+
.no-results {
|
|
47
|
+
display: inline-flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
margin: 0 -8px;
|
|
50
|
+
padding: 0 8px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.dropdown-menu-item {
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
min-height: 22px;
|
|
56
|
+
&:hover {
|
|
57
|
+
background-color: var(--psp--color);
|
|
58
|
+
color: var(--psp--background-color);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.no-results {
|
|
63
|
+
font-style: italic;
|
|
64
|
+
padding: 6px 24px;
|
|
65
|
+
color: #ccc;
|
|
66
|
+
}
|
|
@@ -11,15 +11,17 @@
|
|
|
11
11
|
* ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
@import "./dropdown-menu-items.css";
|
|
15
|
+
|
|
14
16
|
:host {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
overflow: visible;
|
|
18
|
+
background-color: var(--psp--background-color, #ffffff);
|
|
19
|
+
color: var(--psp--color, #161616);
|
|
20
|
+
border: 1px solid var(--psp-inactive--color, #ababab);
|
|
21
|
+
border-radius: 0 0 2px 2px;
|
|
17
22
|
outline: none;
|
|
18
|
-
|
|
19
|
-
border: inherit;
|
|
20
|
-
box-shadow: 0 2px 4px 0 rgb(0 0 0 / 10%);
|
|
23
|
+
box-shadow: var(--psp-dropdown--box-shadow);
|
|
21
24
|
user-select: none;
|
|
22
|
-
background-color: white;
|
|
23
25
|
padding: 8px;
|
|
24
26
|
|
|
25
27
|
display: flex;
|
|
@@ -45,51 +47,4 @@
|
|
|
45
47
|
color: var(--psp-error--color, #ff0000);
|
|
46
48
|
border-color: var(--psp-error--color, #ff0000);
|
|
47
49
|
}
|
|
48
|
-
|
|
49
|
-
.selected {
|
|
50
|
-
background-color: rgba(0, 0, 0, 0.05);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.dropdown-group-label {
|
|
54
|
-
color: var(--psp-inactive--color);
|
|
55
|
-
|
|
56
|
-
&:not(:first-of-type) {
|
|
57
|
-
margin-top: 16px;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.dropdown-group-container {
|
|
62
|
-
display: flex;
|
|
63
|
-
flex-direction: column;
|
|
64
|
-
margin: 0;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
span {
|
|
68
|
-
min-height: 22px;
|
|
69
|
-
display: inline-flex;
|
|
70
|
-
align-items: center;
|
|
71
|
-
margin: 0 -8px;
|
|
72
|
-
padding: 0 8px;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.dropdown-group-container span {
|
|
76
|
-
cursor: pointer;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.no-results {
|
|
80
|
-
font-style: italics;
|
|
81
|
-
padding: 6px 24px;
|
|
82
|
-
color: #ccc;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
:host(:hover) {
|
|
87
|
-
.selected {
|
|
88
|
-
background-color: transparent;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.dropdown-group-container span:hover {
|
|
92
|
-
background-color: var(--psp--color);
|
|
93
|
-
color: var(--psp--background-color);
|
|
94
|
-
}
|
|
95
50
|
}
|
package/src/css/viewer.css
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
:host {
|
|
15
15
|
--settings-panel-z-index: 10;
|
|
16
16
|
--psp--color: #ff0000;
|
|
17
|
+
--psp-missing: "__MISSING__";
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
:host(.shift-active) .shift-alt-icon {
|
|
@@ -89,7 +90,9 @@
|
|
|
89
90
|
pointer-events: var(--override-content-pointer-events);
|
|
90
91
|
}
|
|
91
92
|
|
|
92
|
-
::slotted(
|
|
93
|
+
::slotted(
|
|
94
|
+
:not([slot^="statusbar-extra"]):not([slot^="tab-"]):not([slot="modal"])
|
|
95
|
+
) {
|
|
93
96
|
position: absolute;
|
|
94
97
|
inset: 0;
|
|
95
98
|
background-color: var(--psp--background-color) !important;
|
|
@@ -100,7 +103,10 @@
|
|
|
100
103
|
-1.75px 2.75px 0 2.75px var(--psp-inactive--color);
|
|
101
104
|
}
|
|
102
105
|
|
|
103
|
-
.overlay
|
|
106
|
+
.overlay
|
|
107
|
+
::slotted(
|
|
108
|
+
:not([slot^="statusbar-extra"]):not([slot^="tab-"]):not([slot="modal"])
|
|
109
|
+
) {
|
|
104
110
|
box-shadow:
|
|
105
111
|
2.25px 2.25px 0 2.25px var(--psp--background-color),
|
|
106
112
|
-2.25px 2.25px 0 2.25px var(--psp--background-color),
|
|
@@ -338,7 +344,6 @@
|
|
|
338
344
|
z-index: 0;
|
|
339
345
|
position: relative;
|
|
340
346
|
height: 100%;
|
|
341
|
-
box-shadow: var(--plugin--box-shadow, none);
|
|
342
347
|
overflow: hidden;
|
|
343
348
|
border: var(--psp-plugin--border, none);
|
|
344
349
|
background: var(
|
|
@@ -487,8 +492,9 @@
|
|
|
487
492
|
}
|
|
488
493
|
|
|
489
494
|
& > .split-panel-divider {
|
|
495
|
+
background-color: #00000020;
|
|
490
496
|
border-top: 1px solid var(--psp-inactive--color, #6e6e6e);
|
|
491
|
-
border-bottom:
|
|
497
|
+
border-bottom: 1px solid var(--psp-inactive--color, #6e6e6e);
|
|
492
498
|
margin-left: -9px;
|
|
493
499
|
margin-right: 0px;
|
|
494
500
|
flex: 0 0 4px;
|
|
@@ -584,9 +590,11 @@
|
|
|
584
590
|
}
|
|
585
591
|
|
|
586
592
|
.settings_tab {
|
|
593
|
+
overflow: hidden;
|
|
594
|
+
text-overflow: ellipsis;
|
|
587
595
|
border-right: 1px solid var(--psp-inactive--color);
|
|
588
596
|
cursor: pointer;
|
|
589
|
-
padding:
|
|
597
|
+
padding: 5px 8px 7px 8px;
|
|
590
598
|
font-size: var(--label--font-size, 0.75em);
|
|
591
599
|
text-transform: uppercase;
|
|
592
600
|
flex: 0 1 100px;
|
|
@@ -605,7 +613,7 @@
|
|
|
605
613
|
background-color: transparent;
|
|
606
614
|
border-bottom: 1px solid transparent;
|
|
607
615
|
box-shadow: 0px 9px 0px -8px var(--psp-inactive--color);
|
|
608
|
-
height:
|
|
616
|
+
height: 23px;
|
|
609
617
|
}
|
|
610
618
|
}
|
|
611
619
|
|
|
@@ -639,36 +647,28 @@
|
|
|
639
647
|
}
|
|
640
648
|
|
|
641
649
|
.sidebar_border {
|
|
642
|
-
height:
|
|
650
|
+
height: 3px;
|
|
651
|
+
border-bottom: 1px solid var(--psp-inactive--color, #6e6e6e);
|
|
643
652
|
width: 100%;
|
|
644
|
-
background-color:
|
|
645
|
-
margin-top: 1px;
|
|
653
|
+
background-color: rgba(0, 0, 0, 0.15);
|
|
646
654
|
flex-shrink: 0;
|
|
647
655
|
flex-grow: 0;
|
|
648
656
|
}
|
|
649
657
|
|
|
650
658
|
#query_tabbar_tab:before {
|
|
651
|
-
content: var(--psp-label--query-tab--content);
|
|
659
|
+
content: var(--psp-label--query-tab--content, var(--psp-missing));
|
|
652
660
|
}
|
|
653
661
|
|
|
654
662
|
#plugin_tabbar_tab:before {
|
|
655
|
-
content: var(--psp-label--plugin-tab--content);
|
|
663
|
+
content: var(--psp-label--plugin-tab--content, var(--psp-missing));
|
|
656
664
|
}
|
|
657
665
|
|
|
658
666
|
#debug_tabbar_tab:before {
|
|
659
|
-
content: var(--psp-label--debug-tab--content);
|
|
667
|
+
content: var(--psp-label--debug-tab--content, var(--psp-missing));
|
|
660
668
|
}
|
|
661
669
|
|
|
662
670
|
#chat_tabbar_tab:before {
|
|
663
|
-
content: var(--psp-label--chat-tab--content);
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
label#stack-label:before {
|
|
667
|
-
content: var(--psp-label--stack--content, "Stack");
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
label#alt_axis-label:before {
|
|
671
|
-
content: var(--psp-label--alt-axis--content, "Alt Axis");
|
|
671
|
+
content: var(--psp-label--chat-tab--content, var(--psp-missing));
|
|
672
672
|
}
|
|
673
673
|
}
|
|
674
674
|
|
|
@@ -853,7 +853,10 @@
|
|
|
853
853
|
user-select: none;
|
|
854
854
|
&:before {
|
|
855
855
|
text-transform: uppercase;
|
|
856
|
-
content: var(
|
|
856
|
+
content: var(
|
|
857
|
+
--psp-label--chat-reasoning--content,
|
|
858
|
+
var(--psp-missing)
|
|
859
|
+
);
|
|
857
860
|
font-size: var(--psp-label--font-size, 0.75em);
|
|
858
861
|
}
|
|
859
862
|
}
|
|
@@ -898,7 +901,7 @@
|
|
|
898
901
|
align-items: flex-end;
|
|
899
902
|
|
|
900
903
|
/* The prompt is a `MirroredTextarea` (see
|
|
901
|
-
* `form/mirrored-textarea.css`): it is exactly as tall as its
|
|
904
|
+
* `ui/form/mirrored-textarea.css`): it is exactly as tall as its
|
|
902
905
|
* text, so this wrapper owns the visible box and caps how far
|
|
903
906
|
* that growth goes before it scrolls instead. */
|
|
904
907
|
#chat_input_scroll {
|
|
@@ -933,7 +936,10 @@
|
|
|
933
936
|
* `placeholder` attribute is untranslatable and is
|
|
934
937
|
* kept only for assistive tech. */
|
|
935
938
|
&.is-empty:before {
|
|
936
|
-
content: var(
|
|
939
|
+
content: var(
|
|
940
|
+
--psp-label--chat-placeholder--content,
|
|
941
|
+
var(--psp-missing)
|
|
942
|
+
);
|
|
937
943
|
color: var(--psp-inactive--color, #6e6e6e);
|
|
938
944
|
}
|
|
939
945
|
}
|
|
@@ -965,11 +971,11 @@
|
|
|
965
971
|
}
|
|
966
972
|
|
|
967
973
|
#chat_send_button:before {
|
|
968
|
-
content: var(--psp-label--chat-send--content);
|
|
974
|
+
content: var(--psp-label--chat-send--content, var(--psp-missing));
|
|
969
975
|
}
|
|
970
976
|
|
|
971
977
|
#chat_stop_button:before {
|
|
972
|
-
content: var(--psp-label--chat-stop--content);
|
|
978
|
+
content: var(--psp-label--chat-stop--content, var(--psp-missing));
|
|
973
979
|
}
|
|
974
980
|
}
|
|
975
981
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
use yew::prelude::*;
|
|
19
19
|
|
|
20
20
|
use crate::agent::{AgentSlot, ChatEntry, render_markdown};
|
|
21
|
-
use crate::
|
|
21
|
+
use crate::ui::MirroredTextarea;
|
|
22
22
|
|
|
23
23
|
#[derive(Properties, PartialEq)]
|
|
24
24
|
struct ChatReasoningProps {
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
11
11
|
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
12
|
|
|
13
|
+
mod highlight;
|
|
14
|
+
|
|
13
15
|
use std::rc::Rc;
|
|
14
16
|
|
|
15
17
|
use perspective_client::ExprValidationError;
|
|
@@ -17,10 +19,10 @@ use wasm_bindgen::JsCast;
|
|
|
17
19
|
use web_sys::*;
|
|
18
20
|
use yew::prelude::*;
|
|
19
21
|
|
|
20
|
-
use
|
|
21
|
-
use crate::components::form::mirrored_textarea::MirroredTextarea;
|
|
22
|
+
use self::highlight::highlight;
|
|
22
23
|
use crate::components::function_dropdown::{FunctionDropDownElement, FunctionDropDownPortal};
|
|
23
24
|
use crate::exprtk::{Cursor, tokenize};
|
|
25
|
+
use crate::ui::MirroredTextarea;
|
|
24
26
|
use crate::utils::*;
|
|
25
27
|
|
|
26
28
|
#[derive(Properties, PartialEq)]
|
|
@@ -21,9 +21,9 @@ use yew::html::ImplicitClone;
|
|
|
21
21
|
use yew::prelude::*;
|
|
22
22
|
|
|
23
23
|
use super::column_selector::InPlaceColumn;
|
|
24
|
-
use super::portal::PortalModal;
|
|
25
24
|
use super::style::StyleSurface;
|
|
26
25
|
use crate::session::Session;
|
|
26
|
+
use crate::ui::PortalModal;
|
|
27
27
|
use crate::utils::*;
|
|
28
28
|
use crate::*;
|
|
29
29
|
|
|
@@ -216,7 +216,7 @@ impl Component for ColumnDropDownPortal {
|
|
|
216
216
|
html! {
|
|
217
217
|
<PortalModal
|
|
218
218
|
tag_name="perspective-dropdown"
|
|
219
|
-
|
|
219
|
+
sheet={StyleSurface::ColumnDropdown.sheet()}
|
|
220
220
|
{target}
|
|
221
221
|
own_focus=false
|
|
222
222
|
{on_close}
|