@genspectrum/dashboard-components 0.19.2 → 0.19.4

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 (61) hide show
  1. package/custom-elements.json +383 -10
  2. package/dist/{LineageFilterChangedEvent-ixHQkq8y.js → LineageFilterChangedEvent-GgkxoF3X.js} +17 -5
  3. package/dist/LineageFilterChangedEvent-GgkxoF3X.js.map +1 -0
  4. package/dist/assets/mutationOverTimeWorker-ChQTFL68.js.map +1 -1
  5. package/dist/components.d.ts +184 -21
  6. package/dist/components.js +9352 -8683
  7. package/dist/components.js.map +1 -1
  8. package/dist/util.d.ts +69 -21
  9. package/dist/util.js +2 -1
  10. package/package.json +1 -1
  11. package/src/componentsEntrypoint.ts +3 -1
  12. package/src/preact/components/error-display.stories.tsx +2 -1
  13. package/src/preact/components/error-display.tsx +2 -3
  14. package/src/preact/components/min-max-range-slider.tsx +19 -4
  15. package/src/preact/components/resize-container.tsx +7 -10
  16. package/src/preact/components/tooltip.tsx +7 -4
  17. package/src/preact/dateRangeFilter/date-range-filter.stories.tsx +9 -5
  18. package/src/preact/dateRangeFilter/date-range-filter.tsx +2 -1
  19. package/src/preact/dateRangeFilter/dateRangeOption.ts +2 -1
  20. package/src/preact/genomeViewer/CDSPlot.tsx +219 -0
  21. package/src/preact/genomeViewer/genome-data-viewer.stories.tsx +113 -0
  22. package/src/preact/genomeViewer/genome-data-viewer.tsx +69 -0
  23. package/src/preact/genomeViewer/loadGff3.spec.ts +61 -0
  24. package/src/preact/genomeViewer/loadGff3.ts +180 -0
  25. package/src/preact/lineageFilter/LineageFilterChangedEvent.ts +3 -1
  26. package/src/preact/lineageFilter/lineage-filter.stories.tsx +3 -2
  27. package/src/preact/locationFilter/LocationChangedEvent.ts +2 -1
  28. package/src/preact/locationFilter/location-filter.stories.tsx +3 -2
  29. package/src/preact/mutationFilter/mutation-filter.stories.tsx +3 -2
  30. package/src/preact/mutationFilter/mutation-filter.tsx +2 -1
  31. package/src/preact/numberRangeFilter/NumberRangeFilterChangedEvent.ts +31 -0
  32. package/src/preact/numberRangeFilter/number-range-filter.stories.tsx +383 -0
  33. package/src/preact/numberRangeFilter/number-range-filter.tsx +159 -0
  34. package/src/preact/numberRangeFilter/useSelectedRangeReducer.ts +137 -0
  35. package/src/preact/shared/charts/colors.ts +1 -1
  36. package/src/preact/textFilter/TextFilterChangedEvent.ts +3 -1
  37. package/src/preact/textFilter/text-filter.stories.tsx +4 -3
  38. package/src/utilEntrypoint.ts +2 -0
  39. package/src/utils/gsEventNames.ts +11 -0
  40. package/src/web-components/input/gs-date-range-filter.stories.ts +4 -3
  41. package/src/web-components/input/gs-date-range-filter.tsx +3 -2
  42. package/src/web-components/input/gs-lineage-filter.stories.ts +3 -2
  43. package/src/web-components/input/gs-lineage-filter.tsx +2 -1
  44. package/src/web-components/input/gs-location-filter.stories.ts +3 -2
  45. package/src/web-components/input/gs-location-filter.tsx +2 -1
  46. package/src/web-components/input/gs-mutation-filter.stories.ts +3 -2
  47. package/src/web-components/input/gs-mutation-filter.tsx +2 -1
  48. package/src/web-components/input/gs-number-range-filter.spec.ts +27 -0
  49. package/src/web-components/input/gs-number-range-filter.stories.ts +96 -0
  50. package/src/web-components/input/gs-number-range-filter.tsx +148 -0
  51. package/src/web-components/input/gs-text-filter.stories.ts +5 -4
  52. package/src/web-components/input/gs-text-filter.tsx +2 -1
  53. package/src/web-components/input/index.ts +1 -0
  54. package/src/web-components/visualization/gs-genome-data-viewer.spec-d.ts +18 -0
  55. package/src/web-components/visualization/gs-genome-data-viewer.stories.ts +108 -0
  56. package/src/web-components/visualization/gs-genome-data-viewer.tsx +59 -0
  57. package/src/web-components/visualization/index.ts +1 -0
  58. package/standalone-bundle/assets/mutationOverTimeWorker-jChgWnwp.js.map +1 -1
  59. package/standalone-bundle/dashboard-components.js +9613 -9059
  60. package/standalone-bundle/dashboard-components.js.map +1 -1
  61. package/dist/LineageFilterChangedEvent-ixHQkq8y.js.map +0 -1
