@perspective-dev/viewer 4.5.2 → 5.0.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 (178) hide show
  1. package/dist/cdn/perspective-viewer.js +20 -1
  2. package/dist/cdn/perspective-viewer.js.map +4 -4
  3. package/dist/css/botanical.css +1 -1
  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/monokai.css +1 -1
  9. package/dist/css/phosphor.css +1 -1
  10. package/dist/css/pro-dark.css +1 -1
  11. package/dist/css/pro.css +1 -1
  12. package/dist/css/solarized-dark.css +1 -1
  13. package/dist/css/solarized.css +1 -1
  14. package/dist/css/themes.css +1 -1
  15. package/dist/css/vaporwave.css +1 -1
  16. package/dist/esm/extensions.d.ts +22 -3
  17. package/dist/esm/perspective-viewer.d.ts +9 -0
  18. package/dist/esm/perspective-viewer.inline.js +20 -1
  19. package/dist/esm/perspective-viewer.inline.js.map +4 -4
  20. package/dist/esm/perspective-viewer.js +20 -1
  21. package/dist/esm/perspective-viewer.js.map +4 -4
  22. package/dist/esm/plugin.d.ts +71 -5
  23. package/dist/esm/ts-rs/ClientOptions.d.ts +7 -0
  24. package/dist/esm/ts-rs/ExportMethod.d.ts +1 -0
  25. package/dist/esm/ts-rs/ExportOptions.d.ts +9 -0
  26. package/dist/esm/ts-rs/GetClientOptions.d.ts +8 -0
  27. package/dist/esm/ts-rs/GetTableOptions.d.ts +8 -0
  28. package/dist/esm/ts-rs/Layout.d.ts +11 -0
  29. package/dist/esm/ts-rs/Orientation.d.ts +4 -0
  30. package/dist/esm/ts-rs/PanelOptions.d.ts +7 -0
  31. package/dist/esm/ts-rs/PanelViewerConfig.d.ts +39 -0
  32. package/dist/esm/ts-rs/SplitLayout.d.ts +7 -0
  33. package/dist/esm/ts-rs/TabLayout.d.ts +10 -0
  34. package/dist/esm/ts-rs/ViewerConfig.d.ts +6 -2
  35. package/dist/esm/ts-rs/WorkspaceConfig.d.ts +40 -0
  36. package/dist/esm/ts-rs/WorkspaceConfigUpdate.d.ts +28 -0
  37. package/dist/wasm/perspective-viewer.d.ts +211 -77
  38. package/dist/wasm/perspective-viewer.js +528 -180
  39. package/dist/wasm/perspective-viewer.wasm +0 -0
  40. package/dist/wasm/perspective-viewer.wasm.d.ts +34 -26
  41. package/dist/wasm/snippets/perspective-viewer-daeef4ceb066e6c7/inline0.js +6 -0
  42. package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline3.js → perspective-viewer-daeef4ceb066e6c7/inline4.js} +5 -0
  43. package/package.json +3 -2
  44. package/src/css/_context_menu.css +14 -0
  45. package/src/css/column-settings-panel.css +1 -1
  46. package/src/css/containers/context-menu.css +101 -0
  47. package/src/css/panel-tab.css +193 -0
  48. package/src/css/plugin-selector.css +7 -10
  49. package/src/css/status-bar.css +75 -81
  50. package/src/css/viewer.css +180 -70
  51. package/src/rust/components/column_dropdown.rs +40 -30
  52. package/src/rust/components/column_selector/active_column.rs +7 -18
  53. package/src/rust/components/column_selector/aggregate_selector.rs +4 -7
  54. package/src/rust/components/column_selector/config_selector.rs +33 -81
  55. package/src/rust/components/column_selector/filter_column.rs +5 -15
  56. package/src/rust/components/column_selector/inactive_column.rs +3 -8
  57. package/src/rust/components/column_selector/sort_column.rs +3 -6
  58. package/src/rust/components/column_selector.rs +5 -11
  59. package/src/rust/components/containers/split_panel.rs +175 -62
  60. package/src/rust/components/context_menu.rs +130 -0
  61. package/src/rust/components/form/debug.rs +3 -0
  62. package/src/rust/components/global_filter_bar.rs +76 -0
  63. package/src/rust/components/main_panel/frame_theme.rs +186 -0
  64. package/src/rust/components/main_panel/msg.rs +62 -0
  65. package/src/rust/components/main_panel/presize.rs +220 -0
  66. package/src/rust/components/main_panel/reconcile.rs +224 -0
  67. package/src/rust/components/main_panel/render.rs +385 -0
  68. package/src/rust/components/main_panel/update.rs +184 -0
  69. package/src/rust/components/main_panel.rs +311 -71
  70. package/src/rust/components/mod.rs +4 -0
  71. package/src/rust/components/panel_menu.rs +486 -0
  72. package/src/rust/components/panel_tab.rs +505 -0
  73. package/src/rust/components/plugin_tab.rs +1 -1
  74. package/src/rust/components/settings_panel.rs +13 -5
  75. package/src/rust/components/status_bar.rs +110 -178
  76. package/src/rust/components/status_indicator.rs +6 -9
  77. package/src/rust/components/style/mod.rs +5 -0
  78. package/src/rust/components/style/style_provider.rs +2 -0
  79. package/src/rust/components/viewer/filters.rs +133 -0
  80. package/src/rust/components/viewer/msg.rs +180 -0
  81. package/src/rust/components/viewer/panels.rs +326 -0
  82. package/src/rust/components/viewer/render.rs +243 -0
  83. package/src/rust/components/viewer/settings.rs +402 -0
  84. package/src/rust/components/viewer/snapshots.rs +134 -0
  85. package/src/rust/components/viewer/wiring.rs +505 -0
  86. package/src/rust/components/viewer.rs +243 -756
  87. package/src/rust/config/export_method.rs +1 -1
  88. package/src/rust/config/mod.rs +4 -0
  89. package/src/rust/config/options.rs +71 -0
  90. package/src/rust/config/viewer_config.rs +24 -2
  91. package/src/rust/config/workspace_config.rs +92 -0
  92. package/src/rust/custom_elements/copy_dropdown.rs +3 -1
  93. package/src/rust/custom_elements/debug_plugin.rs +20 -1
  94. package/src/rust/custom_elements/export_dropdown.rs +3 -1
  95. package/src/rust/custom_elements/viewer.rs +1015 -286
  96. package/src/rust/custom_events.rs +212 -61
  97. package/src/rust/js/mod.rs +2 -0
  98. package/src/rust/js/plugin.rs +297 -10
  99. package/src/rust/js/regular_layout.rs +258 -0
  100. package/src/rust/lib.rs +20 -1
  101. package/src/rust/presentation.rs +66 -33
  102. package/src/rust/queries/get_viewer_config.rs +29 -11
  103. package/src/rust/queries/plugin_column_styles.rs +2 -2
  104. package/src/rust/renderer/activate.rs +41 -14
  105. package/src/rust/renderer/dispatch.rs +436 -0
  106. package/src/rust/renderer/plugin_config.rs +495 -0
  107. package/src/rust/renderer/registry.rs +18 -6
  108. package/src/rust/renderer/render_timer.rs +29 -10
  109. package/src/rust/renderer.rs +350 -837
  110. package/src/rust/session/column_defaults_update.rs +26 -8
  111. package/src/rust/session/view_subscription.rs +30 -15
  112. package/src/rust/session.rs +753 -264
  113. package/src/rust/tasks/apply_global_filters.rs +89 -0
  114. package/src/rust/tasks/auto_pause.rs +171 -0
  115. package/src/rust/tasks/copy_export.rs +29 -19
  116. package/src/rust/tasks/create_panel.rs +243 -0
  117. package/src/rust/tasks/dismiss_render_warning.rs +3 -1
  118. package/src/rust/tasks/edit_expression.rs +4 -4
  119. package/src/rust/tasks/eject.rs +64 -23
  120. package/src/rust/tasks/mod.rs +28 -4
  121. package/src/rust/tasks/pipeline.rs +411 -0
  122. package/src/rust/tasks/presize_panels.rs +324 -0
  123. package/src/rust/tasks/reset_all.rs +22 -12
  124. package/src/rust/tasks/resize_observer.rs +124 -87
  125. package/src/rust/tasks/restore_and_render.rs +80 -86
  126. package/src/rust/tasks/restore_panel.rs +145 -0
  127. package/src/rust/tasks/send_column_config.rs +5 -2
  128. package/src/rust/tasks/send_plugin_config.rs +5 -2
  129. package/src/rust/tasks/set_edit_mode.rs +59 -0
  130. package/src/rust/tasks/sync_update_panels.rs +152 -0
  131. package/src/rust/tasks/table_lifecycle.rs +158 -0
  132. package/src/rust/tasks/update_theme.rs +56 -12
  133. package/src/rust/utils/completion.rs +56 -0
  134. package/src/rust/utils/custom_element.rs +5 -0
  135. package/src/rust/utils/debounce.rs +130 -7
  136. package/src/rust/utils/mod.rs +6 -0
  137. package/src/rust/utils/pending_effects.rs +62 -0
  138. package/src/rust/utils/spawn.rs +33 -0
  139. package/src/rust/utils/weak_scope.rs +0 -10
  140. package/src/rust/workspace.rs +846 -0
  141. package/src/svg/active-indicator.svg +3 -0
  142. package/src/themes/botanical.css +5 -2
  143. package/src/themes/defaults.css +54 -2
  144. package/src/themes/dracula.css +6 -3
  145. package/src/themes/gruvbox-dark.css +5 -2
  146. package/src/themes/gruvbox.css +5 -2
  147. package/src/themes/icons.css +4 -2
  148. package/src/themes/monokai.css +5 -2
  149. package/src/themes/phosphor.css +5 -2
  150. package/src/themes/pro-dark.css +5 -2
  151. package/src/themes/pro.css +2 -1
  152. package/src/themes/solarized-dark.css +5 -2
  153. package/src/themes/solarized.css +5 -2
  154. package/src/themes/vaporwave.css +5 -2
  155. package/src/ts/bootstrap.ts +8 -7
  156. package/src/ts/extensions.ts +30 -2
  157. package/src/ts/perspective-viewer.ts +10 -0
  158. package/src/ts/plugin.ts +72 -5
  159. package/src/ts/ts-rs/ClientOptions.ts +7 -0
  160. package/src/ts/ts-rs/ExportMethod.ts +3 -0
  161. package/src/ts/ts-rs/ExportOptions.ts +8 -0
  162. package/src/ts/ts-rs/GetClientOptions.ts +7 -0
  163. package/src/ts/ts-rs/GetTableOptions.ts +7 -0
  164. package/src/ts/ts-rs/Layout.ts +9 -0
  165. package/src/ts/ts-rs/Orientation.ts +6 -0
  166. package/src/ts/ts-rs/PanelOptions.ts +7 -0
  167. package/src/ts/ts-rs/PanelViewerConfig.ts +15 -0
  168. package/src/ts/ts-rs/SplitLayout.ts +5 -0
  169. package/src/ts/ts-rs/TabLayout.ts +11 -0
  170. package/src/ts/ts-rs/ViewerConfig.ts +6 -2
  171. package/src/ts/ts-rs/WorkspaceConfig.ts +36 -0
  172. package/src/ts/ts-rs/WorkspaceConfigUpdate.ts +24 -0
  173. package/src/rust/tasks/intersection_observer.rs +0 -98
  174. package/src/rust/tasks/update_and_render.rs +0 -110
  175. /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline0.js → perspective-viewer-daeef4ceb066e6c7/inline1.js} +0 -0
  176. /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline1.js → perspective-viewer-daeef4ceb066e6c7/inline2.js} +0 -0
  177. /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline2.js → perspective-viewer-daeef4ceb066e6c7/inline3.js} +0 -0
  178. /package/dist/wasm/snippets/{perspective-viewer-93064d0d79855d97/inline4.js → perspective-viewer-daeef4ceb066e6c7/inline5.js} +0 -0
