@perspective-dev/viewer 4.2.0 → 4.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.
Files changed (240) hide show
  1. package/dist/cdn/perspective-viewer.js +2 -2
  2. package/dist/cdn/perspective-viewer.js.map +4 -4
  3. package/dist/css/botanical.css +1 -0
  4. package/dist/css/dracula.css +1 -1
  5. package/dist/css/gruvbox-dark.css +1 -1
  6. package/dist/css/gruvbox.css +1 -1
  7. package/dist/css/icons.css +1 -1
  8. package/dist/css/intl/de.css +1 -1
  9. package/dist/css/intl/es.css +1 -1
  10. package/dist/css/intl/fr.css +1 -1
  11. package/dist/css/intl/ja.css +1 -1
  12. package/dist/css/intl/pt.css +1 -1
  13. package/dist/css/intl/zh.css +1 -1
  14. package/dist/css/intl.css +1 -1
  15. package/dist/css/monokai.css +1 -1
  16. package/dist/css/pro-dark.css +1 -1
  17. package/dist/css/pro.css +1 -1
  18. package/dist/css/solarized-dark.css +1 -1
  19. package/dist/css/solarized.css +1 -1
  20. package/dist/css/themes.css +1 -1
  21. package/dist/css/vaporwave.css +1 -1
  22. package/dist/esm/extensions.d.ts +32 -1
  23. package/dist/esm/perspective-viewer.d.ts +1 -0
  24. package/dist/esm/perspective-viewer.inline.js +2 -2
  25. package/dist/esm/perspective-viewer.inline.js.map +4 -4
  26. package/dist/esm/perspective-viewer.js +2 -2
  27. package/dist/esm/perspective-viewer.js.map +4 -4
  28. package/dist/esm/ts-rs/GroupRollupMode.d.ts +1 -0
  29. package/dist/esm/ts-rs/ViewerConfigUpdate.d.ts +2 -0
  30. package/dist/wasm/perspective-viewer.d.ts +57 -53
  31. package/dist/wasm/perspective-viewer.js +197 -164
  32. package/dist/wasm/perspective-viewer.wasm +0 -0
  33. package/dist/wasm/perspective-viewer.wasm.d.ts +17 -18
  34. package/package.json +9 -6
  35. package/src/{less/aggregate-selector.less → css/aggregate-selector.css} +23 -20
  36. package/src/css/column-dropdown.css +109 -0
  37. package/src/{less/column-selector.less → css/column-selector.css} +161 -159
  38. package/src/{less/column-settings-panel.less → css/column-settings-panel.css} +69 -59
  39. package/src/{less/column-style.less → css/column-style.css} +52 -66
  40. package/src/{less/column-symbol-attributes.less → css/column-symbol-attributes.css} +15 -14
  41. package/src/css/config-selector.css +441 -0
  42. package/src/{less/containers/dropdown-menu.less → css/containers/dropdown-menu.css} +20 -19
  43. package/src/{less/containers/pairs-list.less → css/containers/pairs-list.css} +13 -12
  44. package/src/{themes/variables.less → css/containers/scroll-panel.css} +25 -22
  45. package/src/{less/containers/split-panel.less → css/containers/split-panel.css} +15 -14
  46. package/src/{less/containers/tabs.less → css/containers/tabs.css} +17 -19
  47. package/src/css/dom/checkbox.css +102 -0
  48. package/src/css/dom/scrollbar.css +35 -0
  49. package/src/{less/dom/select.less → css/dom/select.css} +17 -18
  50. package/src/{less/empty-column.less → css/empty-column.css} +19 -18
  51. package/src/{less/expression-editor.less → css/expression-editor.css} +19 -18
  52. package/src/{less/filter-dropdown.less → css/filter-dropdown.css} +12 -11
  53. package/src/{less/filter-item.less → css/filter-item.css} +16 -15
  54. package/src/{less/form/code-editor.less → css/form/code-editor.css} +26 -30
  55. package/src/{less/form/debug.less → css/form/debug.css} +19 -18
  56. package/src/{less/function-dropdown.less → css/function-dropdown.css} +12 -11
  57. package/src/css/plugin-selector.css +261 -0
  58. package/src/{less/render-warning.less → css/render-warning.css} +18 -17
  59. package/src/{less/status-bar.less → css/status-bar.css} +156 -144
  60. package/src/css/type-icon.css +116 -0
  61. package/src/{less/viewer.less → css/viewer.css} +112 -146
  62. package/src/rust/components/column_dropdown.rs +229 -119
  63. package/src/rust/components/column_selector/active_column.rs +81 -62
  64. package/src/rust/components/column_selector/add_expression_button.rs +1 -0
  65. package/src/rust/components/column_selector/aggregate_selector.rs +25 -15
  66. package/src/rust/components/column_selector/config_selector.rs +374 -185
  67. package/src/rust/components/column_selector/empty_column.rs +2 -2
  68. package/src/rust/components/column_selector/expr_edit_button.rs +8 -2
  69. package/src/rust/components/column_selector/filter_column.rs +37 -26
  70. package/src/rust/components/column_selector/inactive_column.rs +41 -29
  71. package/src/rust/components/column_selector/invalid_column.rs +7 -18
  72. package/src/rust/components/column_selector/pivot_column.rs +21 -10
  73. package/src/rust/components/column_selector/sort_column.rs +23 -13
  74. package/src/rust/components/column_selector.rs +189 -100
  75. package/src/rust/components/column_settings_sidebar/style_tab/symbol/row_selector.rs +1 -1
  76. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_pairs.rs +3 -2
  77. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_pairs_item.rs +3 -2
  78. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_selector.rs +2 -3
  79. package/src/rust/components/column_settings_sidebar/style_tab/symbol.rs +7 -1
  80. package/src/rust/components/column_settings_sidebar/style_tab.rs +153 -112
  81. package/src/rust/components/column_settings_sidebar.rs +91 -53
  82. package/src/rust/components/containers/dragdrop_list.rs +29 -7
  83. package/src/rust/components/containers/scroll_panel.rs +8 -1
  84. package/src/rust/components/containers/select.rs +3 -3
  85. package/src/rust/components/containers/sidebar_close_button.rs +1 -1
  86. package/src/rust/components/containers/split_panel.rs +3 -2
  87. package/src/rust/components/containers/tab_list.rs +1 -1
  88. package/src/rust/components/copy_dropdown.rs +7 -28
  89. package/src/rust/components/datetime_column_style/custom.rs +2 -2
  90. package/src/rust/components/datetime_column_style/simple.rs +2 -2
  91. package/src/rust/components/datetime_column_style.rs +4 -2
  92. package/src/rust/components/editable_header.rs +7 -4
  93. package/src/rust/components/empty_row.rs +1 -1
  94. package/src/rust/components/export_dropdown.rs +4 -30
  95. package/src/rust/components/expression_editor.rs +19 -10
  96. package/src/rust/components/filter_dropdown.rs +246 -102
  97. package/src/rust/components/font_loader.rs +11 -28
  98. package/src/rust/components/form/code_editor.rs +17 -2
  99. package/src/rust/components/form/color_range_selector.rs +19 -6
  100. package/src/rust/components/form/debug.rs +30 -13
  101. package/src/rust/components/function_dropdown.rs +186 -113
  102. package/src/rust/components/main_panel.rs +71 -89
  103. package/src/rust/components/mod.rs +1 -1
  104. package/src/rust/components/modal.rs +7 -1
  105. package/src/rust/components/number_column_style.rs +22 -7
  106. package/src/rust/components/plugin_selector.rs +34 -92
  107. package/src/rust/components/portal.rs +274 -0
  108. package/src/rust/components/render_warning.rs +72 -123
  109. package/src/rust/components/settings_panel.rs +115 -11
  110. package/src/rust/components/status_bar.rs +222 -98
  111. package/src/rust/components/status_bar_counter.rs +8 -20
  112. package/src/rust/components/status_indicator.rs +64 -111
  113. package/src/rust/components/string_column_style.rs +2 -2
  114. package/src/rust/components/style/style_cache.rs +5 -1
  115. package/src/rust/components/viewer.rs +391 -39
  116. package/src/rust/custom_elements/copy_dropdown.rs +102 -21
  117. package/src/rust/custom_elements/export_dropdown.rs +102 -20
  118. package/src/rust/custom_elements/mod.rs +0 -7
  119. package/src/rust/custom_elements/modal.rs +7 -103
  120. package/src/rust/custom_elements/viewer.rs +99 -35
  121. package/src/rust/custom_events.rs +23 -2
  122. package/src/rust/dragdrop.rs +149 -10
  123. package/src/{less/containers/scroll-panel.less → rust/engines.rs} +15 -13
  124. package/src/rust/js/plugin.rs +20 -1
  125. package/src/rust/lib.rs +5 -4
  126. package/src/rust/presentation/props.rs +39 -0
  127. package/src/rust/presentation/sheets.rs +3 -3
  128. package/src/rust/presentation.rs +44 -8
  129. package/src/rust/renderer/limits.rs +32 -3
  130. package/src/{less/dom/scrollbar.less → rust/renderer/props.rs} +18 -19
  131. package/src/rust/renderer/registry.rs +8 -1
  132. package/src/rust/renderer.rs +83 -9
  133. package/src/rust/session/column_defaults_update.rs +18 -0
  134. package/src/rust/session/metadata.rs +23 -2
  135. package/src/rust/session/props.rs +178 -0
  136. package/src/rust/session/replace_expression_update.rs +1 -0
  137. package/src/rust/session.rs +124 -117
  138. package/src/rust/tasks/column_locator.rs +133 -0
  139. package/src/rust/{model → tasks}/columns_iter_set.rs +14 -23
  140. package/src/rust/{model → tasks}/edit_expression.rs +34 -10
  141. package/src/rust/{model → tasks}/eject.rs +2 -2
  142. package/src/rust/{model → tasks}/get_viewer_config.rs +0 -11
  143. package/src/rust/{model → tasks}/intersection_observer.rs +22 -4
  144. package/src/{less/containers/radio-list.less → rust/tasks/is_invalid_drop.rs} +21 -14
  145. package/src/rust/tasks/mod.rs +52 -0
  146. package/src/rust/{model → tasks}/plugin_column_styles.rs +69 -46
  147. package/src/rust/{model → tasks}/resize_observer.rs +39 -6
  148. package/src/rust/{model → tasks}/send_plugin_config.rs +1 -1
  149. package/src/rust/tasks/structural.rs +53 -0
  150. package/src/rust/utils/mod.rs +4 -0
  151. package/src/rust/utils/modal_position.rs +110 -0
  152. package/src/rust/utils/ptr_eq_rc.rs +74 -0
  153. package/src/rust/utils/pubsub.rs +11 -1
  154. package/src/svg/bg-pattern.png +0 -0
  155. package/src/svg/close-icon.svg +1 -1
  156. package/src/svg/expression.svg +1 -1
  157. package/src/svg/mega-menu-icons-candlestick.svg +1 -1
  158. package/src/svg/mega-menu-icons-datagrid.svg +1 -2
  159. package/src/svg/mega-menu-icons-heatmap.svg +1 -1
  160. package/src/svg/mega-menu-icons-map-scatter.svg +1 -1
  161. package/src/svg/mega-menu-icons-ohlc.svg +1 -1
  162. package/src/svg/mega-menu-icons-sunburst.svg +1 -1
  163. package/src/svg/mega-menu-icons-treemap.svg +1 -1
  164. package/src/svg/mega-menu-icons-x-bar.svg +1 -1
  165. package/src/svg/mega-menu-icons-x-y-line.svg +1 -1
  166. package/src/svg/mega-menu-icons-x-y-scatter.svg +1 -1
  167. package/src/svg/mega-menu-icons-y-area.svg +1 -1
  168. package/src/svg/mega-menu-icons-y-bar.svg +1 -1
  169. package/src/svg/mega-menu-icons-y-line.svg +1 -1
  170. package/src/svg/mega-menu-icons-y-scatter.svg +1 -1
  171. package/src/svg/radio-hover.svg +1 -1
  172. package/src/svg/radio-off.svg +1 -1
  173. package/src/svg/radio-on.svg +1 -1
  174. package/src/themes/botanical.css +157 -0
  175. package/src/themes/defaults.css +139 -0
  176. package/src/themes/dracula.css +233 -0
  177. package/src/themes/gruvbox-dark.css +255 -0
  178. package/src/themes/gruvbox.css +134 -0
  179. package/src/themes/icons.css +124 -0
  180. package/src/themes/intl/de.css +102 -0
  181. package/src/themes/intl/es.css +102 -0
  182. package/src/themes/intl/fr.css +102 -0
  183. package/src/themes/intl/ja.css +102 -0
  184. package/src/themes/intl/pt.css +102 -0
  185. package/src/themes/intl/zh.css +102 -0
  186. package/src/themes/intl.css +102 -0
  187. package/src/themes/monokai.css +233 -0
  188. package/src/themes/pro-dark.css +158 -0
  189. package/src/themes/{themes.less → pro.css} +17 -20
  190. package/src/themes/solarized-dark.css +135 -0
  191. package/src/themes/solarized.css +95 -0
  192. package/src/themes/themes.css +22 -0
  193. package/src/themes/vaporwave.css +256 -0
  194. package/src/ts/extensions.ts +73 -2
  195. package/src/ts/perspective-viewer.ts +1 -0
  196. package/src/ts/ts-rs/GroupRollupMode.ts +3 -0
  197. package/src/ts/ts-rs/ViewerConfigUpdate.ts +2 -1
  198. package/tsconfig.json +1 -0
  199. package/dist/css/variables.css +0 -0
  200. package/src/less/column-dropdown.less +0 -95
  201. package/src/less/config-selector.less +0 -363
  202. package/src/less/dom/checkbox.less +0 -100
  203. package/src/less/plugin-selector.less +0 -183
  204. package/src/less/type-icon.less +0 -68
  205. package/src/rust/components/error_message.rs +0 -56
  206. package/src/rust/custom_elements/column_dropdown.rs +0 -123
  207. package/src/rust/custom_elements/filter_dropdown.rs +0 -179
  208. package/src/rust/custom_elements/function_dropdown.rs +0 -115
  209. package/src/rust/model/column_locator.rs +0 -82
  210. package/src/rust/model/is_invalid_drop.rs +0 -36
  211. package/src/rust/model/mod.rs +0 -100
  212. package/src/rust/model/reset_all.rs +0 -38
  213. package/src/rust/model/structural.rs +0 -244
  214. package/src/themes/dracula.less +0 -101
  215. package/src/themes/gruvbox-dark.less +0 -116
  216. package/src/themes/gruvbox.less +0 -152
  217. package/src/themes/icons.less +0 -130
  218. package/src/themes/intl/de.less +0 -102
  219. package/src/themes/intl/es.less +0 -102
  220. package/src/themes/intl/fr.less +0 -102
  221. package/src/themes/intl/ja.less +0 -102
  222. package/src/themes/intl/pt.less +0 -102
  223. package/src/themes/intl/zh.less +0 -102
  224. package/src/themes/intl.less +0 -102
  225. package/src/themes/monokai.less +0 -107
  226. package/src/themes/pro-dark.less +0 -147
  227. package/src/themes/pro.less +0 -186
  228. package/src/themes/solarized-dark.less +0 -78
  229. package/src/themes/solarized.less +0 -102
  230. package/src/themes/vaporwave.less +0 -145
  231. /package/dist/wasm/snippets/{perspective-viewer-1586156e058be573 → perspective-viewer-68fef752754ffbc6}/inline0.js +0 -0
  232. /package/dist/wasm/snippets/{perspective-viewer-1586156e058be573 → perspective-viewer-68fef752754ffbc6}/inline1.js +0 -0
  233. /package/dist/wasm/snippets/{perspective-viewer-1586156e058be573 → perspective-viewer-68fef752754ffbc6}/inline2.js +0 -0
  234. /package/dist/wasm/snippets/{perspective-viewer-1586156e058be573 → perspective-viewer-68fef752754ffbc6}/inline3.js +0 -0
  235. /package/dist/wasm/snippets/{perspective-viewer-1586156e058be573 → perspective-viewer-68fef752754ffbc6}/inline4.js +0 -0
  236. /package/src/rust/{model → tasks}/copy_export.rs +0 -0
  237. /package/src/rust/{model → tasks}/export_app.rs +0 -0
  238. /package/src/rust/{model → tasks}/export_method.rs +0 -0
  239. /package/src/rust/{model → tasks}/restore_and_render.rs +0 -0
  240. /package/src/rust/{model → tasks}/update_and_render.rs +0 -0
