@perspective-dev/viewer 5.3.0 → 5.3.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 (100) hide show
  1. package/dist/cdn/perspective-viewer.js +8 -8
  2. package/dist/cdn/perspective-viewer.js.map +3 -3
  3. package/dist/css/blueprint.css +1 -0
  4. package/dist/css/botanical.css +1 -1
  5. package/dist/css/dracula.css +1 -1
  6. package/dist/css/eggplant.css +1 -0
  7. package/dist/css/gruvbox-dark.css +1 -1
  8. package/dist/css/gruvbox.css +1 -1
  9. package/dist/css/icons.css +1 -1
  10. package/dist/css/intl/de.css +1 -1
  11. package/dist/css/intl/es.css +1 -1
  12. package/dist/css/intl/fr.css +1 -1
  13. package/dist/css/intl/ja.css +1 -1
  14. package/dist/css/intl/pt.css +1 -1
  15. package/dist/css/intl/zh.css +1 -1
  16. package/dist/css/intl.css +1 -1
  17. package/dist/css/ledger.css +1 -0
  18. package/dist/css/monokai.css +1 -1
  19. package/dist/css/nord.css +1 -0
  20. package/dist/css/phosphor.css +1 -1
  21. package/dist/css/pro-dark.css +1 -1
  22. package/dist/css/pro.css +1 -1
  23. package/dist/css/solarized-dark.css +1 -1
  24. package/dist/css/solarized.css +1 -1
  25. package/dist/css/themes.css +1 -1
  26. package/dist/css/vaporwave.css +1 -1
  27. package/dist/css/velvet.css +1 -0
  28. package/dist/docs/perspective-docs.json +1 -1
  29. package/dist/esm/column-format.d.ts +16 -3
  30. package/dist/esm/perspective-viewer.inline.js +9 -9
  31. package/dist/esm/perspective-viewer.inline.js.map +3 -3
  32. package/dist/esm/perspective-viewer.js +8 -8
  33. package/dist/esm/perspective-viewer.js.map +3 -3
  34. package/dist/wasm/perspective-viewer.d.ts +16 -16
  35. package/dist/wasm/perspective-viewer.js +107 -103
  36. package/dist/wasm/perspective-viewer.wasm +0 -0
  37. package/dist/wasm/perspective-viewer.wasm.d.ts +16 -16
  38. package/package.json +1 -1
  39. package/src/css/column-settings-panel.css +19 -0
  40. package/src/css/column-style.css +82 -0
  41. package/src/css/containers/tabs.css +13 -3
  42. package/src/css/dom/select.css +19 -8
  43. package/src/css/plugin-selector.css +1 -0
  44. package/src/css/plugin-settings-panel.css +72 -0
  45. package/src/css/viewer.css +0 -5
  46. package/src/rust/agent/tools.rs +5 -2
  47. package/src/rust/components/column_settings_sidebar/style_tab.rs +296 -237
  48. package/src/rust/components/containers/control_group.rs +91 -0
  49. package/src/rust/components/containers/mod.rs +1 -0
  50. package/src/rust/components/containers/select.rs +8 -2
  51. package/src/rust/components/datetime_column_style/simple.rs +15 -4
  52. package/src/rust/components/datetime_column_style.rs +50 -10
  53. package/src/rust/components/plugin_tab.rs +125 -87
  54. package/src/rust/components/settings_panel.rs +1 -0
  55. package/src/rust/components/status_bar.rs +0 -1
  56. package/src/rust/components/style_controls/number_string_format/digits_section.rs +22 -10
  57. package/src/rust/components/style_controls/number_string_format/misc_section.rs +6 -2
  58. package/src/rust/components/style_controls/number_string_format/style_section.rs +1 -0
  59. package/src/rust/components/style_controls/number_string_format/types.rs +24 -0
  60. package/src/rust/components/style_controls/number_string_format.rs +37 -14
  61. package/src/rust/config/column_config_schema.rs +358 -27
  62. package/src/rust/config/datetime_column_style.rs +4 -21
  63. package/src/rust/config/number_string_format.rs +211 -18
  64. package/src/rust/presentation.rs +17 -0
  65. package/src/rust/queries/plugin_column_styles.rs +2 -2
  66. package/src/rust/renderer/dispatch.rs +34 -8
  67. package/src/rust/renderer/plugin_config.rs +55 -8
  68. package/src/themes/blueprint.css +190 -0
  69. package/src/themes/botanical.css +4 -17
  70. package/src/themes/defaults.css +2 -120
  71. package/src/themes/dracula.css +2 -14
  72. package/src/themes/eggplant.css +189 -0
  73. package/src/themes/gruvbox-dark.css +3 -15
  74. package/src/themes/gruvbox.css +1 -1
  75. package/src/themes/icons.css +1 -2
  76. package/src/themes/intl/de.css +23 -1
  77. package/src/themes/intl/es.css +23 -1
  78. package/src/themes/intl/fr.css +23 -1
  79. package/src/themes/intl/ja.css +23 -1
  80. package/src/themes/intl/pt.css +23 -1
  81. package/src/themes/intl/zh.css +23 -1
  82. package/src/themes/intl.css +26 -4
  83. package/src/themes/ledger.css +195 -0
  84. package/src/themes/monokai.css +2 -14
  85. package/src/themes/nord.css +186 -0
  86. package/src/themes/phosphor.css +2 -14
  87. package/src/themes/pro-dark.css +2 -16
  88. package/src/themes/pro.css +118 -0
  89. package/src/themes/solarized-dark.css +2 -16
  90. package/src/themes/themes.css +10 -5
  91. package/src/themes/vaporwave.css +2 -14
  92. package/src/themes/velvet.css +192 -0
  93. package/src/ts/column-format.ts +52 -2
  94. package/src/svg/dropdown-selector-light.svg +0 -3
  95. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-87bd21b215d0631a}/inline0.js +0 -0
  96. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-87bd21b215d0631a}/inline1.js +0 -0
  97. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-87bd21b215d0631a}/inline2.js +0 -0
  98. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-87bd21b215d0631a}/inline3.js +0 -0
  99. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-87bd21b215d0631a}/inline4.js +0 -0
  100. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-87bd21b215d0631a}/inline5.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perspective-dev/viewer",