Binary file
@@ -24,43 +24,49 @@ export const perspectivedebugpluginelement_new: (a: number) => number;
24
24
  export const perspectivedebugpluginelement_restore: (a: number, b: number, c: number) => void;
25
25
  export const perspectivedebugpluginelement_save: (a: number, b: number) => void;
26
26
  export const perspectivedebugpluginelement_select_mode: (a: number, b: number) => void;
27
+ export const perspectivedebugpluginelement_update: (a: number, b: number) => number;
27
28
  export const perspectiveviewerelement___get_model: (a: number) => number;
29
+ export const perspectiveviewerelement_addPanel: (a: number, b: number) => number;
28
30
  export const perspectiveviewerelement_connectedCallback: (a: number, b: number) => void;
29
31
  export const perspectiveviewerelement_copy: (a: number, b: number) => number;
30
32
  export const perspectiveviewerelement_delete: (a: number) => number;
31
33
  export const perspectiveviewerelement_download: (a: number, b: number) => number;
32
- export const perspectiveviewerelement_eject: (a: number) => number;
34
+ export const perspectiveviewerelement_eject: (a: number, b: number) => number;
33
35
  export const perspectiveviewerelement_export: (a: number, b: number) => number;
34
36
  export const perspectiveviewerelement_flush: (a: number) => number;