@@ -0,0 +1,22 @@
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
+ @import "./pro.css";
14
+ @import "./pro-dark.css";
15
+ @import "./monokai.css";
16
+ @import "./solarized.css";
17
+ @import "./solarized-dark.css";
18
+ @import "./vaporwave.css";
19
+ @import "./gruvbox.css";
20
+ @import "./gruvbox-dark.css";
21
+ @import "./dracula.css";
22
+ @import "./botanical.css";
@@ -0,0 +1,256 @@
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
+ @import "./defaults.css";
14
+
15
+ perspective-viewer,
16
+ perspective-viewer[theme="Vaporwave"] {
17
+ --psp-theme-name: "Vaporwave";
18
+ }
19
+
20
+ perspective-viewer[theme="Vaporwave"] {
21
+ /* perspective-viewer-pro-dark--colors (overrides) */
22
+ background-color: #242526;
23
+ color: white;
24
+ --psp--color: white;
25
+ --psp-active--color: #2770a9;
26
+ --psp-error--color: #ff9485;
27
+ --psp-inactive--color: #61656e;
28
+ --psp-inactive--border-color: #4c505b;
29
+ --psp--background-color: #242526;
30
+ --psp-active--background: rgba(39, 113, 170, 0.5);
31
+ --psp-expression--operator--color: #c5c9d0;
32
+ --psp-expression--function--color: #22a0ce;
33
+ --psp-expression--psp-error--color: rgb(255, 136, 136);
34
+ --psp-calendar--filter: invert(1);
35
+ --psp-warning--color: #242526;
36
+ --psp-warning--background: var(--psp--color);
37
+
38
+ --psp-icon--select-arrow--mask-image: var(
39
+ --psp-icon--select-arrow-light--mask-image
40
+ );
41
+
42
+ --psp-icon--select-arrow-hover--mask-image: var(
43
+ --psp-icon--select-arrow-dark--mask-image
44
+ );
45
+
46
+ --psp-code-editor--symbol--color: white;
47
+ --psp-code-editor--literal--color: #7dc3f0;
48
+ --psp-code-editor--operator--color: rgb(23, 166, 123);
49
+ --psp-code-editor--comment--color: rgb(204, 120, 48);
50
+ --psp-code-editor--column--color: #e18ee1;
51
+
52
+ /* perspective-viewer-pro-dark--datagrid */
53
+ --psp-datagrid--pos-cell--color: #7dc3f0;
54
+ --psp-datagrid--neg-cell--color: #ff9485;
55
+
56
+ /* perspective-viewer-pro-dark--d3fc (overrides) */
57
+ --psp-d3fc--legend--color: #c5c9d0;
58
+ --psp-d3fc--treemap--labels: white;
59
+ --psp-d3fc--treemap--hover-highlight: white;
60
+ --psp-d3fc--tooltip--color: white;
61
+ --psp-d3fc--axis-ticks--color: #c5c9d0;
62
+ --psp-d3fc--axis-lines--color: #61656e;
63
+ --psp-d3fc--gridline--color: #3b3f46;
64
+ --psp-d3fc--tooltip--background: rgba(42, 44, 47, 1);
65
+ --psp-d3fc--tooltip--border-color: #242526;
66
+ --psp-d3fc--legend--background: var(--psp--background-color);
67
+ --psp-d3fc--series--color: rgb(71, 120, 194);
68
+ --psp-d3fc--series-1--color: rgb(71, 120, 194);
69
+ --psp-d3fc--series-2--color: rgb(204, 120, 48);
70
+ --psp-d3fc--series-3--color: rgb(158, 84, 192);
71
+ --psp-d3fc--series-4--color: rgb(51, 150, 153);
72
+ --psp-d3fc--series-5--color: rgb(102, 114, 143);
73
+ --psp-d3fc--series-6--color: rgb(211, 103, 189);
74
+ --psp-d3fc--series-7--color: rgb(109, 124, 77);
75
+ --psp-d3fc--series-8--color: rgb(221, 99, 103);
76
+ --psp-d3fc--series-9--color: rgb(120, 104, 206);
77
+ --psp-d3fc--series-10--color: rgb(23, 166, 123);
78
+ --psp-d3fc--full-gradient--background: linear-gradient(
79
+ #dd6367 0%,
80
+ #242526 50%,
81
+ #3289c8 100%
82
+ );
83
+ --psp-d3fc--pos-gradient--background: linear-gradient(
84
+ #242526 0%,
85
+ #3289c8 100%
86
+ );
87
+ --psp-d3fc--neg-gradient--background: linear-gradient(
88
+ #dd6367 0%,
89
+ #242526 100%
90
+ );
91
+
92
+ /* perspective-viewer-pro-dark--openlayers (overrides) */
93
+ --psp-openlayers--tile-url: "http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";
94
+ --psp-openlayers--attribution--filter: invert(1) hue-rotate(180deg);
95
+ --psp-openlayers--element--background: #212c2f;
96
+ --psp-openlayers--category-1--color: rgb(71, 120, 194);
97
+ --psp-openlayers--category-2--color: rgb(204, 120, 48);
98
+ --psp-openlayers--category-3--color: rgb(158, 84, 192);
99
+ --psp-openlayers--category-4--color: rgb(51, 150, 153);
100
+ --psp-openlayers--category-5--color: rgb(102, 114, 143);
101
+ --psp-openlayers--category-6--color: rgb(211, 103, 189);
102
+ --psp-openlayers--category-7--color: rgb(109, 124, 77);
103
+ --psp-openlayers--category-8--color: rgb(221, 99, 103);
104
+ --psp-openlayers--category-9--color: rgb(120, 104, 206);
105
+ --psp-openlayers--category-10--color: rgb(23, 166, 123);
106
+ --psp-openlayers--gradient--background: linear-gradient(
107
+ #dd6367 0%,
108
+ #242526 50%,
109
+ #3289c8 100%
110
+ );
111
+
112
+ /* perspective-viewer-vaporwave--colors */
113
+ color: #49acff;
114
+ background-color: rgb(7, 8, 29) !important;
115
+ --psp--color: #49acff;
116
+ --psp-inactive--color: rgb(19, 33, 50) !important;
117
+ --psp-inactive--border-color: var(--psp-inactive--color);
118
+ --psp--background-color: rgb(7, 8, 29) !important;
119
+
120
+ /* perspective-viewer-vaporwave--animation */
121
+ --psp-status-icon--updating-keyframes-start--filter: opacity(1);
122
+ --psp-status-icon--updating-keyframes-end--filter: opacity(0);
123
+ --psp-status-icon--updating-keyframes-start--transform: scale(1);
124
+ --psp-status-icon--updating-keyframes-end--transform: scale(0.5);
125
+ --psp-status-icon--keyframes-start--transform: scale(1.25);
126
+ --psp-status-icon--keyframes-end--transform: scale(1);
127
+
128
+ /* perspective-viewer-vaporwave--datagrid */
129
+ --pp-color-1: #092132;
130
+ --pp-color-2: #42b6e6;
131
+ --psp-datagrid--pos-cell--color: #42b6e6 !important;
132
+ --psp-datagrid--hover--border-color: var(--pp-color-1) !important;
133
+
134
+ /* FIXME: broken in shadow DOM */
135
+ regular-table table tbody th:empty {
136
+ background: linear-gradient(
137
+ to right,
138
+ transparent 9px,
139
+ rgb(19, 33, 50) 10px,
140
+ transparent 11px
141
+ );
142
+ background-repeat: no-repeat;
143
+ background-position: 0px -10px;
144
+ }
145
+
146
+ /* perspective-viewer-vaporwave--d3fc */
147
+ --psp-d3fc--axis-ticks--color: #49acff;
148
+ --psp-d3fc--gridline--color: rgb(19, 33, 50);
149
+ --psp-d3fc--series--color: #01cdfe;
150
+ --psp-d3fc--series-1--color: #01cdfe;
151
+ --psp-d3fc--series-2--color: #ff71ce;
152
+ --psp-d3fc--series-3--color: #05ffa1;
153
+ --psp-d3fc--series-4--color: #b967ff;
154
+ --psp-d3fc--series-5--color: #fffb96;
155
+
156
+ --psp-d3fc--series-6--color: hsl(192, 99%, 25%);
157
+ --psp-d3fc--series-7--color: hsl(321, 100%, 36%);
158
+ --psp-d3fc--series-8--color: hsl(192, 99%, 25%);
159
+ --psp-d3fc--series-9--color: hsl(157, 100%, 25%);
160
+ --psp-d3fc--series-10--color: hsl(272, 100%, 35%);
161
+
162
+ --psp-d3fc--neg-gradient--background: linear-gradient(
163
+ #f3d431,
164
+ #efb92d,
165
+ #ed9c25,
166
+ #eb7e20,
167
+ #e75d1e,
168
+ #d14632,
169
+ #b03e38,
170
+ #8c3a36,
171
+ #643633,
172
+ #07081d
173
+ ) !important;
174
+
175
+ --psp-d3fc--pos-gradient--background: linear-gradient(
176
+ #07081d,
177
+ #2e4463,
178
+ #1e588a,
179
+ #086da7,
180
+ #0082b9,
181
+ #039ac7,
182
+ #12b1d4,
183
+ #2bc8e2,
184
+ #3ddff0,
185
+ #61f4fb
186
+ ) !important;
187
+
188
+ --psp-d3fc--full-gradient--background: linear-gradient(
189
+ #f3d431,
190
+ #efb92d,
191
+ #ed9c25,
192
+ #eb7e20,
193
+ #e75d1e,
194
+ #d14632,
195
+ #b03e38,
196
+ #8c3a36,
197
+ #643633,
198
+ #07081d,
199
+ #2e4463,
200
+ #1e588a,
201
+ #086da7,
202
+ #0082b9,
203
+ #039ac7,
204
+ #12b1d4,
205
+ #2bc8e2,
206
+ #3ddff0,
207
+ #61f4fb
208
+ ) !important;
209
+ }
210
+
211
+ perspective-copy-menu[theme="Vaporwave"],
212
+ perspective-export-menu[theme="Vaporwave"],
213
+ perspective-dropdown[theme="Vaporwave"],
214
+ perspective-date-column-style[theme="Vaporwave"],
215
+ perspective-datetime-column-style[theme="Vaporwave"],
216
+ perspective-number-column-style[theme="Vaporwave"],
217
+ perspective-string-column-style[theme="Vaporwave"] {
218
+ /* perspective-viewer-pro-dark--colors (overrides) */
219
+ background-color: #242526;
220
+ color: white;
221
+ --psp--color: white;
222
+ --psp-active--color: #2770a9;
223
+ --psp-error--color: #ff9485;
224
+ --psp-inactive--color: #61656e;
225
+ --psp-inactive--border-color: #4c505b;
226
+ --psp--background-color: #242526;
227
+ --psp-active--background: rgba(39, 113, 170, 0.5);
228
+ --psp-expression--operator--color: #c5c9d0;
229
+ --psp-expression--function--color: #22a0ce;
230
+ --psp-expression--psp-error--color: rgb(255, 136, 136);
231
+ --psp-calendar--filter: invert(1);
232
+ --psp-warning--color: #242526;
233
+ --psp-warning--background: var(--psp--color);
234
+ --psp-icon--select-arrow--mask-image: var(
235
+ --psp-icon--select-arrow-light--mask-image
236
+ );
237
+ --psp-icon--select-arrow-hover--mask-image: var(
238
+ --psp-icon--select-arrow-dark--mask-image
239
+ );
240
+ --psp-code-editor--symbol--color: white;
241
+ --psp-code-editor--literal--color: #7dc3f0;
242
+ --psp-code-editor--operator--color: rgb(23, 166, 123);
243
+ --psp-code-editor--comment--color: rgb(204, 120, 48);
244
+ --psp-code-editor--column--color: #e18ee1;
245
+
246
+ border: 1px solid #4c505b;
247
+
248
+ /* perspective-viewer-vaporwave--colors */
249
+ color: #49acff;
250
+ --psp--color: #49acff;
251
+ --psp-inactive--color: rgb(19, 33, 50) !important;
252
+ --psp-inactive--border-color: var(--psp-inactive--color);
253
+ --psp--background-color: rgb(7, 8, 29) !important;
254
+
255
+ background-color: #07081d;
256
+ }
@@ -14,7 +14,41 @@ import type { HTMLPerspectiveViewerPluginElement } from "./plugin";
14
14
  import type { PerspectiveViewerElement } from "../../dist/wasm/perspective-viewer.js";
