@genspectrum/dashboard-components 1.14.2 → 1.16.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 (36) hide show
  1. package/custom-elements.json +7 -7
  2. package/dist/components.d.ts +68 -67
  3. package/dist/components.js +67 -13
  4. package/dist/components.js.map +1 -1
  5. package/dist/util.d.ts +83 -65
  6. package/package.json +2 -9
  7. package/src/lapisApi/lapisTypes.ts +1 -1
  8. package/src/preact/mutationsOverTime/getFilteredMutationsOverTimeData.ts +3 -1
  9. package/src/preact/queriesOverTime/queries-over-time-row-label-tooltip.stories.tsx +58 -0
  10. package/src/preact/queriesOverTime/queries-over-time-row-label-tooltip.tsx +24 -0
  11. package/src/preact/queriesOverTime/queries-over-time.stories.tsx +24 -0
  12. package/src/preact/queriesOverTime/queries-over-time.tsx +63 -14
  13. package/src/utilEntrypoint.ts +1 -1
  14. package/src/web-components/gs-app.ts +2 -3
  15. package/src/web-components/input/gs-date-range-filter.tsx +2 -3
  16. package/src/web-components/input/gs-lineage-filter.tsx +2 -3
  17. package/src/web-components/input/gs-location-filter.tsx +2 -3
  18. package/src/web-components/input/gs-mutation-filter.tsx +3 -4
  19. package/src/web-components/input/gs-number-range-filter.tsx +2 -3
  20. package/src/web-components/input/gs-text-filter.tsx +2 -3
  21. package/src/web-components/mutation-annotations-context.ts +3 -1
  22. package/src/web-components/visualization/gs-aggregate.tsx +2 -3
  23. package/src/web-components/visualization/gs-genome-data-viewer.tsx +2 -3
  24. package/src/web-components/visualization/gs-mutation-comparison.tsx +2 -3
  25. package/src/web-components/visualization/gs-mutations-over-time.tsx +2 -3
  26. package/src/web-components/visualization/gs-mutations.tsx +7 -8
  27. package/src/web-components/visualization/gs-number-sequences-over-time.tsx +2 -3
  28. package/src/web-components/visualization/gs-prevalence-over-time.tsx +2 -3
  29. package/src/web-components/visualization/gs-queries-over-time.stories.ts +4 -0
  30. package/src/web-components/visualization/gs-queries-over-time.tsx +5 -4
  31. package/src/web-components/visualization/gs-relative-growth-advantage.tsx +2 -3
  32. package/src/web-components/visualization/gs-sequences-by-location.tsx +2 -3
  33. package/src/web-components/visualization/gs-statistics.tsx +2 -3
  34. package/src/web-components/wastewaterVisualization/gs-wastewater-mutations-over-time.tsx +2 -3
  35. package/standalone-bundle/dashboard-components.js +3573 -3527
  36. package/standalone-bundle/dashboard-components.js.map +1 -1
@@ -2,7 +2,6 @@ import { provide } from '@lit/context';
2
2
  import { Task } from '@lit/task';
3
3
  import { html, LitElement } from 'lit';
4
4
  import { customElement, property } from 'lit/decorators.js';
5
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
6
5
  import z from 'zod';
7
6
 
8
7
  import { lapisContext } from './lapis-context';