37
+ export const perspectiveviewerelement_getActivePanel: (a: number) => number;
35
38
  export const perspectiveviewerelement_getAllPlugins: (a: number) => number;
36
39
  export const perspectiveviewerelement_getClient: (a: number, b: number) => number;
37
- export const perspectiveviewerelement_getEditPort: (a: number, b: number) => void;
40
+ export const perspectiveviewerelement_getEditPort: (a: number, b: number, c: number) => void;
41
+ export const perspectiveviewerelement_getPanelNames: (a: number) => number;
38
42
  export const perspectiveviewerelement_getPlugin: (a: number, b: number, c: number, d: number) => void;
39
- export const perspectiveviewerelement_getRenderStats: (a: number, b: number) => void;
40
- export const perspectiveviewerelement_getSelection: (a: number) => number;
43
+ export const perspectiveviewerelement_getRenderStats: (a: number, b: number, c: number) => void;
44
+ export const perspectiveviewerelement_getSelection: (a: number, b: number, c: number) => void;
41
45
  export const perspectiveviewerelement_getTable: (a: number, b: number) => number;
42
- export const perspectiveviewerelement_getView: (a: number) => number;
43
- export const perspectiveviewerelement_getViewConfig: (a: number) => number;
46
+ export const perspectiveviewerelement_getView: (a: number, b: number) => number;
47
+ export const perspectiveviewerelement_getViewConfig: (a: number, b: number) => number;
44
48
  export const perspectiveviewerelement_load: (a: number, b: number, c: number) => void;
