@genspectrum/dashboard-components 0.19.6 → 0.19.8

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 (28) hide show
  1. package/README.md +24 -8
  2. package/custom-elements.json +4 -4
  3. package/dist/{LineageFilterChangedEvent-Cqa8Frcf.js → NumberRangeFilterChangedEvent-RZ8haPHq.js} +30 -5
  4. package/dist/NumberRangeFilterChangedEvent-RZ8haPHq.js.map +1 -0
  5. package/dist/assets/mutationOverTimeWorker-CBXsEsiT.js.map +1 -0
  6. package/dist/components.d.ts +35 -35
  7. package/dist/components.js +150 -66
  8. package/dist/components.js.map +1 -1
  9. package/dist/util.d.ts +43 -33
  10. package/dist/util.js +3 -1
  11. package/package.json +1 -1
  12. package/src/lapisApi/LineageDefinition.ts +9 -0
  13. package/src/lapisApi/lapisApi.ts +27 -0
  14. package/src/preact/lineageFilter/__mockData__/lineageDefinition.json +38118 -0
  15. package/src/preact/lineageFilter/fetchLineageAutocompleteList.spec.ts +264 -6
  16. package/src/preact/lineageFilter/fetchLineageAutocompleteList.ts +104 -7
  17. package/src/preact/lineageFilter/lineage-filter.stories.tsx +13 -1
  18. package/src/preact/lineageFilter/lineage-filter.tsx +21 -11
  19. package/src/preact/numberRangeFilter/NumberRangeFilterChangedEvent.ts +1 -1
  20. package/src/utilEntrypoint.ts +6 -1
  21. package/src/web-components/input/gs-lineage-filter.stories.ts +13 -1
  22. package/src/web-components/input/gs-number-range-filter.tsx +2 -2
  23. package/standalone-bundle/assets/mutationOverTimeWorker-CN4SJC7C.js.map +1 -0
  24. package/standalone-bundle/dashboard-components.js +2584 -2493
  25. package/standalone-bundle/dashboard-components.js.map +1 -1
  26. package/dist/LineageFilterChangedEvent-Cqa8Frcf.js.map +0 -1
  27. package/dist/assets/mutationOverTimeWorker-DQGh08AS.js.map +0 -1
  28. package/standalone-bundle/assets/mutationOverTimeWorker-DAf2_NiP.js.map +0 -1
package/dist/util.d.ts CHANGED
@@ -187,6 +187,8 @@ declare type LapisLocationFilter = default_2.infer<typeof lapisLocationFilterSch
187
187
 
188
188
  declare const lapisLocationFilterSchema: default_2.ZodRecord<default_2.ZodString, default_2.ZodUnion<[default_2.ZodString, default_2.ZodUndefined]>>;
189
189
 
190
+ export declare type LapisNumberFilter = Record<string, number | undefined>;
191
+
190
192
  declare type LapisTextFilter = Record<string, string | undefined>;
191
193
 