3
- "version": "5.3.0",
3
+ "version": "5.3.1",
4
4
  "description": "The `<perspective-viewer>` Custom Element, frontend for Perspective",
5
5
  "keywords": [
6
6
  "perspective",
@@ -217,6 +217,10 @@
217
217
  content: var(--psp-label--notation--content, "Notation");
218
218
  }
219
219
 
220
+ label#compact-display-label:before {
221
+ content: var(--psp-label--compact-display--content, "Compact Display");
222
+ }
223
+
220
224
  label#use-grouping-label:before {
221
225
  content: var(--psp-label--use-grouping--content, "Use Grouping");
222
226
  }
@@ -237,6 +241,21 @@
237
241
  content: var(--psp-label--bg-gradient--content, "Max Value");
238
242
  }
239
243
 
244
+ label#color-group-label:before {
245
+ content: var(--psp-label--group-color--content, "Color");
246
+ }
247
+
248
+ label#format-group-label:before {
249
+ content: var(--psp-label--group-format--content, "Format");
250
+ }
251
+
252
+ label#column_size_override-label:before {
253
+ content: var(
254
+ --psp-label--column-size-override--content,
255
+ "Column Width"
256
+ );
257
+ }
258
+
240
259
  label#rounding-priority-label:before {
241
260
  content: var(
242
261
  --psp-label--rounding-priority--content,
@@ -17,6 +17,8 @@
17
17
  #window-editor-container {
18
18
  outline: none;
19
19
  user-select: none;
20
+ margin-right: -6px;
21
+ padding-right: 6px;
20
22
 
21
23
  .bool-field-desc {
22
24
  font-size: 10px;
@@ -216,6 +218,86 @@
216
218
  padding: 0px 0;
217
219
  }
218
220
 
221
+ details.control-group {
222
+ margin: 0 -8px 0 -8px;
223
+ padding: 0 8px 0 8px;
224
+
225
+ &:not([open]):hover {
226
+ color: var(--psp--background-color);
227
+ background-color: var(--psp--color);
228
+ border-color: var(--psp--color) !important;
229
+ }
230
+
231
+ &[open] summary:hover {
232
+ color: var(--psp--color);
233
+ }
234
+
235
+ &:not(:first-child) {
236
+ border-top: 1px solid var(--psp-inactive--color);
237
+ }
238
+
239
+ &:last-of-type {
240
+ border-bottom: 1px solid var(--psp-inactive--color);
241
+ }
242
+
243
+ &:first-child {
244
+ margin-top: -12px;
245
+ }
246
+
247
+ > summary {
248
+ display: flex;
249
+ align-items: center;
250
+ cursor: pointer;
251
+ list-style: none;
252
+ margin: 0;
253
+ padding-right: 6px;
254
+ outline: none;
255
+
256
+ &::-webkit-details-marker {
257
+ display: none;
258
+ }
259
+
260
+ > span.control-group-chevron {
261
+ flex: 0 0 8px;
262
+ height: 4px;
263
+ background-color: currentColor;
264
+ mask-image: var(--psp-icon--select-arrow--mask-image);
265
+ -webkit-mask-image: var(
266
+ --psp-icon--select-arrow--mask-image
267
+ );
268
+ -webkit-mask-repeat: no-repeat;
269
+ mask-repeat: no-repeat;
270
+ mask-size: cover;
271
+ -webkit-mask-position: center;
272
+ mask-position: center;
273
+ transform: rotate(-90deg);
274
+ margin-right: 2px;
275
+ }
276
+
277
+ label {
278
+ padding-top: 8px;
279
+ padding-bottom: 8px;
280
+ pointer-events: none;
281
+ flex: 1 1 auto;
282
+ width: auto;
283
+ margin: 0 0 0 6px;
284
+ }
285
+ }
286
+
287
+ &[open] > summary label {
288
+ padding-bottom: 8px;
289
+ }
290
+
291
+ &[open] > summary {
292
+ color: var(--psp-inactive--color);
293
+ margin-bottom: 2px;
294
+ }
295
+
296
+ &[open] > summary > span.control-group-chevron {
297
+ transform: none;
298
+ }
299
+ }
300
+
219
301
  .color-gradient-container {
220
302
  display: flex;
221
303
  align-items: center;
@@ -13,13 +13,23 @@
13
13
 
14
14
  :host {
15
15
  #format-tab {
16
- overflow: scroll;
16
+ overflow: auto;
17
+ scrollbar-gutter: stable;
18
+ }
19
+
20
+ #style-tab {
21
+ margin-right: -6px;
22
+ #column-style-container {
23
+ margin-right: 6px;
24
+ }
17
25
  }
