@perspective-dev/viewer 4.3.0 → 4.4.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.
Files changed (243) 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 -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/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/phosphor.css +1 -0
  17. package/dist/css/pro-dark.css +1 -1
  18. package/dist/css/pro.css +1 -1
  19. package/dist/css/solarized-dark.css +1 -1
  20. package/dist/css/solarized.css +1 -1
  21. package/dist/css/themes.css +1 -1
  22. package/dist/css/vaporwave.css +1 -1
  23. package/dist/esm/extensions.d.ts +4 -0
  24. package/dist/esm/perspective-viewer.d.ts +1 -0
  25. package/dist/esm/perspective-viewer.inline.js +2 -2
  26. package/dist/esm/perspective-viewer.inline.js.map +4 -4
  27. package/dist/esm/perspective-viewer.js +2 -2
  28. package/dist/esm/perspective-viewer.js.map +4 -4
  29. package/dist/esm/plugin.d.ts +9 -9
  30. package/dist/esm/ts-rs/NumberForegroundMode.d.ts +1 -1
  31. package/dist/esm/ts-rs/ViewerConfig.d.ts +36 -0
  32. package/dist/wasm/perspective-viewer.d.ts +68 -59
  33. package/dist/wasm/perspective-viewer.js +216 -171
  34. package/dist/wasm/perspective-viewer.wasm +0 -0
  35. package/dist/wasm/perspective-viewer.wasm.d.ts +19 -20
  36. package/package.json +7 -5
  37. package/src/{less/aggregate-selector.less → css/aggregate-selector.css} +23 -20
  38. package/src/css/column-dropdown.css +109 -0
  39. package/src/{less/column-selector.less → css/column-selector.css} +160 -158
  40. package/src/{less/column-settings-panel.less → css/column-settings-panel.css} +70 -59
  41. package/src/{less/column-style.less → css/column-style.css} +52 -66
  42. package/src/{less/column-symbol-attributes.less → css/column-symbol-attributes.css} +15 -14
  43. package/src/{less/config-selector.less → css/config-selector.css} +151 -135
  44. package/src/{less/containers/dropdown-menu.less → css/containers/dropdown-menu.css} +20 -19
  45. package/src/{less/containers/pairs-list.less → css/containers/pairs-list.css} +13 -12
  46. package/src/{themes/variables.less → css/containers/scroll-panel.css} +25 -22
  47. package/src/{less/containers/split-panel.less → css/containers/split-panel.css} +15 -14
  48. package/src/{less/containers/tabs.less → css/containers/tabs.css} +17 -19
  49. package/src/css/dom/checkbox.css +102 -0
  50. package/src/css/dom/scrollbar.css +35 -0
  51. package/src/{less/dom/select.less → css/dom/select.css} +17 -18
  52. package/src/{less/empty-column.less → css/empty-column.css} +19 -18
  53. package/src/{less/expression-editor.less → css/expression-editor.css} +19 -18
  54. package/src/{less/filter-dropdown.less → css/filter-dropdown.css} +12 -11
  55. package/src/{less/filter-item.less → css/filter-item.css} +16 -15
  56. package/src/{less/form/code-editor.less → css/form/code-editor.css} +26 -30
  57. package/src/{less/form/debug.less → css/form/debug.css} +19 -18
  58. package/src/{less/function-dropdown.less → css/function-dropdown.css} +12 -11
  59. package/src/css/plugin-selector.css +261 -0
  60. package/src/{less/render-warning.less → css/render-warning.css} +18 -17
  61. package/src/{less/status-bar.less → css/status-bar.css} +157 -145
  62. package/src/css/type-icon.css +116 -0
  63. package/src/{less/viewer.less → css/viewer.css} +112 -146
  64. package/src/rust/components/column_dropdown.rs +229 -119
  65. package/src/rust/components/column_selector/active_column.rs +81 -62
  66. package/src/rust/components/column_selector/add_expression_button.rs +1 -0
  67. package/src/rust/components/column_selector/aggregate_selector.rs +25 -15
  68. package/src/rust/components/column_selector/config_selector.rs +315 -199
  69. package/src/rust/components/column_selector/empty_column.rs +2 -2
  70. package/src/rust/components/column_selector/expr_edit_button.rs +8 -2
  71. package/src/rust/components/column_selector/filter_column.rs +37 -26
  72. package/src/rust/components/column_selector/inactive_column.rs +41 -29
  73. package/src/rust/components/column_selector/invalid_column.rs +7 -18
  74. package/src/rust/components/column_selector/pivot_column.rs +11 -5
  75. package/src/rust/components/column_selector/sort_column.rs +23 -13
  76. package/src/rust/components/column_selector.rs +163 -84
  77. package/src/rust/components/column_settings_sidebar/style_tab/symbol/row_selector.rs +1 -1
  78. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_pairs.rs +3 -2
  79. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_pairs_item.rs +3 -2
  80. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_selector.rs +2 -3
  81. package/src/rust/components/column_settings_sidebar/style_tab/symbol.rs +7 -1
  82. package/src/rust/components/column_settings_sidebar/style_tab.rs +153 -112
  83. package/src/rust/components/column_settings_sidebar.rs +91 -53
  84. package/src/rust/components/containers/dragdrop_list.rs +2 -1
  85. package/src/rust/components/containers/sidebar_close_button.rs +1 -1
  86. package/src/rust/components/containers/split_panel.rs +1 -0
  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 +30 -7
  106. package/src/rust/components/plugin_selector.rs +34 -102
  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 -114
  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 -40
  116. package/src/rust/config/number_column_style.rs +5 -1
  117. package/src/rust/config/viewer_config.rs +2 -2
  118. package/src/rust/custom_elements/copy_dropdown.rs +102 -21
  119. package/src/rust/custom_elements/debug_plugin.rs +4 -4
  120. package/src/rust/custom_elements/export_dropdown.rs +102 -20
  121. package/src/rust/custom_elements/mod.rs +0 -7
  122. package/src/rust/custom_elements/modal.rs +7 -103
  123. package/src/rust/custom_elements/viewer.rs +114 -39
  124. package/src/rust/custom_events.rs +23 -2
  125. package/src/rust/dragdrop.rs +149 -10
  126. package/src/{less/containers/scroll-panel.less → rust/engines.rs} +15 -13
  127. package/src/rust/js/plugin.rs +1 -1
  128. package/src/rust/lib.rs +10 -4
  129. package/src/rust/presentation/props.rs +39 -0
  130. package/src/rust/presentation/sheets.rs +3 -3
  131. package/src/rust/presentation.rs +44 -8
  132. package/src/rust/renderer/limits.rs +32 -3
  133. package/src/{less/dom/scrollbar.less → rust/renderer/props.rs} +18 -19
  134. package/src/rust/renderer.rs +93 -14
  135. package/src/rust/session/column_defaults_update.rs +1 -1
  136. package/src/rust/session/metadata.rs +23 -2
  137. package/src/rust/session/props.rs +178 -0
  138. package/src/rust/session.rs +124 -117
  139. package/src/rust/tasks/column_locator.rs +133 -0
  140. package/src/rust/{model → tasks}/columns_iter_set.rs +14 -23
  141. package/src/rust/{model → tasks}/edit_expression.rs +34 -10
  142. package/src/rust/{model → tasks}/eject.rs +2 -2
  143. package/src/rust/{model → tasks}/get_viewer_config.rs +0 -11
  144. package/src/rust/{model → tasks}/intersection_observer.rs +19 -3
  145. package/src/{less/containers/radio-list.less → rust/tasks/is_invalid_drop.rs} +21 -14
  146. package/src/rust/tasks/mod.rs +52 -0
  147. package/src/rust/{model → tasks}/plugin_column_styles.rs +69 -46
  148. package/src/rust/{model → tasks}/resize_observer.rs +39 -6
  149. package/src/rust/{model → tasks}/restore_and_render.rs +4 -3
  150. package/src/rust/{model → tasks}/send_plugin_config.rs +1 -1
  151. package/src/rust/tasks/structural.rs +53 -0
  152. package/src/rust/utils/mod.rs +4 -0
  153. package/src/rust/utils/modal_position.rs +110 -0
  154. package/src/rust/utils/ptr_eq_rc.rs +74 -0
  155. package/src/rust/utils/pubsub.rs +11 -1
  156. package/src/svg/bg-pattern.png +0 -0
  157. package/src/svg/close-icon.svg +1 -1
  158. package/src/svg/datagrid-select-row-tree.svg +13 -0
  159. package/src/svg/expression.svg +1 -1
  160. package/src/svg/mega-menu-icons-candlestick.svg +1 -1
  161. package/src/svg/mega-menu-icons-datagrid.svg +1 -2
  162. package/src/svg/mega-menu-icons-heatmap.svg +1 -1
  163. package/src/svg/mega-menu-icons-map-scatter.svg +1 -1
  164. package/src/svg/mega-menu-icons-ohlc.svg +1 -1
  165. package/src/svg/mega-menu-icons-sunburst.svg +1 -1
  166. package/src/svg/mega-menu-icons-treemap.svg +1 -1
  167. package/src/svg/mega-menu-icons-x-bar.svg +1 -1
  168. package/src/svg/mega-menu-icons-x-y-line.svg +1 -1
  169. package/src/svg/mega-menu-icons-x-y-scatter.svg +1 -1
  170. package/src/svg/mega-menu-icons-y-area.svg +1 -1
  171. package/src/svg/mega-menu-icons-y-bar.svg +1 -1
  172. package/src/svg/mega-menu-icons-y-line.svg +1 -1
  173. package/src/svg/mega-menu-icons-y-scatter.svg +1 -1
  174. package/src/svg/radio-hover.svg +1 -1
  175. package/src/svg/radio-off.svg +1 -1
  176. package/src/svg/radio-on.svg +1 -1
  177. package/src/themes/botanical.css +157 -0
  178. package/src/themes/defaults.css +157 -0
  179. package/src/themes/dracula.css +233 -0
  180. package/src/themes/gruvbox-dark.css +255 -0
  181. package/src/themes/gruvbox.css +134 -0
  182. package/src/themes/icons.css +107 -0
  183. package/src/themes/intl/de.css +102 -0
  184. package/src/themes/intl/es.css +102 -0
  185. package/src/themes/intl/fr.css +102 -0
  186. package/src/themes/intl/ja.css +102 -0
  187. package/src/themes/intl/pt.css +102 -0
  188. package/src/themes/intl/zh.css +102 -0
  189. package/src/themes/intl.css +102 -0
  190. package/src/themes/monokai.css +233 -0
  191. package/src/themes/phosphor.css +184 -0
  192. package/src/themes/pro-dark.css +158 -0
  193. package/src/themes/{themes.less → pro.css} +17 -21
  194. package/src/themes/solarized-dark.css +135 -0
  195. package/src/themes/solarized.css +95 -0
  196. package/src/themes/themes.css +23 -0
  197. package/src/themes/vaporwave.css +256 -0
  198. package/src/ts/extensions.ts +8 -1
  199. package/src/ts/perspective-viewer.ts +1 -0
  200. package/src/ts/plugin.ts +9 -9
  201. package/src/ts/ts-rs/NumberForegroundMode.ts +1 -1
  202. package/src/ts/ts-rs/ViewerConfig.ts +15 -0
  203. package/dist/css/variables.css +0 -0
  204. package/src/less/column-dropdown.less +0 -95
  205. package/src/less/dom/checkbox.less +0 -100
  206. package/src/less/plugin-selector.less +0 -183
  207. package/src/less/type-icon.less +0 -68
  208. package/src/rust/components/error_message.rs +0 -56
  209. package/src/rust/custom_elements/column_dropdown.rs +0 -123
  210. package/src/rust/custom_elements/filter_dropdown.rs +0 -179
  211. package/src/rust/custom_elements/function_dropdown.rs +0 -115
  212. package/src/rust/model/column_locator.rs +0 -82
  213. package/src/rust/model/is_invalid_drop.rs +0 -36
  214. package/src/rust/model/mod.rs +0 -100
  215. package/src/rust/model/reset_all.rs +0 -38
  216. package/src/rust/model/structural.rs +0 -244
  217. package/src/themes/botanical.less +0 -142
  218. package/src/themes/dracula.less +0 -101
  219. package/src/themes/gruvbox-dark.less +0 -116
  220. package/src/themes/gruvbox.less +0 -152
  221. package/src/themes/icons.less +0 -130
  222. package/src/themes/intl/de.less +0 -102
  223. package/src/themes/intl/es.less +0 -102
  224. package/src/themes/intl/fr.less +0 -102
  225. package/src/themes/intl/ja.less +0 -102
  226. package/src/themes/intl/pt.less +0 -102
  227. package/src/themes/intl/zh.less +0 -102
  228. package/src/themes/intl.less +0 -102
  229. package/src/themes/monokai.less +0 -107
  230. package/src/themes/pro-dark.less +0 -147
  231. package/src/themes/pro.less +0 -186
  232. package/src/themes/solarized-dark.less +0 -78
  233. package/src/themes/solarized.less +0 -102
  234. package/src/themes/vaporwave.less +0 -145
  235. /package/dist/wasm/snippets/{perspective-viewer-d729f682ba5c19df → perspective-viewer-d924246f0b4a3dce}/inline0.js +0 -0
  236. /package/dist/wasm/snippets/{perspective-viewer-d729f682ba5c19df → perspective-viewer-d924246f0b4a3dce}/inline1.js +0 -0
  237. /package/dist/wasm/snippets/{perspective-viewer-d729f682ba5c19df → perspective-viewer-d924246f0b4a3dce}/inline2.js +0 -0
  238. /package/dist/wasm/snippets/{perspective-viewer-d729f682ba5c19df → perspective-viewer-d924246f0b4a3dce}/inline3.js +0 -0
  239. /package/dist/wasm/snippets/{perspective-viewer-d729f682ba5c19df → perspective-viewer-d924246f0b4a3dce}/inline4.js +0 -0
  240. /package/src/rust/{model → tasks}/copy_export.rs +0 -0
  241. /package/src/rust/{model → tasks}/export_app.rs +0 -0
  242. /package/src/rust/{model → tasks}/export_method.rs +0 -0
  243. /package/src/rust/{model → tasks}/update_and_render.rs +0 -0