192
194
  export declare class LineageFilterChangedEvent extends CustomEvent<LapisLineageFilter> {
@@ -489,6 +491,10 @@ declare const namedLapisFilterSchema: default_2.ZodObject<{
489
491
 
490
492
  export declare type NumberRange = default_2.infer<typeof numberRangeSchema>;
491
493
 
494
+ export declare class NumberRangeFilterChangedEvent extends CustomEvent<LapisNumberFilter> {
495
+ constructor(detail: LapisNumberFilter);
496
+ }
497
+
492
498
  declare const numberRangeSchema: default_2.ZodObject<{
493
499
  min: default_2.ZodOptional<default_2.ZodNumber>;
494
500
  max: default_2.ZodOptional<default_2.ZodNumber>;
@@ -500,6 +506,10 @@ declare const numberRangeSchema: default_2.ZodObject<{
500
506
  max?: number | undefined;
501
507
  }>;
502
508
 
509
+ export declare class NumberRangeValueChangedEvent extends CustomEvent<NumberRange> {
510
+ constructor(detail: NumberRange);
511
+ }
512
+
503
513
  export declare type NumberSequencesOverTimeProps = default_2.infer<typeof numberSequencesOverTimePropsSchema>;
504
514
 
505
515
  declare const numberSequencesOverTimePropsSchema: default_2.ZodObject<{
@@ -944,7 +954,7 @@ declare global {
944
954
 
945
955
  declare global {
946
956
  interface HTMLElementTagNameMap {
947
- 'gs-mutations-component': MutationsComponent;
957
+ 'gs-mutation-comparison-component': MutationComparisonComponent;
948
958
  }
949
959
  }
950
960
 
@@ -952,7 +962,7 @@ declare global {
952
962
  declare global {
953
963
  namespace JSX {
954
964
  interface IntrinsicElements {
955
- 'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
965
+ 'gs-mutation-comparison-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
956
966
  }
957
967
  }
958
968
  }
@@ -960,7 +970,7 @@ declare global {
960
970
 
961
971
  declare global {
962
972
  interface HTMLElementTagNameMap {
963
- 'gs-mutation-comparison-component': MutationComparisonComponent;
973
+ 'gs-mutations-component': MutationsComponent;
964
974
  }
965
975
  }
966
976
 
@@ -968,7 +978,7 @@ declare global {
968
978
  declare global {
969
979
  namespace JSX {
970
980
  interface IntrinsicElements {
971
- 'gs-mutation-comparison-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
981
+ 'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
972
982
  }
973
983
  }
974
984
  }
@@ -1008,7 +1018,7 @@ declare global {
1008
1018
 
1009
1019
  declare global {
1010
1020
  interface HTMLElementTagNameMap {
1011
- 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
1021
+ 'gs-aggregate': AggregateComponent;
1012
1022
  }
1013
1023
  }
1014
1024
 
@@ -1016,7 +1026,7 @@ declare global {
1016
1026
  declare global {
1017
1027
  namespace JSX {
1018
1028
  interface IntrinsicElements {
1019
- 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1029
+ 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1020
1030
  }
1021
1031
  }
1022
1032
  }
@@ -1024,7 +1034,7 @@ declare global {
1024
1034
 
1025
1035
  declare global {
1026
1036
  interface HTMLElementTagNameMap {
1027
- 'gs-aggregate': AggregateComponent;
1037
+ 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
1028
1038
  }
1029
1039
  }
1030
1040
 
@@ -1032,7 +1042,7 @@ declare global {
1032
1042
  declare global {
1033
1043
  namespace JSX {
1034
1044
  interface IntrinsicElements {
1035
- 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1045
+ 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1036
1046
  }
1037
1047
  }
1038
1048
  }
@@ -1072,7 +1082,11 @@ declare global {
1072
1082
 
1073
1083
  declare global {
1074
1084
  interface HTMLElementTagNameMap {
1075
- 'gs-statistics': StatisticsComponent;
1085
+ 'gs-date-range-filter': DateRangeFilterComponent;
1086
+ }
1087
+ interface HTMLElementEventMap {
1088
+ [gsEventNames.dateRangeFilterChanged]: CustomEvent<Record<string, string>>;
1089
+ [gsEventNames.dateRangeOptionChanged]: DateRangeOptionChangedEvent;
1076
1090
  }
1077
1091
  }
1078
1092
 
@@ -1080,7 +1094,7 @@ declare global {
1080
1094
  declare global {
1081
1095
  namespace JSX {
1082
1096
  interface IntrinsicElements {
1083
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1097
+ 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1084
1098
  }
1085
1099
  }
1086
1100
  }
@@ -1088,7 +1102,10 @@ declare global {
1088
1102
 
1089
1103
  declare global {
1090
1104
  interface HTMLElementTagNameMap {
1091
- 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1105
+ 'gs-location-filter': LocationFilterComponent;
1106
+ }
1107
+ interface HTMLElementEventMap {
1108
+ [gsEventNames.locationChanged]: LocationChangedEvent;
1092
1109
  }
1093
1110
  }
1094
1111
 
@@ -1096,7 +1113,7 @@ declare global {
1096
1113
  declare global {
1097
1114
  namespace JSX {
1098
1115
  interface IntrinsicElements {
1099
- 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1116
+ 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1100
1117
  }
1101
1118
  }
1102
1119
  }
@@ -1104,11 +1121,7 @@ declare global {
1104
1121
 
1105
1122
  declare global {
1106
1123
  interface HTMLElementTagNameMap {
1107
- 'gs-date-range-filter': DateRangeFilterComponent;
1108
- }
1109
- interface HTMLElementEventMap {
1110
- [gsEventNames.dateRangeFilterChanged]: CustomEvent<Record<string, string>>;
1111
- [gsEventNames.dateRangeOptionChanged]: DateRangeOptionChangedEvent;
1124
+ 'gs-statistics': StatisticsComponent;
1112
1125
  }
1113
1126
  }
1114
1127
 
@@ -1116,7 +1129,7 @@ declare global {
1116
1129
  declare global {
1117
1130
  namespace JSX {
1118
1131
  interface IntrinsicElements {
1119
- 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1132
+ 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1120
1133
  }
1121
1134
  }
1122
1135
  }
@@ -1124,10 +1137,10 @@ declare global {
1124
1137
 
1125
1138
  declare global {
1126
1139
  interface HTMLElementTagNameMap {
1127
- 'gs-location-filter': LocationFilterComponent;
1140
+ 'gs-text-filter': TextFilterComponent;
1128
1141
  }
1129
1142
  interface HTMLElementEventMap {
1130
- [gsEventNames.locationChanged]: LocationChangedEvent;
1143
+ [gsEventNames.textFilterChanged]: TextFilterChangedEvent;
1131
1144
  }
1132
1145
  }
1133
1146
 
@@ -1135,7 +1148,7 @@ declare global {
1135
1148
  declare global {
1136
1149
  namespace JSX {
1137
1150
  interface IntrinsicElements {
1138
- 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1151
+ 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1139
1152
  }
1140
1153
  }
1141
1154
  }
@@ -1143,10 +1156,10 @@ declare global {
1143
1156
 
1144
1157
  declare global {
1145
1158
  interface HTMLElementTagNameMap {
1146
- 'gs-text-filter': TextFilterComponent;
1159
+ 'gs-lineage-filter': LineageFilterComponent;
1147
1160
  }
1148
1161
  interface HTMLElementEventMap {
1149
- [gsEventNames.textFilterChanged]: TextFilterChangedEvent;
1162
+ [gsEventNames.lineageFilterChanged]: LineageFilterChangedEvent;
1150
1163
  }
1151
1164
  }
1152
1165
 
@@ -1154,7 +1167,7 @@ declare global {
1154
1167
  declare global {
1155
1168
  namespace JSX {
1156
1169
  interface IntrinsicElements {
1157
- 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1170
+ 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1158
1171
  }
1159
1172
  }
1160
1173
  }
@@ -1181,10 +1194,11 @@ declare global {
1181
1194
 
1182
1195
  declare global {
1183
1196
  interface HTMLElementTagNameMap {
1184
- 'gs-lineage-filter': LineageFilterComponent;
1197
+ 'gs-number-range-filter': NumberRangeFilterComponent;
1185
1198
  }
1186
1199
  interface HTMLElementEventMap {
1187
- [gsEventNames.lineageFilterChanged]: LineageFilterChangedEvent;
1200
+ [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1201
+ [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
1188
1202
  }
1189
1203
  }
1190
1204
 
@@ -1192,7 +1206,7 @@ declare global {
1192
1206
  declare global {
1193
1207
  namespace JSX {
1194
1208
  interface IntrinsicElements {
1195
- 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1209
+ 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1196
1210
  }
1197
1211
  }
1198
1212
  }
@@ -1200,11 +1214,7 @@ declare global {
1200
1214
 
1201
1215
  declare global {
1202
1216
  interface HTMLElementTagNameMap {
1203
- 'gs-number-range-filter': NumberRangeFilterComponent;
1204
- }
1205
- interface HTMLElementEventMap {
1206
- [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1207
- [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
1217
+ 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1208
1218
  }
1209
1219
  }
1210
1220
 
@@ -1212,7 +1222,7 @@ declare global {
1212
1222
  declare global {
1213
1223
  namespace JSX {
1214
1224
  interface IntrinsicElements {
1215
- 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1225
+ 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1216
1226
  }
1217
1227
  }
1218
1228
  }
package/dist/util.js CHANGED
@@ -1,8 +1,10 @@
1
- import { D, a, L, T, d, g, v } from "./LineageFilterChangedEvent-Cqa8Frcf.js";
1
+ import { D, a, L, N, b, T, d, g, v } from "./NumberRangeFilterChangedEvent-RZ8haPHq.js";
2
2
  export {
3
3
  D as DateRangeOptionChangedEvent,
4
4
  a as LineageFilterChangedEvent,
5
5
  L as LocationChangedEvent,
6
+ N as NumberRangeFilterChangedEvent,
7
+ b as NumberRangeValueChangedEvent,
6
8
  T as TextFilterChangedEvent,
7
9
  d as dateRangeOptionPresets,
8
10
  g as gsEventNames,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspectrum/dashboard-components",
3
- "version": "0.19.6",
3
+ "version": "0.19.8",
4
4
  "description": "GenSpectrum web components for building dashboards",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
@@ -0,0 +1,9 @@
1
+ import z from 'zod';
2
+
3
+ const lineage = z.object({
4
+ parents: z.array(z.string()).optional(),
5
+ aliases: z.array(z.string()),
6
+ });
7
+
8
+ export const lineageDefinitionResponseSchema = z.record(lineage);
9
+ export type LineageDefinitionResponse = z.infer<typeof lineageDefinitionResponseSchema>;
@@ -11,6 +11,7 @@ import {
11
11
  type ProblemDetail,
12
12
  } from './lapisTypes';
13
13
  import { type SequenceType } from '../types';
14
+ import { lineageDefinitionResponseSchema } from './LineageDefinition';
14
15
 
15
16
  export class UnknownLapisError extends Error {
16
17
  constructor(
@@ -127,6 +128,30 @@ export async function fetchReferenceGenome(lapisUrl: string, signal?: AbortSigna
127
128
  return referenceGenomeResponse.parse(await response.json());
128
129
  }
129
130
 
131
+ export async function fetchLineageDefinition({
132
+ lapisUrl,
133
+ lapisField,
134
+ signal,
135
+ }: {
136
+ lapisUrl: string;
137
+ lapisField: string;
138
+ signal?: AbortSignal;
139
+ }) {
140
+ const response = await callLapis(
141
+ lineageDefinitionEndpoint(lapisUrl, lapisField),
142
+ {
143
+ method: 'GET',
144
+ headers: {
145
+ 'Content-Type': 'application/json',
146
+ },
147
+ signal,
148
+ },
149
+ `${lapisField} lineage definition`,
150
+ );
151
+
152
+ return lineageDefinitionResponseSchema.parse(await response.json());
153
+ }
154
+
130
155
  async function callLapis(
131
156
  input: Parameters<typeof fetch>[0],
132
157
  init: Parameters<typeof fetch>[1],
@@ -191,3 +216,5 @@ export const substitutionsOrDeletionsEndpoint = (lapisUrl: string, sequenceType:
191
216
  : `${lapisUrl}/sample/nucleotideMutations`;
192
217
  };
193
218
  export const referenceGenomeEndpoint = (lapisUrl: string) => `${lapisUrl}/sample/referenceGenome`;
219
+ export const lineageDefinitionEndpoint = (lapisUrl: string, lapisField: string) =>
220
+ `${lapisUrl}/sample/lineageDefinition/${lapisField}`;