18
26
 
19
27
  #plugin-tab {
20
28
  overflow-x: hidden;
21
- overflow-y: scroll;
22
- padding: 12px 0 0 0;
29
+ overflow-y: auto;
30
+ scrollbar-gutter: stable;
31
+ padding: 12px 0 0 8px;
32
+ margin-left: -8px;
23
33
  }
24
34
 
25
35
  .tab-content {
@@ -33,6 +33,25 @@
33
33
  bottom: 0px;
34
34
  cursor: pointer;
35
35
  }
36
+
37
+ .select-arrow {
38
+ position: absolute;
39
+ pointer-events: none;
40
+ top: 50%;
41
+ right: 6px;
42
+ width: 6px;
43
+ height: 4px;
44
+ transform: translateY(-50%);
45
+ background-color: currentColor;
46
+ -webkit-mask-image: var(--psp-icon--select-arrow--mask-image);
47
+ mask-image: var(--psp-icon--select-arrow--mask-image);
48
+ -webkit-mask-repeat: no-repeat;
49
+ mask-repeat: no-repeat;
50
+ -webkit-mask-position: center;
51
+ mask-position: center;
52
+ -webkit-mask-size: contain;
53
+ mask-size: contain;
54
+ }
36
55
  }
37
56
 
38
57
  select {
@@ -46,14 +65,6 @@
46
65
  /* font-size: 10px; */
47
66
  font-family: inherit;
48
67
  background-color: transparent;
49
- background-image: var(--psp-icon--select-arrow--mask-image);
50
- background-position: right 2px center;
51
- background-repeat: no-repeat;
52
-
53
- &.invert:focus-within,
54
- &.invert:hover {
55
- background-image: var(--psp-icon--select-arrow-hover--mask-image);
56
- }
57
68
 
58
69
  option {
59
70
  color: var(--psp--color, inherit);
@@ -43,6 +43,7 @@
43
43
 
44
44
  .plugin-selector-options {
45
45
  overflow-y: auto;
46
+ height: 100%;
46
47
  }
47
48
 
48
49
  &.open {
@@ -96,4 +96,76 @@
96
96
  label#map_tile_alpha-label:before {
97
97
  content: var(--psp-label--map-tile-alpha--content);
98
98
  }
99
+
100
+ label#numeric_axes-label:before {
101
+ content: var(--psp-label--numeric-axes--content);
102
+ }
103
+
104
+ label#legend_mode-label:before {
105
+ content: var(--psp-label--legend-mode--content);
106
+ }
107
+
108
+ label#legend_size_mode-label:before {
109
+ content: var(--psp-label--legend-size-mode--content);
110
+ }
111
+
112
+ label#legend_width_px-label:before {
113
+ content: var(--psp-label--legend-width-px--content);
114
+ }
115
+
116
+ label#legend_height_px-label:before {
117
+ content: var(--psp-label--legend-height-px--content);
118
+ }
119
+
120
+ label#legend_anchor-label:before {
121
+ content: var(--psp-label--legend-anchor--content);
122
+ }
123
+
124
+ label#legend_x-label:before {
125
+ content: var(--psp-label--legend-x--content);
126
+ }
127
+
128
+ label#legend_y-label:before {
129
+ content: var(--psp-label--legend-y--content);
130
+ }
131
+
132
+ label#legend_opacity-label:before {
133
+ content: var(--psp-label--legend-opacity--content);
134
+ }
135
+
136
+ label#tooltip_max_column_px-label:before {
137
+ content: var(--psp-label--tooltip-max-column-px--content);
138
+ }
139
+
140
+ label#tooltip_opacity-label:before {
141
+ content: var(--psp-label--tooltip-opacity--content);
142
+ }
143
+
144
+ label#axes-group-label:before {
145
+ content: var(--psp-label--group-axes--content, "Axes");
146
+ }
147
+
148
+ label#facets-group-label:before {
149
+ content: var(--psp-label--group-facets--content, "Facets");
150
+ }
151
+
152
+ label#glyph-group-label:before {
153
+ content: var(--psp-label--group-glyph--content, "Glyphs");
154
+ }
155
+
156
+ label#density-group-label:before {
157
+ content: var(--psp-label--group-density--content, "Density");
158
+ }
159
+
160
+ label#basemap-group-label:before {
161
+ content: var(--psp-label--group-basemap--content, "Basemap");
162
+ }
163
+
164
+ label#legend-group-label:before {
165
+ content: var(--psp-label--group-legend--content, "Legend");
166
+ }
167
+
168
+ label#tooltip-group-label:before {
169
+ content: var(--psp-label--group-tooltip--content, "Tooltips");
170
+ }
99
171
  }