@@ -233,6 +233,36 @@ declare class ErrorEvent_2 extends Event {
233
233
  }
234
234
  export { ErrorEvent_2 as ErrorEvent }
235
235
 
236
+ /**
237
+ * ## Context
238
+ *
239
+ * This component shows the Coding Sequence (CDS) of a genome using a gff3 file as input.
240
+ * The CDS shows which parts of the genome are translated into proteins.
241
+ *
242
+ */
243
+ export declare class GenomeDataViewerComponent extends PreactLitAdapter {
244
+ /**
245
+ * Required
246
+ *
247
+ * The source of the gff3 file. Any spec-compliant gff3 should be accepted, however we use the same format as Nextclade.
248
+ * See https://docs.nextstrain.org/projects/nextclade/en/stable/user/input-files/03-genome-annotation.html for more information.
249
+ * We only use the CDS and gene features from the gff3 file, if you have other features in the gff3 file they will be ignored.
250
+ * Also note that if a CDS has a gene feature as a parent, the gene feature will be ignored.
251
+ */
252
+ gff3Source: string;
253
+ /**
254
+ * The length of the genome, if this is not given it will be computed from the `sequence-region` line of the start of the gff3 file.
255
+ */
256
+ genomeLength: number | undefined;
257
+ /**
258
+ * The width of the component.
259
+ *
260
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
261
+ */
262
+ width: string;
263
+ render(): JSX_2.Element;
264
+ }
265
+
236
266
  /**
237
267
  *
238
268
  * ## Context
@@ -722,6 +752,103 @@ export declare class MutationsOverTimeComponent extends PreactLitAdapterWithGrid
722
752
  render(): JSX_2.Element;
723
753
  }
724
754
 
755
+ /**
756
+ *
757
+ * ## Context
758
+ *
759
+ * This component lets the user specify filters for a `float` or `int` field in LAPIS.
760
+ * It consists of two text input fields and a slider.
761
+ *
762
+ * The slider must be restricted to a certain range.
763
+ * Users can however still enter values outside of this range in the text input fields.
764
+ *
765
+ * @fires {CustomEvent<Record<string, string | undefined>>} gs-number-range-filter-changed
766
+ * Fired when the slider is released,
767
+ * `onBlur` on the input fields after the user has typed a valid range in the input fields,
768
+ * or when one of the input fields is cleared.
769
+ * The `details` of this event contain an object with `${lapisField}From` and `${lapisField}To` as keys.
770
+ * The values are the numbers from the input fields or `undefined` if the input field is empty:
771
+ * ```
772
+ * {
773
+ * [`${lapisField}From`]: number | undefined
774
+ * [`${lapisField}To`]: number | undefined
775
+ * }
776
+ * ```
777
+ * Example:
778
+ * ```
779
+ * {
780
+ * ageFrom: 18,
781
+ * ageTo: undefined
782
+ * }
783
+ * ```
784
+ *
785
+ * @fires {CustomEvent<Record<string, string | undefined>>} gs-number-range-value-changed
786
+ * Similar to the `gs-number-range-filter-changed` event,
787
+ * but contains an `event.detail` that has a fixed format:
788
+ * ```
789
+ * {
790
+ * min: number | undefined
791
+ * max: number | undefined
792
+ * }
793
+ * ```
794
+ * This event should be used when you want to control this component externally.
795
+ * The `event.detail` can be used as the value of the component.
796
+ * Example:
797
+ * ```
798
+ * {
799
+ * min: 18,
800
+ * max: undefined
801
+ * }
802
+ * ```
803
+ */
804
+ export declare class NumberRangeFilterComponent extends PreactLitAdapter {
805
+ /**
806
+ * The value to use for this number filter.
807
+ *
808
+ * Must be of the form:
809
+ * ```
810
+ * {
811
+ * [`${lapisField}From`]: number | undefined
812
+ * [`${lapisField}To`]: number | undefined
813
+ * }
814
+ * ```
815
+ *
816
+ * This is the same format that the `gs-number-value-changed` event will emit.
817
+ */
818
+ value: {
819
+ min?: number;
820
+ max?: number;
821
+ };
822
+ /**
823
+ * Required.
824
+ *
825
+ * The LAPIS field name to use for this text filter.
826
+ * The field must exist on this LAPIS instance.
827
+ */
828
+ lapisField: string;
829
+ /**
830
+ * The `min` value to use for the slider.
831
+ */
832
+ sliderMin: number;
833
+ /**
834
+ * The `max` value to use for the slider.
835
+ */
836
+ sliderMax: number;
837
+ /**
838
+ * The `step` value to use for the slider.
839
+ *
840
+ * This attribute has no effect on the text input.
841
+ */
842
+ sliderStep: number;
843
+ /**
844
+ * The width of the component.
845
+ *
846
+ * Visit https://genspectrum.github.io/dashboard-components/?path=/docs/concepts-size-of-components--docs for more information.
847
+ */
848
+ width: string;
849
+ render(): JSX_2.Element;
850
+ }
851
+
725
852
  /**
726
853
  * ## Context
727
854
  *
@@ -1402,7 +1529,7 @@ export { }
1402
1529
 
1403
1530
  declare global {
1404
1531
  interface HTMLElementEventMap {
1405
- 'gs-error': ErrorEvent;
1532
+ [gsEventNames.error]: ErrorEvent;
1406
1533
  }
1407
1534
  }
1408
1535
 
@@ -1423,6 +1550,22 @@ declare global {
1423
1550
  }
1424
1551
 
1425
1552
 
1553
+ declare global {
1554
+ interface HTMLElementTagNameMap {
1555
+ 'gs-genome-data-viewer': GenomeDataViewerComponent;
1556
+ }
1557
+ }
1558
+
1559
+
1560
+ declare global {
1561
+ namespace JSX {
1562
+ interface IntrinsicElements {
1563
+ 'gs-genome-data-viewer': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1564
+ }
1565
+ }
1566
+ }
1567
+
1568
+
1426
1569
  declare global {
1427
1570
  interface HTMLElementTagNameMap {
1428
1571
  'gs-mutation-comparison-component': MutationComparisonComponent;
@@ -1553,7 +1696,11 @@ declare global {
1553
1696
 
1554
1697
  declare global {
1555
1698
  interface HTMLElementTagNameMap {
1556
- 'gs-statistics': StatisticsComponent;
1699
+ 'gs-date-range-filter': DateRangeFilterComponent;
1700
+ }
1701
+ interface HTMLElementEventMap {
1702
+ [gsEventNames.dateRangeFilterChanged]: CustomEvent<Record<string, string>>;
1703
+ [gsEventNames.dateRangeOptionChanged]: DateRangeOptionChangedEvent;
1557
1704
  }
1558
1705
  }
1559
1706
 
@@ -1561,7 +1708,7 @@ declare global {
1561
1708
  declare global {
1562
1709
  namespace JSX {
1563
1710
  interface IntrinsicElements {
1564
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1711
+ 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1565
1712
  }
1566
1713
  }
1567
1714
  }
@@ -1569,7 +1716,10 @@ declare global {
1569
1716
 
1570
1717
  declare global {
1571
1718
  interface HTMLElementTagNameMap {
1572
- 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1719
+ 'gs-location-filter': LocationFilterComponent;
1720
+ }
1721
+ interface HTMLElementEventMap {
1722
+ [gsEventNames.locationChanged]: LocationChangedEvent;
1573
1723
  }
1574
1724
  }
1575
1725
 
@@ -1577,7 +1727,7 @@ declare global {
1577
1727
  declare global {
1578
1728
  namespace JSX {
1579
1729
  interface IntrinsicElements {
1580
- 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1730
+ 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1581
1731
  }
1582
1732
  }
1583
1733
  }
@@ -1585,10 +1735,7 @@ declare global {
1585
1735
 
1586
1736
  declare global {
1587
1737
  interface HTMLElementTagNameMap {
1588
- 'gs-location-filter': LocationFilterComponent;
1589
- }
1590
- interface HTMLElementEventMap {
1591
- 'gs-location-changed': LocationChangedEvent;
1738
+ 'gs-statistics': StatisticsComponent;
1592
1739
  }
1593
1740
  }
1594
1741
 
@@ -1596,7 +1743,7 @@ declare global {
1596
1743
  declare global {
1597
1744
  namespace JSX {
1598
1745
  interface IntrinsicElements {
1599
- 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1746
+ 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1600
1747
  }
1601
1748
  }
1602
1749
  }
@@ -1604,11 +1751,10 @@ declare global {
1604
1751
 
1605
1752
  declare global {
1606
1753
  interface HTMLElementTagNameMap {
1607
- 'gs-date-range-filter': DateRangeFilterComponent;
1754
+ 'gs-text-filter': TextFilterComponent;
1608
1755
  }
1609
1756
  interface HTMLElementEventMap {
1610
- 'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
1611
- 'gs-date-range-option-changed': DateRangeOptionChangedEvent;
1757
+ [gsEventNames.textFilterChanged]: TextFilterChangedEvent;
1612
1758
  }
1613
1759
  }
1614
1760
 
@@ -1616,7 +1762,7 @@ declare global {
1616
1762
  declare global {
1617
1763
  namespace JSX {
1618
1764
  interface IntrinsicElements {
1619
- 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1765
+ 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1620
1766
  }
1621
1767
  }
1622
1768
  }
@@ -1624,10 +1770,10 @@ declare global {
1624
1770
 
1625
1771
  declare global {
1626
1772
  interface HTMLElementTagNameMap {
1627
- 'gs-text-filter': TextFilterComponent;
1773
+ 'gs-lineage-filter': LineageFilterComponent;
1628
1774
  }
1629
1775
  interface HTMLElementEventMap {
1630
- 'gs-text-filter-changed': TextFilterChangedEvent;
1776
+ [gsEventNames.lineageFilterChanged]: LineageFilterChangedEvent;
1631
1777
  }
1632
1778
  }
1633
1779
 
@@ -1635,7 +1781,7 @@ declare global {
1635
1781
  declare global {
1636
1782
  namespace JSX {
1637
1783
  interface IntrinsicElements {
1638
- 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1784
+ 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1639
1785
  }
1640
1786
  }
1641
1787
  }
@@ -1646,7 +1792,7 @@ declare global {
1646
1792
  'gs-mutation-filter': MutationFilterComponent;
1647
1793
  }
1648
1794
  interface HTMLElementEventMap {
1649
- 'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
1795
+ [gsEventNames.mutationFilterChanged]: CustomEvent<MutationsFilter>;
1650
1796
  }
1651
1797
  }
1652
1798
 
@@ -1662,10 +1808,11 @@ declare global {
1662
1808
 
1663
1809
  declare global {
1664
1810
  interface HTMLElementTagNameMap {
1665
- 'gs-lineage-filter': LineageFilterComponent;
1811
+ 'gs-number-range-filter': NumberRangeFilterComponent;
1666
1812
  }
1667
1813
  interface HTMLElementEventMap {
1668
- 'gs-lineage-filter-changed': LineageFilterChangedEvent;
1814
+ [gsEventNames.numberRangeFilterChanged]: NumberRangeFilterChangedEvent;
1815
+ [gsEventNames.numberRangeValueChanged]: NumberRangeValueChangedEvent;
1669
1816
  }
1670
1817
  }
1671
1818
 
@@ -1673,7 +1820,23 @@ declare global {
1673
1820
  declare global {
1674
1821
  namespace JSX {
1675
1822
  interface IntrinsicElements {
1676
- 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1823
+ 'gs-number-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1824
+ }
1825
+ }
1826
+ }
1827
+
1828
+
1829
+ declare global {
1830
+ interface HTMLElementTagNameMap {
1831
+ 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1832
+ }
1833
+ }
1834
+
1835
+
1836
+ declare global {
1837
+ namespace JSX {
1838
+ interface IntrinsicElements {
1839
+ 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1677
1840
  }
1678
1841
  }
1679
1842
  }