15
15
  import type React from "react";
16
16
  import type { ViewerConfigUpdate } from "./ts-rs/ViewerConfigUpdate.js";
17
- import type { ViewWindow } from "@perspective-dev/client";
17
+ import type {
18
+ ViewWindow,
19
+ ViewConfigUpdate,
20
+ Filter,
21
+ } from "@perspective-dev/client";
22
+
23
+ export class PerspectiveSelectDetail {
24
+ selected: boolean;
25
+ row: Record<string, unknown>;
26
+ column_names?: string[];
27
+ removeConfigs: ViewConfigUpdate[];
28
+ insertConfigs: ViewConfigUpdate[];
29
+
30
+ constructor(
31
+ selected: boolean,
32
+ row: Record<string, unknown>,
33
+ column_names: string[],
34
+ removeConfigs: ViewConfigUpdate[],
35
+ insertConfigs: ViewConfigUpdate[],
36
+ ) {
37
+ this.selected = selected;
38
+ this.row = row;
39
+ this.column_names = column_names;
40
+ this.removeConfigs = removeConfigs;
41
+ this.insertConfigs = insertConfigs;
42
+ }
43
+
44
+ get removeFilters(): Filter[] {
45
+ return this.removeConfigs.flatMap((x) => x.filter ?? []);
46
+ }
47
+
48
+ get insertFilters(): Filter[] {
49
+ return this.insertConfigs.flatMap((x) => x.filter ?? []);
50
+ }
51
+ }
18
52
  import type {
19
53
  ExportDropDownMenuElement,
20
54
  CopyDropDownMenuElement,
@@ -48,11 +82,15 @@ export type PerspectiveSelectEventDetail = {
48
82
 
49
83
  type ReactPerspectiveViewerAttributes<T> = React.HTMLAttributes<T>;
50
84
 
51
- type JsxPerspectiveViewerElement = { class?: string } & React.DetailedHTMLProps<
85
+ type JsxPerspectiveViewerElement = {
86
+ class?: string;
87
+ } & React.DetailedHTMLProps<
52
88
  ReactPerspectiveViewerAttributes<HTMLPerspectiveViewerElement>,
53
89
  HTMLPerspectiveViewerElement
54
90
  >;
55
91
 
92
+ // React <19
93
+
56
94
  declare global {
57
95
  namespace JSX {
58
96
  interface IntrinsicElements {
@@ -61,6 +99,39 @@ declare global {
61
99
  }
62
100
  }
63
101
 
102
+ // React >=19
103
+
104
+ // Why are these `ts-ignore`? React 19 makes choice of JSX runtime in `tsconfig`
105
+ // the determination of which runtime this needs to be, but this is chosen
106
+ // by the user ... so I'm not sure what the React authors want from me here
107
+ // exactly. Divination?
108
+
109
+ // @ts-ignore
110
+ declare module "react/jsx-runtime" {
111
+ namespace JSX {
112
+ interface IntrinsicElements {
113
+ "perspective-viewer": JsxPerspectiveViewerElement;
114
+ }
115
+ }
116
+ }
117
+
118
+ // @ts-ignore
119
+ declare module "react/jsx-dev-runtime" {
120
+ namespace JSX {
121
+ interface IntrinsicElements {
122
+ "perspective-viewer": JsxPerspectiveViewerElement;
123
+ }
124
+ }
125
+ }
126
+
127
+ declare module "react" {
128
+ namespace JSX {
129
+ interface IntrinsicElements {
130
+ "perspective-viewer": JsxPerspectiveViewerElement;
131
+ }
132
+ }
133
+ }
134
+
64
135
  // Custom Elements extensions
65
136
 
66
137
  declare global {
@@ -35,6 +35,7 @@ export { IPerspectiveViewerPlugin } from "./plugin";
35
35
  export { HTMLPerspectiveViewerPluginElement } from "./plugin";
36
36
 
37
37
  export type * from "./extensions.ts";
38
+ export { PerspectiveSelectDetail } from "./extensions.ts";
38
39
  export type * from "./ts-rs/ViewerConfigUpdate.d.ts";
39
40
  export type * from "./ts-rs/ColumnConfigValues.d.ts";
40
41
  export type * from "./ts-rs/Filter.d.ts";
@@ -0,0 +1,3 @@
1
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2
+
3
+ export type GroupRollupMode = "rollup" | "flat" | "total";
@@ -4,6 +4,7 @@ import type { ColumnConfigValues } from "./ColumnConfigValues.js";
4
4
  import type { Expressions } from "./Expressions.js";
5
5
  import type { Filter } from "./Filter.js";
6
6
  import type { FilterReducer } from "./FilterReducer.js";
7
+ import type { GroupRollupMode } from "./GroupRollupMode.js";
7
8
  import type { OptionalUpdate } from "./OptionalUpdate.js";
8
9
  import type { PluginConfig } from "./PluginConfig.js";
9
10
  import type { Sort } from "./Sort.js";
@@ -87,4 +88,4 @@ expressions?: Expressions,
87
88
  * applied to columns in the `View` constructor using a dictionary of
88
89
  * column name to aggregate function name.
89
90
  */
90
- aggregates?: { [key in string]?: Aggregate }, group_by_depth?: number, filter_op?: FilterReducer, };
91
+ aggregates?: { [key in string]?: Aggregate }, group_by_depth?: number, filter_op?: FilterReducer, group_rollup_mode?: GroupRollupMode, };
package/tsconfig.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
+ "jsx": "preserve",
3
4
  "strict": true,
4
5
  "module": "ESNext",
5
6
  "target": "ESNext",
File without changes
@@ -1,95 +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
- @import "dom/scrollbar.less";
14
-
15
- @mixin icon {
16
- background-repeat: no-repeat;
17
- background-color: var(--icon--color);
18
- content: "";
19
- display: inline-block;
20
- -webkit-mask-size: cover;
21
- mask-size: cover;
22
- }
23
-
24
- :host {
25
- box-sizing: border-box;
26
- position: fixed;
27
- z-index: 10000;
28
- outline: none;
29
- font-size: 0.75em;
30
- border: inherit;
31
- // box-shadow: 0 2px 4px 0 rgb(0 0 0 / 10%);
32
- user-select: none;
33
- background-color: var(--icon--color, #fff) !important;
34
- color: var(--plugin--background, #333) !important;
35
- // padding: 6px 8px;
36
- border: 1px solid var(--icon--color) !important;
37
- max-width: 300px;
38
- overflow: hidden;
39
- max-height: 600px;
40
- overflow: auto;
41
- @include scrollbar;
42
-
43
- display: flex;
44
- flex-direction: column;
45
-
46
- .selected {
47
- background-color: var(--plugin--background) !important;
48
- color: var(--icon--color) !important;
49
- }
50
-
51
- span {
52
- cursor: pointer;
53
- padding: 4px 5px;
54
- }
55
-
56
- .no-results {
57
- padding: 3px 24px 6px 11px;
58
- color: var(--error--color);
59
- font-size: 8px;
60
- }
61
-
62
- .no-results:before {
63
- content: var(--no-results--content, "Invalid Column");
64
- }
65
-
66
- #add-expression {
67
- &:before {
68
- @include icon;
69
- width: 14px;
70
- height: 12px;
71
- margin-right: 5px;
72
- -webkit-mask-image: var(--add-expression-icon--mask-image);
73
- mask-image: var(--add-expression-icon--mask-image);
74
- }
75
- }
76
- }
77
-
78
- :host(:hover) {
79
- .selected {
80
- background-color: var(--icon--color, #fff) !important;
81
- color: var(--plugin--background, #333) !important;
82
- }
83
-
84
- span:hover,
85
- span.selected:hover {
86
- background-color: var(--plugin--background) !important;
87
- color: var(--icon--color) !important;
88
- }
89
- }
90
-
91
- :host(.no-results) {
92
- overflow: hidden;
93
- background-color: transparent !important;
94
- border: none !important;
95
- }