@@ -1,244 +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
- //! A simple "structurally-typed" method extension implementation. This
14
- //! collection of `trait`s allows methods to be automatically defined for
15
- //! `struct`s only if the define accessors for the necessary applications state
16
- //! objects (which are conviently derivable with the `derive_model!` macro).
17
-
18
- use yew::Component;
19
-
20
- use crate::custom_events::*;
21
- use crate::dragdrop::*;
22
- use crate::presentation::*;
23
- use crate::renderer::*;
24
- use crate::root::*;
25
- use crate::session::*;
26
-
27
- pub trait HasCustomEvents {
28
- fn custom_events(&self) -> &'_ CustomEvents;
29
- }
30
-
31
- pub trait HasDragDrop {
32
- fn dragdrop(&self) -> &'_ DragDrop;
33
- }
34
-
35
- pub trait HasPresentation {
36
- fn presentation(&self) -> &'_ Presentation;
37
- }
38
-
39
- pub trait HasRoot {
40
- /// Use an assoociated type to prevent a (circular) dependency on
41
- /// [`crate::components`].
42
- type RootComponent: Component;
43
- fn root(&self) -> &'_ Root<Self::RootComponent>;
44
- }
45
-
46
- pub trait HasRenderer {
47
- fn renderer(&self) -> &'_ Renderer;
48
- }
49
-
50
- pub trait HasSession {
51
- fn session(&self) -> &'_ Session;
52
- }
53
-
54
- impl HasSession for Session {
55
- fn session(&self) -> &'_ Session {
56
- self
57
- }
58
- }
59
-
60
- #[macro_export]
61
- macro_rules! PerspectiveProperties {
62
- // (impl @tuple $name:ident CustomEvents $x:tt) => {
63
- // impl $crate::model::HasCustomEvents for $name {
64
- // fn custom_events(&self) -> &'_ CustomEvents {
65
- // &self.$x
66
- // }
67
- // }
68
- // };
69
-
70
- // (impl @tuple $name:ident DragDrop $x:tt) => {
71
- // impl $crate::model::HasDragDrop for $name {
72
- // fn dragdrop(&self) -> &'_ DragDrop {
73
- // &self.$x
74
- // }
75
- // }
76
- // };
77
-
78
- // (impl @tuple $name:ident Presentatio $x:tt) => {
79
- // impl $crate::model::HasPresentation for $name {
80
- // fn presentation(&self) -> &'_ Presentation {
81
- // &self.$x
82
- // }
83
- // }
84
- // };
85
-
86
- // (impl @tuple $name:ident Renderer $x:tt) => {
87
- // impl $crate::model::HasRenderer for $name {
88
- // fn renderer(&self) -> &'_ Renderer {
89
- // &self.$x
90
- // }
91
- // }
92
- // };
93
-
94
- // (impl @tuple $name:ident Root $x:tt) => {
95
- // impl $crate::model::HasRoot for $name {
96
- // type RootComponent = $crate::components::viewer::PerspectiveViewer;
97
- // fn root(&self) -> &'_ Root<Self::RootComponent> {
98
- // &self.$x
99
- // }
100
- // }
101
- // };
102
-
103
- // (impl @tuple $name:ident Session $x:tt) => {
104
- // impl $crate::model::HasSession for $name {
105
- // fn session(&self) -> &'_ Session {
106
- // &self.$x
107
- // }
108
- // }
109
- // };
110
-
111
- // (impl @tuple $name:ident *_x:tt $x:tt) => {};
112
-
113
- (impl @field $name:ident custom_events $value:ty) => {
114
- impl $crate::model::HasCustomEvents for $name {
115
- fn custom_events(&self) -> &'_ $value {
116
- &self.custom_events
117
- }
118
- }
119
- };
120
-
121
- (impl @field $name:ident dragdrop $value:ty) => {
122
- impl $crate::model::HasDragDrop for $name {
123
- fn dragdrop(&self) -> &'_ $value {
124
- &self.dragdrop
125
- }
126
- }
127
- };
128
-
129
- (impl @field $name:ident presentation $value:ty) => {
130
- impl $crate::model::HasPresentation for $name {
131
- fn presentation(&self) -> &'_ $value {
132
- &self.presentation
133
- }
134
- }
135
- };
136
-
137
- (impl @field $name:ident renderer $value:ty) => {
138
- impl $crate::model::HasRenderer for $name {
139
- fn renderer(&self) -> &'_ $value {
140
- &self.renderer
141
- }
142
- }
143
- };
144
-
145
- (impl @field $name:ident root $value:ty) => {
146
- impl $crate::model::HasRoot for $name {
147
- type RootComponent = $crate::components::viewer::PerspectiveViewer;
148
- fn root(&self) -> &'_ $value {
149
- &self.root
150
- }
151
- }
152
- };
153
-
154
- (impl @field $name:ident session $value:ty) => {
155
- impl $crate::model::HasSession for $name {
156
- fn session(&self) -> &'_ $value {
157
- &self.session
158
- }
159
- }
160
- };
161
-
162
- (impl @field $name:ident $x:ident $value:ty) => {};
163
-
164
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} custom_events, $($field:ident,)*) => {
165
- PerspectiveProperties!(impl @fields_provider $name { custom_events : CustomEvents, $($x : $y,)*} $($field,)*);
166
- };
167
-
168
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} dragdrop, $($field:ident,)*) => {
169
- PerspectiveProperties!(impl @fields_provider $name { dragdrop : DragDrop, $($x : $y,)*} $($field,)*);
170
- };
171
-
172
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} presentation, $($field:ident,)*) => {
173
- PerspectiveProperties!(impl @fields_provider $name { presentation : Presentation, $($x : $y,)*} $($field,)*);
174
- };
175
-
176
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} renderer, $($field:ident,)*) => {
177
- PerspectiveProperties!(impl @fields_provider $name { renderer : Renderer, $($x : $y,)*} $($field,)*);
178
- };
179
-
180
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} root, $($field:ident,)*) => {
181
- PerspectiveProperties!(impl @fields_provider $name { root : Root<$crate::components::viewer::PerspectiveViewer>, $($x : $y,)*} $($field,)*);
182
- };
183
-
184
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} session, $($field:ident,)*) => {
185
- PerspectiveProperties!(impl @fields_provider $name { session : Session, $($x : $y,)*} $($field,)*);
186
- };
187
-
188
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*} $_x:ident, $($field:ident,)*) => {
189
- PerspectiveProperties!(impl @fields_provider $name {$($x : $y,)*} $($field,)*);
190
- };
191
-
192
- (impl @fields_provider $name:ident {}) => {};
193
-
194
- (impl @fields_provider $name:ident {$($x:tt : $y:ty,)*}) => {
195
- perspective_client::vendor::paste::paste! {
196
- #[derive(PartialEq, Clone)]
197
- pub struct [< $name State >] {
198
- $($x: $y,)*
199
- }
200
-
201
- impl $crate::model::StateProvider for $name {
202
- type State = [< $name State >];
203
- fn clone_state(&self) -> Self::State {
204
- Self::State {
205
- $($x : self.$x.clone(),)*
206
- }
207
- }
208
- }
209
-
210
- PerspectiveProperties!(impl @fields [< $name State >] $($x : $y,)*);
211
- }
212
- };
213
-
214
- (impl @fields $name:ident $field:ident : $value:ty, $($field_tail:ident : $value_tail:ty,)*) => {
215
- PerspectiveProperties!(impl @field $name $field $value);
216
- PerspectiveProperties!(impl @fields $name $($field_tail : $value_tail,)*);
217
- };
218
-
219
- (impl @fields $name:ident) => {};
220
-
221
- // (impl @tuples $name:ident $value:tt : $acc:tt, $($value_tail:tt : $acc_tail:tt,)*) => {
222
- // PerspectiveProperties!(impl @tuple $name $value $acc);
223
- // PerspectiveProperties!(impl @tuples $name $($value_tail : $acc_tail,)*);
224
- // };
225
-
226
- // (impl @tuples $name:ident) => {};
227
-
228
- ($(#[$m:meta])* $pub:vis struct $name:ident { $($(#[$_m:meta])* $_p:vis $field:ident : $value:ty),* $(,)? }) => {
229
- PerspectiveProperties!(impl @fields $name $($field : $value,)*);
230
- PerspectiveProperties!(impl @fields_provider $name {} $($field,)*);
231
- };
232
-
233
- // ($(#[$m:meta])* $pub:vis struct $name:ident ( $($(#[$_m:meta])* $value:tt $(< $_ttt:ty >)?),* $(,)? );) => {
234
- // PerspectiveProperties!(impl @tuples $name $($value : ${index()} ,)*);
235
- // };
236
- }
237
-
238
- pub trait StateProvider {
239
- type State: Clone + 'static;
240
-
241
- /// Clones _just_ the state objects fields into a new dedicated state
242
- /// struct (generated by [`PerspectiveProperties`]).
243
- fn clone_state(&self) -> Self::State;
244
- }
@@ -1,142 +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 "icons.less";
14
- @import "intl.less";
15
-
16
- @import url("ref://pro.less");
17
-
18
- // Register theme for auto-detection
19
- perspective-viewer,
20
- perspective-viewer[theme="Botanical"] {
21
- --theme-name: "Botanical";
22
- }
23
-
24
- perspective-viewer[theme="Botanical"] {
25
- @include perspective-viewer-botanical;
26
- }
27
-
28
- perspective-copy-menu[theme="Botanical"],
29
- perspective-export-menu[theme="Botanical"],
30
- perspective-dropdown[theme="Botanical"],
31
- perspective-date-column-style[theme="Botanical"],
32
- perspective-datetime-column-style[theme="Botanical"],
33
- perspective-number-column-style[theme="Botanical"],
34
- perspective-string-column-style[theme="Botanical"] {
35
- @include perspective-modal-botanical;
36
- }
37
-
38
- @mixin perspective-viewer-botanical {
39
- @include perspective-viewer-pro;
40
- @include perspective-viewer-botanical--colors;
41
- @include perspective-viewer-botanical--datagrid;
42
- @include perspective-viewer-botanical--d3fc;
43
- @include perspective-viewer-botanical--openlayers;
44
- }
45
-
46
- @mixin perspective-modal-botanical {
47
- @include perspective-modal-pro;
48
- @include perspective-viewer-botanical--colors;
49
-
50
- background-color: #1a2e1a;
51
- border: 1px solid #3d5c3d;
52
- }
53
-
54
- @mixin perspective-viewer-botanical--colors {
55
- background-color: #1a2e1a;
56
- color: #e0ead8;
57
- --icon--color: #e0ead8;
58
- --active--color: #5a9e4b;
59
- --error--color: #e8836a;
60
- --inactive--color: #526b4a;
61
- --inactive--border-color: #3d5c3d;
62
- --plugin--background: #1a2e1a;
63
- --modal-target--background: rgba(224, 234, 216, 0.05);
64
- --active--background: rgba(90, 158, 75, 0.5);
65
- --expression--operator-color: #b8c9ad;
66
- --expression--function-color: #7bc96f;
67
- --expression--error-color: rgb(232, 131, 106);
68
- --calendar--filter: invert(1);
69
- --warning--color: #1a2e1a;
70
- --warning--background: var(--icon--color);
71
-
72
- --select-arrow--background-image: var(
73
- --select-arrow-light--background-image
74
- );
75
-
76
- --select-arrow--hover--background-image: var(
77
- --select-arrow-dark--background-image
78
- );
79
-
80
- // Syntax
81
- --code-editor-symbol--color: #e0ead8;
82
- --code-editor-literal--color: #a8d8a0;
83
- --code-editor-operator--color: rgb(206, 176, 104);
84
- --code-editor-comment--color: rgb(120, 160, 100);
85
- --code-editor-column--color: #c9a0d8;
86
- }
87
-
88
- @mixin perspective-viewer-botanical--openlayers {
89
- --map-tile-url: "http://{a-c}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";
90
- --map-attribution--filter: invert(1) hue-rotate(180deg);
91
- --map-element-background: #1e3420;
92
- --map-category-1: rgb(90, 158, 75);
93
- --map-category-2: rgb(206, 176, 104);
94
- --map-category-3: rgb(160, 110, 180);
95
- --map-category-4: rgb(80, 170, 150);
96
- --map-category-5: rgb(140, 170, 90);
97
- --map-category-6: rgb(200, 120, 140);
98
- --map-category-7: rgb(100, 150, 190);
99
- --map-category-8: rgb(210, 140, 80);
100
- --map-category-9: rgb(130, 120, 190);
101
- --map-category-10: rgb(170, 200, 110);
102
- --map-gradient: linear-gradient(#e8836a 0%, #1a2e1a 50%, #5a9e4b 100%);
103
- }
104
-
105
- @mixin perspective-viewer-botanical--datagrid {
106
- --rt-pos-cell--color: #7bc96f;
107
- --rt-neg-cell--color: #ebac21;
108
- }
109
-
110
- @mixin perspective-viewer-botanical--d3fc {
111
- --d3fc-legend--text: #b8c9ad;
112
- --d3fc-treedata--labels: #e0ead8;
113
- --d3fc-treedata--hover-highlight: #e0ead8;
114
- --d3fc-tooltip--color: #e0ead8;
115
- --d3fc-axis-ticks--color: #b8c9ad;
116
- --d3fc-axis--lines: #526b4a;
117
- --d3fc-gridline--color: #2a4228;
118
- --d3fc-tooltip--background: rgba(30, 52, 32, 1);
119
- --d3fc-tooltip--border-color: #1a2e1a;
120
- --d3fc-legend--background: var(--plugin--background);
121
-
122
- --d3fc-series: rgb(90, 158, 75);
123
- --d3fc-series-1: rgb(90, 158, 75);
124
- --d3fc-series-2: rgb(206, 176, 104);
125
- --d3fc-series-3: rgb(160, 110, 180);
126
- --d3fc-series-4: rgb(80, 170, 150);
127
- --d3fc-series-5: rgb(140, 170, 90);
128
- --d3fc-series-6: rgb(200, 120, 140);
129
- --d3fc-series-7: rgb(100, 150, 190);
130
- --d3fc-series-8: rgb(210, 140, 80);
131
- --d3fc-series-9: rgb(130, 120, 190);
132
- --d3fc-series-10: rgb(170, 200, 110);
133
-
134
- --d3fc-full--gradient: linear-gradient(
135
- #e8836a 0%,
136
- #1a2e1a 50%,
137
- #5a9e4b 100%
138
- );
139
-
140
- --d3fc-positive--gradient: linear-gradient(#1a2e1a 0%, #5a9e4b 100%);
141
- --d3fc-negative--gradient: linear-gradient(#e8836a 0%, #1a2e1a 100%);
142
- }
@@ -1,101 +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 "icons.less";
14
-
15
- @import url("ref://pro-dark.less");
16
-
17
- perspective-viewer,
18
- perspective-viewer[theme="Dracula"] {
19
- --theme-name: "Dracula";
20
- }
21
-
22
- perspective-viewer[theme="Dracula"] {
23
- @include perspective-viewer-pro-dark;
24
- @include perspective-viewer-dracula--colors;
25
- @include perspective-viewer-dracula--animation;
26
- @include perspective-viewer-dracula--fonts;
27
- @include perspective-viewer-dracula--datagrid;
28
- @include perspective-viewer-dracula--d3fc;
29
- }
30
-
31
- perspective-copy-menu[theme="Dracula"],
32
- perspective-export-menu[theme="Dracula"],
33
- perspective-dropdown[theme="Dracula"] {
34
- @include perspective-modal-pro-dark;
35
- @include perspective-viewer-dracula--colors;
36
- background-color: var(--theme-bg0);
37
- }
38
-
39
- @mixin perspective-viewer-dracula--colors {
40
- --theme-bg0: #191a22;
41
- --theme-bg1: #282a36;
42
- --theme-bg2: #44475a;
43
-
44
- --theme-gray: #928374;
45
-
46
- --theme-fg0: #f8f8f2;
47
- --theme-fg1: #6272a4;
48
- --theme-fg2: #44475a;
49
-
50
- --theme-red: #ff5555;
51
- --theme-green: #50fa7b;
52
- --theme-yellow: #f1fa8c;
53
- --theme-blue: #8be9fd;
54
- --theme-purple: #bd93f9;
55
- --theme-orange: #ffb86c;
56
- --theme-pink: #ff79c6;
57
-
58
- color: var(--theme-fg0);
59
- background-color: var(--theme-bg0);
60
- --icon--color: var(--theme-fg1);
61
- --inactive--color: var(--theme-fg2);
62
- --inactive--border-color: var(--theme-bg2);
63
- --plugin--background: var(--theme-bg1);
64
- --status-icon-connected--color: var(--theme-green);
65
- --status-icon-initializing--color: var(--theme-yellow);
66
- --status-icon-error--color: var(--theme-red);
67
- }
68
-
69
- @mixin perspective-viewer-dracula--datagrid {
70
- --rt-pos-cell--color: var(--theme-blue);
71
- --rt-neg-cell--color: var(--theme-red);
72
- }
73
-
74
- @mixin perspective-viewer-dracula--d3fc {
75
- --d3fc-axis-ticks--color: var(--theme-fg1);
76
- --d3fc-gridline--color: var(--theme-bg2);
77
- --d3fc-series: var(--theme-blue);
78
- --d3fc-series-1: var(--theme-blue);
79
- --d3fc-series-2: var(--theme-red);
80
- --d3fc-series-3: var(--theme-green);
81
- --d3fc-series-4: var(--theme-yellow);
82
- --d3fc-series-5: var(--theme-purple);
83
- --d3fc-series-6: var(--theme-pink);
84
- --d3fc-series-7: var(--theme-orange);
85
-
86
- --d3fc-negative--gradient: linear-gradient(
87
- var(--theme-bg0),
88
- var(--theme-red)
89
- ) !important;
90
-
91
- --d3fc-positive--gradient: linear-gradient(
92
- var(--theme-bg0),
93
- var(--theme-blue)
94
- ) !important;
95
-
96
- --d3fc-full--gradient: linear-gradient(
97
- var(--theme-red),
98
- var(--theme-bg0),
99
- var(--theme-blue)
100
- ) !important;
101
- }
@@ -1,116 +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 "icons.less";
14
-
15
- @import url("ref://pro-dark.less");
16
-
17
- perspective-viewer,
18
- perspective-viewer[theme="Gruvbox Dark"] {
19
- --theme-name: "Gruvbox Dark";
20
- }
21
-
22
- perspective-viewer[theme="Gruvbox Dark"] {
23
- @include perspective-viewer-pro-dark;
24
- @include perspective-viewer-gruvbox-dark--colors;
25
- @include perspective-viewer-gruvbox-dark--animation;
26
- @include perspective-viewer-gruvbox-dark--fonts;
27
- @include perspective-viewer-gruvbox-dark--datagrid;
28
- @include perspective-viewer-gruvbox-dark--d3fc;
29
- }
30
-
31
- perspective-copy-menu[theme="Gruvbox Dark"],
32
- perspective-export-menu[theme="Gruvbox Dark"],
33
- perspective-dropdown[theme="Gruvbox Dark"] {
34
- @include perspective-modal-pro-dark;
35
- @include perspective-viewer-gruvbox-dark--colors;
36
- background-color: var(--theme-bg0);
37
- }
38
-
39
- @mixin perspective-viewer-gruvbox-dark--colors {
40
- --theme-bg0: #282828;
41
- --theme-bg1: #3c3836;
42
- --theme-bg2: #7c6f64;
43
-
44
- --theme-gray: #928374;
45
-
46
- --theme-fg0: #fbf1c7;
47
- --theme-fg1: #ebdbb2;
48
- --theme-fg2: #a89984;
49
-
50
- --theme-red: #cc241d;
51
- --theme-green: #98871a;
52
- --theme-yellow: #d79921;
53
- --theme-blue: #458588;
54
- --theme-purple: #b16286;
55
- --theme-aqua: #689d5a;
56
- --theme-orange: #d65d0e;
57
-
58
- --theme-alt-red: #fb4934;
59
- --theme-alt-green: #b8bb26;
60
- --theme-alt-yellow: #fabd2f;
61
- --theme-alt-blue: #83a598;
62
- --theme-alt-purple: #d3869b;
63
- --theme-alt-aqua: #8ec07c;
64
- --theme-alt-orange: #fe8019;
65
-
66
- color: var(--theme-fg0);
67
- background-color: var(--theme-bg0);
68
- --icon--color: var(--theme-fg1);
69
- --inactive--color: var(--theme-fg2);
70
- --inactive--border-color: var(--theme-bg2);
71
- --plugin--background: var(--theme-bg1);
72
- --status-icon-connected--color: var(--theme-aqua);
73
- --status-icon-initializing--color: var(--theme-yellow);
74
- --status-icon-error--color: var(--theme-red);
75
- }
76
-
77
- @mixin perspective-viewer-gruvbox-dark--datagrid {
78
- --rt-pos-cell--color: var(--theme-alt-blue);
79
- --rt-neg-cell--color: var(--theme-alt-red);
80
- }
81
-
82
- @mixin perspective-viewer-gruvbox-dark--d3fc {
83
- --d3fc-axis-ticks--color: var(--theme-fg1);
84
- --d3fc-gridline--color: var(--theme-bg2);
85
- --d3fc-series: var(--theme-blue);
86
- --d3fc-series-1: var(--theme-blue);
87
- --d3fc-series-2: var(--theme-red);
88
- --d3fc-series-3: var(--theme-green);
89
- --d3fc-series-4: var(--theme-purple);
90
- --d3fc-series-5: var(--theme-aqua);
91
- --d3fc-series-6: var(--theme-alt-blue);
92
- --d3fc-series-7: var(--theme-alt-red);
93
- --d3fc-series-8: var(--theme-alt-green);
94
- --d3fc-series-9: var(--theme-alt-purple);
95
- --d3fc-series-10: var(--theme-alt-aqua);
96
-
97
- --d3fc-negative--gradient: linear-gradient(
98
- var(--theme-bg0),
99
- var(--theme-red),
100
- var(--theme-alt-red)
101
- ) !important;
102
-
103
- --d3fc-positive--gradient: linear-gradient(
104
- var(--theme-bg0),
105
- var(--theme-blue),
106
- var(--theme-alt-blue)
107
- ) !important;
108
-
109
- --d3fc-full--gradient: linear-gradient(
110
- var(--theme-alt-red),
111
- var(--theme-red),
112
- var(--theme-bg0),
113
- var(--theme-blue),
114
- var(--theme-alt-blue)
115
- ) !important;
116
- }