45
49
  export const perspectiveviewerelement_new: (a: number) => number;
46
- export const perspectiveviewerelement_openColumnSettings: (a: number, b: number, c: number, d: number) => number;
47
- export const perspectiveviewerelement_reset: (a: number, b: number) => number;
50
+ export const perspectiveviewerelement_removePanel: (a: number, b: number, c: number) => number;
51
+ export const perspectiveviewerelement_reset: (a: number, b: number, c: number) => number;
48
52
  export const perspectiveviewerelement_resetError: (a: number) => number;
49
53
  export const perspectiveviewerelement_resetThemes: (a: number, b: number, c: number) => number;
50
54
  export const perspectiveviewerelement_resize: (a: number, b: number) => number;
51
- export const perspectiveviewerelement_restore: (a: number, b: number) => number;
55
+ export const perspectiveviewerelement_restore: (a: number, b: number, c: number) => number;
56
+ export const perspectiveviewerelement_restoreWorkspace: (a: number, b: number) => number;
52
57
  export const perspectiveviewerelement_restyleElement: (a: number) => number;
53
- export const perspectiveviewerelement_save: (a: number) => number;
58
+ export const perspectiveviewerelement_save: (a: number, b: number) => number;
59
+ export const perspectiveviewerelement_saveWorkspace: (a: number) => number;
60
+ export const perspectiveviewerelement_setActivePanel: (a: number, b: number, c: number) => number;
54
61
  export const perspectiveviewerelement_setAutoPause: (a: number, b: number) => number;
55
62
  export const perspectiveviewerelement_setAutoSize: (a: number, b: number) => void;
56
- export const perspectiveviewerelement_setSelection: (a: number, b: number, c: number) => void;
63
+ export const perspectiveviewerelement_setSelection: (a: number, b: number, c: number, d: number) => void;
57
64
  export const perspectiveviewerelement_setThrottle: (a: number, b: number, c: number) => void;
58
- export const perspectiveviewerelement_toggleColumnSettings: (a: number, b: number, c: number) => number;
65
+ export const perspectiveviewerelement_toggleColumnSettings: (a: number, b: number, c: number, d: number) => number;
59
66
  export const perspectiveviewerelement_toggleConfig: (a: number, b: number) => number;
60
67
  export const registerPlugin: (a: number, b: number) => void;
61
68
  export const perspectivedebugpluginelement_delete: (a: number) => number;