@@ -129,9 +128,9 @@ declare global {
129
128
 
130
129
  declare global {
131
130
  // eslint-disable-next-line @typescript-eslint/no-namespace
132
- namespace JSX {
131
+ namespace React.JSX {
133
132
  interface IntrinsicElements {
134
- 'gs-app': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
133
+ 'gs-app': AppComponent;
135
134
  }
136
135
  }
137
136
  }
@@ -1,7 +1,6 @@
1
1
  import flatpickrStyle from 'flatpickr/dist/flatpickr.css?inline';
2
2
  import { unsafeCSS } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
5
4
 
6
5
  import { DateRangeFilter, type DateRangeFilterProps } from '../../preact/dateRangeFilter/date-range-filter';
7
6
  import { type DateRangeOptionChangedEvent } from '../../preact/dateRangeFilter/dateRangeOption';
@@ -144,9 +143,9 @@ declare global {
144
143
 
145
144
  declare global {
146
145
  // eslint-disable-next-line @typescript-eslint/no-namespace
147
- namespace JSX {
146
+ namespace React.JSX {
148
147
  interface IntrinsicElements {
149
- 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
148
+ 'gs-date-range-filter': DateRangeFilterComponent;
150
149
  }
151
150
  }
152
151
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import {
5
4
  type LineageFilterChangedEvent,
@@ -146,9 +145,9 @@ declare global {
146
145
 
147
146
  declare global {
148
147
  // eslint-disable-next-line @typescript-eslint/no-namespace
149
- namespace JSX {
148
+ namespace React.JSX {
150
149
  interface IntrinsicElements {
151
- 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
150
+ 'gs-lineage-filter': LineageFilterComponent;
152
151
  }
153
152
  }
154
153
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { type LocationChangedEvent } from '../../preact/locationFilter/LocationChangedEvent';
5
4
  import { LocationFilter, type LocationFilterProps } from '../../preact/locationFilter/location-filter';
@@ -110,9 +109,9 @@ declare global {
110
109
 
111
110
  declare global {
112
111
  // eslint-disable-next-line @typescript-eslint/no-namespace
113
- namespace JSX {
112
+ namespace React.JSX {
114
113
  interface IntrinsicElements {
115
- 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
114
+ 'gs-location-filter': LocationFilterComponent;
116
115
  }
117
116
  }
118
117
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { ReferenceGenomesAwaiter } from '../../preact/components/ReferenceGenomesAwaiter';
5
4
  import { MutationFilter, type MutationFilterProps } from '../../preact/mutationFilter/mutation-filter';
@@ -67,7 +66,7 @@ export class MutationFilterComponent extends PreactLitAdapter {
67
66
  * All values provided must be valid mutations or insertions.
68
67
  * Invalid values will be ignored.
69
68
  */
70
- @property({type: Object})
69
+ @property({ type: Object })
71
70
  initialValue:
72
71
  {
73
72
  nucleotideMutations: string[];
@@ -125,9 +124,9 @@ declare global {
125
124
 
126
125
  declare global {
127
126
  // eslint-disable-next-line @typescript-eslint/no-namespace
128
- namespace JSX {
127
+ namespace React.JSX {
129
128
  interface IntrinsicElements {
130
- 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
129
+ 'gs-mutation-filter': MutationFilterComponent;
131
130
  }
132
131
  }
133
132
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import {
5
4
  type NumberRangeFilterChangedEvent,
@@ -140,9 +139,9 @@ declare global {
140
139
 
141
140
  declare global {
142
141
  // eslint-disable-next-line @typescript-eslint/no-namespace
143
- namespace JSX {
142
+ namespace React.JSX {
144
143
  interface IntrinsicElements {
145
- 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
144
+ 'gs-number-range-filter': NumberRangeFilterComponent;
146
145
  }
147
146
  }
148
147
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { type TextFilterChangedEvent } from '../../preact/textFilter/TextFilterChangedEvent';
5
4
  import { TextFilter, type TextFilterProps } from '../../preact/textFilter/text-filter';
@@ -100,9 +99,9 @@ declare global {
100
99
 
101
100
  declare global {
102
101
  // eslint-disable-next-line @typescript-eslint/no-namespace
103
- namespace JSX {
102
+ namespace React.JSX {
104
103
  interface IntrinsicElements {
105
- 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
104
+ 'gs-text-filter': TextFilterComponent;
106
105
  }
107
106
  }
108
107
  }
@@ -14,7 +14,9 @@ const mutationAnnotationSchema = z.object({
14
14
  });
15
15
  export type MutationAnnotation = z.infer<typeof mutationAnnotationSchema>;
16
16
 
17
- export const mutationAnnotationsSchema = z.array(mutationAnnotationSchema);
17
+ export const mutationAnnotationsSchema = z.array(mutationAnnotationSchema, {
18
+ errorMap: () => ({ message: 'invalid mutation annotations' }),
19
+ });
18
20
  export type MutationAnnotations = z.infer<typeof mutationAnnotationsSchema>;
19
21
 
20
22
  export const mutationAnnotationsContext = createContext<MutationAnnotations>(Symbol('mutation-annotations-context'));
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { Aggregate, type AggregateProps } from '../../preact/aggregatedData/aggregate';
5
4
  import { type Equals, type Expect } from '../../utils/typeAssertions';
@@ -131,9 +130,9 @@ declare global {
131
130
 
132
131
  declare global {
133
132
  // eslint-disable-next-line @typescript-eslint/no-namespace
134
- namespace JSX {
133
+ namespace React.JSX {
135
134
  interface IntrinsicElements {
136
- 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
135
+ 'gs-aggregate': AggregateComponent;
137
136
  }
138
137
  }
139
138
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { GenomeDataViewer } from '../../preact/genomeViewer/genome-data-viewer';
5
4
  import { PreactLitAdapter } from '../PreactLitAdapter';
@@ -53,9 +52,9 @@ declare global {
53
52
 
54
53
  declare global {
55
54
  // eslint-disable-next-line @typescript-eslint/no-namespace
56
- namespace JSX {
55
+ namespace React.JSX {
57
56
  interface IntrinsicElements {
58
- 'gs-genome-data-viewer': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
57
+ 'gs-genome-data-viewer': GenomeDataViewerComponent;
59
58
  }
60
59
  }
61
60
  }
@@ -1,6 +1,5 @@
1
1
  import { consume } from '@lit/context';
2
2
  import { customElement, property } from 'lit/decorators.js';
3
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
4
3
 
5
4
  import { MutationAnnotationsContextProvider } from '../../preact/MutationAnnotationsContext';
6
5
  import { MutationLinkTemplateContextProvider } from '../../preact/MutationLinkTemplateContext';
@@ -137,9 +136,9 @@ declare global {
137
136
 
138
137
  declare global {
139
138
  // eslint-disable-next-line @typescript-eslint/no-namespace
140
- namespace JSX {
139
+ namespace React.JSX {
141
140
  interface IntrinsicElements {
142
- 'gs-mutation-comparison': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
141
+ 'gs-mutation-comparison': MutationComparisonComponent;
143
142
  }
144
143
  }
145
144
  }
@@ -1,6 +1,5 @@
1
1
  import { consume } from '@lit/context';
2
2
  import { customElement, property } from 'lit/decorators.js';
3
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
4
3
 
5
4
  import { MutationAnnotationsContextProvider } from '../../preact/MutationAnnotationsContext';
6
5
  import { MutationLinkTemplateContextProvider } from '../../preact/MutationLinkTemplateContext';
@@ -179,9 +178,9 @@ declare global {
179
178
 
180
179
  declare global {
181
180
  // eslint-disable-next-line @typescript-eslint/no-namespace
182
- namespace JSX {
181
+ namespace React.JSX {
183
182
  interface IntrinsicElements {
184
- 'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
183
+ 'gs-mutations-over-time': MutationsOverTimeComponent;
185
184
  }
186
185
  }
187
186
  }
@@ -1,6 +1,5 @@
1
1
  import { consume } from '@lit/context';
2
2
  import { customElement, property } from 'lit/decorators.js';
3
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
4
3
 
5
4
  import { MutationAnnotationsContextProvider } from '../../preact/MutationAnnotationsContext';
6
5
  import { MutationLinkTemplateContextProvider } from '../../preact/MutationLinkTemplateContext';
@@ -88,11 +87,11 @@ export class MutationsComponent extends PreactLitAdapterWithGridJsStyles {
88
87
  @property({ type: Object })
89
88
  baselineLapisFilter:
90
89
  (Record<string, string | string[] | number | null | boolean | undefined> & {
91
- nucleotideMutations?: string[];
92
- aminoAcidMutations?: string[];
93
- nucleotideInsertions?: string[];
94
- aminoAcidInsertions?: string[];
95
- })
90
+ nucleotideMutations?: string[];
91
+ aminoAcidMutations?: string[];
92
+ nucleotideInsertions?: string[];
93
+ aminoAcidInsertions?: string[];
94
+ })
96
95
  | undefined = undefined;
97
96
 
98
97
  /**
@@ -169,9 +168,9 @@ declare global {
169
168
 
170
169
  declare global {
171
170
  // eslint-disable-next-line @typescript-eslint/no-namespace
172
- namespace JSX {
171
+ namespace React.JSX {
173
172
  interface IntrinsicElements {
174
- 'gs-mutations': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
173
+ 'gs-mutations': MutationsComponent;
175
174
  }
176
175
  }
177
176
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import {
5
4
  NumberSequencesOverTime,
@@ -126,9 +125,9 @@ declare global {
126
125
 
127
126
  declare global {
128
127
  // eslint-disable-next-line @typescript-eslint/no-namespace
129
- namespace JSX {
128
+ namespace React.JSX {
130
129
  interface IntrinsicElements {
131
- 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
130
+ 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
132
131
  }
133
132
  }
134
133
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { PrevalenceOverTime, type PrevalenceOverTimeProps } from '../../preact/prevalenceOverTime/prevalence-over-time';
5
4
  import { type Equals, type Expect } from '../../utils/typeAssertions';
@@ -193,9 +192,9 @@ declare global {
193
192
 
194
193
  declare global {
195
194
  // eslint-disable-next-line @typescript-eslint/no-namespace
196
- namespace JSX {
195
+ namespace React.JSX {
197
196
  interface IntrinsicElements {
198
- 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
197
+ 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
199
198
  }
200
199
  }
201
200
  }
@@ -15,11 +15,13 @@ const codeExample = String.raw`
15
15
  queries='[
16
16
  {
17
17
  "displayLabel": "S:F456L (single mutation)",
18
+ "description": "This mutation is associated with increased transmissibility.",
18
19
  "countQuery": "S:456L",
19
20
  "coverageQuery": "!S:456N"
20
21
  },
21
22
  {
22
23
  "displayLabel": "R346T + F456L (combination)",
24
+ "description": "Common mutation combination found in the JN.1 lineage.",
23
25
  "countQuery": "S:346T & S:456L",
24
26
  "coverageQuery": "!S:346N & !S:456N"
25
27
  }
@@ -59,11 +61,13 @@ const meta: Meta<Required<QueriesOverTimeProps>> = {
59
61
  queries: [
60
62
  {
61
63
  displayLabel: 'S:F456L (single mutation)',
64
+ description: 'This mutation is associated with increased transmissibility.',
62
65
  countQuery: 'S:456L',
63
66
  coverageQuery: '!S:456N',
64
67
  },
65
68
  {
66
69
  displayLabel: 'R346T + F456L (combination)',
70
+ description: 'Common mutation combination found in the JN.1 lineage.',
67
71
  countQuery: 'S:346T & S:456L',
68
72
  coverageQuery: '!S:346N & !S:456N',
69
73
  },
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { QueriesOverTime } from '../../preact/queriesOverTime/queries-over-time';
5
4
  import { PreactLitAdapterWithGridJsStyles } from '../PreactLitAdapterWithGridJsStyles';
@@ -42,7 +41,8 @@ export class QueriesOverTimeComponent extends PreactLitAdapterWithGridJsStyles {
42
41
  * Required.
43
42
  *
44
43
  * Array of queries to display. Each query has:
45
- * - displayLabel: string - The name to show in the grid row label
44
+ * - displayLabel: string - The name to show in the grid row label. Must be unique.
45
+ * - description: string (optional) - Optional description shown in tooltip
46
46
  * - countQuery: string - Query string to count matches
47
47
  * - coverageQuery: string - Query string to determine coverage/denominator
48
48
  *
@@ -51,6 +51,7 @@ export class QueriesOverTimeComponent extends PreactLitAdapterWithGridJsStyles {
51
51
  @property({ type: Array })
52
52
  queries: {
53
53
  displayLabel: string;
54
+ description?: string;
54
55
  countQuery: string;
55
56
  coverageQuery: string;
56
57
  }[] = [];
@@ -146,9 +147,9 @@ declare global {
146
147
 
147
148
  declare global {
148
149
  // eslint-disable-next-line @typescript-eslint/no-namespace
149
- namespace JSX {
150
+ namespace React.JSX {
150
151
  interface IntrinsicElements {
151
- 'gs-queries-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
152
+ 'gs-queries-over-time': QueriesOverTimeComponent;
152
153
  }
153
154
  }
154
155
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import {
5
4
  RelativeGrowthAdvantage,
@@ -147,9 +146,9 @@ declare global {
147
146
 
148
147
  declare global {
149
148
  // eslint-disable-next-line @typescript-eslint/no-namespace
150
- namespace JSX {
149
+ namespace React.JSX {
151
150
  interface IntrinsicElements {
152
- 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
151
+ 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
153
152
  }
154
153
  }
155
154
  }
@@ -1,7 +1,6 @@
1
1
  import leafletStyle from 'leaflet/dist/leaflet.css?inline';
2
2
  import { unsafeCSS } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
5
4
 
6
5
  import leafletStyleModifications from '../../preact/sequencesByLocation/leafletStyleModifications.css?inline';
7
6
  import {
@@ -219,9 +218,9 @@ declare global {
219
218
 
220
219
  declare global {
221
220
  // eslint-disable-next-line @typescript-eslint/no-namespace
222
- namespace JSX {
221
+ namespace React.JSX {
223
222
  interface IntrinsicElements {
224
- 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
223
+ 'gs-sequences-by-location': SequencesByLocationComponent;
225
224
  }
226
225
  }
227
226
  }
@@ -1,5 +1,4 @@
1
1
  import { customElement, property } from 'lit/decorators.js';
2
- import type { DetailedHTMLProps, HTMLAttributes } from 'react';
3
2
 
4
3
  import { Statistics, type StatisticsProps } from '../../preact/statistic/statistics';
5
4
  import type { Equals, Expect } from '../../utils/typeAssertions';
@@ -76,9 +75,9 @@ declare global {
76
75
 
77
76
  declare global {
78
77
  // eslint-disable-next-line @typescript-eslint/no-namespace
79
- namespace JSX {
78
+ namespace React.JSX {
80
79
  interface IntrinsicElements {
81
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
80
+ 'gs-statistics': StatisticsComponent;
82
81
  }
83
82
  }
84
83
  }
@@ -1,6 +1,5 @@
1
1
  import { consume } from '@lit/context';
2
2
  import { customElement, property } from 'lit/decorators.js';
3
- import { type DetailedHTMLProps, type HTMLAttributes } from 'react';
4
3
 
5
4
  import { MutationAnnotationsContextProvider } from '../../preact/MutationAnnotationsContext';
6
5
  import { MutationLinkTemplateContextProvider } from '../../preact/MutationLinkTemplateContext';
@@ -112,9 +111,9 @@ declare global {
112
111
 
113
112
  declare global {
114
113
  // eslint-disable-next-line @typescript-eslint/no-namespace
115
- namespace JSX {
114
+ namespace React.JSX {
116
115
  interface IntrinsicElements {
117
- 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
116
+ 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
118
117
  }
119
118
  }
120
119
  }