@perspective-dev/viewer 5.2.0 → 5.3.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 +2 -2
- package/dist/cdn/perspective-viewer.js.map +2 -2
- package/dist/css/botanical.css +1 -1
- package/dist/css/dracula.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/monokai.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/docs/perspective-docs.json +1 -1
- package/dist/esm/perspective-viewer.d.ts +1 -0
- package/dist/esm/perspective-viewer.inline.js +9 -9
- package/dist/esm/perspective-viewer.inline.js.map +2 -2
- package/dist/esm/perspective-viewer.js +4 -4
- package/dist/esm/perspective-viewer.js.map +2 -2
- package/dist/esm/plugin.d.ts +10 -0
- package/dist/esm/ts-rs/PanelViewerConfig.d.ts +1 -1
- package/dist/esm/ts-rs/SaveWorkspaceOptions.d.ts +10 -0
- package/dist/esm/ts-rs/ViewerConfig.d.ts +1 -1
- package/dist/esm/ts-rs/WorkspaceConfig.d.ts +9 -1
- package/dist/esm/ts-rs/WorkspaceConfigUpdate.d.ts +13 -3
- package/dist/wasm/perspective-viewer.d.ts +43 -36
- package/dist/wasm/perspective-viewer.js +194 -136
- package/dist/wasm/perspective-viewer.wasm +0 -0
- package/dist/wasm/perspective-viewer.wasm.d.ts +19 -17
- package/package.json +1 -1
- package/src/css/column-settings-panel.css +9 -5
- package/src/css/column-style.css +209 -31
- package/src/css/dom/select.css +2 -1
- package/src/css/form/code-editor.css +4 -4
- package/src/rust/agent/tools.rs +48 -17
- package/src/rust/components/column_selector/active_column.rs +2 -2
- package/src/rust/components/column_selector/add_expression_button.rs +3 -3
- package/src/rust/components/column_selector/aggregate_selector.rs +2 -3
- package/src/rust/components/column_selector/config_selector.rs +8 -0
- package/src/rust/components/column_selector/expr_edit_button.rs +4 -10
- package/src/rust/components/column_selector/inactive_column.rs +2 -2
- package/src/rust/components/column_selector.rs +48 -4
- package/src/rust/components/column_settings_sidebar/style_tab/primitive_field.rs +293 -126
- package/src/rust/components/column_settings_sidebar/style_tab.rs +262 -225
- package/src/rust/components/column_settings_sidebar.rs +88 -69
- package/src/rust/components/editable_header.rs +85 -144
- package/src/rust/components/expression_editor.rs +9 -16
- package/src/rust/components/form/code_editor.rs +16 -6
- package/src/rust/components/form/debug.rs +1 -0
- package/src/rust/components/form/mod.rs +3 -1
- package/src/rust/components/form/multi_stop_gradient_selector.rs +476 -0
- package/src/rust/components/form/named_value_picker.rs +86 -0
- package/src/rust/components/form/palette_selector.rs +440 -0
- package/src/rust/components/main_panel/msg.rs +2 -2
- package/src/rust/components/main_panel/reconcile.rs +4 -4
- package/src/rust/components/plugin_tab.rs +4 -28
- package/src/rust/components/settings_panel.rs +25 -20
- package/src/rust/components/viewer/msg.rs +46 -7
- package/src/rust/components/viewer/panels.rs +11 -9
- package/src/rust/components/viewer/render.rs +8 -3
- package/src/rust/components/viewer/settings.rs +163 -23
- package/src/rust/components/viewer/snapshots.rs +46 -21
- package/src/rust/components/viewer/wiring.rs +14 -25
- package/src/rust/components/viewer.rs +12 -8
- package/src/rust/config/column_config_schema.rs +100 -41
- package/src/rust/config/css_scale.rs +882 -0
- package/src/rust/config/mod.rs +2 -0
- package/src/rust/config/options.rs +10 -0
- package/src/rust/config/viewer_config.rs +49 -55
- package/src/rust/config/workspace_config.rs +132 -5
- package/src/rust/custom_elements/viewer.rs +214 -155
- package/src/rust/custom_events.rs +14 -1
- package/src/rust/js/regular_layout.rs +3 -3
- package/src/rust/lib.rs +2 -0
- package/src/rust/presentation/column_locator.rs +19 -5
- package/src/rust/presentation.rs +192 -36
- package/src/rust/queries/column_locator.rs +74 -44
- package/src/rust/queries/get_viewer_config.rs +0 -3
- package/src/rust/queries/mod.rs +2 -0
- package/src/rust/queries/palette_set.rs +82 -0
- package/src/rust/queries/plugin_column_styles.rs +6 -2
- package/src/rust/renderer/dispatch.rs +16 -4
- package/src/rust/renderer/plugin_config.rs +309 -47
- package/src/rust/renderer.rs +15 -42
- package/src/rust/session/column_defaults_update.rs +15 -8
- package/src/rust/session/metadata.rs +5 -1
- package/src/rust/session/props.rs +1 -0
- package/src/rust/session.rs +9 -6
- package/src/rust/tasks/create_panel.rs +44 -57
- package/src/rust/tasks/edit_expression.rs +19 -23
- package/src/rust/tasks/edit_window.rs +8 -10
- package/src/rust/tasks/eject.rs +4 -1
- package/src/rust/tasks/pipeline.rs +2 -2
- package/src/rust/tasks/presize_panels.rs +44 -5
- package/src/rust/tasks/reset_all.rs +4 -4
- package/src/rust/tasks/restore_and_render.rs +17 -44
- package/src/rust/tasks/restore_panel.rs +11 -13
- package/src/rust/tasks/set_edit_mode.rs +3 -1
- package/src/rust/tasks/sync_update_panels.rs +11 -1
- package/src/rust/tasks/update_theme.rs +23 -18
- package/src/rust/utils/css_vars.rs +26 -0
- package/src/rust/utils/mod.rs +2 -0
- package/src/rust/utils/spawn.rs +1 -1
- package/src/rust/workspace.rs +435 -272
- package/src/svg/lock.svg +7 -0
- package/src/themes/botanical.css +10 -0
- package/src/themes/defaults.css +12 -0
- package/src/themes/dracula.css +17 -0
- package/src/themes/gruvbox-dark.css +20 -0
- package/src/themes/gruvbox.css +10 -0
- package/src/themes/icons.css +1 -0
- package/src/themes/monokai.css +22 -0
- package/src/themes/phosphor.css +5 -0
- package/src/themes/pro-dark.css +10 -0
- package/src/themes/solarized-dark.css +7 -0
- package/src/themes/solarized.css +7 -0
- package/src/themes/vaporwave.css +20 -0
- package/src/ts/perspective-viewer.ts +1 -0
- package/src/ts/plugin.ts +14 -0
- package/src/ts/ts-rs/PanelViewerConfig.ts +1 -1
- package/src/ts/ts-rs/SaveWorkspaceOptions.ts +11 -0
- package/src/ts/ts-rs/ViewerConfig.ts +1 -1
- package/src/ts/ts-rs/WorkspaceConfig.ts +8 -2
- package/src/ts/ts-rs/WorkspaceConfigUpdate.ts +11 -3
- package/src/rust/components/form/color_range_selector.rs +0 -137
- /package/dist/wasm/snippets/{perspective-viewer-02e461f3d7062b26 → perspective-viewer-39c3c3b28e3cbd48}/inline0.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-02e461f3d7062b26 → perspective-viewer-39c3c3b28e3cbd48}/inline1.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-02e461f3d7062b26 → perspective-viewer-39c3c3b28e3cbd48}/inline2.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-02e461f3d7062b26 → perspective-viewer-39c3c3b28e3cbd48}/inline3.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-02e461f3d7062b26 → perspective-viewer-39c3c3b28e3cbd48}/inline4.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-02e461f3d7062b26 → perspective-viewer-39c3c3b28e3cbd48}/inline5.js +0 -0
package/src/svg/lock.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="6.5" y="9.5" width="8" height="7" stroke="#666" />
|
|
3
|
+
<path d="M13 9V8.5C13 7.11929 11.8807 6 10.5 6V6C9.11929 6 8 7.11929 8 8.5V9" stroke="#666" />
|
|
4
|
+
<path
|
|
5
|
+
d="M11.4911 13C11.4911 13.5523 11.0434 14 10.4911 14C9.93878 14 9.49107 13.5523 9.49107 13C9.49107 12.4477 9.93878 12 10.4911 12C11.0434 12 11.4911 12.4477 11.4911 13Z"
|
|
6
|
+
fill="#666" />
|
|
7
|
+
</svg>
|
package/src/themes/botanical.css
CHANGED
|
@@ -81,6 +81,16 @@ perspective-viewer [theme="Botanical"] {
|
|
|
81
81
|
--psp-charts--series-8--color: rgb(210, 140, 80);
|
|
82
82
|
--psp-charts--series-9--color: rgb(130, 120, 190);
|
|
83
83
|
--psp-charts--series-10--color: rgb(170, 200, 110);
|
|
84
|
+
--psp-datagrid--series-1--color: rgb(90, 158, 75);
|
|
85
|
+
--psp-datagrid--series-2--color: rgb(206, 176, 104);
|
|
86
|
+
--psp-datagrid--series-3--color: rgb(160, 110, 180);
|
|
87
|
+
--psp-datagrid--series-4--color: rgb(80, 170, 150);
|
|
88
|
+
--psp-datagrid--series-5--color: rgb(140, 170, 90);
|
|
89
|
+
--psp-datagrid--series-6--color: rgb(200, 120, 140);
|
|
90
|
+
--psp-datagrid--series-7--color: rgb(100, 150, 190);
|
|
91
|
+
--psp-datagrid--series-8--color: rgb(210, 140, 80);
|
|
92
|
+
--psp-datagrid--series-9--color: rgb(130, 120, 190);
|
|
93
|
+
--psp-datagrid--series-10--color: rgb(170, 200, 110);
|
|
84
94
|
|
|
85
95
|
--psp-charts--gradient--background: linear-gradient(
|
|
86
96
|
#e8836a 0%,
|
package/src/themes/defaults.css
CHANGED
|
@@ -104,6 +104,16 @@ perspective-string-column-style {
|
|
|
104
104
|
--psp-charts--series-8--color: #7f7f7f;
|
|
105
105
|
--psp-charts--series-9--color: #bcbd22;
|
|
106
106
|
--psp-charts--series-10--color: #17becf;
|
|
107
|
+
--psp-datagrid--series-1--color: #0366d6;
|
|
108
|
+
--psp-datagrid--series-2--color: #ff7f0e;
|
|
109
|
+
--psp-datagrid--series-3--color: #2ca02c;
|
|
110
|
+
--psp-datagrid--series-4--color: #d62728;
|
|
111
|
+
--psp-datagrid--series-5--color: #9467bd;
|
|
112
|
+
--psp-datagrid--series-6--color: #8c564b;
|
|
113
|
+
--psp-datagrid--series-7--color: #e377c2;
|
|
114
|
+
--psp-datagrid--series-8--color: #7f7f7f;
|
|
115
|
+
--psp-datagrid--series-9--color: #bcbd22;
|
|
116
|
+
--psp-datagrid--series-10--color: #17becf;
|
|
107
117
|
--psp-charts--gradient--background: linear-gradient(
|
|
108
118
|
#4d342f 0%,
|
|
109
119
|
#e4521b 22.5%,
|
|
@@ -167,6 +177,8 @@ perspective-string-column-style {
|
|
|
167
177
|
--psp-openlayers--attribution--filter: initial;
|
|
168
178
|
--psp-charts--series-11--color: initial;
|
|
169
179
|
--psp-charts--series-12--color: initial;
|
|
180
|
+
--psp-datagrid--series-11--color: initial;
|
|
181
|
+
--psp-datagrid--series-12--color: initial;
|
|
170
182
|
--psp-charts--map-tiles--url: initial;
|
|
171
183
|
--psp-column-type--boolean--color: initial;
|
|
172
184
|
--psp-column-type--date--color: initial;
|
package/src/themes/dracula.css
CHANGED
|
@@ -78,6 +78,16 @@ perspective-viewer [theme="Dracula"] {
|
|
|
78
78
|
--psp-charts--series-8--color: rgb(221, 99, 103);
|
|
79
79
|
--psp-charts--series-9--color: rgb(120, 104, 206);
|
|
80
80
|
--psp-charts--series-10--color: rgb(23, 166, 123);
|
|
81
|
+
--psp-datagrid--series-1--color: rgb(71, 120, 194);
|
|
82
|
+
--psp-datagrid--series-2--color: rgb(204, 120, 48);
|
|
83
|
+
--psp-datagrid--series-3--color: rgb(158, 84, 192);
|
|
84
|
+
--psp-datagrid--series-4--color: rgb(51, 150, 153);
|
|
85
|
+
--psp-datagrid--series-5--color: rgb(102, 114, 143);
|
|
86
|
+
--psp-datagrid--series-6--color: rgb(211, 103, 189);
|
|
87
|
+
--psp-datagrid--series-7--color: rgb(109, 124, 77);
|
|
88
|
+
--psp-datagrid--series-8--color: rgb(221, 99, 103);
|
|
89
|
+
--psp-datagrid--series-9--color: rgb(120, 104, 206);
|
|
90
|
+
--psp-datagrid--series-10--color: rgb(23, 166, 123);
|
|
81
91
|
--psp-charts--gradient--background: linear-gradient(
|
|
82
92
|
#dd6367 0%,
|
|
83
93
|
#242526 50%,
|
|
@@ -148,6 +158,13 @@ perspective-viewer [theme="Dracula"] {
|
|
|
148
158
|
--psp-charts--series-5--color: var(--theme-purple);
|
|
149
159
|
--psp-charts--series-6--color: var(--theme-pink);
|
|
150
160
|
--psp-charts--series-7--color: var(--theme-orange);
|
|
161
|
+
--psp-datagrid--series-1--color: var(--theme-blue);
|
|
162
|
+
--psp-datagrid--series-2--color: var(--theme-red);
|
|
163
|
+
--psp-datagrid--series-3--color: var(--theme-green);
|
|
164
|
+
--psp-datagrid--series-4--color: var(--theme-yellow);
|
|
165
|
+
--psp-datagrid--series-5--color: var(--theme-purple);
|
|
166
|
+
--psp-datagrid--series-6--color: var(--theme-pink);
|
|
167
|
+
--psp-datagrid--series-7--color: var(--theme-orange);
|
|
151
168
|
|
|
152
169
|
--psp-charts--gradient--background: linear-gradient(
|
|
153
170
|
var(--theme-red),
|
|
@@ -78,6 +78,16 @@ perspective-viewer [theme="Gruvbox Dark"] {
|
|
|
78
78
|
--psp-charts--series-8--color: rgb(221, 99, 103);
|
|
79
79
|
--psp-charts--series-9--color: rgb(120, 104, 206);
|
|
80
80
|
--psp-charts--series-10--color: rgb(23, 166, 123);
|
|
81
|
+
--psp-datagrid--series-1--color: rgb(71, 120, 194);
|
|
82
|
+
--psp-datagrid--series-2--color: rgb(204, 120, 48);
|
|
83
|
+
--psp-datagrid--series-3--color: rgb(158, 84, 192);
|
|
84
|
+
--psp-datagrid--series-4--color: rgb(51, 150, 153);
|
|
85
|
+
--psp-datagrid--series-5--color: rgb(102, 114, 143);
|
|
86
|
+
--psp-datagrid--series-6--color: rgb(211, 103, 189);
|
|
87
|
+
--psp-datagrid--series-7--color: rgb(109, 124, 77);
|
|
88
|
+
--psp-datagrid--series-8--color: rgb(221, 99, 103);
|
|
89
|
+
--psp-datagrid--series-9--color: rgb(120, 104, 206);
|
|
90
|
+
--psp-datagrid--series-10--color: rgb(23, 166, 123);
|
|
81
91
|
--psp-charts--gradient--background: linear-gradient(
|
|
82
92
|
#dd6367 0%,
|
|
83
93
|
#242526 50%,
|
|
@@ -159,6 +169,16 @@ perspective-viewer [theme="Gruvbox Dark"] {
|
|
|
159
169
|
--psp-charts--series-8--color: var(--theme-alt-green);
|
|
160
170
|
--psp-charts--series-9--color: var(--theme-alt-purple);
|
|
161
171
|
--psp-charts--series-10--color: var(--theme-alt-aqua);
|
|
172
|
+
--psp-datagrid--series-1--color: var(--theme-blue);
|
|
173
|
+
--psp-datagrid--series-2--color: var(--theme-red);
|
|
174
|
+
--psp-datagrid--series-3--color: var(--theme-green);
|
|
175
|
+
--psp-datagrid--series-4--color: var(--theme-purple);
|
|
176
|
+
--psp-datagrid--series-5--color: var(--theme-aqua);
|
|
177
|
+
--psp-datagrid--series-6--color: var(--theme-alt-blue);
|
|
178
|
+
--psp-datagrid--series-7--color: var(--theme-alt-red);
|
|
179
|
+
--psp-datagrid--series-8--color: var(--theme-alt-green);
|
|
180
|
+
--psp-datagrid--series-9--color: var(--theme-alt-purple);
|
|
181
|
+
--psp-datagrid--series-10--color: var(--theme-alt-aqua);
|
|
162
182
|
|
|
163
183
|
--psp-charts--gradient--background: linear-gradient(
|
|
164
184
|
var(--theme-alt-red),
|
package/src/themes/gruvbox.css
CHANGED
|
@@ -75,6 +75,16 @@ perspective-viewer [theme="Gruvbox Light"] {
|
|
|
75
75
|
--psp-charts--series-8--color: var(--theme-alt-green);
|
|
76
76
|
--psp-charts--series-9--color: var(--theme-alt-purple);
|
|
77
77
|
--psp-charts--series-10--color: var(--theme-alt-aqua);
|
|
78
|
+
--psp-datagrid--series-1--color: var(--theme-blue);
|
|
79
|
+
--psp-datagrid--series-2--color: var(--theme-red);
|
|
80
|
+
--psp-datagrid--series-3--color: var(--theme-green);
|
|
81
|
+
--psp-datagrid--series-4--color: var(--theme-purple);
|
|
82
|
+
--psp-datagrid--series-5--color: var(--theme-aqua);
|
|
83
|
+
--psp-datagrid--series-6--color: var(--theme-alt-blue);
|
|
84
|
+
--psp-datagrid--series-7--color: var(--theme-alt-red);
|
|
85
|
+
--psp-datagrid--series-8--color: var(--theme-alt-green);
|
|
86
|
+
--psp-datagrid--series-9--color: var(--theme-alt-purple);
|
|
87
|
+
--psp-datagrid--series-10--color: var(--theme-alt-aqua);
|
|
78
88
|
|
|
79
89
|
--psp-charts--gradient--background: linear-gradient(
|
|
80
90
|
var(--theme-alt-red),
|
package/src/themes/icons.css
CHANGED
|
@@ -67,6 +67,7 @@ perspective-viewer-tab {
|
|
|
67
67
|
--psp-icon--status-ok--mask-image: url(../svg/status_ok.svg);
|
|
68
68
|
--psp-icon--export--mask-image: url("../svg/export-icon.svg");
|
|
69
69
|
--psp-icon--free-scroll--mask-image: url("../svg/free-scroll-icon.svg");
|
|
70
|
+
--psp-icon--lock--mask-image: url("../svg/lock.svg");
|
|
70
71
|
--psp-icon--reset--mask-image: url("../svg/revert-icon.svg");
|
|
71
72
|
--psp-icon--copy--mask-image: url("../svg/duplicate-icon.svg");
|
|
72
73
|
--psp-icon--theme--mask-image: url("../svg/theme-icon.svg");
|
package/src/themes/monokai.css
CHANGED
|
@@ -78,6 +78,16 @@ perspective-viewer [theme="Monokai"] {
|
|
|
78
78
|
--psp-charts--series-8--color: rgb(221, 99, 103);
|
|
79
79
|
--psp-charts--series-9--color: rgb(120, 104, 206);
|
|
80
80
|
--psp-charts--series-10--color: rgb(23, 166, 123);
|
|
81
|
+
--psp-datagrid--series-1--color: rgb(71, 120, 194);
|
|
82
|
+
--psp-datagrid--series-2--color: rgb(204, 120, 48);
|
|
83
|
+
--psp-datagrid--series-3--color: rgb(158, 84, 192);
|
|
84
|
+
--psp-datagrid--series-4--color: rgb(51, 150, 153);
|
|
85
|
+
--psp-datagrid--series-5--color: rgb(102, 114, 143);
|
|
86
|
+
--psp-datagrid--series-6--color: rgb(211, 103, 189);
|
|
87
|
+
--psp-datagrid--series-7--color: rgb(109, 124, 77);
|
|
88
|
+
--psp-datagrid--series-8--color: rgb(221, 99, 103);
|
|
89
|
+
--psp-datagrid--series-9--color: rgb(120, 104, 206);
|
|
90
|
+
--psp-datagrid--series-10--color: rgb(23, 166, 123);
|
|
81
91
|
--psp-charts--gradient--background: linear-gradient(
|
|
82
92
|
#dd6367 0%,
|
|
83
93
|
#242526 50%,
|
|
@@ -157,6 +167,18 @@ perspective-viewer [theme="Monokai"] {
|
|
|
157
167
|
--psp-charts--series-10--color: #e6db74;
|
|
158
168
|
--psp-charts--series-11--color: #a6e22e;
|
|
159
169
|
--psp-charts--series-12--color: #ae81ff;
|
|
170
|
+
--psp-datagrid--series-1--color: #78dce8;
|
|
171
|
+
--psp-datagrid--series-2--color: #ff6188;
|
|
172
|
+
--psp-datagrid--series-3--color: #fc9867;
|
|
173
|
+
--psp-datagrid--series-4--color: #ffd866;
|
|
174
|
+
--psp-datagrid--series-5--color: #a9dc76;
|
|
175
|
+
--psp-datagrid--series-6--color: #ab9df2;
|
|
176
|
+
--psp-datagrid--series-7--color: #66d9ef;
|
|
177
|
+
--psp-datagrid--series-8--color: #f92672;
|
|
178
|
+
--psp-datagrid--series-9--color: #fd971f;
|
|
179
|
+
--psp-datagrid--series-10--color: #e6db74;
|
|
180
|
+
--psp-datagrid--series-11--color: #a6e22e;
|
|
181
|
+
--psp-datagrid--series-12--color: #ae81ff;
|
|
160
182
|
|
|
161
183
|
--psp-charts--gradient--background: linear-gradient(
|
|
162
184
|
#ff6188 0%,
|
package/src/themes/phosphor.css
CHANGED
|
@@ -98,6 +98,11 @@ perspective-viewer [theme="Phosphor"] {
|
|
|
98
98
|
--psp-charts--series-3--color: #ff0055;
|
|
99
99
|
--psp-charts--series-4--color: #ffd700;
|
|
100
100
|
--psp-charts--series-5--color: #7fffd4;
|
|
101
|
+
--psp-datagrid--series-1--color: #00ff41;
|
|
102
|
+
--psp-datagrid--series-2--color: #00bfff;
|
|
103
|
+
--psp-datagrid--series-3--color: #ff0055;
|
|
104
|
+
--psp-datagrid--series-4--color: #ffd700;
|
|
105
|
+
--psp-datagrid--series-5--color: #7fffd4;
|
|
101
106
|
|
|
102
107
|
--psp-charts--gradient--background: linear-gradient(
|
|
103
108
|
#ff3333 0%,
|
package/src/themes/pro-dark.css
CHANGED
|
@@ -81,6 +81,16 @@ perspective-viewer [theme="Pro Dark"] {
|
|
|
81
81
|
--psp-charts--series-8--color: rgb(221, 99, 103);
|
|
82
82
|
--psp-charts--series-9--color: rgb(120, 104, 206);
|
|
83
83
|
--psp-charts--series-10--color: rgb(23, 166, 123);
|
|
84
|
+
--psp-datagrid--series-1--color: rgb(71, 120, 194);
|
|
85
|
+
--psp-datagrid--series-2--color: rgb(204, 120, 48);
|
|
86
|
+
--psp-datagrid--series-3--color: rgb(158, 84, 192);
|
|
87
|
+
--psp-datagrid--series-4--color: rgb(51, 150, 153);
|
|
88
|
+
--psp-datagrid--series-5--color: rgb(102, 114, 143);
|
|
89
|
+
--psp-datagrid--series-6--color: rgb(211, 103, 189);
|
|
90
|
+
--psp-datagrid--series-7--color: rgb(109, 124, 77);
|
|
91
|
+
--psp-datagrid--series-8--color: rgb(221, 99, 103);
|
|
92
|
+
--psp-datagrid--series-9--color: rgb(120, 104, 206);
|
|
93
|
+
--psp-datagrid--series-10--color: rgb(23, 166, 123);
|
|
84
94
|
|
|
85
95
|
--psp-charts--gradient--background: linear-gradient(
|
|
86
96
|
#dd6367 0%,
|
|
@@ -53,6 +53,13 @@ perspective-viewer [theme="Solarized Dark"] {
|
|
|
53
53
|
--psp-charts--series-5--color: #2aa198;
|
|
54
54
|
--psp-charts--series-6--color: #6c71c4;
|
|
55
55
|
--psp-charts--series-7--color: #d33682;
|
|
56
|
+
--psp-datagrid--series-1--color: #268bd2;
|
|
57
|
+
--psp-datagrid--series-2--color: #cb4b16;
|
|
58
|
+
--psp-datagrid--series-3--color: #b58900;
|
|
59
|
+
--psp-datagrid--series-4--color: #859900;
|
|
60
|
+
--psp-datagrid--series-5--color: #2aa198;
|
|
61
|
+
--psp-datagrid--series-6--color: #6c71c4;
|
|
62
|
+
--psp-datagrid--series-7--color: #d33682;
|
|
56
63
|
/* perspective-viewer-solarized-dark--colors */
|
|
57
64
|
color: #93a1a1;
|
|
58
65
|
background-color: #002b36;
|
package/src/themes/solarized.css
CHANGED
|
@@ -57,6 +57,13 @@ perspective-viewer [theme="Solarized"] {
|
|
|
57
57
|
|
|
58
58
|
--psp-charts--series-6--color: #6c71c4;
|
|
59
59
|
--psp-charts--series-7--color: #d33682;
|
|
60
|
+
--psp-datagrid--series-1--color: #268bd2;
|
|
61
|
+
--psp-datagrid--series-2--color: #cb4b16;
|
|
62
|
+
--psp-datagrid--series-3--color: #b58900;
|
|
63
|
+
--psp-datagrid--series-4--color: #859900;
|
|
64
|
+
--psp-datagrid--series-5--color: #2aa198;
|
|
65
|
+
--psp-datagrid--series-6--color: #6c71c4;
|
|
66
|
+
--psp-datagrid--series-7--color: #d33682;
|
|
60
67
|
}
|
|
61
68
|
|
|
62
69
|
x {
|
package/src/themes/vaporwave.css
CHANGED
|
@@ -78,6 +78,16 @@ perspective-viewer [theme="Vaporwave"] {
|
|
|
78
78
|
--psp-charts--series-8--color: rgb(221, 99, 103);
|
|
79
79
|
--psp-charts--series-9--color: rgb(120, 104, 206);
|
|
80
80
|
--psp-charts--series-10--color: rgb(23, 166, 123);
|
|
81
|
+
--psp-datagrid--series-1--color: rgb(71, 120, 194);
|
|
82
|
+
--psp-datagrid--series-2--color: rgb(204, 120, 48);
|
|
83
|
+
--psp-datagrid--series-3--color: rgb(158, 84, 192);
|
|
84
|
+
--psp-datagrid--series-4--color: rgb(51, 150, 153);
|
|
85
|
+
--psp-datagrid--series-5--color: rgb(102, 114, 143);
|
|
86
|
+
--psp-datagrid--series-6--color: rgb(211, 103, 189);
|
|
87
|
+
--psp-datagrid--series-7--color: rgb(109, 124, 77);
|
|
88
|
+
--psp-datagrid--series-8--color: rgb(221, 99, 103);
|
|
89
|
+
--psp-datagrid--series-9--color: rgb(120, 104, 206);
|
|
90
|
+
--psp-datagrid--series-10--color: rgb(23, 166, 123);
|
|
81
91
|
--psp-charts--gradient--background: linear-gradient(
|
|
82
92
|
#dd6367 0%,
|
|
83
93
|
#242526 50%,
|
|
@@ -153,6 +163,16 @@ perspective-viewer [theme="Vaporwave"] {
|
|
|
153
163
|
--psp-charts--series-8--color: hsl(192, 99%, 25%);
|
|
154
164
|
--psp-charts--series-9--color: hsl(157, 100%, 25%);
|
|
155
165
|
--psp-charts--series-10--color: hsl(272, 100%, 35%);
|
|
166
|
+
--psp-datagrid--series-1--color: #01cdfe;
|
|
167
|
+
--psp-datagrid--series-2--color: #ff71ce;
|
|
168
|
+
--psp-datagrid--series-3--color: #05ffa1;
|
|
169
|
+
--psp-datagrid--series-4--color: #b967ff;
|
|
170
|
+
--psp-datagrid--series-5--color: #fffb96;
|
|
171
|
+
--psp-datagrid--series-6--color: hsl(192, 99%, 25%);
|
|
172
|
+
--psp-datagrid--series-7--color: hsl(321, 100%, 36%);
|
|
173
|
+
--psp-datagrid--series-8--color: hsl(192, 99%, 25%);
|
|
174
|
+
--psp-datagrid--series-9--color: hsl(157, 100%, 25%);
|
|
175
|
+
--psp-datagrid--series-10--color: hsl(272, 100%, 35%);
|
|
156
176
|
|
|
157
177
|
--psp-charts--gradient--background: linear-gradient(
|
|
158
178
|
#f3d431,
|
|
@@ -58,6 +58,7 @@ export type * from "./ts-rs/FilterReducer.d.ts";
|
|
|
58
58
|
export type * from "./ts-rs/PluginStaticConfig.ts";
|
|
59
59
|
export type * from "./ts-rs/ExportMethod.d.ts";
|
|
60
60
|
export type * from "./ts-rs/PanelOptions.d.ts";
|
|
61
|
+
export type * from "./ts-rs/SaveWorkspaceOptions.d.ts";
|
|
61
62
|
export type * from "./ts-rs/ClientOptions.d.ts";
|
|
62
63
|
export type * from "./ts-rs/ExportOptions.d.ts";
|
|
63
64
|
export type * from "./ts-rs/GetTableOptions.d.ts";
|
package/src/ts/plugin.ts
CHANGED
|
@@ -93,6 +93,20 @@ export interface IPerspectiveViewerPlugin {
|
|
|
93
93
|
*/
|
|
94
94
|
column_style_config?: (view_type: string, group: string) => any;
|
|
95
95
|
|
|
96
|
+
/**
|
|
97
|
+
* The per-column Style-tab schema: the controls the viewer renders
|
|
98
|
+
* for one column, re-queried on every field edit so the field set
|
|
99
|
+
* may depend on `current_value`.
|
|
100
|
+
*/
|
|
101
|
+
column_config_schema?(
|
|
102
|
+
view_type: string,
|
|
103
|
+
group: string | undefined,
|
|
104
|
+
column_name: string,
|
|
105
|
+
current_value: Record<string, unknown> | null,
|
|
106
|
+
viewer_config?: Record<string, unknown>,
|
|
107
|
+
column_stats?: Record<string, unknown>,
|
|
108
|
+
): { fields: Array<Record<string, unknown> & { kind: string }> };
|
|
109
|
+
|
|
96
110
|
/**
|
|
97
111
|
* Render this plugin using the provided `View`. While there is no
|
|
98
112
|
* provision to cancel a render in progress per se, calling a method on
|
|
@@ -12,7 +12,7 @@ import type { JsonValue } from "./serde_json/JsonValue.js";
|
|
|
12
12
|
/**
|
|
13
13
|
* The per-panel state of a [`ViewerConfig`] — everything except the
|
|
14
14
|
* element-level `settings` flag. This is the `panels` entry type of the
|
|
15
|
-
*
|
|
15
|
+
* workspace config format.
|
|
16
16
|
*/
|
|
17
17
|
export type PanelViewerConfig<V = string> = {
|
|
18
18
|
/**
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Options for the `saveWorkspace()` method.
|
|
5
|
+
*/
|
|
6
|
+
export type SaveWorkspaceOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* When `true`, the emitted `palette` is the full set the element
|
|
9
|
+
* holds rather than only the values the panels reference.
|
|
10
|
+
*/
|
|
11
|
+
full_palette?: boolean, };
|
|
@@ -12,7 +12,7 @@ import type { JsonValue } from "./serde_json/JsonValue.js";
|
|
|
12
12
|
/**
|
|
13
13
|
* The state of an entire `custom_elements::PerspectiveViewerElement` component
|
|
14
14
|
* and its `Plugin`: the element-level `settings` flag plus the per-panel
|
|
15
|
-
* [`PanelViewerConfig`]. The split exists so the
|
|
15
|
+
* [`PanelViewerConfig`]. The split exists so the workspace config format
|
|
16
16
|
* can serialize panel entries *without* a `settings` key (it is element-level
|
|
17
17
|
* state there, carried by the top-level `active` field instead), while the
|
|
18
18
|
* single-panel format flattens back to the legacy shape.
|
|
@@ -4,7 +4,7 @@ import type { Layout } from "./Layout.js";
|
|
|
4
4
|
import type { PanelViewerConfig } from "./PanelViewerConfig.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* The
|
|
7
|
+
* The workspace config format (`{version, active?, layout, panels}`) —
|
|
8
8
|
* the multi-panel counterpart of the single-panel [`ViewerConfig`] — as
|
|
9
9
|
* emitted by [`PerspectiveViewerElement::save`].
|
|
10
10
|
*
|
|
@@ -33,4 +33,10 @@ global_filters?: Array<Filter>,
|
|
|
33
33
|
* which master contributed which clause does not — restored
|
|
34
34
|
* `global_filters` are one unattributed bucket. Omitted when empty.
|
|
35
35
|
*/
|
|
36
|
-
masters?: Array<string>,
|
|
36
|
+
masters?: Array<string>,
|
|
37
|
+
/**
|
|
38
|
+
* Named color-scale definitions shared by every panel: CSS custom
|
|
39
|
+
* property name (`--psp-user--<kind>-<name>`) → canonical CSS
|
|
40
|
+
* value.
|
|
41
|
+
*/
|
|
42
|
+
palette?: { [key in string]?: string }, };
|
|
@@ -4,7 +4,7 @@ import type { Layout } from "./Layout.js";
|
|
|
4
4
|
import type { ViewerConfigInitial } from "./ViewerConfigInitial.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* The parse target of a
|
|
7
|
+
* The parse target of a workspace config in
|
|
8
8
|
* [`PerspectiveViewerElement::restoreWorkspace`]. Mirrors
|
|
9
9
|
* [`WorkspaceConfig`], but `panels` entries are [`ViewerConfigInitial`]s —
|
|
10
10
|
* every entry creates a NEW panel, so `table` is required by type (a
|
|
@@ -16,10 +16,18 @@ export type WorkspaceConfigUpdate = { active?: string, layout?: Layout, panels:
|
|
|
16
16
|
* The element-level global (master/detail cross-) filters to re-apply as
|
|
17
17
|
* a transient overlay on every DETAIL panel. Restored as one
|
|
18
18
|
* unattributed bucket: the next selection on any master replaces it.
|
|
19
|
+
* `Option` so an explicit `undefined` property deserializes as
|
|
20
|
+
* `None` like an absent key (also `masters` / `palette` below).
|
|
19
21
|
*/
|
|
20
|
-
global_filters?: Array<Filter
|
|
22
|
+
global_filters?: Array<Filter> | null,
|
|
21
23
|
/**
|
|
22
24
|
* The master (filter-source) panels, by saved `panels` key. An id not in
|
|
23
25
|
* `panels` warns and is dropped.
|
|
24
26
|
*/
|
|
25
|
-
masters?: Array<string
|
|
27
|
+
masters?: Array<string> | null,
|
|
28
|
+
/**
|
|
29
|
+
* Named color-scale definitions to apply to the host (see
|
|
30
|
+
* [`WorkspaceConfig::palette`]), replacing any previously restored
|
|
31
|
+
* palette.
|
|
32
|
+
*/
|
|
33
|
+
palette?: { [key in string]?: string } | null, };
|
|
@@ -1,137 +0,0 @@
|
|
|
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
|
-
use wasm_bindgen::JsCast;
|
|
14
|
-
use web_sys::*;
|
|
15
|
-
use yew::prelude::*;
|
|
16
|
-
|
|
17
|
-
#[derive(Properties, PartialEq, Clone)]
|
|
18
|
-
pub struct ColorRangeProps {
|
|
19
|
-
/// Extra class appended to the positive input's `class` attribute,
|
|
20
|
-
/// so callers can target the pos / neg sides independently from CSS.
|
|
21
|
-
/// Paired with `neg_class`; both default to empty.
|
|
22
|
-
#[prop_or_default]
|
|
23
|
-
pub pos_class: Classes,
|
|
24
|
-
#[prop_or_default]
|
|
25
|
-
pub neg_class: Classes,
|
|
26
|
-
pub pos_color: String,
|
|
27
|
-
pub neg_color: String,
|
|
28
|
-
pub is_gradient: bool,
|
|
29
|
-
pub on_pos_color: Callback<String>,
|
|
30
|
-
pub on_neg_color: Callback<String>,
|
|
31
|
-
pub on_reset: Callback<()>,
|
|
32
|
-
pub is_modified: bool,
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
#[function_component(ColorRangeSelector)]
|
|
36
|
-
pub fn color_chooser_component(props: &ColorRangeProps) -> Html {
|
|
37
|
-
let on_pos_color = use_callback(
|
|
38
|
-
props.on_pos_color.clone(),
|
|
39
|
-
|event: InputEvent, on_pos_color| {
|
|
40
|
-
let color = event
|
|
41
|
-
.target()
|
|
42
|
-
.unwrap()
|
|
43
|
-
.unchecked_into::<HtmlInputElement>()
|
|
44
|
-
.value();
|
|
45
|
-
on_pos_color.emit(color);
|
|
46
|
-
},
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
let on_neg_color = use_callback(
|
|
50
|
-
props.on_neg_color.clone(),
|
|
51
|
-
|event: InputEvent, on_neg_color| {
|
|
52
|
-
let color = event
|
|
53
|
-
.target()
|
|
54
|
-
.unwrap()
|
|
55
|
-
.unchecked_into::<HtmlInputElement>()
|
|
56
|
-
.value();
|
|
57
|
-
on_neg_color.emit(color);
|
|
58
|
-
},
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
let fg_pos = infer_fg(&props.pos_color);
|
|
62
|
-
let fg_neg = infer_fg(&props.neg_color);
|
|
63
|
-
let style = if props.is_gradient {
|
|
64
|
-
format!(
|
|
65
|
-
"background:linear-gradient(to right, {} 0%, transparent 50%, {} 100%)",
|
|
66
|
-
props.pos_color, props.neg_color
|
|
67
|
-
)
|
|
68
|
-
} else {
|
|
69
|
-
format!(
|
|
70
|
-
"background:linear-gradient(to right, {} 0%, {} 50%, {} 50%, {} 100%)",
|
|
71
|
-
props.pos_color, props.pos_color, props.neg_color, props.neg_color
|
|
72
|
-
)
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
let on_reset = use_callback(props.clone(), |_: MouseEvent, deps| deps.on_reset.emit(()));
|
|
76
|
-
|
|
77
|
-
let pos_class = classes!("parameter", "pos-color-param", props.pos_class.clone());
|
|
78
|
-
let neg_class = classes!("parameter", "neg-color-param", props.neg_class.clone());
|
|
79
|
-
|
|
80
|
-
html! {
|
|
81
|
-
<>
|
|
82
|
-
<label id="color-range-label" />
|
|
83
|
-
<div class="color-gradient-container">
|
|
84
|
-
<div style={fg_pos} class="color-selector">
|
|
85
|
-
<input
|
|
86
|
-
class={pos_class}
|
|
87
|
-
type="color"
|
|
88
|
-
value={props.pos_color.to_owned()}
|
|
89
|
-
data-value={props.pos_color.to_owned()}
|
|
90
|
-
oninput={on_pos_color}
|
|
91
|
-
/>
|
|
92
|
-
<label class="color-label">{ "+" }</label>
|
|
93
|
-
</div>
|
|
94
|
-
<div class="color-thermometer" {style} />
|
|
95
|
-
<div style={fg_neg} class="color-selector">
|
|
96
|
-
<input
|
|
97
|
-
class={neg_class}
|
|
98
|
-
type="color"
|
|
99
|
-
value={props.neg_color.to_owned()}
|
|
100
|
-
data-value={props.neg_color.to_owned()}
|
|
101
|
-
oninput={on_neg_color}
|
|
102
|
-
/>
|
|
103
|
-
<label class="color-label">{ "-" }</label>
|
|
104
|
-
</div>
|
|
105
|
-
if props.is_modified {
|
|
106
|
-
<span class="reset-default-style" onclick={on_reset} />
|
|
107
|
-
} else {
|
|
108
|
-
<span class="reset-default-style-disabled" />
|
|
109
|
-
}
|
|
110
|
-
</div>
|
|
111
|
-
</>
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
fn infer_fg(color: &str) -> &'static str {
|
|
116
|
-
if color.len() >= 7 {
|
|
117
|
-
let r = i32::from_str_radix(&color[1..3], 16).unwrap_or(255) as f64;
|
|
118
|
-
let g = i32::from_str_radix(&color[3..5], 16).unwrap_or(0) as f64;
|
|
119
|
-
let b = i32::from_str_radix(&color[5..7], 16).unwrap_or(0) as f64;
|
|
120
|
-
if (r * r * 0.299 + g * g * 0.587 + b * b * 0.114).sqrt() > 130.0 {
|
|
121
|
-
"--sign--color:var(--psp--color)"
|
|
122
|
-
} else {
|
|
123
|
-
"--sign--color:var(--psp--background-color)"
|
|
124
|
-
}
|
|
125
|
-
} else if color.len() == 4 {
|
|
126
|
-
let r = i32::from_str_radix(&color[1..2], 16).unwrap_or(15) as f64;
|
|
127
|
-
let g = i32::from_str_radix(&color[2..3], 16).unwrap_or(0) as f64;
|
|
128
|
-
let b = i32::from_str_radix(&color[3..4], 16).unwrap_or(0) as f64;
|
|
129
|
-
if (r * r * 0.299 + g * g * 0.587 + b * b * 0.114).sqrt() > 8.0 {
|
|
130
|
-
"--sign--color:var(--psp--color)"
|
|
131
|
-
} else {
|
|
132
|
-
"--sign--color:var(--psp--background-color)"
|
|
133
|
-
}
|
|
134
|
-
} else {
|
|
135
|
-
"--sign--color:var(--psp--color)"
|
|
136
|
-
}
|
|
137
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|