@@ -125,11 +125,6 @@
125
125
  0 12.5px 0 -11.5px var(--psp-inactive--border-color);
126
126
  }
127
127
 
128
- :host input[type="number"]::-webkit-inner-spin-button {
129
- transform: scale(1.5) translateX(-5px);
130
- filter: var(--psp-input--filter);
131
- }
132
-
133
128
  :host .sidebar_close_button {
134
129
  position: absolute;
135
130
  top: 0;
@@ -679,7 +679,7 @@ fn control_schema_entries(spec: &ControlSpec) -> Vec<(String, Value)> {
679
679
  }),
680
680
  )]
681
681
  },
682
- ControlSpec::DatetimeFormat => vec![(
682
+ ControlSpec::DatetimeFormat { .. } => vec![(
683
683
  "date_format".to_owned(),
684
684
  json!({ "description": "Datetime display format: a style preset or custom format fields" }),
685
685
  )],
@@ -701,7 +701,7 @@ fn control_schema_entries(spec: &ControlSpec) -> Vec<(String, Value)> {
701
701
  "symbols".to_owned(),
702
702
  json!({ "type": "object", "description": "Map of column values to symbol names" }),
703
703
  )],
704
- ControlSpec::NumberFormat => vec![(
704
+ ControlSpec::NumberFormat { .. } => vec![(
705
705
  "number_format".to_owned(),
706
706
  json!({ "type": "object", "description": "Intl.NumberFormat-style options" }),
707
707
  )],
@@ -709,6 +709,9 @@ fn control_schema_entries(spec: &ControlSpec) -> Vec<(String, Value)> {
709
709
  "aggregate_depth".to_owned(),
710
710
  json!({ "type": "integer", "description": "Group-by rollup depth override" }),
711
711
  )],
712
+ ControlSpec::Group { fields, .. } => {
713
+ fields.iter().flat_map(control_schema_entries).collect()
714
+ },
712
715
  }
713
716
  }
714
717