62
69
  export const perspectivedebugpluginelement_resize: (a: number) => number;
63
- export const perspectivedebugpluginelement_update: (a: number, b: number) => number;
64
70
  export const perspectivedebugpluginelement_min_config_columns: (a: number) => number;
65
71
  export const perspectivedebugpluginelement_restyle: (a: number) => void;
66
72
  export const exportdropdownmenuelement_new: (a: number) => number;
@@ -157,19 +163,21 @@ export const virtualdataslice_setIntegerCol: (a: number, b: number, c: number, d
157
163
  export const virtualdataslice_setStringCol: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
158
164
  export const virtualserver_handleRequest: (a: number, b: number, c: number) => number;
159
165
  export const virtualserver_new: (a: number, b: number) => void;
160
- export const __wasm_bindgen_func_elem_3003: (a: number, b: number) => void;
161
- export const __wasm_bindgen_func_elem_13420: (a: number, b: number) => void;
162
- export const __wasm_bindgen_func_elem_16304: (a: number, b: number) => void;
163
- export const __wasm_bindgen_func_elem_16950: (a: number, b: number) => void;
164
- export const __wasm_bindgen_func_elem_16975: (a: number, b: number) => void;
165
- export const __wasm_bindgen_func_elem_24178: (a: number, b: number, c: number, d: number) => void;
166
- export const __wasm_bindgen_func_elem_5053: (a: number, b: number, c: number) => void;
167
- export const __wasm_bindgen_func_elem_5054: (a: number, b: number, c: number) => void;
168
- export const __wasm_bindgen_func_elem_5051: (a: number, b: number, c: number) => void;
169
- export const __wasm_bindgen_func_elem_16419: (a: number, b: number, c: number) => void;
170
- export const __wasm_bindgen_func_elem_16992: (a: number, b: number, c: number) => void;
171
- export const __wasm_bindgen_func_elem_14095: (a: number, b: number) => number;
172
- export const __wasm_bindgen_func_elem_16953: (a: number, b: number) => void;
166
+ export const __wasm_bindgen_func_elem_15590: (a: number, b: number) => void;
167
+ export const __wasm_bindgen_func_elem_3497: (a: number, b: number) => void;
168
+ export const __wasm_bindgen_func_elem_18482: (a: number, b: number) => void;
169
+ export const __wasm_bindgen_func_elem_19140: (a: number, b: number) => void;
170
+ export const __wasm_bindgen_func_elem_19169: (a: number, b: number) => void;
171
+ export const __wasm_bindgen_func_elem_26445: (a: number, b: number, c: number, d: number) => void;
172
+ export const __wasm_bindgen_func_elem_6144: (a: number, b: number, c: number) => void;
173
+ export const __wasm_bindgen_func_elem_6145: (a: number, b: number, c: number) => void;
174
+ export const __wasm_bindgen_func_elem_6146: (a: number, b: number, c: number) => void;
175
+ export const __wasm_bindgen_func_elem_6142: (a: number, b: number, c: number) => void;
176
+ export const __wasm_bindgen_func_elem_18602: (a: number, b: number, c: number) => void;
177
+ export const __wasm_bindgen_func_elem_19145: (a: number, b: number, c: number) => void;
178
+ export const __wasm_bindgen_func_elem_19186: (a: number, b: number, c: number) => void;
179
+ export const __wasm_bindgen_func_elem_16279: (a: number, b: number) => number;
180
+ export const __wasm_bindgen_func_elem_19144: (a: number, b: number) => void;
173
181
  export const __wbindgen_export: (a: number, b: number) => number;
174
182
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
175
183
  export const __wbindgen_export3: (a: number) => void;
@@ -0,0 +1,6 @@
1
+
2
+ export function define_panel_tab(name) {
3
+ if (!customElements.get(name)) {
4
+ customElements.define(name, class extends HTMLElement {});
5
+ }
6
+ }
@@ -1,5 +1,10 @@
1
1
 
2
2
  export function bootstrap(psp, name, clsname, statics) {
3
+ if (customElements.get(name)) {
4
+ console.warn(`Custom element "${name}" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page).`);
5
+ return;
6
+ }
7
+
3
8
  const cls = psp[clsname];
4
9
  const proto = cls.prototype;
5
10
  class x extends HTMLElement {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perspective-dev/viewer",
3
- "version": "4.5.2",
3
+ "version": "5.0.0",
4
4
  "description": "The `<perspective-viewer>` Custom Element, frontend for Perspective",
5
5
  "keywords": [
6
6
  "perspective",
@@ -55,7 +55,8 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@perspective-dev/client": "",
58
- "pro_self_extracting_wasm": "0.0.9"
58
+ "pro_self_extracting_wasm": "0.0.9",
59
+ "regular-layout": "=0.6.1"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@perspective-dev/esbuild-plugin": "",
@@ -0,0 +1,14 @@
1
+ /* ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
+ * ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
+ * ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
+ * ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
+ * ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
+ * ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
+ * ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
+ * ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
+ * ┃ This file is part of the Perspective library, distributed under the terms ┃
10
+ * ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
+ * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
+ */
13
+
14
+ @import "containers/context-menu.css";
@@ -15,7 +15,7 @@
15
15
  #column_settings_sidebar {
16
16
  overflow: hidden;
17
17
  text-overflow: ellipsis;
18
- z-index: 4;
18
+ z-index: 7;
19
19
 
20
20
  #attributes-button-panel {
21
21
  flex: 0 0 auto;
@@ -0,0 +1,101 @@
1
+ /* ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
+ * ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
+ * ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
+ * ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
+ * ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
+ * ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
+ * ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
+ * ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
+ * ┃ This file is part of the Perspective library, distributed under the terms ┃
10
+ * ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
+ * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
+ */
13
+
14
+ /* Panel context menu (right-click a panel). The `<perspective-context-menu>`
15
+ * host is body-mounted by `PortalModal` (which owns position/z-index inline)
16
+ * and themed by the document theme rules' modal selector groups — chrome like
17
+ * `background-color`/`color`/`border` lands on the HOST from `defaults.css` /
18
+ * each theme's `perspective-context-menu[theme="X"]` group, exactly like the
19
+ * Copy/Export menus. Only the interior layout + item states live here. */
20
+
21
+ :host {
22
+ outline: none;
23
+ user-select: none;
24
+ font-size: 12px;
25
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
26
+ }
27
+
28
+ .context-menu {
29
+ display: flex;
30
+ flex-direction: column;
31
+ min-width: 120px;
32
+ padding: 4px 0;
33
+ }
34
+
35
+ .context-menu-item {
36
+ position: relative;
37
+ padding: 4px 12px;
38
+ cursor: pointer;
39
+ white-space: nowrap;
40
+
41
+ &:hover {
42
+ background: var(
43
+ --psp-context-menu--hover--background,
44
+ var(--psp-active--background, rgba(0, 0, 0, 0.08))
45
+ );
46
+ color: var(--psp-context-menu--hover--color, inherit);
47
+ }
48
+
49
+ &.disabled {
50
+ opacity: 0.4;
51
+ cursor: default;
52
+
53
+ &:hover {
54
+ background: transparent;
55
+ color: inherit;
56
+ }
57
+ }
58
+
59
+ &.has-submenu {
60
+ display: flex;
61
+ align-items: center;
62
+
63
+ &::after {
64
+ content: "▸";
65
+ margin-left: auto;
66
+ padding-left: 12px;
67
+ }
68
+
69
+ &:hover > .context-menu-submenu {
70
+ display: flex;
71
+ }
72
+ }
73
+ }
74
+
75
+ /* Hover flyout. Positioned OUTSIDE the host's box, so the host-level theme
76
+ * chrome (see the :host comment above) doesn't paint it — rebuild the same
77
+ * chrome from the modal selector groups' vars. Edge-adjacent (`left: 100%`,
78
+ * no gap) so the pointer never leaves the hover chain crossing into it;
79
+ * `top: -5px` aligns its first row with the parent row (4px menu padding +
80
+ * 1px border). */
81
+ .context-menu-submenu {
82
+ display: none;
83
+ position: absolute;
84
+ left: 100%;
85
+ top: -5px;
86
+ max-height: 50vh;
87
+ overflow-y: auto;
88
+ background-color: var(--psp--background-color, white);
89
+ border: 1px solid var(--psp-inactive--color);
90
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
91
+ }
92
+
93
+ /* Non-interactive group label (e.g. client names in the "New" sub-menu). */
94
+ .context-menu-header {
95
+ padding: 4px 12px 2px;
96
+ cursor: default;
97
+ white-space: nowrap;
98
+ font-size: 9px;
99
+ text-transform: uppercase;
100
+ color: var(--psp-inactive--color, #ababab);
101
+ }
@@ -0,0 +1,193 @@
1
+ /* ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
+ * ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
+ * ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
+ * ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
+ * ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
+ * ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
+ * ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
+ * ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
+ * ┃ This file is part of the Perspective library, distributed under the terms ┃
10
+ * ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
+ * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
+ */
13
+
14
+ :host([part~="tab"]) {
15
+ display: flex;
16
+ align-items: center;
17
+ box-sizing: border-box;
18
+ height: 100%;
19
+ min-width: 0;
20
+ padding: 0 7px 0 13px;
21
+ cursor: pointer;
22
+ font-size: 11px;
23
+ white-space: nowrap;
24
+ overflow: hidden;
25
+ color: var(--psp--color, inherit);
26
+ background: var(--psp-inactive--border-color, #ffffff) !important;
27
+ box-shadow:
28
+ 2.25px -2.25px 0 2.25px var(--psp-inactive--border-color),
29
+ -2.25px -2.25px 0 2.25px var(--psp-inactive--border-color);
30
+ }
31
+
32
+ :host([part~="tab"].visible) {
33
+ z-index: 6;
34
+ background: var(--psp--background-color, #ffffff) !important;
35
+ /* box-shadow:
36
+ 2.25px -2.25px 0 2.25px var(--psp--background-color),
37
+ -2.25px -2.25px 0 2.25px var(--psp--background-color),
38
+ 2.75px -2.75px 0 2.75px var(--psp-inactive--color),
39
+ 0 12.5px 0 -11.5px var(--psp-inactive--border-color); */
40
+ }
41
+
42
+ .psp-tab-grip {
43
+ flex: 0 0 auto;
44
+ width: 5px;
45
+ height: 12px;
46
+ margin-right: 10px;
47
+ pointer-events: none;
48
+ background-color: var(--psp-inactive--color);
49
+ -webkit-mask-image: var(--psp-icon--column-drag-handle--mask-image);
50
+ mask-image: var(--psp-icon--column-drag-handle--mask-image);
51
+ -webkit-mask-size: contain;
52
+ mask-size: contain;
53
+ -webkit-mask-repeat: no-repeat;
54
+ mask-repeat: no-repeat;
55
+ -webkit-mask-position: center;
56
+ mask-position: center;
57
+ }
58
+
59
+ .psp-tab-caret {
60
+ flex: 0 0 auto;
61
+ display: none;
62
+ margin-right: 12px;
63
+ pointer-events: none;
64
+ }
65
+
66
+ .psp-tab-caret {
67
+ /* content: " "; */
68
+ display: block;
69
+
70
+ width: 12px;
71
+ height: 12px;
72
+ pointer-events: none;
73
+ background-color: var(--psp--color);
74
+ /* -webkit-mask-image: var(--psp-icon--active-indicator--mask-image);
75
+ mask-image: var(--psp-icon--active-indicator--mask-image); */
76
+ -webkit-mask-image: var(--psp-icon--column-drag-handle--mask-image);
77
+ mask-image: var(--psp-icon--column-drag-handle--mask-image);
78
+
79
+ -webkit-mask-size: contain;
80
+ mask-size: contain;
81
+ -webkit-mask-repeat: no-repeat;
82
+ mask-repeat: no-repeat;
83
+ -webkit-mask-position: center;
84
+ mask-position: center;
85
+ }
86
+
87
+ :host([part~="tab"].active) .psp-tab-caret {
88
+ display: block;
89
+ -webkit-mask-image: var(--psp-icon--active-indicator--mask-image);
90
+ mask-image: var(--psp-icon--active-indicator--mask-image);
91
+ }
92
+
93
+ /* A lone tab (its viewer has a single plugin child) has no stack to open —
94
+ * no caret. Must follow the `.active` rule (equal specificity) to win when
95
+ * the lone tab is also active. */
96
+ :host([part~="tab"].single) .psp-tab-caret {
97
+ display: none;
98
+ }
99
+
100
+ .psp-tab-title {
101
+ height: 11px;
102
+ line-height: 12px;
103
+ flex: 1 1 auto;
104
+ pointer-events: none;
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ }
109
+
110
+ .psp-tab-title.placeholder {
111
+ color: var(--psp-inactive--color);
112
+ }
113
+
114
+ .psp-tab-title.input-sizer {
115
+ flex: 1 1 auto;
116
+ pointer-events: auto;
117
+ display: inline-block;
118
+ position: relative;
119
+ min-width: 24px;
120
+ }
121
+
122
+ .input-sizer::after {
123
+ content: attr(data-value) " ";
124
+ visibility: hidden;
125
+ white-space: nowrap;
126
+ padding-right: 2px;
127
+ }
128
+
129
+ .input-sizer input {
130
+ position: absolute;
131
+ inset: 0;
132
+ width: 100%;
133
+ padding: 0;
134
+ border: none;
135
+ background: transparent;
136
+ color: inherit;
137
+ font: inherit;
138
+ text-overflow: ellipsis;
139
+ outline: none;
140
+ }
141
+
142
+ .psp-tab-master {
143
+ margin-right: 6px;
144
+ }
145
+
146
+ .psp-tab-master:before {
147
+ content: var(--psp-broadcast--content, "[BROADCAST]");
148
+ }
149
+
150
+ .psp-tab-close,
151
+ .psp-tab-settings {
152
+ flex: 0 0 auto;
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: center;
156
+ margin-left: 4px;
157
+ padding: 0;
158
+ border: none;
159
+ background: none;
160
+ cursor: pointer;
161
+ color: inherit;
162
+ }
163
+
164
+ .psp-tab-close:hover::before,
165
+ .psp-tab-settings:hover::before {
166
+ background-color: var(--psp--color);
167
+ }
168
+
169
+ .psp-tab-close::before,
170
+ .psp-tab-settings::before {
171
+ content: "";
172
+
173
+ /* TODO don't hard-code dimensions */
174
+ width: 20px;
175
+ height: 20px;
176
+ background-color: var(--psp-inactive--color);
177
+ -webkit-mask-size: contain;
178
+ mask-size: contain;
179
+ -webkit-mask-repeat: no-repeat;
180
+ mask-repeat: no-repeat;
181
+ -webkit-mask-position: center;
182
+ mask-position: center;
183
+ }
184
+
185
+ .psp-tab-close::before {
186
+ -webkit-mask-image: var(--psp-icon--close--mask-image);
187
+ mask-image: var(--psp-icon--close--mask-image);
188
+ }
189
+
190
+ .psp-tab-settings::before {
191
+ -webkit-mask-image: var(--psp-icon--drawer-tab-inverted--mask-image);
192
+ mask-image: var(--psp-icon--drawer-tab-inverted--mask-image);
193
+ }
@@ -20,7 +20,7 @@
20
20
  #plugin_selector_container {
21
21
  min-height: var(
22
22
  --psp-plugin-selector--height,
23
- var(--psp-status-bar--height, 48px)
23
+ var(--psp-status-bar--height, 38px)
24
24
  );
25
25
  display: flex;
26
26
  white-space: nowrap;
@@ -48,6 +48,7 @@
48
48
  &.open {
49
49
  position: absolute;
50
50
  margin: 0;
51
+ margin-left: -1px;
51
52
  top: 0;
52
53
  left: 0;
53
54
  right: 0;
@@ -58,15 +59,11 @@
58
59
  z-index: 3;
59
60
  color: var(--psp--color, #042121);
60
61
  /* background: var(--psp--background-color); */
61
-
62
- .plugin-select-item {
63
- padding-left: 8px;
64
- }
65
62
  }
66
63
 
67
64
  .plugin-select-item-name {
68
- padding-left: 10px;
69
- font-size: 1.33333em;
65
+ padding-left: 4px;
66
+ font-size: 1.1em;
70
67
  }
71
68
 
72
69
  .plugin-select-item-name:before {
@@ -76,14 +73,14 @@
76
73
 
77
74
  .plugin-select-item {
78
75
  /* width: 48px; */
79
- padding-left: 9px;
76
+ padding-left: 5px;
80
77
  height: var(
81
78
  --psp-plugin-selector--height,
82
- var(--psp-status-bar--height, 48px)
79
+ var(--psp-status-bar--height, 38px)
83
80
  );
84
81
  min-height: var(
85
82
  --psp-plugin-selector--height,
86
- var(--psp-status-bar--height, 48px)
83
+ var(--psp-status-bar--height, 38px)
87
84
  );
88
85
  display: flex;
89
86
  align-items: center;