@genspectrum/dashboard-components 0.11.7 → 0.12.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.
- package/custom-elements.json +16 -16
- package/dist/{dateRangeOption-Bh2p78z0.js → LocationChangedEvent-CORvQvXv.js} +11 -1
- package/dist/LocationChangedEvent-CORvQvXv.js.map +1 -0
- package/dist/components.d.ts +27 -33
- package/dist/components.js +4034 -655
- package/dist/components.js.map +1 -1
- package/dist/style.css +151 -4
- package/dist/util.d.ts +32 -26
- package/dist/util.js +2 -1
- package/package.json +2 -1
- package/src/preact/components/csv-download-button.tsx +2 -2
- package/src/preact/downshift_types.d.ts +3 -0
- package/src/preact/locationFilter/LocationChangedEvent.ts +11 -0
- package/src/preact/locationFilter/fetchAutocompletionList.spec.ts +5 -5
- package/src/preact/locationFilter/fetchAutocompletionList.ts +9 -2
- package/src/preact/locationFilter/location-filter.stories.tsx +94 -10
- package/src/preact/locationFilter/location-filter.tsx +183 -62
- package/src/preact/map/sequences-by-location-map.tsx +3 -3
- package/src/preact/mutationFilter/mutation-filter-info.tsx +73 -10
- package/src/preact/textInput/TextInputChangedEvent.ts +11 -0
- package/src/preact/textInput/fetchAutocompleteList.ts +1 -1
- package/src/preact/textInput/text-input.stories.tsx +20 -3
- package/src/preact/textInput/text-input.tsx +139 -36
- package/src/utilEntrypoint.ts +2 -0
- package/src/web-components/input/gs-location-filter.stories.ts +34 -29
- package/src/web-components/input/gs-location-filter.tsx +6 -13
- package/src/web-components/input/gs-text-input.stories.ts +30 -7
- package/standalone-bundle/dashboard-components.js +11073 -8625
- package/standalone-bundle/dashboard-components.js.map +1 -1
- package/standalone-bundle/style.css +1 -1
- package/dist/dateRangeOption-Bh2p78z0.js.map +0 -1
package/custom-elements.json
CHANGED
|
@@ -714,7 +714,7 @@
|
|
|
714
714
|
"type": {
|
|
715
715
|
"text": "Meta"
|
|
716
716
|
},
|
|
717
|
-
"default": "{ title: 'Input/Location filter', component: 'gs-location-filter', parameters: withComponentDocs({ actions: { handles: ['gs-location-changed', ...previewHandles], }, componentDocs: { opensShadowDom: true, expectsChildren: false, codeExample, }, }), argTypes: { fields: { control: { type: 'object', }, },
|
|
717
|
+
"default": "{ title: 'Input/Location filter', component: 'gs-location-filter', parameters: withComponentDocs({ actions: { handles: ['gs-location-changed', ...previewHandles], }, componentDocs: { opensShadowDom: true, expectsChildren: false, codeExample, }, }), argTypes: { fields: { control: { type: 'object', }, }, value: { control: { type: 'object', }, }, width: { control: { type: 'text', }, }, placeholderText: { control: { type: 'text', }, }, }, tags: ['autodocs'], }"
|
|
718
718
|
},
|
|
719
719
|
{
|
|
720
720
|
"kind": "variable",
|
|
@@ -722,7 +722,7 @@
|
|
|
722
722
|
"type": {
|
|
723
723
|
"text": "StoryObj<LocationFilterProps>"
|
|
724
724
|
},
|
|
725
|
-
"default": "{ ...Template, parameters: { fetchMock: { mocks: [ { matcher: aggregatedEndpointMatcher, response: { status: 200, body: data, }, }, ], }, }, play: async ({ canvasElement }) => { const canvas = await withinShadowRoot(canvasElement, 'gs-location-filter'); await waitFor(() => { return expect(canvas.
|
|
725
|
+
"default": "{ ...Template, parameters: { fetchMock: { mocks: [ { matcher: aggregatedEndpointMatcher, response: { status: 200, body: data, }, }, ], }, }, play: async ({ canvasElement }) => { const canvas = await withinShadowRoot(canvasElement, 'gs-location-filter'); await waitFor(() => { return expect(canvas.getByPlaceholderText('Enter a location')).toBeVisible(); }); }, }"
|
|
726
726
|
},
|
|
727
727
|
{
|
|
728
728
|
"kind": "variable",
|
|
@@ -746,7 +746,7 @@
|
|
|
746
746
|
"type": {
|
|
747
747
|
"text": "StoryObj<LocationFilterProps>"
|
|
748
748
|
},
|
|
749
|
-
"default": "{ ...Template, parameters: { fetchMock: { mocks: [ { matcher: aggregatedEndpointMatcher, response: { status: 200, body: data, }, }, ], }, }, play: async ({ canvasElement, step }) => { const canvas = await withinShadowRoot(canvasElement, 'gs-location-filter'); const inputField = () => canvas.getByRole('combobox'); const listenerMock = fn(); await step('Setup event listener mock', async () => { canvasElement.addEventListener('gs-location-changed', listenerMock); }); await step('wait until data is loaded', async () => { await waitFor(() => { return expect(inputField()).toBeEnabled(); }); }); await step('Input invalid location', async () => { await userEvent.type(inputField(), 'Not / A / Location'); await expect(listenerMock).not.toHaveBeenCalled(); }); await step('Empty input', async () => { await userEvent.type(inputField(), '{backspace>18/}'); await expect(listenerMock.mock.calls.at(-1)![0].detail).toStrictEqual({ region: undefined, country: undefined, division: undefined, location: undefined, }); }); await step('Select Asia', async () => { await userEvent.type(inputField(), 'Asia'); await expect(listenerMock.mock.calls.at(-1)![0].detail).toStrictEqual({ region: 'Asia', country: undefined, division: undefined, location: undefined, }); }); await step('Select Asia / Bangladesh / Rajshahi / Chapainawabgonj', async () => { await userEvent.type(inputField(), ' / Bangladesh / Rajshahi / Chapainawabgonj'); await
|
|
749
|
+
"default": "{ ...Template, parameters: { fetchMock: { mocks: [ { matcher: aggregatedEndpointMatcher, response: { status: 200, body: data, }, }, ], }, }, play: async ({ canvasElement, step }) => { const canvas = await withinShadowRoot(canvasElement, 'gs-location-filter'); const inputField = () => canvas.getByRole('combobox'); const listenerMock = fn(); await step('Setup event listener mock', async () => { canvasElement.addEventListener('gs-location-changed', listenerMock); }); await step('wait until data is loaded', async () => { await waitFor(() => { return expect(inputField()).toBeEnabled(); }); }); await step('Input invalid location', async () => { await userEvent.type(inputField(), 'Not / A / Location'); await expect(listenerMock).not.toHaveBeenCalled(); }); await step('Empty input', async () => { await userEvent.type(inputField(), '{backspace>18/}'); await userEvent.click(canvas.getByLabelText('toggle menu')); await waitFor(() => { return expect(listenerMock.mock.calls.at(-1)![0].detail).toStrictEqual({ region: undefined, country: undefined, division: undefined, location: undefined, }); }); }); await step('Select Asia', async () => { await userEvent.type(inputField(), 'Asia'); await userEvent.click(canvas.getByRole('option', { name: 'Asia Asia' })); await waitFor(() => { return expect(listenerMock.mock.calls.at(-1)![0].detail).toStrictEqual({ region: 'Asia', country: undefined, division: undefined, location: undefined, }); }); }); await step('Select Asia / Bangladesh / Rajshahi / Chapainawabgonj', async () => { await userEvent.type(inputField(), ' / Bangladesh / Rajshahi / Chapainawabgonj'); await userEvent.click(canvas.getByText('Asia / Bangladesh / Rajshahi / Chapainawabgonj')); await waitFor(() => { return expect(listenerMock.mock.calls.at(-1)![0].detail).toStrictEqual({ region: 'Asia', country: 'Bangladesh', division: 'Rajshahi', location: 'Chapainawabgonj', }); }); }); }, }"
|
|
750
750
|
}
|
|
751
751
|
],
|
|
752
752
|
"exports": [
|
|
@@ -798,18 +798,18 @@
|
|
|
798
798
|
"declarations": [
|
|
799
799
|
{
|
|
800
800
|
"kind": "class",
|
|
801
|
-
"description": "## Context\n\nThis component provides an input field to specify filters for locations.\n\nIt expects a list of fields that form a strict hierarchical order, such as continent, country, and city.\nThe component retrieves a list of all possible values for these fields from the Lapis instance.\nThis list is then utilized to display autocomplete suggestions and to validate the input
|
|
801
|
+
"description": "## Context\n\nThis component provides an input field to specify filters for locations.\n\nIt expects a list of fields that form a strict hierarchical order, such as continent, country, and city.\nThe component retrieves a list of all possible values for these fields from the Lapis instance.\nThis list is then utilized to display autocomplete suggestions and to validate the input.",
|
|
802
802
|
"name": "LocationFilterComponent",
|
|
803
803
|
"members": [
|
|
804
804
|
{
|
|
805
805
|
"kind": "field",
|
|
806
|
-
"name": "
|
|
806
|
+
"name": "value",
|
|
807
807
|
"type": {
|
|
808
|
-
"text": "string | undefined"
|
|
808
|
+
"text": "Record<string, string | null | undefined> | undefined"
|
|
809
809
|
},
|
|
810
810
|
"default": "undefined",
|
|
811
|
-
"description": "The initial value to use for this location filter
|
|
812
|
-
"attribute": "
|
|
811
|
+
"description": "The initial value to use for this location filter.",
|
|
812
|
+
"attribute": "value"
|
|
813
813
|
},
|
|
814
814
|
{
|
|
815
815
|
"kind": "field",
|
|
@@ -853,13 +853,13 @@
|
|
|
853
853
|
],
|
|
854
854
|
"attributes": [
|
|
855
855
|
{
|
|
856
|
-
"name": "
|
|
856
|
+
"name": "value",
|
|
857
857
|
"type": {
|
|
858
|
-
"text": "string | undefined"
|
|
858
|
+
"text": "Record<string, string | null | undefined> | undefined"
|
|
859
859
|
},
|
|
860
860
|
"default": "undefined",
|
|
861
|
-
"description": "The initial value to use for this location filter
|
|
862
|
-
"fieldName": "
|
|
861
|
+
"description": "The initial value to use for this location filter.",
|
|
862
|
+
"fieldName": "value"
|
|
863
863
|
},
|
|
864
864
|
{
|
|
865
865
|
"name": "fields",
|
|
@@ -1096,11 +1096,11 @@
|
|
|
1096
1096
|
},
|
|
1097
1097
|
{
|
|
1098
1098
|
"kind": "variable",
|
|
1099
|
-
"name": "
|
|
1099
|
+
"name": "FiresEvents",
|
|
1100
1100
|
"type": {
|
|
1101
1101
|
"text": "StoryObj<Required<TextInputProps>>"
|
|
1102
1102
|
},
|
|
1103
|
-
"default": "{ ...Default, play: async ({ canvasElement, step }) => { const canvas = await withinShadowRoot(canvasElement, 'gs-text-input'); const inputField = () => canvas.getByPlaceholderText('Enter host name'); const listenerMock = fn(); await step('Setup event listener mock', async () => { canvasElement.addEventListener('gs-text-input-changed', listenerMock); }); await step('wait until data is loaded', async () => { await waitFor(() => { return expect(inputField()).toBeEnabled(); }); }); await step('Enters an invalid host name', async () => { await userEvent.type(inputField(), 'notInList'); await expect(listenerMock).not.toHaveBeenCalled(); }); await step('Empty input', async () => { await userEvent.type(inputField(), '{backspace>9/}'); await
|
|
1103
|
+
"default": "{ ...Default, play: async ({ canvasElement, step }) => { const canvas = await withinShadowRoot(canvasElement, 'gs-text-input'); const inputField = () => canvas.getByPlaceholderText('Enter host name'); const listenerMock = fn(); await step('Setup event listener mock', async () => { canvasElement.addEventListener('gs-text-input-changed', listenerMock); }); await step('wait until data is loaded', async () => { await waitFor(() => { return expect(inputField()).toBeEnabled(); }); }); await step('Enters an invalid host name', async () => { await userEvent.type(inputField(), 'notInList'); await expect(listenerMock).not.toHaveBeenCalled(); }); await step('Empty input', async () => { await userEvent.type(inputField(), '{backspace>9/}'); }); await step('Enter a valid host name', async () => { await userEvent.type(inputField(), 'Homo s'); const dropdownOption = await canvas.findByText('Homo sapiens'); await userEvent.click(dropdownOption); }); await step('Verify event is fired with correct detail', async () => { await waitFor(() => { expect(listenerMock).toHaveBeenCalledWith( expect.objectContaining({ detail: { host: 'Homo sapiens', }, }), ); }); }); await step('Remove initial value', async () => { await fireEvent.click(canvas.getByRole('button', { name: 'clear selection' })); await expect(listenerMock).toHaveBeenCalledWith( expect.objectContaining({ detail: { host: undefined, }, }), ); }); await step('Empty input', async () => { inputField().blur(); await expect(listenerMock.mock.calls.at(-1)![0].detail).toStrictEqual({ host: undefined, }); }); }, args: { ...Default.args, initialValue: '', }, }"
|
|
1104
1104
|
}
|
|
1105
1105
|
],
|
|
1106
1106
|
"exports": [
|
|
@@ -1122,9 +1122,9 @@
|
|
|
1122
1122
|
},
|
|
1123
1123
|
{
|
|
1124
1124
|
"kind": "js",
|
|
1125
|
-
"name": "
|
|
1125
|
+
"name": "FiresEvents",
|
|
1126
1126
|
"declaration": {
|
|
1127
|
-
"name": "
|
|
1127
|
+
"name": "FiresEvents",
|
|
1128
1128
|
"module": "src/web-components/input/gs-text-input.stories.ts"
|
|
1129
1129
|
}
|
|
1130
1130
|
}
|
|
@@ -96,8 +96,18 @@ const dateRangeOptionPresets = {
|
|
|
96
96
|
label: "All times"
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
|
+
class LocationChangedEvent extends CustomEvent {
|
|
100
|
+
constructor(detail) {
|
|
101
|
+
super("gs-location-changed", {
|
|
102
|
+
detail,
|
|
103
|
+
bubbles: true,
|
|
104
|
+
composed: true
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
99
108
|
export {
|
|
100
109
|
DateRangeOptionChangedEvent as D,
|
|
110
|
+
LocationChangedEvent as L,
|
|
101
111
|
dateRangeOptionSchema as a,
|
|
102
112
|
toYYYYMMDD as b,
|
|
103
113
|
dateRangeOptionPresets as d,
|
|
@@ -108,4 +118,4 @@ export {
|
|
|
108
118
|
temporalGranularitySchema as t,
|
|
109
119
|
views as v
|
|
110
120
|
};
|
|
111
|
-
//# sourceMappingURL=
|
|
121
|
+
//# sourceMappingURL=LocationChangedEvent-CORvQvXv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocationChangedEvent-CORvQvXv.js","sources":["../src/types.ts","../src/preact/dateRangeSelector/dateConversion.ts","../src/preact/dateRangeSelector/dateRangeOption.ts","../src/preact/locationFilter/LocationChangedEvent.ts"],"sourcesContent":["import z from 'zod';\n\nimport {\n type Deletion,\n type DeletionClass,\n type Insertion,\n type InsertionClass,\n type Substitution,\n type SubstitutionClass,\n} from './utils/mutations';\n\nexport const mutationsFilterSchema = z.object({\n nucleotideMutations: z.array(z.string()),\n aminoAcidMutations: z.array(z.string()),\n nucleotideInsertions: z.array(z.string()),\n aminoAcidInsertions: z.array(z.string()),\n});\nexport type MutationsFilter = z.infer<typeof mutationsFilterSchema>;\n\nexport const lapisFilterSchema = z\n .record(z.union([z.string(), z.array(z.string()), z.number(), z.null(), z.boolean(), z.undefined()]))\n .and(mutationsFilterSchema.partial());\nexport type LapisFilter = z.infer<typeof lapisFilterSchema>;\n\nexport const namedLapisFilterSchema = z.object({\n lapisFilter: lapisFilterSchema,\n displayName: z.string(),\n});\nexport type NamedLapisFilter = z.infer<typeof namedLapisFilterSchema>;\n\nexport const temporalGranularitySchema = z.union([\n z.literal('day'),\n z.literal('week'),\n z.literal('month'),\n z.literal('year'),\n]);\nexport type TemporalGranularity = z.infer<typeof temporalGranularitySchema>;\n\nexport const sequenceTypeSchema = z.union([z.literal('nucleotide'), z.literal('amino acid')]);\nexport type SequenceType = z.infer<typeof sequenceTypeSchema>;\n\nexport type SubstitutionOrDeletion = 'substitution' | 'deletion';\n\nexport type MutationType = SubstitutionOrDeletion | 'insertion';\n\nexport type SubstitutionEntry<T extends Substitution = SubstitutionClass> = {\n type: 'substitution';\n mutation: T;\n count: number;\n proportion: number;\n};\n\nexport type DeletionEntry<T extends Deletion = DeletionClass> = {\n type: 'deletion';\n mutation: T;\n count: number;\n proportion: number;\n};\n\nexport type InsertionEntry<T extends Insertion = InsertionClass> = { type: 'insertion'; mutation: T; count: number };\n\nexport type SubstitutionOrDeletionEntry<\n S extends Substitution = SubstitutionClass,\n D extends Deletion = DeletionClass,\n> = SubstitutionEntry<S> | DeletionEntry<D>;\n\nexport type MutationEntry = SubstitutionEntry | DeletionEntry | InsertionEntry;\n\nexport const views = {\n table: 'table',\n venn: 'venn',\n grid: 'grid',\n insertions: 'insertions',\n bar: 'bar',\n line: 'line',\n bubble: 'bubble',\n map: 'map',\n} as const;\n","export const toYYYYMMDD = (date: Date) => {\n const options: Intl.DateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit' };\n return date.toLocaleDateString('en-CA', options);\n};\n","import z from 'zod';\n\nimport { toYYYYMMDD } from './dateConversion';\n\n/**\n * A date range option that can be used in the `gs-date-range-selector` component.\n */\nexport const dateRangeOptionSchema = z.object({\n /** The label of the date range option that will be shown to the user */\n label: z.string(),\n /**\n * The start date of the date range in the format `YYYY-MM-DD`.\n * If not set, the date range selector will default to the `earliestDate` property.\n */\n dateFrom: z.string().date().optional(),\n /**\n * The end date of the date range in the format `YYYY-MM-DD`.\n * If not set, the date range selector will default to the current date.\n */\n dateTo: z.string().date().optional(),\n});\n\nexport type DateRangeOption = z.infer<typeof dateRangeOptionSchema>;\n\nexport type DateRangeSelectOption = string | { dateFrom: string; dateTo: string };\n\nexport class DateRangeOptionChangedEvent extends CustomEvent<DateRangeSelectOption> {\n constructor(detail: DateRangeSelectOption) {\n super('gs-date-range-option-changed', {\n detail,\n bubbles: true,\n composed: true,\n });\n }\n}\n\nconst today = new Date();\n\nconst twoWeeksAgo = new Date();\ntwoWeeksAgo.setDate(today.getDate() - 14);\n\nconst lastMonth = new Date(today);\nlastMonth.setMonth(today.getMonth() - 1);\n\nconst last2Months = new Date(today);\nlast2Months.setMonth(today.getMonth() - 2);\n\nconst last3Months = new Date(today);\nlast3Months.setMonth(today.getMonth() - 3);\n\nconst last6Months = new Date(today);\nlast6Months.setMonth(today.getMonth() - 6);\n\nconst lastYear = new Date(today);\nlastYear.setFullYear(today.getFullYear() - 1);\n\n/**\n * Presets for the `gs-date-range-selector` component that can be used as `dateRangeOptions`.\n */\nexport const dateRangeOptionPresets = {\n last2Weeks: {\n label: 'Last 2 weeks',\n dateFrom: toYYYYMMDD(twoWeeksAgo),\n },\n lastMonth: {\n label: 'Last month',\n dateFrom: toYYYYMMDD(lastMonth),\n },\n last2Months: {\n label: 'Last 2 months',\n dateFrom: toYYYYMMDD(last2Months),\n },\n last3Months: {\n label: 'Last 3 months',\n dateFrom: toYYYYMMDD(last3Months),\n },\n last6Months: {\n label: 'Last 6 months',\n dateFrom: toYYYYMMDD(last6Months),\n },\n lastYear: {\n label: 'Last year',\n dateFrom: toYYYYMMDD(lastYear),\n },\n allTimes: {\n label: 'All times',\n },\n} satisfies Record<string, DateRangeOption>;\n","export type LapisLocationFilter = Record<string, string | null | undefined>;\n\nexport class LocationChangedEvent extends CustomEvent<LapisLocationFilter> {\n constructor(detail: LapisLocationFilter) {\n super('gs-location-changed', {\n detail,\n bubbles: true,\n composed: true,\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/components.d.ts
CHANGED
|
@@ -278,11 +278,6 @@ export declare class LineageFilterComponent extends PreactLitAdapter {
|
|
|
278
278
|
* The component retrieves a list of all possible values for these fields from the Lapis instance.
|
|
279
279
|
* This list is then utilized to display autocomplete suggestions and to validate the input.
|
|
280
280
|
*
|
|
281
|
-
* Given `fields` are `['field1', 'field2', ..., 'fieldN']`,
|
|
282
|
-
* then valid values for the location filter must be in the form `valueForField1 / valueForField2 / ... / valueForFieldK`,
|
|
283
|
-
* where `1 <= K <= N`.
|
|
284
|
-
* Values for the fields `i > K` are considered `undefined`.
|
|
285
|
-
*
|
|
286
281
|
* @fires {CustomEvent<Record<string, string>>} gs-location-changed
|
|
287
282
|
* Fired when a value from the datalist is selected or when a valid value is typed into the field.
|
|
288
283
|
* The `details` of this event contain an object with all `fields` as keys
|
|
@@ -300,9 +295,8 @@ export declare class LineageFilterComponent extends PreactLitAdapter {
|
|
|
300
295
|
export declare class LocationFilterComponent extends PreactLitAdapter {
|
|
301
296
|
/**
|
|
302
297
|
* The initial value to use for this location filter.
|
|
303
|
-
* Must be of the form `valueForField1 / valueForField2 / ... / valueForFieldN`.
|
|
304
298
|
*/
|
|
305
|
-
|
|
299
|
+
value: Record<string, string | null | undefined> | undefined;
|
|
306
300
|
/**
|
|
307
301
|
* Required.
|
|
308
302
|
*
|
|
@@ -1333,7 +1327,7 @@ declare global {
|
|
|
1333
1327
|
|
|
1334
1328
|
declare global {
|
|
1335
1329
|
interface HTMLElementTagNameMap {
|
|
1336
|
-
'gs-
|
|
1330
|
+
'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
|
|
1337
1331
|
}
|
|
1338
1332
|
}
|
|
1339
1333
|
|
|
@@ -1341,7 +1335,7 @@ declare global {
|
|
|
1341
1335
|
declare global {
|
|
1342
1336
|
namespace JSX {
|
|
1343
1337
|
interface IntrinsicElements {
|
|
1344
|
-
'gs-
|
|
1338
|
+
'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1345
1339
|
}
|
|
1346
1340
|
}
|
|
1347
1341
|
}
|
|
@@ -1349,7 +1343,7 @@ declare global {
|
|
|
1349
1343
|
|
|
1350
1344
|
declare global {
|
|
1351
1345
|
interface HTMLElementTagNameMap {
|
|
1352
|
-
'gs-
|
|
1346
|
+
'gs-aggregate': AggregateComponent;
|
|
1353
1347
|
}
|
|
1354
1348
|
}
|
|
1355
1349
|
|
|
@@ -1357,7 +1351,7 @@ declare global {
|
|
|
1357
1351
|
declare global {
|
|
1358
1352
|
namespace JSX {
|
|
1359
1353
|
interface IntrinsicElements {
|
|
1360
|
-
'gs-
|
|
1354
|
+
'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1361
1355
|
}
|
|
1362
1356
|
}
|
|
1363
1357
|
}
|
|
@@ -1365,7 +1359,7 @@ declare global {
|
|
|
1365
1359
|
|
|
1366
1360
|
declare global {
|
|
1367
1361
|
interface HTMLElementTagNameMap {
|
|
1368
|
-
'gs-
|
|
1362
|
+
'gs-mutations-over-time': MutationsOverTimeComponent;
|
|
1369
1363
|
}
|
|
1370
1364
|
}
|
|
1371
1365
|
|
|
@@ -1373,7 +1367,7 @@ declare global {
|
|
|
1373
1367
|
declare global {
|
|
1374
1368
|
namespace JSX {
|
|
1375
1369
|
interface IntrinsicElements {
|
|
1376
|
-
'gs-
|
|
1370
|
+
'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1377
1371
|
}
|
|
1378
1372
|
}
|
|
1379
1373
|
}
|
|
@@ -1381,7 +1375,7 @@ declare global {
|
|
|
1381
1375
|
|
|
1382
1376
|
declare global {
|
|
1383
1377
|
interface HTMLElementTagNameMap {
|
|
1384
|
-
'gs-
|
|
1378
|
+
'gs-sequences-by-location': SequencesByLocationComponent;
|
|
1385
1379
|
}
|
|
1386
1380
|
}
|
|
1387
1381
|
|
|
@@ -1389,7 +1383,7 @@ declare global {
|
|
|
1389
1383
|
declare global {
|
|
1390
1384
|
namespace JSX {
|
|
1391
1385
|
interface IntrinsicElements {
|
|
1392
|
-
'gs-
|
|
1386
|
+
'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1393
1387
|
}
|
|
1394
1388
|
}
|
|
1395
1389
|
}
|
|
@@ -1397,7 +1391,7 @@ declare global {
|
|
|
1397
1391
|
|
|
1398
1392
|
declare global {
|
|
1399
1393
|
interface HTMLElementTagNameMap {
|
|
1400
|
-
'gs-
|
|
1394
|
+
'gs-statistics': StatisticsComponent;
|
|
1401
1395
|
}
|
|
1402
1396
|
}
|
|
1403
1397
|
|
|
@@ -1405,7 +1399,7 @@ declare global {
|
|
|
1405
1399
|
declare global {
|
|
1406
1400
|
namespace JSX {
|
|
1407
1401
|
interface IntrinsicElements {
|
|
1408
|
-
'gs-
|
|
1402
|
+
'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1409
1403
|
}
|
|
1410
1404
|
}
|
|
1411
1405
|
}
|
|
@@ -1413,10 +1407,11 @@ declare global {
|
|
|
1413
1407
|
|
|
1414
1408
|
declare global {
|
|
1415
1409
|
interface HTMLElementTagNameMap {
|
|
1416
|
-
'gs-
|
|
1410
|
+
'gs-date-range-selector': DateRangeSelectorComponent;
|
|
1417
1411
|
}
|
|
1418
1412
|
interface HTMLElementEventMap {
|
|
1419
|
-
'gs-
|
|
1413
|
+
'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
|
|
1414
|
+
'gs-date-range-option-changed': DateRangeOptionChangedEvent;
|
|
1420
1415
|
}
|
|
1421
1416
|
}
|
|
1422
1417
|
|
|
@@ -1424,7 +1419,7 @@ declare global {
|
|
|
1424
1419
|
declare global {
|
|
1425
1420
|
namespace JSX {
|
|
1426
1421
|
interface IntrinsicElements {
|
|
1427
|
-
'gs-
|
|
1422
|
+
'gs-date-range-selector': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1428
1423
|
}
|
|
1429
1424
|
}
|
|
1430
1425
|
}
|
|
@@ -1432,11 +1427,10 @@ declare global {
|
|
|
1432
1427
|
|
|
1433
1428
|
declare global {
|
|
1434
1429
|
interface HTMLElementTagNameMap {
|
|
1435
|
-
'gs-
|
|
1430
|
+
'gs-location-filter': LocationFilterComponent;
|
|
1436
1431
|
}
|
|
1437
1432
|
interface HTMLElementEventMap {
|
|
1438
|
-
'gs-
|
|
1439
|
-
'gs-date-range-option-changed': DateRangeOptionChangedEvent;
|
|
1433
|
+
'gs-location-changed': LocationChangedEvent;
|
|
1440
1434
|
}
|
|
1441
1435
|
}
|
|
1442
1436
|
|
|
@@ -1444,7 +1438,7 @@ declare global {
|
|
|
1444
1438
|
declare global {
|
|
1445
1439
|
namespace JSX {
|
|
1446
1440
|
interface IntrinsicElements {
|
|
1447
|
-
'gs-
|
|
1441
|
+
'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1448
1442
|
}
|
|
1449
1443
|
}
|
|
1450
1444
|
}
|
|
@@ -1452,10 +1446,10 @@ declare global {
|
|
|
1452
1446
|
|
|
1453
1447
|
declare global {
|
|
1454
1448
|
interface HTMLElementTagNameMap {
|
|
1455
|
-
'gs-
|
|
1449
|
+
'gs-mutation-filter': MutationFilterComponent;
|
|
1456
1450
|
}
|
|
1457
1451
|
interface HTMLElementEventMap {
|
|
1458
|
-
'gs-
|
|
1452
|
+
'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
|
|
1459
1453
|
}
|
|
1460
1454
|
}
|
|
1461
1455
|
|
|
@@ -1463,7 +1457,7 @@ declare global {
|
|
|
1463
1457
|
declare global {
|
|
1464
1458
|
namespace JSX {
|
|
1465
1459
|
interface IntrinsicElements {
|
|
1466
|
-
'gs-
|
|
1460
|
+
'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1467
1461
|
}
|
|
1468
1462
|
}
|
|
1469
1463
|
}
|
|
@@ -1471,10 +1465,10 @@ declare global {
|
|
|
1471
1465
|
|
|
1472
1466
|
declare global {
|
|
1473
1467
|
interface HTMLElementTagNameMap {
|
|
1474
|
-
'gs-
|
|
1468
|
+
'gs-lineage-filter': LineageFilterComponent;
|
|
1475
1469
|
}
|
|
1476
1470
|
interface HTMLElementEventMap {
|
|
1477
|
-
'gs-
|
|
1471
|
+
'gs-lineage-filter-changed': CustomEvent<Record<string, string>>;
|
|
1478
1472
|
}
|
|
1479
1473
|
}
|
|
1480
1474
|
|
|
@@ -1482,7 +1476,7 @@ declare global {
|
|
|
1482
1476
|
declare global {
|
|
1483
1477
|
namespace JSX {
|
|
1484
1478
|
interface IntrinsicElements {
|
|
1485
|
-
'gs-
|
|
1479
|
+
'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1486
1480
|
}
|
|
1487
1481
|
}
|
|
1488
1482
|
}
|
|
@@ -1490,10 +1484,10 @@ declare global {
|
|
|
1490
1484
|
|
|
1491
1485
|
declare global {
|
|
1492
1486
|
interface HTMLElementTagNameMap {
|
|
1493
|
-
'gs-
|
|
1487
|
+
'gs-text-input': TextInputComponent;
|
|
1494
1488
|
}
|
|
1495
1489
|
interface HTMLElementEventMap {
|
|
1496
|
-
'gs-
|
|
1490
|
+
'gs-text-input-changed': CustomEvent<Record<string, string>>;
|
|
1497
1491
|
}
|
|
1498
1492
|
}
|
|
1499
1493
|
|
|
@@ -1501,7 +1495,7 @@ declare global {
|
|
|
1501
1495
|
declare global {
|
|
1502
1496
|
namespace JSX {
|
|
1503
1497
|
interface IntrinsicElements {
|
|
1504
|
-
'gs-
|
|
1498
|
+
'gs-text-input': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
|
|
1505
1499
|
}
|
|
1506
1500
|
}
|
|
1507
1501
|
}
|