@genspectrum/dashboard-components 1.10.1 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/util.d.ts CHANGED
@@ -956,6 +956,22 @@ declare global {
956
956
  }
957
957
 
958
958
 
959
+ declare global {
960
+ interface HTMLElementTagNameMap {
961
+ 'gs-genome-data-viewer': GenomeDataViewerComponent;
962
+ }
963
+ }
964
+
965
+
966
+ declare global {
967
+ namespace JSX {
968
+ interface IntrinsicElements {
969
+ 'gs-genome-data-viewer': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
970
+ }
971
+ }
972
+ }
973
+
974
+
959
975
  declare global {
960
976
  interface HTMLElementTagNameMap {
961
977
  'gs-mutations': MutationsComponent;
@@ -1070,7 +1086,7 @@ declare global {
1070
1086
 
1071
1087
  declare global {
1072
1088
  interface HTMLElementTagNameMap {
1073
- 'gs-genome-data-viewer': GenomeDataViewerComponent;
1089
+ 'gs-statistics': StatisticsComponent;
1074
1090
  }
1075
1091
  }
1076
1092
 
@@ -1078,7 +1094,7 @@ declare global {
1078
1094
  declare global {
1079
1095
  namespace JSX {
1080
1096
  interface IntrinsicElements {
1081
- 'gs-genome-data-viewer': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1097
+ 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1082
1098
  }
1083
1099
  }
1084
1100
  }
@@ -1086,7 +1102,7 @@ declare global {
1086
1102
 
1087
1103
  declare global {
1088
1104
  interface HTMLElementTagNameMap {
1089
- 'gs-statistics': StatisticsComponent;
1105
+ 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1090
1106
  }
1091
1107
  }
1092
1108
 
@@ -1094,7 +1110,7 @@ declare global {
1094
1110
  declare global {
1095
1111
  namespace JSX {
1096
1112
  interface IntrinsicElements {
1097
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1113
+ 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1098
1114
  }
1099
1115
  }
1100
1116
  }
@@ -1177,26 +1193,6 @@ declare global {
1177
1193
  }
1178
1194
 
1179
1195
 
1180
- declare global {
1181
- interface HTMLElementTagNameMap {
1182
- 'gs-number-range-filter': NumberRangeFilterComponent;
1183
- }
1184
- interface HTMLElementEventMap {
1185
- [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1186
- [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
1187
- }
1188
- }
1189
-
1190
-
1191
- declare global {
1192
- namespace JSX {
1193
- interface IntrinsicElements {
1194
- 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1195
- }
1196
- }
1197
- }
1198
-
1199
-
1200
1196
  declare global {
1201
1197
  interface HTMLElementTagNameMap {
1202
1198
  'gs-lineage-filter': LineageFilterComponent;
@@ -1219,7 +1215,11 @@ declare global {
1219
1215
 
1220
1216
  declare global {
1221
1217
  interface HTMLElementTagNameMap {
1222
- 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1218
+ 'gs-number-range-filter': NumberRangeFilterComponent;
1219
+ }
1220
+ interface HTMLElementEventMap {
1221
+ [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1222
+ [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
1223
1223
  }
1224
1224
  }
1225
1225
 
@@ -1227,7 +1227,7 @@ declare global {
1227
1227
  declare global {
1228
1228
  namespace JSX {
1229
1229
  interface IntrinsicElements {
1230
- 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1230
+ 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1231
1231
  }
1232
1232
  }
1233
1233
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspectrum/dashboard-components",
3
- "version": "1.10.1",
3
+ "version": "1.10.2",
4
4
  "description": "GenSpectrum web components for building dashboards",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
@@ -49,7 +49,22 @@ export class LineageFilterComponent extends PreactLitAdapter {
49
49
  * Can be a string for single select mode or an array of strings (or comma-separated string) for multi-select mode.
50
50
  * Examples: "B.1.1.7" or ["B.1.1.7", "BA.5"] or "B.1.1.7,BA.5"
51
51
  */
52
- @property()
52
+ @property({
53
+ converter: (value) => {
54
+ if (value === null) {
55
+ return value;
56
+ }
57
+ try {
58
+ const parsed = JSON.parse(value) as unknown;
59
+ if (Array.isArray(parsed) && parsed.every((v) => typeof v === 'string')) {
60
+ return parsed;
61
+ }
62
+ return value;
63
+ } catch {
64
+ return value;
65
+ }
66
+ },
67
+ })
53
68
  value: string | string[] = '';
54
69
 
55
70
  /**
@@ -103,33 +118,6 @@ export class LineageFilterComponent extends PreactLitAdapter {
103
118
  @property({ type: Boolean })
104
119
  hideCounts: boolean | undefined = false;
105
120
 
106
- override updated(changedProps: Map<string, unknown>) {
107
- if (changedProps.has('value') || changedProps.has('multiSelect')) {
108
- if (this.multiSelect) {
109
- if (typeof this.value === 'string') {
110
- let parsed: unknown;
111
- try {
112
- parsed = JSON.parse(this.value);
113
- } catch {
114
- parsed = this.value.split(',').map((s) => s.trim());
115
- }
116
-
117
- // type guard
118
- if (Array.isArray(parsed) && parsed.every((v) => typeof v === 'string')) {
119
- this.value = parsed;
120
- } else {
121
- this.value = [];
122
- }
123
- }
124
- } else {
125
- // single select: ensure value is a string
126
- if (Array.isArray(this.value)) {
127
- this.value = this.value[0] ?? '';
128
- }
129
- }
130
- }
131
- }
132
-
133
121
  override render() {
134
122
  return (
135
123
  <LineageFilter
@@ -40199,21 +40199,6 @@ let so = class extends zn {
40199
40199
  constructor() {
40200
40200
  super(...arguments), this.value = "", this.lapisField = "", this.multiSelect = !1, this.lapisFilter = {}, this.placeholderText = void 0, this.width = "100%", this.hideCounts = !1;
40201
40201
  }
40202
- updated(n) {
40203
- if (n.has("value") || n.has("multiSelect"))
40204
- if (this.multiSelect) {
40205
- if (typeof this.value == "string") {
40206
- let e;
40207
- try {
40208
- e = JSON.parse(this.value);
40209
- } catch {
40210
- e = this.value.split(",").map((t) => t.trim());
40211
- }
40212
- Array.isArray(e) && e.every((t) => typeof t == "string") ? this.value = e : this.value = [];
40213
- }
40214
- } else
40215
- Array.isArray(this.value) && (this.value = this.value[0] ?? "");
40216
- }
40217
40202
  render() {
40218
40203
  return /* @__PURE__ */ v(
40219
40204
  vB,
@@ -40230,7 +40215,18 @@ let so = class extends zn {
40230
40215
  }
40231
40216
  };
40232
40217
  is([
40233
- U()
40218
+ U({
40219
+ converter: (n) => {
40220
+ if (n === null)
40221
+ return n;
40222
+ try {
40223
+ const e = JSON.parse(n);
40224
+ return Array.isArray(e) && e.every((t) => typeof t == "string") ? e : n;
40225
+ } catch {
40226
+ return n;
40227
+ }
40228
+ }
40229
+ })
40234
40230
  ], so.prototype, "value", 2);
40235
40231
  is([
40236
40232
  U()