@perspective-dev/viewer 5.4.0 → 5.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/perspective-viewer.js +4 -4
- 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 -1
- 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/perspective-viewer.d.ts +2 -0
- 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 +4 -4
- package/dist/esm/perspective-viewer.js.map +2 -2
- package/dist/esm/plugin.d.ts +9 -0
- package/dist/esm/ts-rs/AddPanelOptions.d.ts +9 -0
- package/dist/esm/ts-rs/ExportMethod.d.ts +1 -1
- package/dist/esm/ts-rs/GetViewMode.d.ts +4 -0
- package/dist/esm/ts-rs/GetViewOptions.d.ts +8 -0
- package/dist/esm/ts-rs/RestoreOptions.d.ts +6 -0
- package/dist/esm/ts-rs/RestoreWorkspaceOptions.d.ts +9 -0
- package/dist/esm/ts-rs/WorkspaceConfigUpdate.d.ts +30 -22
- package/dist/wasm/perspective-viewer.d.ts +102 -47
- package/dist/wasm/perspective-viewer.js +233 -142
- package/dist/wasm/perspective-viewer.wasm +0 -0
- package/dist/wasm/perspective-viewer.wasm.d.ts +18 -18
- package/package.json +7 -7
- package/src/css/column-selector.css +11 -3
- package/src/css/column-style.css +162 -0
- package/src/css/config-selector.css +1 -1
- package/src/css/form/debug.css +9 -0
- package/src/css/status-bar.css +11 -0
- package/src/css/ui/containers/tabs.css +2 -1
- package/src/rust/agent/tools.rs +80 -7
- package/src/rust/components/column_selector/active_column.rs +9 -0
- package/src/rust/components/column_selector.rs +11 -0
- package/src/rust/components/column_settings_sidebar/style_tab/alignment_field.rs +90 -0
- package/src/rust/components/column_settings_sidebar/style_tab/font_field.rs +267 -0
- package/src/rust/components/column_settings_sidebar/style_tab/primitive_field.rs +1 -1
- package/src/rust/components/column_settings_sidebar/style_tab.rs +68 -9
- package/src/rust/components/debug_panel.rs +107 -50
- package/src/rust/components/export_dropdown.rs +6 -0
- package/src/rust/components/main_panel/msg.rs +4 -0
- package/src/rust/components/main_panel.rs +14 -0
- package/src/rust/components/mod.rs +0 -1
- package/src/rust/components/plugin_tab.rs +57 -3
- package/src/rust/components/settings_panel.rs +6 -0
- package/src/rust/components/status_bar.rs +12 -3
- package/src/rust/components/status_indicator.rs +4 -0
- package/src/rust/components/viewer/filters.rs +2 -2
- package/src/rust/components/viewer/msg.rs +4 -0
- package/src/rust/components/viewer/panels.rs +6 -3
- package/src/rust/components/viewer/render.rs +1 -0
- package/src/rust/components/viewer/wiring.rs +14 -2
- package/src/rust/components/viewer.rs +2 -2
- package/src/rust/config/column_config_schema.rs +312 -8
- package/src/rust/config/datetime_column_style.rs +0 -11
- package/src/rust/config/export_method.rs +24 -0
- package/src/rust/config/mod.rs +0 -2
- package/src/rust/config/options.rs +50 -0
- package/src/rust/config/workspace_config.rs +69 -24
- package/src/rust/custom_elements/viewer.rs +214 -113
- package/src/rust/js/plugin.rs +3 -1
- package/src/rust/lib.rs +7 -3
- package/src/rust/queries/plugin_column_styles.rs +6 -5
- package/src/rust/renderer/plugin_config.rs +200 -41
- package/src/rust/renderer/plugin_store.rs +2 -1
- package/src/rust/renderer/props.rs +5 -0
- package/src/rust/renderer.rs +9 -0
- package/src/rust/session/metadata.rs +5 -10
- package/src/rust/session/props.rs +4 -0
- package/src/rust/session.rs +273 -195
- package/src/rust/tasks/copy_export.rs +67 -0
- package/src/rust/tasks/create_panel.rs +16 -13
- package/src/rust/tasks/pipeline.rs +26 -8
- package/src/rust/tasks/restore_panel.rs +129 -30
- package/src/rust/tasks/send_column_config.rs +3 -0
- package/src/rust/tasks/sync_update_panels.rs +148 -68
- package/src/rust/tasks/table_lifecycle.rs +7 -1
- package/src/rust/ui/containers/tab_list.rs +1 -1
- package/src/rust/ui/form/intl_label.rs +4 -23
- package/src/rust/ui/portal.rs +1 -0
- package/src/rust/utils/css_vars.rs +13 -0
- package/src/rust/{config/datetime_column_style/color_mode.rs → utils/in_flight.rs} +47 -35
- package/src/rust/utils/local_fonts.rs +395 -0
- package/src/rust/utils/mod.rs +4 -0
- package/src/rust/utils/pending_effects.rs +6 -30
- package/src/rust/workspace.rs +12 -0
- package/src/svg/status_pending.svg +3 -0
- package/src/themes/icons.css +1 -0
- package/src/themes/intl/ar.css +20 -7
- package/src/themes/intl/de.css +20 -7
- package/src/themes/intl/es.css +20 -7
- package/src/themes/intl/fr.css +20 -7
- package/src/themes/intl/ja.css +20 -7
- package/src/themes/intl/pt.css +20 -7
- package/src/themes/intl/zh.css +20 -7
- package/src/themes/intl.css +20 -7
- package/src/themes/monokai.css +1 -1
- package/src/themes/vaporwave.css +1 -1
- package/src/ts/perspective-viewer.ts +2 -0
- package/src/ts/plugin.ts +9 -0
- package/src/ts/ts-rs/AddPanelOptions.ts +10 -0
- package/src/ts/ts-rs/ExportMethod.ts +1 -1
- package/src/ts/ts-rs/{DatetimeColorMode.ts → GetViewMode.ts} +4 -1
- package/src/ts/ts-rs/GetViewOptions.ts +7 -0
- package/src/ts/ts-rs/RestoreOptions.ts +7 -1
- package/src/ts/ts-rs/RestoreWorkspaceOptions.ts +10 -0
- package/src/ts/ts-rs/WorkspaceConfigUpdate.ts +31 -20
- package/dist/esm/ts-rs/DatetimeColorMode.d.ts +0 -1
- package/dist/esm/ts-rs/FormatMode.d.ts +0 -1
- package/dist/esm/ts-rs/StringColorMode.d.ts +0 -1
- package/src/rust/components/string_column_style.rs +0 -120
- package/src/rust/config/string_column_style.rs +0 -135
- package/src/ts/ts-rs/FormatMode.ts +0 -3
- package/src/ts/ts-rs/StringColorMode.ts +0 -3
- /package/dist/wasm/snippets/{perspective-viewer-adc6f3f79141112b → perspective-viewer-6813b568219c6763}/inline0.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-adc6f3f79141112b → perspective-viewer-6813b568219c6763}/inline1.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-adc6f3f79141112b → perspective-viewer-6813b568219c6763}/inline2.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-adc6f3f79141112b → perspective-viewer-6813b568219c6763}/inline3.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-adc6f3f79141112b → perspective-viewer-6813b568219c6763}/inline4.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-adc6f3f79141112b → perspective-viewer-6813b568219c6763}/inline5.js +0 -0
package/src/themes/intl/fr.css
CHANGED
|
@@ -74,16 +74,13 @@ perspective-viewer {
|
|
|
74
74
|
|
|
75
75
|
/* Column Settings */
|
|
76
76
|
--psp-label--color--content: "Couleur";
|
|
77
|
-
--psp-label--format--content: "Format";
|
|
78
77
|
--psp-label--timezone--content: "Fuseau horaire";
|
|
79
78
|
--psp-label--date-style--content: "Style de date";
|
|
80
79
|
--psp-label--time-style--content: "Style d'heure";
|
|
81
|
-
--psp-label--
|
|
82
|
-
--psp-label--
|
|
83
|
-
--psp-label--fg-
|
|
84
|
-
--psp-label--bg-
|
|
85
|
-
--psp-label--datetime-color-mode--content: "Couleur";
|
|
86
|
-
--psp-label--string-color-mode--content: "Couleur";
|
|
80
|
+
--psp-label--fg-mode--content: "Premier plan";
|
|
81
|
+
--psp-label--bg-mode--content: "Arrière-plan";
|
|
82
|
+
--psp-label--fg-color--content: "Premier plan";
|
|
83
|
+
--psp-label--bg-color--content: "Arrière-plan";
|
|
87
84
|
--psp-label--series--content: "Série";
|
|
88
85
|
--psp-label--color-range--content: "Gamme de couleurs";
|
|
89
86
|
--psp-label--style--content: "Style";
|
|
@@ -148,6 +145,21 @@ perspective-viewer {
|
|
|
148
145
|
/* Plugin settings */
|
|
149
146
|
--psp-label--edit-mode--content: "Mode édition";
|
|
150
147
|
--psp-label--scroll-lock--content: "Verrouillage du défilement";
|
|
148
|
+
--psp-label--column-menus--content: "Menus de colonne";
|
|
149
|
+
--psp-label--group-font--content: "Police";
|
|
150
|
+
--psp-label--group-rows--content: "Lignes";
|
|
151
|
+
--psp-label--link--content: "Lien";
|
|
152
|
+
--psp-label--font-family--content: "Famille de police";
|
|
153
|
+
--psp-label--font-size--content: "Taille de police";
|
|
154
|
+
--psp-label--request-local-fonts--content: "Polices locales";
|
|
155
|
+
--psp-label--local-fonts-blocked--content: "Polices locales bloquées";
|
|
156
|
+
--psp-label--request-local-fonts-title--content: "Autoriser l'accès aux polices installées sur cet appareil";
|
|
157
|
+
--psp-label--local-fonts-blocked-title--content: "L'accès aux polices locales est bloqué pour ce site. Autorisez-le dans les paramètres du site du navigateur pour les afficher ici.";
|
|
158
|
+
--psp-label--word-wrap--content: "Retour à la ligne";
|
|
159
|
+
--psp-label--align--content: "Alignement";
|
|
160
|
+
--psp-label--row-height--content: "Hauteur de ligne";
|
|
161
|
+
--psp-label--zebra-rows--content: "Lignes zébrées";
|
|
162
|
+
--psp-label--zebra-color--content: "Couleur zébrée";
|
|
151
163
|
--psp-label--chart-type--content: "Type de glyphe";
|
|
152
164
|
|
|
153
165
|
/* Plugin settings — viewer-charts */
|
|
@@ -189,6 +201,7 @@ perspective-viewer {
|
|
|
189
201
|
--psp-label--group-legend--content: "Légende";
|
|
190
202
|
--psp-label--group-tooltip--content: "Info-bulles";
|
|
191
203
|
--psp-label--group-color--content: "Couleur";
|
|
204
|
+
--psp-label--group-column--content: "Colonne";
|
|
192
205
|
--psp-label--group-format--content: "Format";
|
|
193
206
|
--psp-label--column-size-override--content: "Largeur de colonne";
|
|
194
207
|
}
|
package/src/themes/intl/ja.css
CHANGED
|
@@ -75,16 +75,13 @@ perspective-viewer {
|
|
|
75
75
|
|
|
76
76
|
/* Column Settings */
|
|
77
77
|
--psp-label--color--content: "色";
|
|
78
|
-
--psp-label--format--content: "フォーマット";
|
|
79
78
|
--psp-label--timezone--content: "タイムゾーン";
|
|
80
79
|
--psp-label--date-style--content: "日付スタイル";
|
|
81
80
|
--psp-label--time-style--content: "時間スタイル";
|
|
82
|
-
--psp-label--
|
|
83
|
-
--psp-label--
|
|
84
|
-
--psp-label--fg-
|
|
85
|
-
--psp-label--bg-
|
|
86
|
-
--psp-label--datetime-color-mode--content: "色";
|
|
87
|
-
--psp-label--string-color-mode--content: "色";
|
|
81
|
+
--psp-label--fg-mode--content: "前景";
|
|
82
|
+
--psp-label--bg-mode--content: "背景";
|
|
83
|
+
--psp-label--fg-color--content: "前景";
|
|
84
|
+
--psp-label--bg-color--content: "背景";
|
|
88
85
|
--psp-label--series--content: "シリーズ";
|
|
89
86
|
--psp-label--color-range--content: "色の範囲";
|
|
90
87
|
--psp-label--style--content: "スタイル";
|
|
@@ -148,6 +145,21 @@ perspective-viewer {
|
|
|
148
145
|
/* Plugin settings */
|
|
149
146
|
--psp-label--edit-mode--content: "編集モード";
|
|
150
147
|
--psp-label--scroll-lock--content: "スクロールロック";
|
|
148
|
+
--psp-label--column-menus--content: "列メニュー";
|
|
149
|
+
--psp-label--group-font--content: "フォント";
|
|
150
|
+
--psp-label--group-rows--content: "行";
|
|
151
|
+
--psp-label--link--content: "リンク";
|
|
152
|
+
--psp-label--font-family--content: "フォントファミリー";
|
|
153
|
+
--psp-label--font-size--content: "フォントサイズ";
|
|
154
|
+
--psp-label--request-local-fonts--content: "ローカルフォント";
|
|
155
|
+
--psp-label--local-fonts-blocked--content: "ローカルフォントはブロック済み";
|
|
156
|
+
--psp-label--request-local-fonts-title--content: "このデバイスにインストールされているフォントへのアクセスを許可";
|
|
157
|
+
--psp-label--local-fonts-blocked-title--content: "このサイトではローカルフォントへのアクセスがブロックされています。ブラウザーのサイト設定で許可すると、ここに一覧表示されます。";
|
|
158
|
+
--psp-label--word-wrap--content: "折り返し";
|
|
159
|
+
--psp-label--align--content: "配置";
|
|
160
|
+
--psp-label--row-height--content: "行の高さ";
|
|
161
|
+
--psp-label--zebra-rows--content: "縞模様の行数";
|
|
162
|
+
--psp-label--zebra-color--content: "縞模様の色";
|
|
151
163
|
--psp-label--chart-type--content: "グリフの種類";
|
|
152
164
|
|
|
153
165
|
/* Plugin settings — viewer-charts */
|
|
@@ -189,6 +201,7 @@ perspective-viewer {
|
|
|
189
201
|
--psp-label--group-legend--content: "凡例";
|
|
190
202
|
--psp-label--group-tooltip--content: "ツールチップ";
|
|
191
203
|
--psp-label--group-color--content: "色";
|
|
204
|
+
--psp-label--group-column--content: "列";
|
|
192
205
|
--psp-label--group-format--content: "書式";
|
|
193
206
|
--psp-label--column-size-override--content: "列の幅";
|
|
194
207
|
}
|
package/src/themes/intl/pt.css
CHANGED
|
@@ -74,16 +74,13 @@ perspective-viewer {
|
|
|
74
74
|
|
|
75
75
|
/* Column Settings */
|
|
76
76
|
--psp-label--color--content: "Cor";
|
|
77
|
-
--psp-label--format--content: "Formato";
|
|
78
77
|
--psp-label--timezone--content: "Fuso horário";
|
|
79
78
|
--psp-label--date-style--content: "Estilo de data";
|
|
80
79
|
--psp-label--time-style--content: "Estilo de tempo";
|
|
81
|
-
--psp-label--
|
|
82
|
-
--psp-label--
|
|
83
|
-
--psp-label--fg-
|
|
84
|
-
--psp-label--bg-
|
|
85
|
-
--psp-label--datetime-color-mode--content: "Cor";
|
|
86
|
-
--psp-label--string-color-mode--content: "Cor";
|
|
80
|
+
--psp-label--fg-mode--content: "Primeiro plano";
|
|
81
|
+
--psp-label--bg-mode--content: "Fundo";
|
|
82
|
+
--psp-label--fg-color--content: "Primeiro plano";
|
|
83
|
+
--psp-label--bg-color--content: "Fundo";
|
|
87
84
|
--psp-label--series--content: "Série";
|
|
88
85
|
--psp-label--color-range--content: "Gama de cores";
|
|
89
86
|
--psp-label--style--content: "Estilo";
|
|
@@ -148,6 +145,21 @@ perspective-viewer {
|
|
|
148
145
|
/* Plugin settings */
|
|
149
146
|
--psp-label--edit-mode--content: "Modo de edição";
|
|
150
147
|
--psp-label--scroll-lock--content: "Bloqueio de rolagem";
|
|
148
|
+
--psp-label--column-menus--content: "Menus de coluna";
|
|
149
|
+
--psp-label--group-font--content: "Fonte";
|
|
150
|
+
--psp-label--group-rows--content: "Linhas";
|
|
151
|
+
--psp-label--link--content: "Link";
|
|
152
|
+
--psp-label--font-family--content: "Família da fonte";
|
|
153
|
+
--psp-label--font-size--content: "Tamanho da fonte";
|
|
154
|
+
--psp-label--request-local-fonts--content: "Fontes locais";
|
|
155
|
+
--psp-label--local-fonts-blocked--content: "Fontes locais bloqueadas";
|
|
156
|
+
--psp-label--request-local-fonts-title--content: "Permitir acesso às fontes instaladas neste dispositivo";
|
|
157
|
+
--psp-label--local-fonts-blocked-title--content: "O acesso às fontes locais está bloqueado para este site. Permita-o nas configurações do site do navegador para listá-las aqui.";
|
|
158
|
+
--psp-label--word-wrap--content: "Quebra de linha";
|
|
159
|
+
--psp-label--align--content: "Alinhamento";
|
|
160
|
+
--psp-label--row-height--content: "Altura da linha";
|
|
161
|
+
--psp-label--zebra-rows--content: "Linhas zebradas";
|
|
162
|
+
--psp-label--zebra-color--content: "Cor zebrada";
|
|
151
163
|
--psp-label--chart-type--content: "Tipo de glifo";
|
|
152
164
|
|
|
153
165
|
/* Plugin settings — viewer-charts */
|
|
@@ -189,6 +201,7 @@ perspective-viewer {
|
|
|
189
201
|
--psp-label--group-legend--content: "Legenda";
|
|
190
202
|
--psp-label--group-tooltip--content: "Dicas";
|
|
191
203
|
--psp-label--group-color--content: "Cor";
|
|
204
|
+
--psp-label--group-column--content: "Coluna";
|
|
192
205
|
--psp-label--group-format--content: "Formato";
|
|
193
206
|
--psp-label--column-size-override--content: "Largura da coluna";
|
|
194
207
|
}
|
package/src/themes/intl/zh.css
CHANGED
|
@@ -74,16 +74,13 @@ perspective-viewer {
|
|
|
74
74
|
|
|
75
75
|
/* Column Settings */
|
|
76
76
|
--psp-label--color--content: "颜色";
|
|
77
|
-
--psp-label--format--content: "格式";
|
|
78
77
|
--psp-label--timezone--content: "时区";
|
|
79
78
|
--psp-label--date-style--content: "日期样式";
|
|
80
79
|
--psp-label--time-style--content: "时间风格";
|
|
81
|
-
--psp-label--
|
|
82
|
-
--psp-label--
|
|
83
|
-
--psp-label--fg-
|
|
84
|
-
--psp-label--bg-
|
|
85
|
-
--psp-label--datetime-color-mode--content: "颜色";
|
|
86
|
-
--psp-label--string-color-mode--content: "颜色";
|
|
80
|
+
--psp-label--fg-mode--content: "前景";
|
|
81
|
+
--psp-label--bg-mode--content: "背景";
|
|
82
|
+
--psp-label--fg-color--content: "前景";
|
|
83
|
+
--psp-label--bg-color--content: "背景";
|
|
87
84
|
--psp-label--series--content: "系列";
|
|
88
85
|
--psp-label--color-range--content: "颜色范围";
|
|
89
86
|
--psp-label--style--content: "样式";
|
|
@@ -148,6 +145,21 @@ perspective-viewer {
|
|
|
148
145
|
/* Plugin settings */
|
|
149
146
|
--psp-label--edit-mode--content: "编辑模式";
|
|
150
147
|
--psp-label--scroll-lock--content: "滚动锁定";
|
|
148
|
+
--psp-label--column-menus--content: "列菜单";
|
|
149
|
+
--psp-label--group-font--content: "字体";
|
|
150
|
+
--psp-label--group-rows--content: "行";
|
|
151
|
+
--psp-label--link--content: "链接";
|
|
152
|
+
--psp-label--font-family--content: "字体系列";
|
|
153
|
+
--psp-label--font-size--content: "字号";
|
|
154
|
+
--psp-label--request-local-fonts--content: "本地字体";
|
|
155
|
+
--psp-label--local-fonts-blocked--content: "本地字体已被阻止";
|
|
156
|
+
--psp-label--request-local-fonts-title--content: "允许访问此设备上安装的字体";
|
|
157
|
+
--psp-label--local-fonts-blocked-title--content: "此站点已阻止访问本地字体。请在浏览器的站点设置中允许访问,以便在此列出。";
|
|
158
|
+
--psp-label--word-wrap--content: "自动换行";
|
|
159
|
+
--psp-label--align--content: "对齐";
|
|
160
|
+
--psp-label--row-height--content: "行高";
|
|
161
|
+
--psp-label--zebra-rows--content: "斑马行";
|
|
162
|
+
--psp-label--zebra-color--content: "斑马色";
|
|
151
163
|
--psp-label--chart-type--content: "图元类型";
|
|
152
164
|
|
|
153
165
|
/* Plugin settings — viewer-charts */
|
|
@@ -189,6 +201,7 @@ perspective-viewer {
|
|
|
189
201
|
--psp-label--group-legend--content: "图例";
|
|
190
202
|
--psp-label--group-tooltip--content: "工具提示";
|
|
191
203
|
--psp-label--group-color--content: "颜色";
|
|
204
|
+
--psp-label--group-column--content: "列";
|
|
192
205
|
--psp-label--group-format--content: "格式";
|
|
193
206
|
--psp-label--column-size-override--content: "列宽";
|
|
194
207
|
}
|
package/src/themes/intl.css
CHANGED
|
@@ -74,16 +74,13 @@ perspective-viewer {
|
|
|
74
74
|
|
|
75
75
|
/* Column Settings */
|
|
76
76
|
--psp-label--color--content: "Color";
|
|
77
|
-
--psp-label--format--content: "Format";
|
|
78
77
|
--psp-label--timezone--content: "Timezone";
|
|
79
78
|
--psp-label--date-style--content: "Date Style";
|
|
80
79
|
--psp-label--time-style--content: "Time Style";
|
|
81
|
-
--psp-label--
|
|
82
|
-
--psp-label--
|
|
83
|
-
--psp-label--fg-
|
|
84
|
-
--psp-label--bg-
|
|
85
|
-
--psp-label--datetime-color-mode--content: "Color";
|
|
86
|
-
--psp-label--string-color-mode--content: "Color";
|
|
80
|
+
--psp-label--fg-mode--content: "Foreground";
|
|
81
|
+
--psp-label--bg-mode--content: "Background";
|
|
82
|
+
--psp-label--fg-color--content: "Color";
|
|
83
|
+
--psp-label--bg-color--content: "Color";
|
|
87
84
|
--psp-label--series--content: "Series";
|
|
88
85
|
--psp-label--color-range--content: "Color Range";
|
|
89
86
|
--psp-label--style--content: "Style";
|
|
@@ -122,6 +119,7 @@ perspective-viewer {
|
|
|
122
119
|
--psp-label--group-legend--content: "Legend";
|
|
123
120
|
--psp-label--group-tooltip--content: "Tooltips";
|
|
124
121
|
--psp-label--group-color--content: "Color";
|
|
122
|
+
--psp-label--group-column--content: "Column";
|
|
125
123
|
--psp-label--group-format--content: "Format";
|
|
126
124
|
--psp-label--column-size-override--content: "Column Width";
|
|
127
125
|
|
|
@@ -160,6 +158,21 @@ perspective-viewer {
|
|
|
160
158
|
/* Plugin settings */
|
|
161
159
|
--psp-label--edit-mode--content: "Edit mode";
|
|
162
160
|
--psp-label--scroll-lock--content: "Scroll lock";
|
|
161
|
+
--psp-label--column-menus--content: "Column menus";
|
|
162
|
+
--psp-label--group-font--content: "Font";
|
|
163
|
+
--psp-label--group-rows--content: "Rows";
|
|
164
|
+
--psp-label--link--content: "Link";
|
|
165
|
+
--psp-label--font-family--content: "Font family";
|
|
166
|
+
--psp-label--font-size--content: "Font size";
|
|
167
|
+
--psp-label--request-local-fonts--content: "Local Fonts";
|
|
168
|
+
--psp-label--local-fonts-blocked--content: "No Access";
|
|
169
|
+
--psp-label--request-local-fonts-title--content: "Allow access to the fonts installed on this device";
|
|
170
|
+
--psp-label--local-fonts-blocked-title--content: "Access to local fonts is blocked for this site. Allow it in the browser's site settings to list them here.";
|
|
171
|
+
--psp-label--word-wrap--content: "Word wrap";
|
|
172
|
+
--psp-label--align--content: "Alignment";
|
|
173
|
+
--psp-label--row-height--content: "Row height";
|
|
174
|
+
--psp-label--zebra-rows--content: "Zebra rows";
|
|
175
|
+
--psp-label--zebra-color--content: "Zebra color";
|
|
163
176
|
--psp-label--chart-type--content: "Glyph type";
|
|
164
177
|
|
|
165
178
|
/* Plugin settings — viewer-charts */
|
package/src/themes/monokai.css
CHANGED
|
@@ -131,7 +131,7 @@ perspective-viewer [theme="Monokai"] {
|
|
|
131
131
|
--psp-datagrid--border-color: #444444;
|
|
132
132
|
|
|
133
133
|
/* FIXME: broken in shadow DOM */
|
|
134
|
-
regular-table table tbody th
|
|
134
|
+
regular-table table tbody th.psp-tree-spacer {
|
|
135
135
|
background: linear-gradient(
|
|
136
136
|
to right,
|
|
137
137
|
transparent 9px,
|
package/src/themes/vaporwave.css
CHANGED
|
@@ -130,7 +130,7 @@ perspective-viewer [theme="Vaporwave"] {
|
|
|
130
130
|
--psp-datagrid--hover--border-color: var(--pp-color-1) !important;
|
|
131
131
|
|
|
132
132
|
/* FIXME: broken in shadow DOM */
|
|
133
|
-
regular-table table tbody th
|
|
133
|
+
regular-table table tbody th.psp-tree-spacer {
|
|
134
134
|
background: linear-gradient(
|
|
135
135
|
to right,
|
|
136
136
|
transparent 9px,
|
|
@@ -63,6 +63,8 @@ export type * from "./ts-rs/ClientOptions.d.ts";
|
|
|
63
63
|
export type * from "./ts-rs/ExportOptions.d.ts";
|
|
64
64
|
export type * from "./ts-rs/GetTableOptions.d.ts";
|
|
65
65
|
export type * from "./ts-rs/GetClientOptions.d.ts";
|
|
66
|
+
export type * from "./ts-rs/GetViewOptions.d.ts";
|
|
67
|
+
export type * from "./ts-rs/GetViewMode.d.ts";
|
|
66
68
|
|
|
67
69
|
export { init_client } from "./bootstrap";
|
|
68
70
|
import { init_client } from "./bootstrap";
|
package/src/ts/plugin.ts
CHANGED
|
@@ -107,6 +107,15 @@ export interface IPerspectiveViewerPlugin {
|
|
|
107
107
|
column_stats?: Record<string, unknown>,
|
|
108
108
|
): { fields: Array<Record<string, unknown> & { kind: string }> };
|
|
109
109
|
|
|
110
|
+
/**
|
|
111
|
+
* The plugin-level settings schema as it applies to `current_value`, the
|
|
112
|
+
* `plugin_config` state the schema should describe.
|
|
113
|
+
*/
|
|
114
|
+
plugin_config_schema?(
|
|
115
|
+
view_config?: Record<string, unknown>,
|
|
116
|
+
current_value?: Record<string, unknown> | null,
|
|
117
|
+
): { fields: Array<Record<string, unknown> & { kind: string }> };
|
|
118
|
+
|
|
110
119
|
/**
|
|
111
120
|
* Render this plugin using the provided `View`. While there is no
|
|
112
121
|
* provision to cancel a render in progress per se, calling a method on
|
|
@@ -0,0 +1,10 @@
|
|
|
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 `addPanel()` method.
|
|
5
|
+
*/
|
|
6
|
+
export type AddPanelOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* As `RestoreOptions::wait_for_table`.
|
|
9
|
+
*/
|
|
10
|
+
wait_for_table?: boolean, };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
2
2
|
|
|
3
|
-
export type ExportMethod = "csv" | "csv-all" | "csv-selected" | "json" | "json-all" | "json-selected" | "ndjson" | "ndjson-all" | "ndjson-selected" | "html" | "plugin" | "arrow" | "arrow-selected" | "arrow-all" | "json-config";
|
|
3
|
+
export type ExportMethod = "csv" | "csv-all" | "csv-selected" | "json" | "json-all" | "json-selected" | "ndjson" | "ndjson-all" | "ndjson-selected" | "html" | "plugin" | "arrow" | "arrow-selected" | "arrow-all" | "arrow-lz4" | "arrow-lz4-selected" | "arrow-lz4-all" | "arrow-zstd" | "arrow-zstd-selected" | "arrow-zstd-all" | "json-config";
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* How `getView` resolves the `View` it returns.
|
|
5
|
+
*/
|
|
6
|
+
export type GetViewMode = "live" | "clone" | "auto";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
2
|
+
import type { GetViewMode } from "./GetViewMode.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The `getView` argument: the `mode` and the target panel.
|
|
6
|
+
*/
|
|
7
|
+
export type GetViewOptions = { mode?: GetViewMode, panel?: string, };
|
|
@@ -17,4 +17,10 @@ panel?: string,
|
|
|
17
17
|
* The config may be partially applied on failure; restore a
|
|
18
18
|
* known-good config to recover exactly.
|
|
19
19
|
*/
|
|
20
|
-
suppress_errors?: boolean,
|
|
20
|
+
suppress_errors?: boolean,
|
|
21
|
+
/**
|
|
22
|
+
* When `true`, a `table` no loaded client hosts yet leaves the panel
|
|
23
|
+
* empty and pending until the table is created, instead of the default
|
|
24
|
+
* error.
|
|
25
|
+
*/
|
|
26
|
+
wait_for_table?: boolean, };
|
|
@@ -0,0 +1,10 @@
|
|
|
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 `restoreWorkspace()` method.
|
|
5
|
+
*/
|
|
6
|
+
export type RestoreWorkspaceOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* As `RestoreOptions::wait_for_table`, applied to every panel entry.
|
|
9
|
+
*/
|
|
10
|
+
wait_for_table?: boolean, };
|
|
@@ -1,33 +1,44 @@
|
|
|
1
1
|
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
|
2
2
|
import type { Filter } from "./Filter.js";
|
|
3
3
|
import type { Layout } from "./Layout.js";
|
|
4
|
+
import type { OptionalUpdate } from "./OptionalUpdate.js";
|
|
4
5
|
import type { ViewerConfigInitial } from "./ViewerConfigInitial.js";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
|
-
* The
|
|
8
|
-
* [`
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* stray per-panel `settings` key is ignored; it is element-level state,
|
|
12
|
-
* carried by the top-level `active` field).
|
|
8
|
+
* The [`PerspectiveViewerElement::restoreWorkspace`] argument: a field-wise
|
|
9
|
+
* update of the element's workspace state, like [`ViewerConfigUpdate`] for a
|
|
10
|
+
* panel, where an absent key is unchanged, `null` resets and a value
|
|
11
|
+
* replaces.
|
|
13
12
|
*/
|
|
14
|
-
export type WorkspaceConfigUpdate = {
|
|
13
|
+
export type WorkspaceConfigUpdate = {
|
|
15
14
|
/**
|
|
16
|
-
* The
|
|
17
|
-
*
|
|
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).
|
|
15
|
+
* The panel to activate with the settings sidebar open, by `panels` key
|
|
16
|
+
* or existing panel id; `null` closes the sidebar.
|
|
21
17
|
*/
|
|
22
|
-
|
|
18
|
+
active?: OptionalUpdate<string>,
|
|
23
19
|
/**
|
|
24
|
-
* The
|
|
25
|
-
* `panels` warns and is dropped.
|
|
20
|
+
* The layout tree to stage, naming `panels` keys or existing panel ids.
|
|
26
21
|
*/
|
|
27
|
-
|
|
22
|
+
layout?: Layout,
|
|
28
23
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
24
|
+
* The complete replacement panel set, each [`ViewerConfigInitial`] entry
|
|
25
|
+
* creating a new panel (`{}` empties the element); absent keeps the
|
|
26
|
+
* existing panels.
|
|
32
27
|
*/
|
|
33
|
-
|
|
28
|
+
panels?: { [key in string]?: ViewerConfigInitial },
|
|
29
|
+
/**
|
|
30
|
+
* The element-level cross-filter set applied to every detail panel as
|
|
31
|
+
* one unattributed bucket, replacing the current set; `null` clears it.
|
|
32
|
+
*/
|
|
33
|
+
global_filters?: OptionalUpdate<Array<Filter>>,
|
|
34
|
+
/**
|
|
35
|
+
* The master (filter-source) panels by `panels` key or existing panel
|
|
36
|
+
* id, unknown ids dropped with a warning; `null` demotes every panel.
|
|
37
|
+
*/
|
|
38
|
+
masters?: OptionalUpdate<Array<string>>,
|
|
39
|
+
/**
|
|
40
|
+
* Named color-scale definitions applied to the host (see
|
|
41
|
+
* [`WorkspaceConfig::palette`]), replacing the previous palette; `null`
|
|
42
|
+
* clears it.
|
|
43
|
+
*/
|
|
44
|
+
palette?: OptionalUpdate<{ [key in string]?: string }>, };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type DatetimeColorMode = "none" | "foreground" | "background";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type FormatMode = "none" | "link" | "bold" | "italics";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type StringColorMode = "none" | "foreground" | "background" | "series";
|
|
@@ -1,120 +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 yew::prelude::*;
|
|
14
|
-
|
|
15
|
-
use crate::config::*;
|
|
16
|
-
use crate::ui::{ModalLink, SelectEnumField, SetModalLink};
|
|
17
|
-
use crate::utils::WeakScope;
|
|
18
|
-
|
|
19
|
-
/// Format-only widget for [`String`] columns. Renders the `format` enum
|
|
20
|
-
/// only; color/color-mode UI is provided externally as primitive `Enum`
|
|
21
|
-
/// + `Color` schema fields.
|
|
22
|
-
#[derive(Properties)]
|
|
23
|
-
pub struct StringColumnStyleProps {
|
|
24
|
-
pub config: Option<StringColumnStyleConfig>,
|
|
25
|
-
|
|
26
|
-
#[prop_or_default]
|
|
27
|
-
pub on_change: Callback<ColumnConfigFieldUpdate>,
|
|
28
|
-
|
|
29
|
-
#[prop_or_default]
|
|
30
|
-
pub keys: Vec<String>,
|
|
31
|
-
|
|
32
|
-
#[prop_or_default]
|
|
33
|
-
weak_link: WeakScope<StringColumnStyle>,
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
impl ModalLink<StringColumnStyle> for StringColumnStyleProps {
|
|
37
|
-
fn weak_link(&self) -> &'_ WeakScope<StringColumnStyle> {
|
|
38
|
-
&self.weak_link
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
impl PartialEq for StringColumnStyleProps {
|
|
43
|
-
fn eq(&self, other: &Self) -> bool {
|
|
44
|
-
self.config == other.config
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
pub enum StringColumnStyleMsg {
|
|
49
|
-
FormatChanged(Option<FormatMode>),
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
pub struct StringColumnStyle {
|
|
53
|
-
config: StringColumnStyleConfig,
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
impl Component for StringColumnStyle {
|
|
57
|
-
type Message = StringColumnStyleMsg;
|
|
58
|
-
type Properties = StringColumnStyleProps;
|
|
59
|
-
|
|
60
|
-
fn create(ctx: &Context<Self>) -> Self {
|
|
61
|
-
ctx.set_modal_link();
|
|
62
|
-
Self {
|
|
63
|
-
config: ctx.props().config.clone().unwrap_or_default(),
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
fn changed(&mut self, ctx: &Context<Self>, _old: &Self::Properties) -> bool {
|
|
68
|
-
let mut new_config = ctx.props().config.clone().unwrap_or_default();
|
|
69
|
-
if self.config != new_config {
|
|
70
|
-
std::mem::swap(&mut self.config, &mut new_config);
|
|
71
|
-
true
|
|
72
|
-
} else {
|
|
73
|
-
false
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
fn update(&mut self, ctx: &Context<Self>, msg: Self::Message) -> bool {
|
|
78
|
-
match msg {
|
|
79
|
-
StringColumnStyleMsg::FormatChanged(val) => {
|
|
80
|
-
self.config.format = val.unwrap_or_default();
|
|
81
|
-
self.dispatch_config(ctx);
|
|
82
|
-
true
|
|
83
|
-
},
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
fn view(&self, ctx: &Context<Self>) -> Html {
|
|
88
|
-
let format_mode_changed = ctx.link().callback(StringColumnStyleMsg::FormatChanged);
|
|
89
|
-
html! {
|
|
90
|
-
<>
|
|
91
|
-
<div id="column-style-container" class="string-column-style-container">
|
|
92
|
-
<SelectEnumField<FormatMode>
|
|
93
|
-
label="format"
|
|
94
|
-
on_change={format_mode_changed}
|
|
95
|
-
current_value={self.config.format}
|
|
96
|
-
/>
|
|
97
|
-
</div>
|
|
98
|
-
</>
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
impl StringColumnStyle {
|
|
104
|
-
/// When this config has changed, we must signal the wrapper element.
|
|
105
|
-
fn dispatch_config(&self, ctx: &Context<Self>) {
|
|
106
|
-
let value = if self.config == StringColumnStyleConfig::default() {
|
|
107
|
-
serde_json::Map::new()
|
|
108
|
-
} else {
|
|
109
|
-
match serde_json::to_value(&self.config) {
|
|
110
|
-
Ok(serde_json::Value::Object(m)) => m,
|
|
111
|
-
_ => serde_json::Map::new(),
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
ctx.props().on_change.emit(ColumnConfigFieldUpdate {
|
|
116
|
-
keys: ctx.props().keys.clone(),
|
|
117
|
-
value,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
}
|