From 7347220d813faaa31896c152e43854b7a3c89a8f Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 14 Jun 2024 09:51:00 +0200 Subject: [PATCH 01/52] Fix 404 for link to CHANGELOG (#610) --- projects/fhi-angular-highcharts/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index 08178310..002d8998 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -212,7 +212,7 @@ FhiDiagramSerieData is a custum type for FHI Angular Highcharts, but it is based ## Changelog -You find the [changelog here](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/blob/fhi-angular-highcharts/latest/projects/fhi-angular-highcharts/CHANGELOG.md). +You find the [changelog here](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/blob/dev/projects/fhi-angular-highcharts/CHANGELOG.md). ## Contribute From 2f4e40306a010d85c10d87a234141a13a8077b06 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 19 Jun 2024 09:07:34 +0200 Subject: [PATCH 02/52] Update API-doc for FHI Angular Highcharts (units) (#615) --- projects/fhi-angular-highcharts/README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index 002d8998..4d30fea0 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -184,6 +184,7 @@ This is where `allowedCommonJsDependencies` i located in `angular.json` | `data` | `FhiDiagramSerieData[]` | - | yes | The individual data points in a serie. See [FhiDiagramSerieData](#interface-fhidiagramseriedata) for details. | | `name` | `string \| string[]` | - | yes | The name of the serie as shown in the legend. **NB!** The type `string` is an formatted string; pipe (`\|`) is beeing used as seperator between category names if more than one category name is concatenated to one single serie name. To avoid dependency on a given separator, use an array of category names instead. NB! `series` can not contain duplicate `serie.name` | | `stack` | `string` | - | yes | This option allows for grouping series in a stacked chart. Only applies to diagramTypeId `barStacked` and `columnStacked`. | +| `unitId` | `number \| string` | - | no | Used to associate the serie with a unit. This only works if `unit.id` ([FhiDiagramUnit](#interface-fhidiagramunit)) is set, and value is equal to `serie.unitId`. | ### Interface FhiDiagramSerieData @@ -203,12 +204,14 @@ FhiDiagramSerieData is a custum type for FHI Angular Highcharts, but it is based ### Interface FhiDiagramUnit -| Property | Type | Default | Required | Description | -| ---------- | -------- | ------- | -------- | ----------- | -| `decimals` | `number` | - | no | The decimal count. If not set the decimal count same as in data. Count is **limited to 14** decimals due to loss of precision at runtime above 14. A warning will be given in the consol if more than 14 decimals. | -| `label` | `string` | - | yes | The vertical y-axis label, showing next to the axis line. | -| `symbol` | `string` | - | no | Symbol before or after the value in both tooltip and y-axis. | -| `position` | `string` | - | no | Wether the symbol i placed before or after the numbers in the diagram. Possible values: `'start' \| 'end'` | +| Property | Type | Default | Required | Description | +| ---------- | ------------------ | ------- | -------- | ----------- | +| `id` | `number \| string` | - | no | Used to associate the unit with a serie. This only works if a `serie.unitId` ([FhiDiagramSerie](#interface-fhidiagramserie)) is set, and value is equal to `unit.id`. | +| `decimals` | `number` | - | no | The decimal count. If not set the decimal count same as in data. Count is **limited to 14** decimals due to loss of precision at runtime above 14. A warning will be given in the consol if more than 14 decimals. | +| `label` | `string` | - | yes | The vertical y-axis label, showing next to the axis line. | +| `symbol` | `string` | - | no | Symbol before or after the value in both tooltip and y-axis. | +| `position` | `string` | - | no | Wether the symbol i placed before or after the numbers in the diagram. Possible values: `'start' \| 'end'` | +| `yAxis` | `number` | - | no | Which y-axis to associate the unit with. Only support for two y-axis is implemented: `0` is left hand y-axis, `1` is right hand y-axis. | ## Changelog From 9340f3d2af184bd2d484dae837647cb2ff8b9338 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 25 Jun 2024 08:43:10 +0200 Subject: [PATCH 03/52] Improve the Highcharts example code (#619) This fixes a current bug, and hopefully makes it less prone to new bugs in the future. Also simplify dropdowns since they created confusion for our consumers. --- .../highcharts/highcharts.component.html | 32 +-- .../highcharts/highcharts.component.ts | 225 +++++++----------- 2 files changed, 104 insertions(+), 153 deletions(-) diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html index 3cde9367..995d2b70 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html @@ -4,14 +4,13 @@ - Dummy-filter: -
-
- +
+
+
@@ -21,21 +20,14 @@ - Dummy-datasettvelger/ -måltallsvelger: -
-
+
+
-
-
- -
diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 2679297f..074d8f7e 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -17,10 +17,6 @@ import { LibraryItemsShared } from '../../../models/library-item.model'; templateUrl: './highcharts.component.html', }) export class HighchartsComponent implements OnInit { - private diagramOptions_INIT = { - series: undefined, - }; - @Input() itemId!: string; @Input() items!: LibraryItemsShared; @@ -29,6 +25,17 @@ export class HighchartsComponent implements OnInit { diagramOptions!: FhiDiagramOptions; showUnitSelect = false; + titles = { + title_1: 'Dødsfall etter årsak, 2008 - 2018', + title_2a: 'Dødsfall etter årsak, 2017 - 2021', + title_2b: 'Dødsfall etter årsak, 2017', + title_2c: 'Dødsfall etter årsak, 2017 - 2021, Hjerteinfarkt | Mann', + title_3a: 'Befolkning - inndeling per 1.1.2024 (antall)', + title_3b: 'Befolkning - inndeling per 1.1.2024 (andel)', + title_3c: 'Dødsfall hjerte og kar, fordelt på fylke', + title_3d: 'Dobbel akse, linje og søyle', + }; + constructor( private highchartsDataService: MockDataService, private viewportScroller: ViewportScroller, @@ -36,23 +43,23 @@ export class HighchartsComponent implements OnInit { ngOnInit() { if (this.itemId === this.items.HighchartsWithoutMenu.id) { - this.selectMockData('aarsak_2008_2018'); + this.getExampleData('1'); } else if (this.itemId === this.items.HighchartsWithMenu.id) { - this.selectMockData('aarsak_2017_2021'); + this.getExampleData('2a'); } else if (this.itemId === this.items.HighchartsAllInclusive.id) { - this.selectMockData('befolkning_antall'); + this.getExampleData('3a'); } } - onDiagramTypeNavigation(diagramTypeId: FhiDiagramTypeIds) { + onDiagramTypeNavigation(id: FhiDiagramTypeIds) { this.diagramOptions = { ...this.diagramOptions, - diagramTypeId: diagramTypeId, + activeDiagramType: id, }; } onSelectMockData(value: string) { - this.selectMockData(value); + this.getExampleData(value); } onMetadataButtonClick() { @@ -81,139 +88,75 @@ export class HighchartsComponent implements OnInit { }); } - private selectMockData(value: string) { - // this.getTestData(); // Data for testing/debugging while developing locally, do not show in dev or prod. - switch (value) { - // dataset (init) - case 'aarsak_2008_2018': - this.getDodsfallEtterAarsak_2008_2018(); - break; - case 'aarsak_2017_2021': - this.getDodsfallEtterAarsak_2017_2021(); + private getExampleData(example: string) { + switch (example) { + case '1': + this.getData__example_1(); break; - case 'befolkning_antall': - this.getBefolkningInndelingPr2024_antall(); - this.showUnitSelect = true; + case '2a': + this.getData__example_2a(); break; - case 'agens': - this.getAgensAntallOgAndel(); - this.showUnitSelect = false; + case '2b': + this.getData__example_2b(); break; - case 'kart': - this.getDodsfallHjerteOgKarEtterFylke(); - this.showUnitSelect = false; + case '2c': + this.getData__example_2c(); break; - - // select option filter - case 'filter:aarsak_2017_2021': - this.getDodsfallEtterAarsak_2017_2021_FILTER(); - break; - case 'filter:aarsak_2017': - this.getDodsfallEtterAarsak_2017_FILTER(); + case '3a': + this.getData__example_3a(); break; - case 'filter:hjerteinfarkt_mann': - this.getDodsfallEtterAarsak_2017_2021_Hjerteinfarkt_Mann_FILTER(); + case '3b': + this.getData__example_3b(); break; - - // select option unit - case 'unit:befolkning_antall': - this.getBefolkningInndelingPr2024_antall_UNIT(); + case '3c': + this.getData__example_3c(); break; - case 'unit:befolkning_andel': - this.getBefolkningInndelingPr2024_andel_UNIT(); + case '3d': + this.getData__example_3d(); break; + // this.getTestData(); // Data for testing/debugging while developing locally, do not show in dev or prod. } } - private getDodsfallEtterAarsak_2008_2018() { + private getData__example_1() { this.getData(MockData.DodsfallEtterAarsak_2008_2018, { - ...this.diagramOptions_INIT, - diagramTypeId: 'line', - title: 'Dødsfall etter årsak, 2008 - 2018', - }); - } - - private getDodsfallEtterAarsak_2017_2021() { - this.getData(MockData.DodsfallEtterAarsak_2017_2021, { - ...this.diagramOptions_INIT, - title: 'Dødsfall etter årsak, 2017 - 2021', - diagramTypeNavId: 'default', - diagramTypeSubset: ['bar', 'column', 'line', 'map', 'pie'], - decimals: 2, - mapTypeId: 'mapFylker', - }); - } - - private getAgensAntallOgAndel() { - this.getData(MockData.AgensAntallOgAndel, { - ...this.getDiagramOptions_Agens(), - }); - } - - private getDodsfallHjerteOgKarEtterFylke() { - this.getData(MockData.DodsfallHjerteOgKarEtterFylke, { - ...this.getDiagramOptions_AllInclusive(), - title: 'Dødsfall hjerte og kar, fordelt på fylke', + series: undefined, + activeDiagramType: 'line', + title: this.titles.title_1, }); } - private getBefolkningInndelingPr2024_antall() { - this.getData(MockData.BefolkningInndelingPr2024_antall, { - ...this.getDiagramOptions_AllInclusive(), - title: 'Befolkning - inndeling per 1.1.2024 (antall)', - diagramTypeId: 'column', - units: [{ label: 'Antall' }], - }); - } - - private getDodsfallEtterAarsak_2017_2021_FILTER() { + private getData__example_2a() { this.getData(MockData.DodsfallEtterAarsak_2017_2021, { - ...this.diagramOptions, - title: 'Dødsfall etter årsak, 2017 - 2021', + series: undefined, + title: this.titles.title_2a, + controls: { + navigation: { + show: true, + }, + }, }); } - private getDodsfallEtterAarsak_2017_FILTER() { + private getData__example_2b() { this.getData(MockData.DodsfallEtterAarsak_2017, { ...this.diagramOptions, - title: 'Dødsfall etter årsak, 2017', + title: this.titles.title_2b, }); } - private getDodsfallEtterAarsak_2017_2021_Hjerteinfarkt_Mann_FILTER() { + private getData__example_2c() { this.getData(MockData.DodsfallEtterAarsak_2017_2021_Hjerteinfarkt_Mann, { ...this.diagramOptions, - title: 'Dødsfall etter årsak, 2017 - 2021, Hjerteinfarkt | Mann', + title: this.titles.title_2c, }); } - private getBefolkningInndelingPr2024_antall_UNIT() { + private getData__example_3a() { this.getData(MockData.BefolkningInndelingPr2024_antall, { - ...this.diagramOptions, - title: 'Befolkning - inndeling per 1.1.2024 (antall)', - units: [{ label: 'Antall' }], - }); - } - - private getBefolkningInndelingPr2024_andel_UNIT() { - this.getData(MockData.BefolkningInndelingPr2024_andel, { - ...this.diagramOptions, - title: 'Befolkning - inndeling per 1.1.2024 (andel)', - units: [ - { - decimals: 1, - label: 'Prosent', - symbol: '%', - position: 'end', - }, - ], - }); - } - - private getDiagramOptions_AllInclusive(): FhiDiagramOptions { - return { - ...this.diagramOptions_INIT, - activeDiagramType: 'mapFylker2023', + series: undefined, + activeDiagramType: 'column', + title: this.titles.title_3a, controls: { fullScreenButton: { show: true, @@ -223,11 +166,10 @@ export class HighchartsComponent implements OnInit { }, navigation: { items: { - chartTypes: ['bar', 'column', 'pie'], + chartTypes: ['bar', 'column', 'columnAndLine', 'line', 'pie'], mapTypes: ['mapFylker2023'], }, show: true, - type: 'default', // this has no effect (currently only one nav type) }, }, footer: { @@ -245,21 +187,40 @@ export class HighchartsComponent implements OnInit { }, openSource: false, tableOrientation: 'seriesAsColumns', - title: '', units: [{ label: 'Antall' }], - }; + }); } - private getDiagramOptions_Agens(): FhiDiagramOptions { - const diagramOptions: FhiDiagramOptions = { - ...this.getDiagramOptions_AllInclusive(), - }; - diagramOptions.controls.navigation.items.chartTypes = ['columnAndLine', 'pie']; - diagramOptions.controls.navigation.items.mapTypes = ['mapFylker']; - return { - ...diagramOptions, + private getData__example_3b() { + this.getData(MockData.BefolkningInndelingPr2024_andel, { + ...this.diagramOptions, + activeDiagramType: 'column', + title: this.titles.title_3b, + units: [ + { + decimals: 1, + label: 'Prosent', + symbol: '%', + position: 'end', + }, + ], + }); + } + + private getData__example_3c() { + this.getData(MockData.DodsfallHjerteOgKarEtterFylke, { + ...this.diagramOptions, + activeDiagramType: 'mapFylker2023', + title: this.titles.title_3c, + units: undefined, + }); + } + + private getData__example_3d() { + this.getData(MockData.AgensAntallOgAndel, { + ...this.diagramOptions, activeDiagramType: 'columnAndLine', - title: 'Dobbel akse, linje og søyle', + title: this.titles.title_3d, units: [ { id: 'antall', @@ -273,13 +234,12 @@ export class HighchartsComponent implements OnInit { position: 'end', }, ], - }; + }); } private getTestData() { this.getData(MockData.TestData, { - ...this.diagramOptions_INIT, - + series: undefined, activeDiagramType: 'columnAndLine', controls: { navigation: { @@ -295,8 +255,7 @@ export class HighchartsComponent implements OnInit { ], }, openSource: false, - // series -> is set in this.getData() - // tableOrientation: 'seriesAsColumns', + tableOrientation: 'seriesAsColumns', title: 'Dobbel akse, linje og søyle', units: [ { @@ -313,10 +272,10 @@ export class HighchartsComponent implements OnInit { ], // The following will be deprecated in v5 - + // -------------------------------------- // diagramTypeId: 'map', // diagramTypeNavId: 'default', - decimals: 2, + // decimals: 2, // flags: [ // { symbol: '..', label: 'Manglende data' }, // { symbol: '.', label: 'Lar seg ikke beregne' }, From a91d0869b9a0b2b37fbb68261c63a308b913effe Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 26 Jun 2024 14:11:30 +0200 Subject: [PATCH 04/52] Add unit.yAxisMax/unit.yAxisMin (#620) - update documentation - update example code --- projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++- projects/fhi-angular-highcharts/README.md | 3 +- .../src/lib/models/fhi-diagram-unit.model.ts | 3 +- .../services/diagram-type-group.service.ts | 2 +- .../src/lib/services/options.service.ts | 45 ++++++++++++------- .../highcharts/highcharts.component.ts | 6 ++- 6 files changed, 45 insertions(+), 22 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index b3e888c2..4df14c64 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,4 +1,10 @@ -# 4.0.0 +# Unreleased + +> Jun 25, 2024 + +* :tada: **Enhancement** Add support for user defined max/min y-axis value + +## 4.0.0 > Jun 13, 2024 diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index 4d30fea0..0bc1b425 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -211,7 +211,8 @@ FhiDiagramSerieData is a custum type for FHI Angular Highcharts, but it is based | `label` | `string` | - | yes | The vertical y-axis label, showing next to the axis line. | | `symbol` | `string` | - | no | Symbol before or after the value in both tooltip and y-axis. | | `position` | `string` | - | no | Wether the symbol i placed before or after the numbers in the diagram. Possible values: `'start' \| 'end'` | -| `yAxis` | `number` | - | no | Which y-axis to associate the unit with. Only support for two y-axis is implemented: `0` is left hand y-axis, `1` is right hand y-axis. | +| `yAxisMax` | `number` | - | no | The maximum value of the y-axis. If not set, the max value is automatically calculated. NB! Highcharts may override the value in some edge cases. | +| `yAxisMin` | `number` | - | no | The minimum value of the y-axis. If not set, the min value is automatically calculated. NB! Highcharts may override the value in some edge cases. | ## Changelog diff --git a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-unit.model.ts b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-unit.model.ts index b20fb78c..5a4235c8 100644 --- a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-unit.model.ts +++ b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-unit.model.ts @@ -14,5 +14,6 @@ export interface FhiDiagramUnit { label: string; symbol?: string; position?: keyof typeof UnitSymbolPosition; - yAxis?: number; + yAxisMax?: number; + yAxisMin?: number; } diff --git a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts index aa45ae0d..86400f55 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts @@ -187,7 +187,7 @@ export class DiagramTypeGroupService { } private disableColumnAndLine(): boolean { - return this.disableBar() || this.diagramOptions.units?.length < 2; + return this.disableBar() || this.diagramOptions.units?.length !== 2; } private disableColumnStacked(): boolean { diff --git a/projects/fhi-angular-highcharts/src/lib/services/options.service.ts b/projects/fhi-angular-highcharts/src/lib/services/options.service.ts index 8b0f06a2..2aab8905 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/options.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/options.service.ts @@ -157,31 +157,42 @@ export class OptionsService { format: '{value}', }; } + if (unit.yAxisMax !== undefined) { + yAxis.max = unit.yAxisMax; + } + if (unit.yAxisMin !== undefined) { + yAxis.min = unit.yAxisMin; + } } return yAxis; } private updateOptionsForDiagramTypeColumnAndLine(options: Options) { + const units = this.diagramOptions.units; this.diagramOptions.series.forEach((serie, i) => { - if (serie.unitId === this.diagramOptions.units[0].id) { - options.series[i]['tooltip'] = this.getTooltip({}, this.diagramOptions.units[0]); - options.series[i].type = 'column'; - options.series[i].yAxis = 0; - } else if (serie.unitId === this.diagramOptions.units[1].id) { - options.series[i]['tooltip'] = this.getTooltip({}, this.diagramOptions.units[1]); - options.series[i].type = 'line'; - options.series[i].yAxis = 1; + if (units[0].id === serie.unitId) { + options.series[i] = { + ...options.series[i], + tooltip: this.getTooltip({}, units[0]), + yAxis: 0, + type: 'column', + } as SeriesOptionsType; + } else if (units[1].id === serie.unitId) { + options.series[i] = { + ...options.series[i], + tooltip: this.getTooltip({}, units[1]), + yAxis: 1, + type: 'line', + } as SeriesOptionsType; } }); - options.yAxis = this.getTwoYAxis(options.yAxis as YAxisOptions[], this.diagramOptions.units); - } - - private getTwoYAxis(yAxis: YAxisOptions[], units: FhiDiagramUnit[]): YAxisOptions[] { - yAxis = []; - yAxis[0] = this.getYAxis({}, units[0]); - yAxis[1] = this.getYAxis({}, units[1]); - yAxis[1].opposite = true; - return yAxis; + options.yAxis = [ + this.getYAxis({}, units[0]), + { + ...this.getYAxis({}, units[1]), + opposite: true, + }, + ]; } /** diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 074d8f7e..8fd1c15d 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -127,8 +127,10 @@ export class HighchartsComponent implements OnInit { } private getData__example_2a() { + const activeDiagramType = this.diagramOptions?.activeDiagramType; this.getData(MockData.DodsfallEtterAarsak_2017_2021, { series: undefined, + activeDiagramType: activeDiagramType ? activeDiagramType : undefined, title: this.titles.title_2a, controls: { navigation: { @@ -194,7 +196,7 @@ export class HighchartsComponent implements OnInit { private getData__example_3b() { this.getData(MockData.BefolkningInndelingPr2024_andel, { ...this.diagramOptions, - activeDiagramType: 'column', + activeDiagramType: 'line', title: this.titles.title_3b, units: [ { @@ -202,6 +204,8 @@ export class HighchartsComponent implements OnInit { label: 'Prosent', symbol: '%', position: 'end', + yAxisMax: 20, + yAxisMin: 10, }, ], }); From f4279375709099a4b65864049460481f8fc182ab Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 27 Jun 2024 09:36:07 +0200 Subject: [PATCH 05/52] Release/fhi-angular-highcharts/4.1.0 (#621) --- projects/fhi-angular-highcharts/CHANGELOG.md | 4 ++-- projects/fhi-angular-highcharts/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 4df14c64..ebb322c4 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,6 +1,6 @@ -# Unreleased +# 4.1.0 -> Jun 25, 2024 +> Jun 27, 2024 * :tada: **Enhancement** Add support for user defined max/min y-axis value diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 06201909..58c6d596 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "4.0.0", + "version": "4.1.0", "publishConfig": { "tag": "latest" }, From 0edbe60017dce4347f5b1f52d721656f21634445 Mon Sep 17 00:00:00 2001 From: Karl Granli Date: Fri, 28 Jun 2024 13:36:55 +0200 Subject: [PATCH 06/52] Enhancement/add search to tree view checkbox and tree view radio (#622) --- package-lock.json | 45 +- projects/fhi-angular-components/CHANGELOG.md | 8 +- .../src/lib/fhi-tree-view-selection/README.md | 14 +- .../fhi-tree-view-checkbox/README.md | 10 +- .../fhi-tree-view-checkbox.component.html | 2 + .../fhi-tree-view-checkbox.component.ts | 2 + .../fhi-tree-view-radio/README.md | 14 +- .../fhi-tree-view-radio.component.html | 2 + .../fhi-tree-view-radio.component.ts | 2 + .../fhi-tree-view-selection.component.html | 60 +- .../fhi-tree-view-selection.component.ts | 83 +- .../_fhi-tree-view-checkbox.scss | 10 + .../tree-views/alle_atckoder_som_items.ts | 13246 ++++++++++++++++ .../tree-views/tree-views.component.html | 2 + .../tree-views/tree-views.component.ts | 14 +- .../library-copy-button.component.html | 2 +- 16 files changed, 13441 insertions(+), 75 deletions(-) create mode 100644 src/app/views/shared/dynamic-library-examples/example-components/tree-views/alle_atckoder_som_items.ts diff --git a/package-lock.json b/package-lock.json index 0a8a87ae..67500f92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8133,9 +8133,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", - "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -8147,7 +8147,7 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" @@ -15051,13 +15051,13 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", - "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, "dependencies": { "debug": "~4.3.4", - "ws": "~8.11.0" + "ws": "~8.17.1" } }, "node_modules/socket.io-parser": { @@ -16842,27 +16842,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -17155,16 +17134,16 @@ "dev": true }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 18aa8d2b..41b1452a 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,4 +1,10 @@ -# 4.3.0 +# Unreleased + +> Jun 28, 2024 + +* :tada: **Enhancement** Add search filter to `FhiTreeViewCheckbox` and `FhiTreeViewRadio` + +## 4.3.0 > Jun 13, 2024 diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/README.md b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/README.md index fa8523b6..dc93e1d5 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/README.md +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/README.md @@ -4,12 +4,14 @@ ### Input -| Input | Type | Default | Required | Description | -| ----------------- | ---------------------------------- | ------- | -------- | ----------- | -| `enableCheckAll` | `boolean` | false | no | Trigger to select/deselect all siblings, only if `singleSelection === false`. | -| `items` | `Array` | - | yes | Array of all items in selection tree. | -| `name` | `string` | - | no/yes | Naming the radio button group. Required if `singleSelection === true`. | -| `singleSelection` | `boolean` | false | no | Radio buttons or checkboxes. | +| Input | Type | Default | Required | Description | +|-------------------|-----------------------------------|------------------|----------|-------------------------------------------------------------------------------| +| `enableCheckAll` | `boolean` | false | no | Trigger to select/deselect all siblings, only if `singleSelection === false`. | +| `enableFilter` | `boolean` | false | no | Enable a text input for filtering the selection tree. | +| `filterLabel` | `string` | `Filtrer listen` | no | Enable a text input for filtering the selection tree. | +| `items` | `Array` | - | yes | Array of all items in selection tree. | +| `name` | `string` | - | no/yes | Naming the radio button group. Required if `singleSelection === true`. | +| `singleSelection` | `boolean` | false | no | Radio buttons or checkboxes. | ### Output diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/README.md b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/README.md index c6fac1be..7d642713 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/README.md +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/README.md @@ -4,10 +4,12 @@ ### Input -| Input | Type | Default | Required | Description | -| ----------------- | ---------------------------------- | ------- | -------- | ----------- | -| `enableCheckAll` | `boolean` | false | no | Enable a button with text "Velg alle" above each level of checkboxes. | -| `items` | `Array` | - | yes | Array of all items in checkbox tree. | +| Input | Type | Default | Required | Description | +|------------------|-----------------------------------|------------------|----------|-----------------------------------------------------------------------| +| `enableCheckAll` | `boolean` | false | no | Enable a button with text "Velg alle" above each level of checkboxes. | +| `enableFilter` | `boolean` | false | no | Enable a text input for filtering the checkbox tree. | +| `filterLabel` | `string` | `Filtrer listen` | no | Label for the checkbox tree filter. | +| `items` | `Array` | - | yes | Array of all items in checkbox tree. | ### Output diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.html b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.html index 91e80c90..2a49124e 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.html +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.html @@ -1,5 +1,7 @@ diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.ts b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.ts index 1b2a9752..d57e50a7 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.ts +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-checkbox/fhi-tree-view-checkbox.component.ts @@ -11,6 +11,8 @@ import { FhiTreeViewSelectionItem as Item } from '../fhi-tree-view-selection-ite }) export class FhiTreeViewCheckboxComponent { @Input() enableCheckAll = false; + @Input() enableFilter: boolean = false; + @Input() filterLabel: string = 'Filtrer listen'; @Input() items: Item[]; @Output() itemsChange = new EventEmitter(); diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/README.md b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/README.md index 4a8dd1d5..41e3516d 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/README.md +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/README.md @@ -4,15 +4,17 @@ ### Input -| Input | Type | Default | Required | Description | -| ----------------- | ---------------------------------- | ------- | -------- | ----------- | -| `items` | `Array` | - | yes | Array of all items in radio tree. | -| `name` | `string` | - | yes | Naming the radio button group. | +| Input | Type | Default | Required | Description | +|----------------|-----------------------------------|------------------|----------|------------------------------------------------------| +| `enableFilter` | `boolean` | false | no | Enable a text input for filtering the checkbox tree. | +| `filterLabel` | `string` | `Filtrer listen` | no | Label for the checkbox tree filter. | +| `items` | `Array` | - | yes | Array of all items in radio tree. | +| `name` | `string` | - | yes | Naming the radio button group. | ### Output -| Output | Type | Description | -| ------------- | --------------------------------- | ----------- | +| Output | Type | Description | +|---------------|-----------------------------------|--------------------------------------------------------------------------| | `itemsChange` | `Array` | An output event for accessing the state of all items in your radio tree. | ### FhiTreeViewSelectionItem diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/fhi-tree-view-radio.component.html b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/fhi-tree-view-radio.component.html index 7712a90c..a891084a 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/fhi-tree-view-radio.component.html +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-radio/fhi-tree-view-radio.component.html @@ -1,5 +1,7 @@ - + +
    - + @@ -25,7 +49,7 @@ - +
    @@ -86,9 +110,12 @@ [checked]="item.isChecked" (click)="toggleChecked(item.id)" /> - +
    @@ -102,8 +129,11 @@ [checked]="item.isChecked" (change)="toggleChecked(item.id, false, false)" /> - +
diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts index 2fd8d672..da521131 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts @@ -9,6 +9,7 @@ import { ViewEncapsulation, } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; import { FhiTreeViewSelectionItem as Item } from './fhi-tree-view-selection-item.model'; import { FhiTreeViewSelectionItemState } from './fhi-tree-view-selection-item-state.model'; @@ -18,21 +19,34 @@ import { FhiTreeViewSelectionItemState } from './fhi-tree-view-selection-item-st standalone: true, templateUrl: './fhi-tree-view-selection.component.html', encapsulation: ViewEncapsulation.None, - imports: [CommonModule], + imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, }) export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { - @Input() enableCheckAll = false; - @Input() singleSelection = false; + @Input() enableCheckAll: boolean = false; + @Input() filterLabel: string = 'Filtrer listen'; + @Input() singleSelection: boolean = false; @Input() items: Item[]; @Input() name: string; + @Input() enableFilter: boolean = false; @Output() itemsChange = new EventEmitter(); + filteredItems: Item[]; + filterString = ''; + minimumFilterLength: number = 3; + searchMode: boolean = false; + uniqueFilterId: string; + + constructor() { + this.uniqueFilterId = this.generateUniqueFilterId(); + } + ngOnInit() { if (this.enableCheckAll) { this.singleSelection = false; } + this.filteredItems = [...this.items]; } ngOnChanges() { @@ -42,6 +56,21 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { } } + onFilterNgModelChange(filterValue: string) { + if (filterValue.length === 0) { + this.filterString = filterValue; + this.filterTree(); + } + } + + onFilterKeydownEnter() { + this.filterTree(); + } + + onFilterButtonClick() { + this.filterTree(); + } + toggleExpanded(item: Item) { item.isExpanded = !item.isExpanded; } @@ -72,6 +101,52 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { return items.every((item) => item.isChecked); } + filterTree() { + if (this.filterString.length >= this.minimumFilterLength) { + this.searchMode = true; + this.filteredItems = this.filterTreeData(this.items, this.filterString); + } else { + this.searchMode = false; + this.filteredItems = this.filterTreeData(this.items, ''); // reset filter + this.filteredItems = [...this.items]; // show all + } + } + + private filterTreeData(treeData: Item[], filterString: string): Item[] { + const lowerCaseFilter = filterString.toLowerCase(); + + const filterItems = (items: Item[]): Item[] => { + return items.reduce((filteredItems: Item[], item: Item) => { + item.name = item.name.replace(/<[^>]*>/g, ''); // remove tag that was added for highlighting + const lowerCaseName = item.name.toLowerCase(); + + if (lowerCaseName.includes(lowerCaseFilter)) { + if (lowerCaseFilter !== '') { + item.name = item.name.replace( + RegExp(filterString, 'gi'), // find filter string to highlight + '$&', + ); + } + const filteredChildren = item.children ? filterItems(item.children) : []; + filteredItems.push({ ...item, children: filteredChildren }); + } else if (item.children) { + const filteredChildren = filterItems(item.children); + if (filteredChildren.length > 0) { + filteredItems.push({ ...item, children: filteredChildren }); + } + } + + return filteredItems; + }, []); + }; + + return filterItems(treeData); + } + + private generateUniqueFilterId(): string { + return 'search-filter-' + Math.random().toString(36).substring(2, 11); + } + private updateCheckedState( id: number | string, items: Item[], @@ -133,7 +208,7 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { // Compute EXPANDED states // Update this items expanded and the overall hasExpandedDecendant for all items in this loop if (expandCheckedItems && item.isChecked) { - itemsState.hasExpandedDescendant = true; + itemsState.hasExpandedDescendant = true; } itemsState.hasExpandedDescendant = itemsState.hasExpandedDescendant || childrenState.hasExpandedDescendant; diff --git a/projects/fhi-angular-components/src/styles/fhi-tree-views/_fhi-tree-view-checkbox.scss b/projects/fhi-angular-components/src/styles/fhi-tree-views/_fhi-tree-view-checkbox.scss index 3ff3622a..98732847 100644 --- a/projects/fhi-angular-components/src/styles/fhi-tree-views/_fhi-tree-view-checkbox.scss +++ b/projects/fhi-angular-components/src/styles/fhi-tree-views/_fhi-tree-view-checkbox.scss @@ -34,4 +34,14 @@ text-decoration: none; } } + + &__search { + max-width: 25rem; + } + + &__mark { + background-color: transparent; + font-weight: bold; + padding: 0; + } } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/alle_atckoder_som_items.ts b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/alle_atckoder_som_items.ts new file mode 100644 index 00000000..ed71e0e5 --- /dev/null +++ b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/alle_atckoder_som_items.ts @@ -0,0 +1,13246 @@ +export const alleAtcKoderSomItems = [ + { + id: 'A', + name: 'A - FORDØYELSESORGANER OG STOFFSKIFTE', + children: [ + { + id: 'A01', + name: 'A01 - MUNN- OG TANNMIDLER', + children: [ + { + id: 'A01A', + name: 'A01A - MUNN- OG TANNMIDLER', + children: [ + { + id: 'A01AB', + name: 'A01AB - Antiinfektiva og antiseptika til lokal behandling i munnen', + children: [ + { + id: 'A01AB02', + name: 'A01AB02 - hydrogenperoksid', + }, + { + id: 'A01AB03', + name: 'A01AB03 - klorheksidin', + }, + { + id: 'A01AB04', + name: 'A01AB04 - amfotericin b', + }, + { + id: 'A01AB09', + name: 'A01AB09 - mikonazol', + }, + { + id: 'A01AB11', + name: 'A01AB11 - diverse', + }, + { + id: 'A01AB17', + name: 'A01AB17 - metronidazol', + }, + ], + }, + { + id: 'A01AC', + name: 'A01AC - Kortikosteroider til lokal behandling i munnen', + children: [ + { + id: 'A01AC01', + name: 'A01AC01 - triamcinolon', + }, + { + id: 'A01AC03', + name: 'A01AC03 - hydrokortison', + }, + ], + }, + { + id: 'A01AD', + name: 'A01AD - Andre midler til lokal behandling i munnen', + children: [ + { + id: 'A01AD01', + name: 'A01AD01 - adrenalin', + }, + { + id: 'A01AD02', + name: 'A01AD02 - benzydamin', + }, + { + id: 'A01AD11', + name: 'A01AD11 - diverse', + }, + ], + }, + { + id: 'A01AA', + name: 'A01AA - Midler mot karies', + children: [ + { + id: 'A01AA01', + name: 'A01AA01 - natriumfluorid', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A02', + name: 'A02 - MIDLER MOT SYRERELATERTE LIDELSER', + children: [ + { + id: 'A02A', + name: 'A02A - ANTACIDA', + children: [ + { + id: 'A02AC', + name: 'A02AC - kalsiumforbindelser', + children: [ + { + id: 'A02AC01', + name: 'A02AC01 - kalsiumkarbonat', + }, + ], + }, + { + id: 'A02AD', + name: 'A02AD - Kombinasjoner og komplekser av aluminium, kalsium og magnesium forbindelser', + children: [ + { + id: 'A02AD01', + name: 'A02AD01 - ordinære saltkombinasjoner', + }, + ], + }, + { + id: 'A02AH', + name: 'A02AH - Antacida med natriumhydrogenkarbonat', + }, + { + id: 'A02AA', + name: 'A02AA - Magnesiumforbindelser', + children: [ + { + id: 'A02AA04', + name: 'A02AA04 - magnesiumhydroksid', + }, + ], + }, + ], + }, + { + id: 'A02B', + name: 'A02B - MIDLER MOT ULCUS OG GASTROØSOFAGEAL REFLUKSSYKDOM (GERD)', + children: [ + { + id: 'A02BA', + name: 'A02BA - H2-reseptorantagonister', + children: [ + { + id: 'A02BA01', + name: 'A02BA01 - cimetidin', + }, + { + id: 'A02BA02', + name: 'A02BA02 - ranitidin', + }, + { + id: 'A02BA03', + name: 'A02BA03 - famotidin', + }, + { + id: 'A02BA07', + name: 'A02BA07 - ranitidinvismutsitrat', + }, + { + id: 'A02BA53', + name: 'A02BA53 - famotidin, kombinasjoner', + }, + ], + }, + { + id: 'A02BB', + name: 'A02BB - Prostaglandiner', + children: [ + { + id: 'A02BB01', + name: 'A02BB01 - misoprostol', + }, + ], + }, + { + id: 'A02BC', + name: 'A02BC - Protonpumpehemmere', + children: [ + { + id: 'A02BC01', + name: 'A02BC01 - omeprazol', + }, + { + id: 'A02BC02', + name: 'A02BC02 - pantoprazol', + }, + { + id: 'A02BC03', + name: 'A02BC03 - lansoprazol', + }, + { + id: 'A02BC05', + name: 'A02BC05 - esomeprazol', + }, + ], + }, + { + id: 'A02BX', + name: 'A02BX - Andre midler mot ulcus og gastroøsofageal reflukssykdom (GORD)', + children: [ + { + id: 'A02BX02', + name: 'A02BX02 - sukralfat', + }, + { + id: 'A02BX12', + name: 'A02BX12 - vismut subnitrat', + }, + { + id: 'A02BX13', + name: 'A02BX13 - alginsyre', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A03', + name: 'A03 - MIDLER MOT FUNKSJONELLE GASTROINTESTINALE LIDELSER', + children: [ + { + id: 'A03A', + name: 'A03A - MIDLER MOT FUNKSJONELLE GASTROINTESTINALE LIDELSER', + children: [ + { + id: 'A03AB', + name: 'A03AB - Syntetiske antikolinergika, kvartære ammoniumforbindelser', + children: [ + { + id: 'A03AB02', + name: 'A03AB02 - glykopyrroniumbromid', + }, + { + id: 'A03AB05', + name: 'A03AB05 - propantelin', + }, + { + id: 'A03AB07', + name: 'A03AB07 - metantelin', + }, + ], + }, + { + id: 'A03AD', + name: 'A03AD - Papaverin og derivater', + children: [ + { + id: 'A03AD01', + name: 'A03AD01 - papaverin', + }, + ], + }, + { + id: 'A03AX', + name: 'A03AX - Andre midler mot funksjonelle gastrointestinale lidelser', + children: [ + { + id: 'A03AX13', + name: 'A03AX13 - silikonforbindelser', + }, + { + id: 'A03AX15', + name: 'A03AX15 - peppermynteolje', + }, + ], + }, + { + id: 'A03AA', + name: 'A03AA - Syntetiske antikolinergika, estre med en tertiær aminogruppe', + children: [ + { + id: 'A03AA04', + name: 'A03AA04 - mebeverin', + }, + { + id: 'A03AA05', + name: 'A03AA05 - trimebutin', + }, + { + id: 'A03AA07', + name: 'A03AA07 - dicykloverin', + }, + ], + }, + ], + }, + { + id: 'A03B', + name: 'A03B - BELLADONNA OG DERIVATER, USAMMENSATTE', + children: [ + { + id: 'A03BA', + name: 'A03BA - Belladonnaalkaloider, tertiære aminer', + children: [ + { + id: 'A03BA01', + name: 'A03BA01 - atropin', + }, + { + id: 'A03BA03', + name: 'A03BA03 - hyoscyamin', + }, + ], + }, + { + id: 'A03BB', + name: 'A03BB - Belladonnaalkaloider halvsyntetiske, kvartære ammonium forbindelser', + children: [ + { + id: 'A03BB01', + name: 'A03BB01 - butylskopolamin', + }, + { + id: 'A03BB02', + name: 'A03BB02 - metylatropin', + }, + { + id: 'A03BB03', + name: 'A03BB03 - metylskopolamin', + }, + ], + }, + ], + }, + { + id: 'A03C', + name: 'A03C - SPASMOLYTIKA I KOMBINASJON MED PSYKOLEPTIKA', + children: [ + { + id: 'A03CA', + name: 'A03CA - Syntetiske antikolinergika i kombinasjon med psykoleptika', + children: [ + { + id: 'A03CA02', + name: 'A03CA02 - klidin og psykoleptika', + }, + ], + }, + ], + }, + { + id: 'A03F', + name: 'A03F - MOTILITETSREGULERENDE MIDLER', + children: [ + { + id: 'A03FA', + name: 'A03FA - Motilitetsregulerende midler', + children: [ + { + id: 'A03FA01', + name: 'A03FA01 - metoklopramid', + }, + { + id: 'A03FA02', + name: 'A03FA02 - cisaprid', + }, + { + id: 'A03FA03', + name: 'A03FA03 - domperidon', + }, + { + id: 'A03FA05', + name: 'A03FA05 - alisaprid', + }, + { + id: 'A03FA07', + name: 'A03FA07 - itoprid', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A04', + name: 'A04 - ANTIEMETIKA', + children: [ + { + id: 'A04A', + name: 'A04A - ANTIEMETIKA', + children: [ + { + id: 'A04AD', + name: 'A04AD - Andre antiemetika', + children: [ + { + id: 'A04AD01', + name: 'A04AD01 - skopolamin', + }, + { + id: 'A04AD05', + name: 'A04AD05 - metopimazin', + }, + { + id: 'A04AD10', + name: 'A04AD10 - dronabinol', + }, + { + id: 'A04AD12', + name: 'A04AD12 - aprepitant', + }, + ], + }, + { + id: 'A04AA', + name: 'A04AA - Serotonin (5HT3)-antagonister', + children: [ + { + id: 'A04AA01', + name: 'A04AA01 - ondansetron', + }, + { + id: 'A04AA02', + name: 'A04AA02 - granisetron', + }, + { + id: 'A04AA03', + name: 'A04AA03 - tropisetron', + }, + { + id: 'A04AA05', + name: 'A04AA05 - palonosetron', + }, + { + id: 'A04AA55', + name: 'A04AA55 - palonosetron, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A05', + name: 'A05 - GALLE- OG LEVERTERAPI', + children: [ + { + id: 'A05A', + name: 'A05A - GALLETERAPI', + children: [ + { + id: 'A05AA', + name: 'A05AA - Gallesyrer og derivater', + children: [ + { + id: 'A05AA01', + name: 'A05AA01 - kenodeoksykolsyre', + }, + { + id: 'A05AA02', + name: 'A05AA02 - ursodeoksykolsyre', + }, + { + id: 'A05AA04', + name: 'A05AA04 - obetikolsyre', + }, + { + id: 'A05AA05', + name: 'A05AA05 - ursodoksikoltaurin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A06', + name: 'A06 - MIDLER MOT FORSTOPPELSE', + children: [ + { + id: 'A06A', + name: 'A06A - MIDLER MOT FORSTOPPELSE', + children: [ + { + id: 'A06AB', + name: 'A06AB - Kontaktlaksantia', + children: [ + { + id: 'A06AB02', + name: 'A06AB02 - bisakodyl', + }, + { + id: 'A06AB06', + name: 'A06AB06 - sennaglykosider', + }, + { + id: 'A06AB08', + name: 'A06AB08 - natriumpikosulfat', + }, + { + id: 'A06AB20', + name: 'A06AB20 - kombinasjoner av kontaktlaksantia', + }, + { + id: 'A06AB53', + name: 'A06AB53 - dantron, kombinasjoner', + }, + { + id: 'A06AB56', + name: 'A06AB56 - sennaglykosider, kombinasjoner', + }, + { + id: 'A06AB58', + name: 'A06AB58 - natriumpikosulfat, kombinasjoner', + }, + ], + }, + { + id: 'A06AC', + name: 'A06AC - Volumøkende laksantia', + children: [ + { + id: 'A06AC01', + name: 'A06AC01 - ispaghula (loppefrø)', + }, + { + id: 'A06AC51', + name: 'A06AC51 - ispaghula, kombinasjoner', + }, + ], + }, + { + id: 'A06AD', + name: 'A06AD - Osmotisk virkende midler', + children: [ + { + id: 'A06AD11', + name: 'A06AD11 - laktulose', + }, + { + id: 'A06AD12', + name: 'A06AD12 - laktitol', + }, + { + id: 'A06AD15', + name: 'A06AD15 - makrogol', + }, + { + id: 'A06AD17', + name: 'A06AD17 - natriumfosfat', + }, + { + id: 'A06AD65', + name: 'A06AD65 - makrogol, kombinasjoner', + }, + ], + }, + { + id: 'A06AG', + name: 'A06AG - Klystermidler', + children: [ + { + id: 'A06AG02', + name: 'A06AG02 - bisakodyl', + }, + { + id: 'A06AG04', + name: 'A06AG04 - glyserol', + }, + { + id: 'A06AG06', + name: 'A06AG06 - olje', + }, + { + id: 'A06AG10', + name: 'A06AG10 - dokusatnatrium, inkl. kombinasjoner', + }, + { + id: 'A06AG11', + name: 'A06AG11 - natriumlaurylsulfoacetat, inkl. kombinasjoner', + }, + ], + }, + { + id: 'A06AH', + name: 'A06AH - Perifere opioidreseptor antagonister', + children: [ + { + id: 'A06AH01', + name: 'A06AH01 - metylnaltreksonbromid', + }, + { + id: 'A06AH03', + name: 'A06AH03 - naloksegol', + }, + ], + }, + { + id: 'A06AX', + name: 'A06AX - Andre midler mot forstoppelse', + children: [ + { + id: 'A06AX01', + name: 'A06AX01 - glyserol', + }, + { + id: 'A06AX04', + name: 'A06AX04 - linaklotid', + }, + { + id: 'A06AX05', + name: 'A06AX05 - prukaloprid', + }, + { + id: 'A06AX06', + name: 'A06AX06 - tegaserod', + }, + ], + }, + { + id: 'A06AA', + name: 'A06AA - Bløtgjørende midler', + children: [ + { + id: 'A06AA01', + name: 'A06AA01 - flytende parafin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A07', + name: 'A07 - ANTIDIARROIKA, TARMANTISEPTIKA OG ANTIINFLAMMATORISKE MIDLER', + children: [ + { + id: 'A07A', + name: 'A07A - TARMANTISEPTIKA', + children: [ + { + id: 'A07AA', + name: 'A07AA - Antibiotika', + children: [ + { + id: 'A07AA01', + name: 'A07AA01 - neomycin', + }, + { + id: 'A07AA02', + name: 'A07AA02 - nystatin', + }, + { + id: 'A07AA06', + name: 'A07AA06 - paromomycin', + }, + { + id: 'A07AA09', + name: 'A07AA09 - vankomycin', + }, + { + id: 'A07AA11', + name: 'A07AA11 - rifaksimin', + }, + { + id: 'A07AA12', + name: 'A07AA12 - fidaksomicin', + }, + ], + }, + ], + }, + { + id: 'A07B', + name: 'A07B - TARMADSORPSJONSMIDLER', + children: [ + { + id: 'A07BA', + name: 'A07BA - Kullmidler', + children: [ + { + id: 'A07BA01', + name: 'A07BA01 - medisinsk kull', + }, + ], + }, + { + id: 'A07BB', + name: 'A07BB - Vismutmidler', + }, + ], + }, + { + id: 'A07C', + name: 'A07C - ELEKTROLYTTER MED KARBOHYDRATER', + children: [ + { + id: 'A07CA', + name: 'A07CA - Elektrolytter med karbohydrater', + }, + ], + }, + { + id: 'A07D', + name: 'A07D - PERISTALTIKKHEMMENDE MIDLER', + children: [ + { + id: 'A07DA', + name: 'A07DA - Peristaltikkhemmende midler', + children: [ + { + id: 'A07DA01', + name: 'A07DA01 - difenoksylat', + }, + { + id: 'A07DA02', + name: 'A07DA02 - opium', + }, + { + id: 'A07DA03', + name: 'A07DA03 - loperamid', + }, + { + id: 'A07DA06', + name: 'A07DA06 - eluksadolin', + }, + { + id: 'A07DA53', + name: 'A07DA53 - loperamid, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'A07E', + name: 'A07E - ANTIINFLAMMATORISKE MIDLER VED TARMLIDELSER', + children: [ + { + id: 'A07EA', + name: 'A07EA - Kortikosteroider med lokal virkning', + children: [ + { + id: 'A07EA01', + name: 'A07EA01 - prednisolon', + }, + { + id: 'A07EA02', + name: 'A07EA02 - hydrokortison', + }, + { + id: 'A07EA06', + name: 'A07EA06 - budesonid', + }, + ], + }, + { + id: 'A07EB', + name: 'A07EB - Antiallergiske midler, ekskl. kortikosteroider', + children: [ + { + id: 'A07EB01', + name: 'A07EB01 - natriumkromoglikat', + }, + ], + }, + { + id: 'A07EC', + name: 'A07EC - Aminosalisylsyre og lignende midler', + children: [ + { + id: 'A07EC01', + name: 'A07EC01 - sulfasalazin', + }, + { + id: 'A07EC02', + name: 'A07EC02 - mesalazin', + }, + { + id: 'A07EC03', + name: 'A07EC03 - olsalazin', + }, + { + id: 'A07EC04', + name: 'A07EC04 - balsalazid', + }, + ], + }, + ], + }, + { + id: 'A07F', + name: 'A07F - ANTIDIARROISKE MIKROORGANISMER', + children: [ + { + id: 'A07FA', + name: 'A07FA - Antidiarroiske mikroorganismer', + children: [ + { + id: 'A07FA01', + name: 'A07FA01 - melkesyreproduserende organismer', + }, + { + id: 'A07FA02', + name: 'A07FA02 - saccharomyces boulardii', + }, + { + id: 'A07FA03', + name: 'A07FA03 - escherichia coli', + }, + { + id: 'A07FA51', + name: 'A07FA51 - melkesyreproduserende organismer, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'A07X', + name: 'A07X - ANDRE ANTIDIARROIKA', + children: [ + { + id: 'A07XA', + name: 'A07XA - Andre antidiarroika', + children: [ + { + id: 'A07XA04', + name: 'A07XA04 - racekadotril', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A08', + name: 'A08 - MIDLER MOT FEDME, EKSKL. DIETTMIDLER', + children: [ + { + id: 'A08A', + name: 'A08A - MIDLER MOT FEDME, EKSKL. DIETTMIDLER', + children: [ + { + id: 'A08AB', + name: 'A08AB - Perifert virkende midler mot fedme', + children: [ + { + id: 'A08AB01', + name: 'A08AB01 - orlistat', + }, + ], + }, + { + id: 'A08AX', + name: 'A08AX - Andre midler mot fedme', + children: [ + { + id: 'A08AX01', + name: 'A08AX01 - rimonabant', + }, + ], + }, + { + id: 'A08AA', + name: 'A08AA - Sentralt virkende midler mot fedme', + children: [ + { + id: 'A08AA10', + name: 'A08AA10 - sibutramin', + }, + { + id: 'A08AA62', + name: 'A08AA62 - bupropion og naltrekson', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A09', + name: 'A09 - DIGESTIVA, INKL.ENZYMER', + children: [ + { + id: 'A09A', + name: 'A09A - DIGESTIVA, INKL.ENZYMER', + children: [ + { + id: 'A09AB', + name: 'A09AB - Syremidler', + children: [ + { + id: 'A09AB01', + name: 'A09AB01 - glutaminsyrehydroklorid', + }, + { + id: 'A09AB02', + name: 'A09AB02 - betainhydroklorid', + }, + { + id: 'A09AB03', + name: 'A09AB03 - saltsyre', + }, + { + id: 'A09AB04', + name: 'A09AB04 - sitronsyre', + }, + ], + }, + { + id: 'A09AC', + name: 'A09AC - Enzymmidler i kombinasjon med syremidler', + children: [ + { + id: 'A09AC01', + name: 'A09AC01 - pepsin og syremidler', + }, + { + id: 'A09AC02', + name: 'A09AC02 - multienzymer og syremidler', + }, + ], + }, + { + id: 'A09AA', + name: 'A09AA - Enzymmidler', + children: [ + { + id: 'A09AA02', + name: 'A09AA02 - multienzymer (lipase, protease etc.)', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A10', + name: 'A10 - MIDLER TIL DIABETESBEHANDLING', + children: [ + { + id: 'A10A', + name: 'A10A - INSULINER OG ANALOGER', + children: [ + { + id: 'A10AB', + name: 'A10AB - Insuliner og analoger til injeksjon, hurtigvirkende', + children: [ + { + id: 'A10AB01', + name: 'A10AB01 - insulin (human)', + }, + { + id: 'A10AB03', + name: 'A10AB03 - insulin (svin)', + }, + { + id: 'A10AB04', + name: 'A10AB04 - insulin lispro', + }, + { + id: 'A10AB05', + name: 'A10AB05 - insulin aspart', + }, + { + id: 'A10AB06', + name: 'A10AB06 - insulin glulisin', + }, + ], + }, + { + id: 'A10AC', + name: 'A10AC - Insuliner og analoger til injeksjon, middels lang virketid', + children: [ + { + id: 'A10AC01', + name: 'A10AC01 - insulin (human)', + }, + { + id: 'A10AC03', + name: 'A10AC03 - insulin (svin)', + }, + ], + }, + { + id: 'A10AD', + name: 'A10AD - Insuliner og analoger til injeksjon, middels eller lang virketid i kombinasjon med hurtigvirkende', + children: [ + { + id: 'A10AD01', + name: 'A10AD01 - insulin (human)', + }, + { + id: 'A10AD03', + name: 'A10AD03 - insulin (svin)', + }, + { + id: 'A10AD04', + name: 'A10AD04 - insulin lispro', + }, + { + id: 'A10AD05', + name: 'A10AD05 - insulin aspart', + }, + ], + }, + { + id: 'A10AE', + name: 'A10AE - Insuliner og analoger til injeksjon, langtidsvirkende', + children: [ + { + id: 'A10AE01', + name: 'A10AE01 - insulin (human)', + }, + { + id: 'A10AE02', + name: 'A10AE02 - insulin (storfe)', + }, + { + id: 'A10AE04', + name: 'A10AE04 - insulin glargin', + }, + { + id: 'A10AE05', + name: 'A10AE05 - insulin detemir', + }, + { + id: 'A10AE06', + name: 'A10AE06 - insulin degludec', + }, + { + id: 'A10AE54', + name: 'A10AE54 - insulin glargin og liksisenatid', + }, + { + id: 'A10AE56', + name: 'A10AE56 - insulin degludec og liraglutid', + }, + ], + }, + { + id: 'A10AF', + name: 'A10AF - Insuliner og analoger til inhalasjon', + children: [ + { + id: 'A10AF01', + name: 'A10AF01 - insulin (human)', + }, + ], + }, + ], + }, + { + id: 'A10B', + name: 'A10B - BLODGLUKOSESENKENDE MIDLER, EKSKL. INSULINER', + children: [ + { + id: 'A10BA', + name: 'A10BA - Biguanidderivater', + children: [ + { + id: 'A10BA02', + name: 'A10BA02 - metformin', + }, + ], + }, + { + id: 'A10BB', + name: 'A10BB - Sulfonyl urea', + children: [ + { + id: 'A10BB01', + name: 'A10BB01 - glibenklamid', + }, + { + id: 'A10BB02', + name: 'A10BB02 - klorpropamid', + }, + { + id: 'A10BB07', + name: 'A10BB07 - glipizid', + }, + { + id: 'A10BB12', + name: 'A10BB12 - glimepirid', + }, + ], + }, + { + id: 'A10BD', + name: 'A10BD - Kombinasjoner av blodglukosesenkende midler til oralt bruk', + children: [ + { + id: 'A10BD03', + name: 'A10BD03 - metformin og rosiglitazon', + }, + { + id: 'A10BD04', + name: 'A10BD04 - glimepirid og rosiglitazon', + }, + { + id: 'A10BD05', + name: 'A10BD05 - metformin og pioglitazon', + }, + { + id: 'A10BD07', + name: 'A10BD07 - metformin og sitagliptin', + }, + { + id: 'A10BD08', + name: 'A10BD08 - metformin og vildagliptin', + }, + { + id: 'A10BD10', + name: 'A10BD10 - metformin og saksagliptin', + }, + { + id: 'A10BD11', + name: 'A10BD11 - metformin og linagliptin', + }, + { + id: 'A10BD15', + name: 'A10BD15 - metformin og dapagliflozin', + }, + { + id: 'A10BD19', + name: 'A10BD19 - linagliptin og empagliflozin', + }, + { + id: 'A10BD20', + name: 'A10BD20 - metformin og empagliflozin', + }, + { + id: 'A10BD21', + name: 'A10BD21 - saksagliptin og dapagliflozin', + }, + { + id: 'A10BD23', + name: 'A10BD23 - metformin og ertugliflozin', + }, + { + id: 'A10BD24', + name: 'A10BD24 - sitagliptin og ertugliflozin', + }, + ], + }, + { + id: 'A10BF', + name: 'A10BF - Alfa glukosidasehemmere', + children: [ + { + id: 'A10BF01', + name: 'A10BF01 - akarbose', + }, + ], + }, + { + id: 'A10BG', + name: 'A10BG - Tiazolidindioner', + children: [ + { + id: 'A10BG02', + name: 'A10BG02 - rosiglitazon', + }, + { + id: 'A10BG03', + name: 'A10BG03 - pioglitazon', + }, + ], + }, + { + id: 'A10BH', + name: 'A10BH - Dipepitidylpeptidase 4-hemmere', + children: [ + { + id: 'A10BH01', + name: 'A10BH01 - sitagliptin', + }, + { + id: 'A10BH02', + name: 'A10BH02 - vildagliptin', + }, + { + id: 'A10BH03', + name: 'A10BH03 - saksagliptin', + }, + { + id: 'A10BH05', + name: 'A10BH05 - linagliptin', + }, + ], + }, + { + id: 'A10BJ', + name: 'A10BJ - Glukagonlignende peptid-1 (GLP-1)-analoger', + children: [ + { + id: 'A10BJ01', + name: 'A10BJ01 - eksenatid', + }, + { + id: 'A10BJ02', + name: 'A10BJ02 - liraglutid', + }, + { + id: 'A10BJ03', + name: 'A10BJ03 - liksisenatid', + }, + { + id: 'A10BJ05', + name: 'A10BJ05 - dulaglutid', + }, + { + id: 'A10BJ06', + name: 'A10BJ06 - semaglutid', + }, + ], + }, + { + id: 'A10BK', + name: 'A10BK - Natriumglukose-kotransportør 2 (SLGT2)-hemmere', + children: [ + { + id: 'A10BK01', + name: 'A10BK01 - dapagliflozin', + }, + { + id: 'A10BK02', + name: 'A10BK02 - kanagliflozin', + }, + { + id: 'A10BK03', + name: 'A10BK03 - empagliflozin', + }, + { + id: 'A10BK04', + name: 'A10BK04 - ertugliflozin', + }, + ], + }, + { + id: 'A10BX', + name: 'A10BX - Andre blodglukosesenkende midler, ekskl. insuliner', + children: [ + { + id: 'A10BX02', + name: 'A10BX02 - repaglinid', + }, + { + id: 'A10BX03', + name: 'A10BX03 - nateglinid', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A11', + name: 'A11 - VITAMINER', + children: [ + { + id: 'A11A', + name: 'A11A - MULTIVITAMINER, KOMBINASJONER', + children: [ + { + id: 'A11AA', + name: 'A11AA - Multivitaminer med mineraler', + children: [ + { + id: 'A11AA01', + name: 'A11AA01 - multivitaminer og jern', + }, + { + id: 'A11AA03', + name: 'A11AA03 - multivitaminer og andre mineraler inkl. kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'A11B', + name: 'A11B - MULTIVITAMINER, USAMMENSATTE', + children: [ + { + id: 'A11BA', + name: 'A11BA - Multivitaminer, usammensatte', + }, + ], + }, + { + id: 'A11C', + name: 'A11C - VITAMIN A OG D, INKL. A OG D I KOMBINASJON', + children: [ + { + id: 'A11CA', + name: 'A11CA - Vitamin A, usammensatte', + children: [ + { + id: 'A11CA01', + name: 'A11CA01 - retinol (vit a)', + }, + { + id: 'A11CA02', + name: 'A11CA02 - betakaroten', + }, + ], + }, + { + id: 'A11CC', + name: 'A11CC - Vitamin D og analoger', + children: [ + { + id: 'A11CC01', + name: 'A11CC01 - ergokalsiferol', + }, + { + id: 'A11CC02', + name: 'A11CC02 - dihydrotakysterol', + }, + { + id: 'A11CC03', + name: 'A11CC03 - alfakalsidol', + }, + { + id: 'A11CC04', + name: 'A11CC04 - kalsitriol', + }, + { + id: 'A11CC05', + name: 'A11CC05 - kolekalsiferol', + }, + ], + }, + ], + }, + { + id: 'A11D', + name: 'A11D - VITAMIN B1, INKL. KOMBINASJONER MED B6 OG B12', + children: [ + { + id: 'A11DA', + name: 'A11DA - Vitamin B1, usammensatte', + children: [ + { + id: 'A11DA01', + name: 'A11DA01 - tiamin (vit b1)', + }, + ], + }, + { + id: 'A11DB', + name: 'A11DB - Vitamin B1 i kombinasjoner med vitamin B6 og/eller vitamin B12', + }, + ], + }, + { + id: 'A11E', + name: 'A11E - VITAMIN B-KOMPLEKS, INKL. KOMBINASJONER', + children: [ + { + id: 'A11EA', + name: 'A11EA - Vitamin B-kompleks, usammensatte', + }, + { + id: 'A11EB', + name: 'A11EB - Vitamin B-kompleks med vitamin C', + }, + { + id: 'A11EX', + name: 'A11EX - Vitamin B-kompleks, andre kombinasjoner', + }, + ], + }, + { + id: 'A11G', + name: 'A11G - VITAMIN C, INKL. KOMBINASJONER', + children: [ + { + id: 'A11GA', + name: 'A11GA - Askorbinsyre (vitamin C), usammensatte', + children: [ + { + id: 'A11GA01', + name: 'A11GA01 - askorbinsyre (vit c)', + }, + ], + }, + ], + }, + { + id: 'A11H', + name: 'A11H - ANDRE USAMMENSATTE VITAMINMIDLER', + children: [ + { + id: 'A11HA', + name: 'A11HA - Andre usammensatte vitaminmidler', + children: [ + { + id: 'A11HA01', + name: 'A11HA01 - nikotinamid', + }, + { + id: 'A11HA02', + name: 'A11HA02 - pyridoksin (vit b6)', + }, + { + id: 'A11HA03', + name: 'A11HA03 - tokoferol (vit e)', + }, + { + id: 'A11HA04', + name: 'A11HA04 - riboflavin (vit b2)', + }, + { + id: 'A11HA05', + name: 'A11HA05 - biotin', + }, + { + id: 'A11HA06', + name: 'A11HA06 - pyridoksalfosfat', + }, + { + id: 'A11HA08', + name: 'A11HA08 - tokofersolan', + }, + ], + }, + ], + }, + { + id: 'A11J', + name: 'A11J - ANDRE VITAMINMIDLER, KOMBINASJONER', + children: [ + { + id: 'A11JA', + name: 'A11JA - Kombinasjoner av vitaminer', + }, + { + id: 'A11JB', + name: 'A11JB - Vitaminer med mineraler', + }, + { + id: 'A11JC', + name: 'A11JC - Vitaminer, andre kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'A12', + name: 'A12 - MINERALTILSKUDD', + children: [ + { + id: 'A12A', + name: 'A12A - KALSIUM', + children: [ + { + id: 'A12AX', + name: 'A12AX - Kalsium, kombinasjoner med vitamin D og/eller andre midler', + }, + { + id: 'A12AA', + name: 'A12AA - Kalsium', + children: [ + { + id: 'A12AA02', + name: 'A12AA02 - kalsiumglubionat', + }, + { + id: 'A12AA04', + name: 'A12AA04 - kalsiumkarbonat', + }, + { + id: 'A12AA06', + name: 'A12AA06 - kalsiumlaktoglukonat', + }, + { + id: 'A12AA13', + name: 'A12AA13 - kalsiumsitrat', + }, + { + id: 'A12AA20', + name: 'A12AA20 - kalsium, blanding av salter', + }, + ], + }, + ], + }, + { + id: 'A12B', + name: 'A12B - KALIUM', + children: [ + { + id: 'A12BA', + name: 'A12BA - Kalium', + children: [ + { + id: 'A12BA01', + name: 'A12BA01 - kaliumklorid', + }, + { + id: 'A12BA02', + name: 'A12BA02 - kaliumsitrat', + }, + { + id: 'A12BA30', + name: 'A12BA30 - kalium, ulike salter i kombinasjon', + }, + ], + }, + ], + }, + { + id: 'A12C', + name: 'A12C - ANDRE MINERALMIDLER', + children: [ + { + id: 'A12CA', + name: 'A12CA - Natrium', + children: [ + { + id: 'A12CA01', + name: 'A12CA01 - natriumklorid', + }, + ], + }, + { + id: 'A12CB', + name: 'A12CB - Sink', + children: [ + { + id: 'A12CB01', + name: 'A12CB01 - sinksulfat', + }, + ], + }, + { + id: 'A12CC', + name: 'A12CC - Magnesium', + children: [ + { + id: 'A12CC01', + name: 'A12CC01 - magnesiumklorid', + }, + { + id: 'A12CC04', + name: 'A12CC04 - magnesiumsitrat', + }, + { + id: 'A12CC10', + name: 'A12CC10 - magnesiumoksid', + }, + { + id: 'A12CC30', + name: 'A12CC30 - magnesium, blanding av salter', + }, + ], + }, + { + id: 'A12CX', + name: 'A12CX - Diverse mineralmidler', + }, + ], + }, + ], + }, + { + id: 'A13', + name: 'A13 - TONIKA', + }, + { + id: 'A14', + name: 'A14 - ANABOLE MIDLER TIL SYSTEMISK BRUK', + children: [ + { + id: 'A14A', + name: 'A14A - ANABOLE STEROIDER', + children: [ + { + id: 'A14AB', + name: 'A14AB - Estrenderivater', + children: [ + { + id: 'A14AB01', + name: 'A14AB01 - nandrolon', + }, + ], + }, + { + id: 'A14AA', + name: 'A14AA - Androstanderivater', + children: [ + { + id: 'A14AA04', + name: 'A14AA04 - metenolon', + }, + { + id: 'A14AA07', + name: 'A14AA07 - prasteron', + }, + { + id: 'A14AA08', + name: 'A14AA08 - oksandrolon', + }, + ], + }, + ], + }, + ], + }, + { + id: 'A16', + name: 'A16 - ANDRE FORDØYELSES- OG STOFFSKIFTEMIDLER', + children: [ + { + id: 'A16A', + name: 'A16A - ANDRE FORDØYELSES- OG STOFFSKIFTEMIDLER', + children: [ + { + id: 'A16AB', + name: 'A16AB - Enzymer', + children: [ + { + id: 'A16AB02', + name: 'A16AB02 - imiglukerase', + }, + { + id: 'A16AB03', + name: 'A16AB03 - agalsidase alfa', + }, + { + id: 'A16AB04', + name: 'A16AB04 - agalsidase beta', + }, + { + id: 'A16AB05', + name: 'A16AB05 - laronidase', + }, + { + id: 'A16AB07', + name: 'A16AB07 - alglukosidase alfa', + }, + { + id: 'A16AB08', + name: 'A16AB08 - galsulfase', + }, + { + id: 'A16AB09', + name: 'A16AB09 - idursulfase', + }, + { + id: 'A16AB10', + name: 'A16AB10 - velaglukerase alfa', + }, + { + id: 'A16AB12', + name: 'A16AB12 - elosulfase alfa', + }, + ], + }, + { + id: 'A16AX', + name: 'A16AX - Andre fordøyelses- og stoffskiftemidler', + children: [ + { + id: 'A16AX01', + name: 'A16AX01 - tioktinsyre', + }, + { + id: 'A16AX03', + name: 'A16AX03 - natriumfenylbutyrat', + }, + { + id: 'A16AX04', + name: 'A16AX04 - nitisinon', + }, + { + id: 'A16AX05', + name: 'A16AX05 - sinkacetat', + }, + { + id: 'A16AX06', + name: 'A16AX06 - miglustat', + }, + { + id: 'A16AX07', + name: 'A16AX07 - sapropterin', + }, + { + id: 'A16AX08', + name: 'A16AX08 - teduglutid', + }, + { + id: 'A16AX09', + name: 'A16AX09 - glyserolfenylbutyrat', + }, + { + id: 'A16AX10', + name: 'A16AX10 - eliglustat', + }, + { + id: 'A16AX12', + name: 'A16AX12 - trientin', + }, + { + id: 'A16AX14', + name: 'A16AX14 - migalastat', + }, + { + id: 'A16AX15', + name: 'A16AX15 - telotristat', + }, + ], + }, + { + id: 'A16AA', + name: 'A16AA - Aminosyrer og derivater', + children: [ + { + id: 'A16AA01', + name: 'A16AA01 - levokarnitin', + }, + { + id: 'A16AA03', + name: 'A16AA03 - glutamin', + }, + { + id: 'A16AA04', + name: 'A16AA04 - merkaptamin', + }, + { + id: 'A16AA05', + name: 'A16AA05 - kargluminsyre', + }, + { + id: 'A16AA06', + name: 'A16AA06 - betain', + }, + { + id: 'A16AA07', + name: 'A16AA07 - metreleptin', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'B', + name: 'B - BLOD OG BLODDANNENDE ORGANER', + children: [ + { + id: 'B01', + name: 'B01 - ANTITROMBOTISKE MIDLER', + children: [ + { + id: 'B01A', + name: 'B01A - ANTITROMBOTISKE MIDLER', + children: [ + { + id: 'B01AB', + name: 'B01AB - Heparingruppen', + children: [ + { + id: 'B01AB01', + name: 'B01AB01 - heparin', + }, + { + id: 'B01AB02', + name: 'B01AB02 - antitrombin iii', + }, + { + id: 'B01AB04', + name: 'B01AB04 - dalteparin', + }, + { + id: 'B01AB05', + name: 'B01AB05 - enoksaparin', + }, + { + id: 'B01AB10', + name: 'B01AB10 - tinzaparin', + }, + ], + }, + { + id: 'B01AC', + name: 'B01AC - Hemmere av blodplateaggregasjonen, ekskl. heparin', + children: [ + { + id: 'B01AC04', + name: 'B01AC04 - klopidogrel', + }, + { + id: 'B01AC05', + name: 'B01AC05 - tiklopidin', + }, + { + id: 'B01AC06', + name: 'B01AC06 - acetylsalisylsyre', + }, + { + id: 'B01AC07', + name: 'B01AC07 - dipyridamol', + }, + { + id: 'B01AC09', + name: 'B01AC09 - epoprostenol', + }, + { + id: 'B01AC11', + name: 'B01AC11 - iloprost', + }, + { + id: 'B01AC21', + name: 'B01AC21 - treprostinil', + }, + { + id: 'B01AC22', + name: 'B01AC22 - prasugrel', + }, + { + id: 'B01AC23', + name: 'B01AC23 - cilostazol', + }, + { + id: 'B01AC24', + name: 'B01AC24 - tikagrelor', + }, + { + id: 'B01AC27', + name: 'B01AC27 - seleksipag', + }, + { + id: 'B01AC30', + name: 'B01AC30 - kombinasjoner', + }, + { + id: 'B01AC56', + name: 'B01AC56 - acetylsalisylsyre, kombinasjoner med protonpumpehemmere', + }, + ], + }, + { + id: 'B01AD', + name: 'B01AD - Enzymer', + children: [ + { + id: 'B01AD02', + name: 'B01AD02 - alteplase', + }, + { + id: 'B01AD11', + name: 'B01AD11 - tenekteplase', + }, + ], + }, + { + id: 'B01AE', + name: 'B01AE - Direkte trombininhibitorer', + children: [ + { + id: 'B01AE05', + name: 'B01AE05 - ximelagatran', + }, + { + id: 'B01AE07', + name: 'B01AE07 - dabigatran eteksilat', + }, + ], + }, + { + id: 'B01AF', + name: 'B01AF - Direkte faktor Xa-inhibitorer', + children: [ + { + id: 'B01AF01', + name: 'B01AF01 - rivaroksaban', + }, + { + id: 'B01AF02', + name: 'B01AF02 - apiksaban', + }, + { + id: 'B01AF03', + name: 'B01AF03 - edoksaban', + }, + ], + }, + { + id: 'B01AX', + name: 'B01AX - Andre antitrombotiske midler', + children: [ + { + id: 'B01AX01', + name: 'B01AX01 - defibrotid', + }, + { + id: 'B01AX05', + name: 'B01AX05 - fondaparinuks', + }, + ], + }, + { + id: 'B01AA', + name: 'B01AA - Vitamin K-antagonister', + children: [ + { + id: 'B01AA01', + name: 'B01AA01 - dikumarol', + }, + { + id: 'B01AA02', + name: 'B01AA02 - fenindion', + }, + { + id: 'B01AA03', + name: 'B01AA03 - warfarin', + }, + { + id: 'B01AA07', + name: 'B01AA07 - acenokumarol', + }, + ], + }, + ], + }, + ], + }, + { + id: 'B02', + name: 'B02 - ANTIHEMORAGIKA', + children: [ + { + id: 'B02A', + name: 'B02A - ANTIFIBRINOLYTIKA', + children: [ + { + id: 'B02AB', + name: 'B02AB - Proteinasehemmere', + children: [ + { + id: 'B02AB02', + name: 'B02AB02 - alfa-1-antitrypsin', + }, + ], + }, + { + id: 'B02AA', + name: 'B02AA - Aminosyrer', + children: [ + { + id: 'B02AA02', + name: 'B02AA02 - traneksamsyre', + }, + ], + }, + ], + }, + { + id: 'B02B', + name: 'B02B - VITAMIN K OG ANDRE HEMOSTATIKA', + children: [ + { + id: 'B02BA', + name: 'B02BA - Vitamin K', + children: [ + { + id: 'B02BA01', + name: 'B02BA01 - fytomenadion', + }, + ], + }, + { + id: 'B02BB', + name: 'B02BB - Fibrinogen', + children: [ + { + id: 'B02BB01', + name: 'B02BB01 - fibrinogen, human', + }, + ], + }, + { + id: 'B02BC', + name: 'B02BC - Lokale hemostatika', + children: [ + { + id: 'B02BC30', + name: 'B02BC30 - kombinasjoner', + }, + ], + }, + { + id: 'B02BD', + name: 'B02BD - Blodkoagulasjonsfaktorer', + children: [ + { + id: 'B02BD01', + name: 'B02BD01 - koagulasjonsfaktor ix, ii, vii og x i kombinasjon', + }, + { + id: 'B02BD02', + name: 'B02BD02 - koagulasjonsfaktor viii', + }, + { + id: 'B02BD03', + name: 'B02BD03 - faktor viii-inhibitor bypass-aktivitet', + }, + { + id: 'B02BD04', + name: 'B02BD04 - koagulasjonsfaktor ix', + }, + { + id: 'B02BD06', + name: 'B02BD06 - von willebrand faktor og koagulasjonsfaktor viii i kombinasjon', + }, + { + id: 'B02BD07', + name: 'B02BD07 - koagulasjonsfaktor xiii', + }, + { + id: 'B02BD08', + name: 'B02BD08 - koagulasjonsfaktor viia', + }, + { + id: 'B02BD10', + name: 'B02BD10 - von willebrand faktor', + }, + ], + }, + { + id: 'B02BX', + name: 'B02BX - Andre systemiske hemostatika', + children: [ + { + id: 'B02BX04', + name: 'B02BX04 - romiplostim', + }, + { + id: 'B02BX05', + name: 'B02BX05 - eltrombopag', + }, + { + id: 'B02BX06', + name: 'B02BX06 - emicizumab', + }, + { + id: 'B02BX08', + name: 'B02BX08 - avatrombopag', + }, + { + id: 'B02BX09', + name: 'B02BX09 - fostamatinib', + }, + ], + }, + ], + }, + ], + }, + { + id: 'B03', + name: 'B03 - MIDLER MOT ANEMI', + children: [ + { + id: 'B03A', + name: 'B03A - JERNMIDLER', + children: [ + { + id: 'B03AB', + name: 'B03AB - Jern III-verdig, orale midler', + children: [ + { + id: 'B03AB10', + name: 'B03AB10 - jern(iii)maltol', + }, + ], + }, + { + id: 'B03AC', + name: 'B03AC - Jern, injeksjonsmidler', + }, + { + id: 'B03AD', + name: 'B03AD - Jern i kombinasjon med folsyre', + children: [ + { + id: 'B03AD03', + name: 'B03AD03 - jern(ii)sulfat og folsyre', + }, + ], + }, + { + id: 'B03AA', + name: 'B03AA - Jern II-verdig, orale midler', + children: [ + { + id: 'B03AA01', + name: 'B03AA01 - jern(ii)glycinsulfat', + }, + { + id: 'B03AA02', + name: 'B03AA02 - jern(ii)fumarat', + }, + { + id: 'B03AA03', + name: 'B03AA03 - jern(ii)glukonat', + }, + { + id: 'B03AA06', + name: 'B03AA06 - jern(ii)suksinat', + }, + { + id: 'B03AA07', + name: 'B03AA07 - jern(ii)sulfat', + }, + ], + }, + ], + }, + { + id: 'B03B', + name: 'B03B - VITAMIN B12 OG FOLSYRE', + children: [ + { + id: 'B03BA', + name: 'B03BA - Vitamin B12 (cyanokobalamin og analoger)', + children: [ + { + id: 'B03BA01', + name: 'B03BA01 - cyanokobalamin', + }, + { + id: 'B03BA02', + name: 'B03BA02 - cyanokobalamintanninkompleks', + }, + { + id: 'B03BA03', + name: 'B03BA03 - hydroksokobalamin', + }, + { + id: 'B03BA05', + name: 'B03BA05 - mekobalamin', + }, + ], + }, + { + id: 'B03BB', + name: 'B03BB - Folsyre og derivater', + children: [ + { + id: 'B03BB01', + name: 'B03BB01 - folsyre', + }, + ], + }, + ], + }, + { + id: 'B03X', + name: 'B03X - ANDRE MIDLER MOT ANEMI', + children: [ + { + id: 'B03XA', + name: 'B03XA - Andre midler mot anemi', + children: [ + { + id: 'B03XA01', + name: 'B03XA01 - erytropoietin', + }, + { + id: 'B03XA02', + name: 'B03XA02 - darbepoetin alfa', + }, + { + id: 'B03XA03', + name: 'B03XA03 - metoksipolyetylenglykolepoetin beta', + }, + { + id: 'B03XA05', + name: 'B03XA05 - roksadustat', + }, + { + id: 'B03XA06', + name: 'B03XA06 - luspatercept', + }, + ], + }, + ], + }, + ], + }, + { + id: 'B05', + name: 'B05 - BLODSUBSTITUTTER OG INFUSJONSLØSNINGER OL.', + children: [ + { + id: 'B05A', + name: 'B05A - BLOD OG PLASMASUBSTITUTTER', + children: [ + { + id: 'B05AA', + name: 'B05AA - Blodsubstitutter og plasmaproteinfraksjoner', + children: [ + { + id: 'B05AA01', + name: 'B05AA01 - albumin', + }, + { + id: 'B05AA02', + name: 'B05AA02 - andre plasmaproteinfraksjoner', + }, + { + id: 'B05AA05', + name: 'B05AA05 - dekstran', + }, + { + id: 'B05AA06', + name: 'B05AA06 - gelatinforbindelser', + }, + ], + }, + ], + }, + { + id: 'B05B', + name: 'B05B - INFUSJONSLØSNINGER', + children: [ + { + id: 'B05BA', + name: 'B05BA - Løsninger for parenteral ernæring', + children: [ + { + id: 'B05BA01', + name: 'B05BA01 - aminosyrer', + }, + { + id: 'B05BA02', + name: 'B05BA02 - fettemulsjoner', + }, + { + id: 'B05BA03', + name: 'B05BA03 - karbohydrater', + }, + { + id: 'B05BA10', + name: 'B05BA10 - kombinasjoner', + }, + ], + }, + { + id: 'B05BB', + name: 'B05BB - Løsninger med effekt på elektrolyttbalansen', + children: [ + { + id: 'B05BB01', + name: 'B05BB01 - elektrolytter', + }, + { + id: 'B05BB02', + name: 'B05BB02 - elektrolytter med karbohydrater', + }, + { + id: 'B05BB03', + name: 'B05BB03 - trometamol', + }, + ], + }, + { + id: 'B05BC', + name: 'B05BC - Løsninger for fremkalling av osmotisk diurese', + children: [ + { + id: 'B05BC01', + name: 'B05BC01 - mannitol', + }, + ], + }, + ], + }, + { + id: 'B05C', + name: 'B05C - SKYLLEVÆSKER', + children: [ + { + id: 'B05CA', + name: 'B05CA - Antiinfektiva', + children: [ + { + id: 'B05CA02', + name: 'B05CA02 - klorheksidin', + }, + ], + }, + { + id: 'B05CB', + name: 'B05CB - Saltløsninger', + children: [ + { + id: 'B05CB02', + name: 'B05CB02 - natriumsitrat', + }, + ], + }, + ], + }, + { + id: 'B05D', + name: 'B05D - PERITONEALDIALYSEVÆSKER', + children: [ + { + id: 'B05DA', + name: 'B05DA - Isotone løsninger', + }, + { + id: 'B05DB', + name: 'B05DB - Hypertone løsninger', + }, + ], + }, + { + id: 'B05X', + name: 'B05X - INFUSJONSKONSENTRATER', + children: [ + { + id: 'B05XA', + name: 'B05XA - Elektrolytter', + children: [ + { + id: 'B05XA01', + name: 'B05XA01 - kaliumklorid', + }, + { + id: 'B05XA02', + name: 'B05XA02 - natriumhydrogenkarbonat', + }, + { + id: 'B05XA03', + name: 'B05XA03 - natriumklorid', + }, + { + id: 'B05XA05', + name: 'B05XA05 - magnesiumsulfat', + }, + { + id: 'B05XA06', + name: 'B05XA06 - kaliumfosfat, inkl. kombinasjoner med andre kalium-salter', + }, + { + id: 'B05XA07', + name: 'B05XA07 - kalsiumklorid', + }, + { + id: 'B05XA14', + name: 'B05XA14 - natriumglyserofosfat', + }, + { + id: 'B05XA19', + name: 'B05XA19 - kalsiumglukonat', + }, + { + id: 'B05XA31', + name: 'B05XA31 - elektrolytter i kombinasjoner med andre midler', + }, + ], + }, + { + id: 'B05XB', + name: 'B05XB - Aminosyrer', + children: [ + { + id: 'B05XB01', + name: 'B05XB01 - argininhydroklorid', + }, + { + id: 'B05XB02', + name: 'B05XB02 - alanylglutamin', + }, + { + id: 'B05XB03', + name: 'B05XB03 - lysin', + }, + ], + }, + { + id: 'B05XC', + name: 'B05XC - Vitaminer', + }, + ], + }, + ], + }, + { + id: 'B06', + name: 'B06 - ANDRE HEMATOLOGISKE MIDLER', + children: [ + { + id: 'B06A', + name: 'B06A - ANDRE HEMATOLOGISKE MIDLER', + children: [ + { + id: 'B06AB', + name: 'B06AB - Hemprodukter', + children: [ + { + id: 'B06AB01', + name: 'B06AB01 - hemin', + }, + ], + }, + { + id: 'B06AC', + name: 'B06AC - Midler ved hereditært angioødem', + children: [ + { + id: 'B06AC01', + name: 'B06AC01 - c1-hemmer, plasmaderivert', + }, + { + id: 'B06AC02', + name: 'B06AC02 - ikatibant', + }, + { + id: 'B06AC04', + name: 'B06AC04 - konestat alfa', + }, + { + id: 'B06AC05', + name: 'B06AC05 - lanadelumab', + }, + { + id: 'B06AC06', + name: 'B06AC06 - berotralstat', + }, + ], + }, + { + id: 'B06AA', + name: 'B06AA - Enzymer', + children: [ + { + id: 'B06AA03', + name: 'B06AA03 - hyaluronidase', + }, + { + id: 'B06AA55', + name: 'B06AA55 - streptokinase, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'C', + name: 'C - HJERTE OG KRETSLØP', + children: [ + { + id: 'C01', + name: 'C01 - HJERTETERAPI', + children: [ + { + id: 'C01A', + name: 'C01A - HJERTEGLYKOSIDER', + children: [ + { + id: 'C01AA', + name: 'C01AA - Digitalisglykosider', + children: [ + { + id: 'C01AA04', + name: 'C01AA04 - digitoksin', + }, + { + id: 'C01AA05', + name: 'C01AA05 - digoksin', + }, + ], + }, + ], + }, + { + id: 'C01B', + name: 'C01B - ANTIARYTMIKA, KLASSE I OG III', + children: [ + { + id: 'C01BA', + name: 'C01BA - Antiarytmika, klasse Ia', + children: [ + { + id: 'C01BA01', + name: 'C01BA01 - kinidin', + }, + { + id: 'C01BA03', + name: 'C01BA03 - disopyramid', + }, + ], + }, + { + id: 'C01BB', + name: 'C01BB - Antiarytmika, klasse Ib', + children: [ + { + id: 'C01BB01', + name: 'C01BB01 - lidokain', + }, + { + id: 'C01BB02', + name: 'C01BB02 - meksiletin', + }, + ], + }, + { + id: 'C01BC', + name: 'C01BC - Antiarytmika, klasse Ic', + children: [ + { + id: 'C01BC03', + name: 'C01BC03 - propafenon', + }, + { + id: 'C01BC04', + name: 'C01BC04 - flekainid', + }, + ], + }, + { + id: 'C01BD', + name: 'C01BD - Antiarytmika, klasse III', + children: [ + { + id: 'C01BD01', + name: 'C01BD01 - amiodaron', + }, + { + id: 'C01BD07', + name: 'C01BD07 - dronedaron', + }, + ], + }, + ], + }, + { + id: 'C01C', + name: 'C01C - HJERTESTIMULERENDE MIDLER EKSKL. HJERTEGLYKOSIDER', + children: [ + { + id: 'C01CA', + name: 'C01CA - Adrenerge og dopaminerge midler', + children: [ + { + id: 'C01CA01', + name: 'C01CA01 - etilefrin', + }, + { + id: 'C01CA02', + name: 'C01CA02 - isoprenalin', + }, + { + id: 'C01CA03', + name: 'C01CA03 - noradrenalin', + }, + { + id: 'C01CA06', + name: 'C01CA06 - fenylefrin', + }, + { + id: 'C01CA07', + name: 'C01CA07 - dobutamin', + }, + { + id: 'C01CA17', + name: 'C01CA17 - midodrin', + }, + { + id: 'C01CA24', + name: 'C01CA24 - adrenalin', + }, + { + id: 'C01CA26', + name: 'C01CA26 - efedrin', + }, + { + id: 'C01CA27', + name: 'C01CA27 - droksidopa', + }, + ], + }, + ], + }, + { + id: 'C01D', + name: 'C01D - KARDILATERENDE MIDLER VED HJERTESYKDOMMER', + children: [ + { + id: 'C01DA', + name: 'C01DA - Nitrater', + children: [ + { + id: 'C01DA02', + name: 'C01DA02 - glyseryltrinitrat', + }, + { + id: 'C01DA08', + name: 'C01DA08 - isosorbiddinitrat', + }, + { + id: 'C01DA14', + name: 'C01DA14 - isosorbidmononitrat', + }, + ], + }, + { + id: 'C01DX', + name: 'C01DX - Andre kardilaterende midler ved hjertesykdommer', + children: [ + { + id: 'C01DX12', + name: 'C01DX12 - molsidomin', + }, + { + id: 'C01DX16', + name: 'C01DX16 - nikorandil', + }, + { + id: 'C01DX22', + name: 'C01DX22 - verisiguat', + }, + ], + }, + ], + }, + { + id: 'C01E', + name: 'C01E - ANDRE MIDLER FOR HJERTETERAPI', + children: [ + { + id: 'C01EB', + name: 'C01EB - Andre midler for hjerteterapi', + children: [ + { + id: 'C01EB09', + name: 'C01EB09 - ubidekarenon', + }, + { + id: 'C01EB15', + name: 'C01EB15 - trimetazidin', + }, + { + id: 'C01EB17', + name: 'C01EB17 - ivabradin', + }, + { + id: 'C01EB18', + name: 'C01EB18 - ranolazin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C02', + name: 'C02 - ANTIHYPERTENSIVA', + children: [ + { + id: 'C02A', + name: 'C02A - ANTIADRENERGIKA, SENTRALT VIRKENDE', + children: [ + { + id: 'C02AB', + name: 'C02AB - Metyldopa', + children: [ + { + id: 'C02AB01', + name: 'C02AB01 - metyldopa (venstredreiende)', + }, + ], + }, + { + id: 'C02AC', + name: 'C02AC - Imidazolinreseptoragonister', + children: [ + { + id: 'C02AC01', + name: 'C02AC01 - klonidin', + }, + { + id: 'C02AC02', + name: 'C02AC02 - guanfacin', + }, + { + id: 'C02AC05', + name: 'C02AC05 - moksonidin', + }, + ], + }, + ], + }, + { + id: 'C02C', + name: 'C02C - ANTIADRENERGIKA, PERIFERT VIRKENDE', + children: [ + { + id: 'C02CA', + name: 'C02CA - Alfablokkere', + children: [ + { + id: 'C02CA01', + name: 'C02CA01 - prazosin', + }, + { + id: 'C02CA04', + name: 'C02CA04 - doksazosin', + }, + ], + }, + { + id: 'C02CC', + name: 'C02CC - Guanidinderivater', + children: [ + { + id: 'C02CC02', + name: 'C02CC02 - guanetidin', + }, + ], + }, + ], + }, + { + id: 'C02D', + name: 'C02D - ANTIHYPERTENSIVA MED VIRKNING PÅ ARTERIOLÆR GLATT MUSKEL', + children: [ + { + id: 'C02DB', + name: 'C02DB - Hydrazinoftalazinderivater', + children: [ + { + id: 'C02DB02', + name: 'C02DB02 - hydralazin', + }, + ], + }, + { + id: 'C02DC', + name: 'C02DC - Pyrimidinderivater', + children: [ + { + id: 'C02DC01', + name: 'C02DC01 - minoksidil', + }, + ], + }, + { + id: 'C02DD', + name: 'C02DD - Nitroferricyanidderivater', + children: [ + { + id: 'C02DD01', + name: 'C02DD01 - nitroprussid', + }, + ], + }, + ], + }, + { + id: 'C02K', + name: 'C02K - ANDRE ANTIHYPERTENSIVA', + children: [ + { + id: 'C02KD', + name: 'C02KD - Serotonin antagonister', + children: [ + { + id: 'C02KD01', + name: 'C02KD01 - ketanserin', + }, + ], + }, + { + id: 'C02KX', + name: 'C02KX - Antihypertensiva for pulmonal arteriell hypertensjon', + children: [ + { + id: 'C02KX01', + name: 'C02KX01 - bosentan', + }, + { + id: 'C02KX02', + name: 'C02KX02 - ambrisentan', + }, + { + id: 'C02KX03', + name: 'C02KX03 - sitaksentan', + }, + { + id: 'C02KX04', + name: 'C02KX04 - macitentan', + }, + { + id: 'C02KX05', + name: 'C02KX05 - riociguat', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C03', + name: 'C03 - DIURETIKA', + children: [ + { + id: 'C03A', + name: 'C03A - LOW-CEILING DIURETIKA, TIAZIDER', + children: [ + { + id: 'C03AB', + name: 'C03AB - Tiazider og kalium i kombinasjon', + children: [ + { + id: 'C03AB01', + name: 'C03AB01 - bendroflumetiazid og kalium', + }, + ], + }, + { + id: 'C03AA', + name: 'C03AA - Tiazider, usammensatte', + children: [ + { + id: 'C03AA01', + name: 'C03AA01 - bendroflumetiazid', + }, + { + id: 'C03AA03', + name: 'C03AA03 - hydroklortiazid', + }, + ], + }, + ], + }, + { + id: 'C03B', + name: 'C03B - LOW-CEILING DIURETIKA, EKSKL. TIAZIDER', + children: [ + { + id: 'C03BA', + name: 'C03BA - Sulfonamider, usammensatte', + children: [ + { + id: 'C03BA04', + name: 'C03BA04 - klortalidon', + }, + { + id: 'C03BA08', + name: 'C03BA08 - metolazon', + }, + ], + }, + ], + }, + { + id: 'C03C', + name: 'C03C - HIGH-CEILING DIURETIKA', + children: [ + { + id: 'C03CA', + name: 'C03CA - Sulfonamider, usammensatte', + children: [ + { + id: 'C03CA01', + name: 'C03CA01 - furosemid', + }, + { + id: 'C03CA02', + name: 'C03CA02 - bumetanid', + }, + { + id: 'C03CA04', + name: 'C03CA04 - torasemid', + }, + ], + }, + { + id: 'C03CB', + name: 'C03CB - Sulfonamider og kalium i kombinasjon', + children: [ + { + id: 'C03CB02', + name: 'C03CB02 - bumetanid og kalium', + }, + ], + }, + ], + }, + { + id: 'C03D', + name: 'C03D - ALDOSTERONANTAGONISTER OG ANDRE KALIUMSPARENDE MIDLER', + children: [ + { + id: 'C03DA', + name: 'C03DA - Aldosteronantagonister', + children: [ + { + id: 'C03DA01', + name: 'C03DA01 - spironolakton', + }, + { + id: 'C03DA02', + name: 'C03DA02 - kanrenoatkalium', + }, + { + id: 'C03DA04', + name: 'C03DA04 - eplerenon', + }, + { + id: 'C03DA05', + name: 'C03DA05 - finerenon', + }, + ], + }, + { + id: 'C03DB', + name: 'C03DB - Andre kaliumsparende midler', + children: [ + { + id: 'C03DB01', + name: 'C03DB01 - amilorid', + }, + ], + }, + ], + }, + { + id: 'C03E', + name: 'C03E - DIURETIKA I KOMBINASJONER MED KALIUMSPARENDE MIDLER', + children: [ + { + id: 'C03EA', + name: 'C03EA - Low-ceiling diuretika og kaliumsparende midler', + children: [ + { + id: 'C03EA01', + name: 'C03EA01 - hydroklortiazid og kaliumsparende midler', + }, + ], + }, + ], + }, + { + id: 'C03X', + name: 'C03X - ANDRE DIURETIKA', + children: [ + { + id: 'C03XA', + name: 'C03XA - Vasopressinantagonister', + children: [ + { + id: 'C03XA01', + name: 'C03XA01 - tolvaptan', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C04', + name: 'C04 - PERIFERE KARDILATERENDE MIDLER', + children: [ + { + id: 'C04A', + name: 'C04A - PERIFERE KARDILATERENDE MIDLER', + children: [ + { + id: 'C04AB', + name: 'C04AB - Imidazolinderivater', + children: [ + { + id: 'C04AB01', + name: 'C04AB01 - fentolamin', + }, + ], + }, + { + id: 'C04AC', + name: 'C04AC - Nikotinsyre og derivater', + children: [ + { + id: 'C04AC01', + name: 'C04AC01 - nikotinsyre', + }, + ], + }, + { + id: 'C04AD', + name: 'C04AD - Purinderivater', + children: [ + { + id: 'C04AD03', + name: 'C04AD03 - pentoksyfyllin', + }, + ], + }, + { + id: 'C04AX', + name: 'C04AX - Andre perifere kardilaterende midler', + children: [ + { + id: 'C04AX01', + name: 'C04AX01 - cyklandelat', + }, + { + id: 'C04AX02', + name: 'C04AX02 - fenoksybenzamin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C05', + name: 'C05 - VASOPROTEKTORER', + children: [ + { + id: 'C05A', + name: 'C05A - MIDLER TIL BEHANDLING AV HEMOROIDER OG ANALE FISSURER TIL LOKAL BRUK', + children: [ + { + id: 'C05AD', + name: 'C05AD - Lokalanestetika', + children: [ + { + id: 'C05AD01', + name: 'C05AD01 - lidokain', + }, + ], + }, + { + id: 'C05AE', + name: 'C05AE - Muskelrelakserende midler', + children: [ + { + id: 'C05AE01', + name: 'C05AE01 - glyseryltrinitrat', + }, + { + id: 'C05AE03', + name: 'C05AE03 - diltiazem', + }, + ], + }, + { + id: 'C05AX', + name: 'C05AX - Andre topikale midler for behandling mot hemorrider og analfissurer', + children: [ + { + id: 'C05AX03', + name: 'C05AX03 - andre kombinasjoner', + }, + ], + }, + { + id: 'C05AA', + name: 'C05AA - Kortikosteroider', + children: [ + { + id: 'C05AA01', + name: 'C05AA01 - hydrokortison', + }, + { + id: 'C05AA04', + name: 'C05AA04 - prednisolon', + }, + ], + }, + ], + }, + { + id: 'C05B', + name: 'C05B - VARICEMIDLER', + children: [ + { + id: 'C05BA', + name: 'C05BA - Hepariner eller heparinoider til topikal bruk', + children: [ + { + id: 'C05BA01', + name: 'C05BA01 - organo-heparinoid', + }, + ], + }, + { + id: 'C05BB', + name: 'C05BB - Skleroserende midler til lokal injeksjon', + children: [ + { + id: 'C05BB02', + name: 'C05BB02 - polidokanol', + }, + ], + }, + ], + }, + { + id: 'C05C', + name: 'C05C - KAPILLÆRSTABILISERENDE MIDLER', + children: [ + { + id: 'C05CA', + name: 'C05CA - Bioflavonoider', + children: [ + { + id: 'C05CA01', + name: 'C05CA01 - rutosid', + }, + ], + }, + { + id: 'C05CX', + name: 'C05CX - Andre kapillærstabiliserende midler', + children: [ + { + id: 'C05CX03', + name: 'C05CX03 - hippocastani semen', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C07', + name: 'C07 - BETABLOKKERE', + children: [ + { + id: 'C07A', + name: 'C07A - BETABLOKKERE', + children: [ + { + id: 'C07AB', + name: 'C07AB - Betablokkere, selektive', + children: [ + { + id: 'C07AB02', + name: 'C07AB02 - metoprolol', + }, + { + id: 'C07AB03', + name: 'C07AB03 - atenolol', + }, + { + id: 'C07AB07', + name: 'C07AB07 - bisoprolol', + }, + { + id: 'C07AB12', + name: 'C07AB12 - nebivolol', + }, + ], + }, + { + id: 'C07AG', + name: 'C07AG - Alfa- og betablokkere', + children: [ + { + id: 'C07AG01', + name: 'C07AG01 - labetalol', + }, + { + id: 'C07AG02', + name: 'C07AG02 - karvedilol', + }, + ], + }, + { + id: 'C07AA', + name: 'C07AA - Betablokkere, ikke-selektive', + children: [ + { + id: 'C07AA03', + name: 'C07AA03 - pindolol', + }, + { + id: 'C07AA05', + name: 'C07AA05 - propranolol', + }, + { + id: 'C07AA06', + name: 'C07AA06 - timolol', + }, + { + id: 'C07AA07', + name: 'C07AA07 - sotalol', + }, + { + id: 'C07AA12', + name: 'C07AA12 - nadolol', + }, + ], + }, + ], + }, + { + id: 'C07B', + name: 'C07B - BETABLOKKERE OG TIAZIDER', + children: [ + { + id: 'C07BB', + name: 'C07BB - Betablokkere, selektive, og tiazider', + children: [ + { + id: 'C07BB07', + name: 'C07BB07 - bisoprolol og tiazider', + }, + { + id: 'C07BB12', + name: 'C07BB12 - nebivolol og tiazider', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C08', + name: 'C08 - KALSIUMANTAGONISTER', + children: [ + { + id: 'C08C', + name: 'C08C - SELEKTIVE KALSIUMANTAGONISTER MED PRIMÆRT VASKULÆR VIRKNING', + children: [ + { + id: 'C08CA', + name: 'C08CA - Dihydropyridinderivater', + children: [ + { + id: 'C08CA01', + name: 'C08CA01 - amlodipin', + }, + { + id: 'C08CA02', + name: 'C08CA02 - felodipin', + }, + { + id: 'C08CA03', + name: 'C08CA03 - isradipin', + }, + { + id: 'C08CA05', + name: 'C08CA05 - nifedipin', + }, + { + id: 'C08CA06', + name: 'C08CA06 - nimodipin', + }, + { + id: 'C08CA13', + name: 'C08CA13 - lerkanidipin', + }, + ], + }, + ], + }, + { + id: 'C08D', + name: 'C08D - SELEKTIVE KALSIUMANTAGONISTER MED DIREKTE VIRKNING PÅ HJERTET', + children: [ + { + id: 'C08DA', + name: 'C08DA - Fenylalkylaminderivater', + children: [ + { + id: 'C08DA01', + name: 'C08DA01 - verapamil', + }, + ], + }, + { + id: 'C08DB', + name: 'C08DB - Benzotiazepinderivater', + children: [ + { + id: 'C08DB01', + name: 'C08DB01 - diltiazem', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C09', + name: 'C09 - MIDLER MED VIRKNING PÅ RENIN-ANGIOTENSINSYSTEMET', + children: [ + { + id: 'C09A', + name: 'C09A - ACE-HEMMERE, USAMMENSATTE', + children: [ + { + id: 'C09AA', + name: 'C09AA - ACE-hemmere, usammensatte', + children: [ + { + id: 'C09AA01', + name: 'C09AA01 - kaptopril', + }, + { + id: 'C09AA02', + name: 'C09AA02 - enalapril', + }, + { + id: 'C09AA03', + name: 'C09AA03 - lisinopril', + }, + { + id: 'C09AA04', + name: 'C09AA04 - perindopril', + }, + { + id: 'C09AA05', + name: 'C09AA05 - ramipril', + }, + { + id: 'C09AA10', + name: 'C09AA10 - trandolapril', + }, + { + id: 'C09AA15', + name: 'C09AA15 - zofenopril', + }, + ], + }, + ], + }, + { + id: 'C09B', + name: 'C09B - ACE-HEMMERE, KOMBINASJONER', + children: [ + { + id: 'C09BA', + name: 'C09BA - ACE-hemmere og diuretika', + children: [ + { + id: 'C09BA02', + name: 'C09BA02 - enalapril og diuretika', + }, + { + id: 'C09BA03', + name: 'C09BA03 - lisinopril og diuretika', + }, + { + id: 'C09BA06', + name: 'C09BA06 - kinapril og diuretika', + }, + { + id: 'C09BA15', + name: 'C09BA15 - zofenopril og diuretika', + }, + ], + }, + { + id: 'C09BB', + name: 'C09BB - ACE-hemmere og kalsiumantagonister', + children: [ + { + id: 'C09BB02', + name: 'C09BB02 - enalapril og lerkanidipin', + }, + ], + }, + ], + }, + { + id: 'C09C', + name: 'C09C - ANGIOTENSIN II RESEPTORBLOKKERE (ARBS), USAMMENSATTE', + children: [ + { + id: 'C09CA', + name: 'C09CA - Angiotensin II reseptorblokkere (ARBs), usammensatte', + children: [ + { + id: 'C09CA01', + name: 'C09CA01 - losartan', + }, + { + id: 'C09CA02', + name: 'C09CA02 - eprosartan', + }, + { + id: 'C09CA03', + name: 'C09CA03 - valsartan', + }, + { + id: 'C09CA04', + name: 'C09CA04 - irbesartan', + }, + { + id: 'C09CA06', + name: 'C09CA06 - kandesartan', + }, + { + id: 'C09CA07', + name: 'C09CA07 - telmisartan', + }, + { + id: 'C09CA08', + name: 'C09CA08 - olmesartanmedoksomil', + }, + ], + }, + ], + }, + { + id: 'C09D', + name: 'C09D - ANGIOTENSIN II RESEPTORBLOKKERE (ARBS), KOMBINASJONER', + children: [ + { + id: 'C09DA', + name: 'C09DA - Angiotensin II reseptorblokkere (ARBs) og diuretika', + children: [ + { + id: 'C09DA01', + name: 'C09DA01 - losartan og diuretika', + }, + { + id: 'C09DA02', + name: 'C09DA02 - eprosartan og diuretika', + }, + { + id: 'C09DA03', + name: 'C09DA03 - valsartan og diuretika', + }, + { + id: 'C09DA04', + name: 'C09DA04 - irbesartan og diuretika', + }, + { + id: 'C09DA06', + name: 'C09DA06 - kandesartan og diuretika', + }, + { + id: 'C09DA07', + name: 'C09DA07 - telmisartan og diuretika', + }, + { + id: 'C09DA08', + name: 'C09DA08 - olmesartanmedoksomil og diuretika', + }, + ], + }, + { + id: 'C09DB', + name: 'C09DB - Angiotensin II reseptorblokkere (ARBs) og kalsiumkanal blokkere', + children: [ + { + id: 'C09DB01', + name: 'C09DB01 - valsartan og amlodipin', + }, + { + id: 'C09DB02', + name: 'C09DB02 - olmesartanmedoksomil og amlodipin', + }, + ], + }, + { + id: 'C09DX', + name: 'C09DX - Angiotensin II reseptorblokkere (ARBs), andre kombinasjoner', + children: [ + { + id: 'C09DX01', + name: 'C09DX01 - valsartan, amlodipin og hydroklortiazid', + }, + { + id: 'C09DX03', + name: 'C09DX03 - olmesartanmedoksomil, amlodipin og hydroklortiazid', + }, + { + id: 'C09DX04', + name: 'C09DX04 - valsartan og sakubitril', + }, + ], + }, + ], + }, + { + id: 'C09X', + name: 'C09X - ANDRE MIDLER MED VIRKNING PÅ RENIN-ANGIOTENSIN SYSTEMET', + children: [ + { + id: 'C09XA', + name: 'C09XA - Reninhemmere', + children: [ + { + id: 'C09XA02', + name: 'C09XA02 - aliskiren', + }, + { + id: 'C09XA52', + name: 'C09XA52 - aliskiren og hydroklortiazid', + }, + ], + }, + ], + }, + ], + }, + { + id: 'C10', + name: 'C10 - LIPIDMODIFISERENDE MIDLER', + children: [ + { + id: 'C10A', + name: 'C10A - LIPIDMODIFISERENDE MIDLER, USAMMENSATTE', + children: [ + { + id: 'C10AB', + name: 'C10AB - Fibrater', + children: [ + { + id: 'C10AB02', + name: 'C10AB02 - bezafibrat', + }, + { + id: 'C10AB04', + name: 'C10AB04 - gemfibrozil', + }, + { + id: 'C10AB05', + name: 'C10AB05 - fenofibrat', + }, + ], + }, + { + id: 'C10AC', + name: 'C10AC - Midler som øker utskillelsen av gallesyre', + children: [ + { + id: 'C10AC01', + name: 'C10AC01 - kolestyramin', + }, + { + id: 'C10AC02', + name: 'C10AC02 - kolestipol', + }, + { + id: 'C10AC04', + name: 'C10AC04 - kolesevelam', + }, + ], + }, + { + id: 'C10AD', + name: 'C10AD - Nikotinsyre og derivater', + children: [ + { + id: 'C10AD02', + name: 'C10AD02 - nikotinsyre', + }, + { + id: 'C10AD06', + name: 'C10AD06 - acipimoks', + }, + { + id: 'C10AD52', + name: 'C10AD52 - nikotinsyre, kombinasjoner', + }, + ], + }, + { + id: 'C10AX', + name: 'C10AX - Andre lipidmodifiserende midler', + children: [ + { + id: 'C10AX02', + name: 'C10AX02 - probukol', + }, + { + id: 'C10AX06', + name: 'C10AX06 - omega-3-triglycerider inkl. andre estere og syrer', + }, + { + id: 'C10AX09', + name: 'C10AX09 - ezetimib', + }, + { + id: 'C10AX12', + name: 'C10AX12 - lomitapid', + }, + { + id: 'C10AX13', + name: 'C10AX13 - evolokumab', + }, + { + id: 'C10AX14', + name: 'C10AX14 - alirokumab', + }, + { + id: 'C10AX15', + name: 'C10AX15 - bempedoinsyre', + }, + { + id: 'C10AX16', + name: 'C10AX16 - inklisiran', + }, + ], + }, + { + id: 'C10AA', + name: 'C10AA - HMG-CoA-reduktasehemmere', + children: [ + { + id: 'C10AA01', + name: 'C10AA01 - simvastatin', + }, + { + id: 'C10AA02', + name: 'C10AA02 - lovastatin', + }, + { + id: 'C10AA03', + name: 'C10AA03 - pravastatin', + }, + { + id: 'C10AA04', + name: 'C10AA04 - fluvastatin', + }, + { + id: 'C10AA05', + name: 'C10AA05 - atorvastatin', + }, + { + id: 'C10AA07', + name: 'C10AA07 - rosuvastatin', + }, + { + id: 'C10AA08', + name: 'C10AA08 - pitavastatin', + }, + ], + }, + ], + }, + { + id: 'C10B', + name: 'C10B - LIPIDMODIFISERENDE MIDLER, KOMBINASJONER', + children: [ + { + id: 'C10BA', + name: 'C10BA - Kombinasjoner av ulike lipidmodifiserende midler', + children: [ + { + id: 'C10BA02', + name: 'C10BA02 - simvastatin og ezetimib', + }, + { + id: 'C10BA05', + name: 'C10BA05 - atorvastatin og ezetimib', + }, + { + id: 'C10BA06', + name: 'C10BA06 - rosuvastatin og ezetimib', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'D', + name: 'D - DERMATOLOGISKE MIDLER', + children: [ + { + id: 'D01', + name: 'D01 - FUNGICIDER TIL DERMATOLOGISK BRUK', + children: [ + { + id: 'D01A', + name: 'D01A - FUNGICIDER TIL TOPIKAL BRUK', + children: [ + { + id: 'D01AC', + name: 'D01AC - Imidazol- og triazolderivater', + children: [ + { + id: 'D01AC01', + name: 'D01AC01 - klotrimazol', + }, + { + id: 'D01AC02', + name: 'D01AC02 - mikonazol', + }, + { + id: 'D01AC03', + name: 'D01AC03 - ekonazol', + }, + { + id: 'D01AC08', + name: 'D01AC08 - ketokonazol', + }, + { + id: 'D01AC20', + name: 'D01AC20 - imidazol/triazolderivater i kombinasjon med kortikosteroider', + }, + { + id: 'D01AC60', + name: 'D01AC60 - bifonazol, kombinasjoner', + }, + ], + }, + { + id: 'D01AE', + name: 'D01AE - Andre fungicider til topikal bruk', + children: [ + { + id: 'D01AE02', + name: 'D01AE02 - metylrosanilin', + }, + { + id: 'D01AE14', + name: 'D01AE14 - ciklopiroks', + }, + { + id: 'D01AE15', + name: 'D01AE15 - terbinafin', + }, + { + id: 'D01AE16', + name: 'D01AE16 - amorolfin', + }, + { + id: 'D01AE20', + name: 'D01AE20 - kombinasjoner', + }, + ], + }, + { + id: 'D01AA', + name: 'D01AA - Antibiotika', + children: [ + { + id: 'D01AA01', + name: 'D01AA01 - nystatin', + }, + ], + }, + ], + }, + { + id: 'D01B', + name: 'D01B - FUNGICIDER TIL SYSTEMISK BRUK', + children: [ + { + id: 'D01BA', + name: 'D01BA - Fungicider til systemisk bruk', + children: [ + { + id: 'D01BA01', + name: 'D01BA01 - griseofulvin', + }, + { + id: 'D01BA02', + name: 'D01BA02 - terbinafin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D02', + name: 'D02 - BLØTGJØRENDE OG HUDBESKYTTENDE MIDLER', + children: [ + { + id: 'D02A', + name: 'D02A - BLØTGJØRENDE OG HUDBESKYTTENDE MIDLER', + children: [ + { + id: 'D02AB', + name: 'D02AB - Sinkmidler', + }, + { + id: 'D02AC', + name: 'D02AC - Vaselin og fettprodukter', + }, + { + id: 'D02AE', + name: 'D02AE - Karbamidmidler', + children: [ + { + id: 'D02AE01', + name: 'D02AE01 - karbamid', + }, + { + id: 'D02AE51', + name: 'D02AE51 - karbamid, kombinasjoner', + }, + ], + }, + { + id: 'D02AF', + name: 'D02AF - Salisylsyremidler', + }, + { + id: 'D02AX', + name: 'D02AX - Diverse bløtgjørende og hudbeskyttende midler', + }, + ], + }, + { + id: 'D02B', + name: 'D02B - BESKYTTELSESMIDLER VED UV-BESTRÅLING', + children: [ + { + id: 'D02BA', + name: 'D02BA - Beskyttelsesmidler ved UV-bestråling, til topikal bruk', + }, + ], + }, + ], + }, + { + id: 'D03', + name: 'D03 - MIDLER TIL SÅRBEHANDLING', + children: [ + { + id: 'D03A', + name: 'D03A - SÅRHELENDE MIDLER', + children: [ + { + id: 'D03AX', + name: 'D03AX - Diverse sårhelende midler', + children: [ + { + id: 'D03AX03', + name: 'D03AX03 - dekspantenol', + }, + ], + }, + { + id: 'D03AA', + name: 'D03AA - Transalver', + }, + ], + }, + ], + }, + { + id: 'D04', + name: 'D04 - KLØEMIDLER, INKL. ANTIHISTAMINER, ANESTETIKA, ETC.', + children: [ + { + id: 'D04A', + name: 'D04A - KLØEMIDLER, INKL. ANTIHISTAMINER, ANESTETIKA, ETC.', + children: [ + { + id: 'D04AB', + name: 'D04AB - Anestetika til topikal bruk', + children: [ + { + id: 'D04AB01', + name: 'D04AB01 - lidokain', + }, + ], + }, + { + id: 'D04AX', + name: 'D04AX - Andre kløemidler', + }, + { + id: 'D04AA', + name: 'D04AA - Antihistaminer til topikal bruk', + children: [ + { + id: 'D04AA02', + name: 'D04AA02 - mepyramin', + }, + { + id: 'D04AA13', + name: 'D04AA13 - dimetinden', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D05', + name: 'D05 - ANTIPSORIASISMIDLER', + children: [ + { + id: 'D05A', + name: 'D05A - ANTIPSORIASISMIDLER TIL TOPIKAL BRUK', + children: [ + { + id: 'D05AC', + name: 'D05AC - Antracenderivater', + children: [ + { + id: 'D05AC01', + name: 'D05AC01 - ditranol', + }, + ], + }, + { + id: 'D05AD', + name: 'D05AD - Psoralener til topikal bruk', + children: [ + { + id: 'D05AD01', + name: 'D05AD01 - trioksysalen', + }, + { + id: 'D05AD02', + name: 'D05AD02 - metoksalen', + }, + ], + }, + { + id: 'D05AX', + name: 'D05AX - Andre psoriasismidler til topikal bruk', + children: [ + { + id: 'D05AX02', + name: 'D05AX02 - kalsipotriol', + }, + { + id: 'D05AX03', + name: 'D05AX03 - kalsitriol', + }, + { + id: 'D05AX52', + name: 'D05AX52 - kalsipotriol, kombinasjoner', + }, + ], + }, + { + id: 'D05AA', + name: 'D05AA - Tjærer', + }, + ], + }, + { + id: 'D05B', + name: 'D05B - ANTIPSORIASISMIDLER TIL SYSTEMISK BRUK', + children: [ + { + id: 'D05BA', + name: 'D05BA - Psoralener til systemisk bruk', + children: [ + { + id: 'D05BA02', + name: 'D05BA02 - metoksalen', + }, + { + id: 'D05BA03', + name: 'D05BA03 - bergapten', + }, + ], + }, + { + id: 'D05BB', + name: 'D05BB - Retinoider til behandling av psoriasis', + children: [ + { + id: 'D05BB02', + name: 'D05BB02 - acitretin', + }, + ], + }, + { + id: 'D05BX', + name: 'D05BX - Andre antipsoriasismidler til systemisk bruk', + children: [ + { + id: 'D05BX51', + name: 'D05BX51 - fumarsyrederivater, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D06', + name: 'D06 - ANTIBIOTIKA OG KJEMOTERAPEUTIKA TIL TOPIKAL BRUK', + children: [ + { + id: 'D06A', + name: 'D06A - ANTIBIOTIKA TIL TOPIKAL BRUK', + children: [ + { + id: 'D06AX', + name: 'D06AX - Andre antibiotika til topikal bruk', + children: [ + { + id: 'D06AX01', + name: 'D06AX01 - fusidinsyre', + }, + { + id: 'D06AX05', + name: 'D06AX05 - bacitracin', + }, + { + id: 'D06AX07', + name: 'D06AX07 - gentamicin', + }, + { + id: 'D06AX09', + name: 'D06AX09 - mupirocin', + }, + { + id: 'D06AX13', + name: 'D06AX13 - retapamulin', + }, + ], + }, + { + id: 'D06AA', + name: 'D06AA - Tetrasyklin og derivater', + children: [ + { + id: 'D06AA02', + name: 'D06AA02 - klortetrasyklin', + }, + { + id: 'D06AA03', + name: 'D06AA03 - oksytetrasyklin', + }, + ], + }, + ], + }, + { + id: 'D06B', + name: 'D06B - KJEMOTERAPEUTIKA TIL TOPIKAL BRUK', + children: [ + { + id: 'D06BA', + name: 'D06BA - Sulfonamider', + children: [ + { + id: 'D06BA01', + name: 'D06BA01 - sølvsulfadiazin', + }, + ], + }, + { + id: 'D06BB', + name: 'D06BB - Antivirale midler', + children: [ + { + id: 'D06BB03', + name: 'D06BB03 - aciklovir', + }, + { + id: 'D06BB04', + name: 'D06BB04 - podofyllotoksin', + }, + { + id: 'D06BB06', + name: 'D06BB06 - penciklovir', + }, + { + id: 'D06BB10', + name: 'D06BB10 - imiquimod', + }, + { + id: 'D06BB11', + name: 'D06BB11 - docosanol', + }, + { + id: 'D06BB12', + name: 'D06BB12 - sinekatekiner', + }, + { + id: 'D06BB53', + name: 'D06BB53 - aciklovir, kombinasjoner', + }, + ], + }, + { + id: 'D06BX', + name: 'D06BX - Andre kjemoterapeutika', + children: [ + { + id: 'D06BX01', + name: 'D06BX01 - metronidazol', + }, + { + id: 'D06BX02', + name: 'D06BX02 - ingenolmebutat', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D07', + name: 'D07 - KORTIKOSTEROIDER TIL DERMATOLOGISK BRUK', + children: [ + { + id: 'D07A', + name: 'D07A - KORTIKOSTEROIDER, USAMMENSATTE', + children: [ + { + id: 'D07AB', + name: 'D07AB - Kortikosteroider, middels sterke (gruppe II)', + children: [ + { + id: 'D07AB02', + name: 'D07AB02 - hydrokortisonbutyrat', + }, + { + id: 'D07AB08', + name: 'D07AB08 - desonid', + }, + ], + }, + { + id: 'D07AC', + name: 'D07AC - Kortikosteroider, sterke (gruppe III)', + children: [ + { + id: 'D07AC01', + name: 'D07AC01 - betametason', + }, + { + id: 'D07AC03', + name: 'D07AC03 - desoksymetason', + }, + { + id: 'D07AC04', + name: 'D07AC04 - fluocinolonacetonid', + }, + { + id: 'D07AC08', + name: 'D07AC08 - fluocinonid', + }, + { + id: 'D07AC13', + name: 'D07AC13 - mometason', + }, + { + id: 'D07AC17', + name: 'D07AC17 - flutikason', + }, + ], + }, + { + id: 'D07AD', + name: 'D07AD - Kortikosteroider, ekstra sterke (gruppe IV)', + children: [ + { + id: 'D07AD01', + name: 'D07AD01 - klobetasol', + }, + ], + }, + { + id: 'D07AA', + name: 'D07AA - Kortikosteroider, milde (gruppe I)', + children: [ + { + id: 'D07AA02', + name: 'D07AA02 - hydrokortison', + }, + ], + }, + ], + }, + { + id: 'D07B', + name: 'D07B - KORTIKOSTEROIDER, KOMBINASJONER MED ANTISEPTIKA', + children: [ + { + id: 'D07BB', + name: 'D07BB - Kortikosteroider, middels sterke, kombinasjoner med antiseptika', + children: [ + { + id: 'D07BB01', + name: 'D07BB01 - flumetason og antiseptika', + }, + { + id: 'D07BB02', + name: 'D07BB02 - desonid og antiseptika', + }, + { + id: 'D07BB03', + name: 'D07BB03 - triamcinolon og antiseptika', + }, + { + id: 'D07BB04', + name: 'D07BB04 - hydrokortisonbutyrat og antiseptika', + }, + ], + }, + { + id: 'D07BC', + name: 'D07BC - Kortikosteroider, sterke, kombinasjoner med antiseptika', + children: [ + { + id: 'D07BC01', + name: 'D07BC01 - betametason og antiseptika', + }, + { + id: 'D07BC02', + name: 'D07BC02 - fluocinolonacetonid og antiseptika', + }, + ], + }, + ], + }, + { + id: 'D07C', + name: 'D07C - KORTIKOSTEROIDER, KOMBINASJONER MED ANTIBIOTIKA', + children: [ + { + id: 'D07CA', + name: 'D07CA - Kortikosteroider, milde, kombinasjoner med antibiotika', + children: [ + { + id: 'D07CA01', + name: 'D07CA01 - hydrokortison og antibiotika', + }, + ], + }, + { + id: 'D07CB', + name: 'D07CB - Kortikosteroider, middels sterke, kombinasjoner med antibiotika', + children: [ + { + id: 'D07CB01', + name: 'D07CB01 - triamcinolon og antibiotika', + }, + ], + }, + { + id: 'D07CC', + name: 'D07CC - Kortikosteroider, sterke, kombinasjoner med antibiotika', + children: [ + { + id: 'D07CC01', + name: 'D07CC01 - betametason og antibiotika', + }, + { + id: 'D07CC05', + name: 'D07CC05 - fluocinonid og antibiotika', + }, + ], + }, + ], + }, + { + id: 'D07X', + name: 'D07X - KORTIKOSTEROIDER, ANDRE KOMBINASJONER', + children: [ + { + id: 'D07XA', + name: 'D07XA - Kortikosteroider, milde, andre kombinasjoner', + children: [ + { + id: 'D07XA01', + name: 'D07XA01 - hydrokortison', + }, + ], + }, + { + id: 'D07XB', + name: 'D07XB - Kortikosteroider, middels sterke, andre kombinasjoner', + children: [ + { + id: 'D07XB02', + name: 'D07XB02 - triamcinolon', + }, + ], + }, + { + id: 'D07XC', + name: 'D07XC - Kortikosteroider, sterke, andre kombinasjoner', + children: [ + { + id: 'D07XC01', + name: 'D07XC01 - betametason', + }, + { + id: 'D07XC02', + name: 'D07XC02 - desoksymetason', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D08', + name: 'D08 - ANTISEPTIKA OG DESINFISERENDE MIDLER', + children: [ + { + id: 'D08A', + name: 'D08A - ANTISEPTIKA OG DESINFISERENDE MIDLER', + children: [ + { + id: 'D08AB', + name: 'D08AB - Aluminiumforbindelser', + }, + { + id: 'D08AC', + name: 'D08AC - Biguanider og amidiner', + children: [ + { + id: 'D08AC01', + name: 'D08AC01 - dibrompropamidin', + }, + { + id: 'D08AC02', + name: 'D08AC02 - klorheksidin', + }, + { + id: 'D08AC52', + name: 'D08AC52 - klorheksidin, kombinasjoner', + }, + ], + }, + { + id: 'D08AG', + name: 'D08AG - Jodmidler', + children: [ + { + id: 'D08AG01', + name: 'D08AG01 - jod/oktylfenoksypolyglykoleter', + }, + { + id: 'D08AG02', + name: 'D08AG02 - povidon, jodert', + }, + { + id: 'D08AG03', + name: 'D08AG03 - jod', + }, + ], + }, + { + id: 'D08AJ', + name: 'D08AJ - Kvartære ammoniumforbindelser', + children: [ + { + id: 'D08AJ03', + name: 'D08AJ03 - cetylpyridin', + }, + ], + }, + { + id: 'D08AL', + name: 'D08AL - Sølvforbindelser', + children: [ + { + id: 'D08AL01', + name: 'D08AL01 - sølvnitrat', + }, + ], + }, + { + id: 'D08AX', + name: 'D08AX - Andre antiseptika og desinfiserende midler', + children: [ + { + id: 'D08AX01', + name: 'D08AX01 - hydrogenperoksid', + }, + { + id: 'D08AX06', + name: 'D08AX06 - kaliumpermanganat', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D09', + name: 'D09 - MEDISINSK FORBINDINGSMATERIALE', + children: [ + { + id: 'D09A', + name: 'D09A - MEDISINSK FORBINDINGSMATERIALE', + children: [ + { + id: 'D09AB', + name: 'D09AB - Sinkbandasjer', + children: [ + { + id: 'D09AB01', + name: 'D09AB01 - sinkbandasjer uten tilsetninger', + }, + ], + }, + { + id: 'D09AA', + name: 'D09AA - Salvekompresser med antiinfektiva', + children: [ + { + id: 'D09AA01', + name: 'D09AA01 - framycetin', + }, + { + id: 'D09AA02', + name: 'D09AA02 - fusidinsyre', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D10', + name: 'D10 - MIDLER MOT AKNE', + children: [ + { + id: 'D10A', + name: 'D10A - MIDLER MOT AKNE TIL TOPIKAL BRUK', + children: [ + { + id: 'D10AD', + name: 'D10AD - Retinoider til topikal behandling av akne', + children: [ + { + id: 'D10AD01', + name: 'D10AD01 - tretinoin', + }, + { + id: 'D10AD02', + name: 'D10AD02 - retinol', + }, + { + id: 'D10AD03', + name: 'D10AD03 - adapalen', + }, + { + id: 'D10AD06', + name: 'D10AD06 - trifaroten', + }, + { + id: 'D10AD51', + name: 'D10AD51 - tretinoin, kombinasjoner', + }, + { + id: 'D10AD53', + name: 'D10AD53 - adapalen, kombinasjoner', + }, + ], + }, + { + id: 'D10AE', + name: 'D10AE - Peroksider', + children: [ + { + id: 'D10AE01', + name: 'D10AE01 - benzoylperoksid', + }, + ], + }, + { + id: 'D10AF', + name: 'D10AF - Antiinfektiva til behandling av akne', + children: [ + { + id: 'D10AF01', + name: 'D10AF01 - klindamycin', + }, + { + id: 'D10AF52', + name: 'D10AF52 - erytromycin, kombinasjoner', + }, + ], + }, + { + id: 'D10AX', + name: 'D10AX - Andre midler til topikal behandling av akne', + children: [ + { + id: 'D10AX03', + name: 'D10AX03 - azelainsyre', + }, + { + id: 'D10AX30', + name: 'D10AX30 - diverse kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'D10B', + name: 'D10B - MIDLER TIL SYSTEMISK BEHANDLING AV AKNE', + children: [ + { + id: 'D10BA', + name: 'D10BA - Retinoider til behandling av akne', + children: [ + { + id: 'D10BA01', + name: 'D10BA01 - isotretinoin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'D11', + name: 'D11 - ANDRE DERMATOLOGISKE MIDLER', + children: [ + { + id: 'D11A', + name: 'D11A - ANDRE DERMATOLOGISKE MIDLER', + children: [ + { + id: 'D11AC', + name: 'D11AC - Medisinske sjampoer', + children: [ + { + id: 'D11AC03', + name: 'D11AC03 - selenforbindelser', + }, + ], + }, + { + id: 'D11AF', + name: 'D11AF - Vorte- og hudetsende midler', + }, + { + id: 'D11AH', + name: 'D11AH - Midler mot dermatitt, ekskl. kortikosteroider', + children: [ + { + id: 'D11AH01', + name: 'D11AH01 - takrolimus', + }, + { + id: 'D11AH02', + name: 'D11AH02 - pimecrolimus', + }, + { + id: 'D11AH04', + name: 'D11AH04 - alitretinoin', + }, + { + id: 'D11AH05', + name: 'D11AH05 - dupilumab', + }, + { + id: 'D11AH08', + name: 'D11AH08 - abrositinib', + }, + ], + }, + { + id: 'D11AX', + name: 'D11AX - Diverse dermatologiske midler', + children: [ + { + id: 'D11AX01', + name: 'D11AX01 - minoksidil', + }, + { + id: 'D11AX10', + name: 'D11AX10 - finasterid', + }, + { + id: 'D11AX16', + name: 'D11AX16 - eflornitin', + }, + { + id: 'D11AX18', + name: 'D11AX18 - diklofenak', + }, + { + id: 'D11AX21', + name: 'D11AX21 - brimonidin', + }, + { + id: 'D11AX22', + name: 'D11AX22 - ivermektin', + }, + { + id: 'D11AX24', + name: 'D11AX24 - deoksykolsyre', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'G', + name: 'G - UROGENITALSYSTEM OG KJØNNSHORMONER', + children: [ + { + id: 'G01', + name: 'G01 - ANTIINFEKTIVA OG ANTISEPTIKA TIL GYNEKOLOGISK BRUK', + children: [ + { + id: 'G01A', + name: 'G01A - ANTIINFEKTIVA OG ANTISEPTIKA, EKSKL. KOMBINASJONER MED KORTIKOSTEROIDER', + children: [ + { + id: 'G01AC', + name: 'G01AC - Kinolinderivater', + children: [ + { + id: 'G01AC05', + name: 'G01AC05 - dekvalin', + }, + ], + }, + { + id: 'G01AD', + name: 'G01AD - Organiske syrer', + children: [ + { + id: 'G01AD02', + name: 'G01AD02 - eddiksyre', + }, + ], + }, + { + id: 'G01AF', + name: 'G01AF - Imidazolderivater', + children: [ + { + id: 'G01AF01', + name: 'G01AF01 - metronidazol', + }, + { + id: 'G01AF02', + name: 'G01AF02 - klotrimazol', + }, + { + id: 'G01AF04', + name: 'G01AF04 - mikonazol', + }, + { + id: 'G01AF05', + name: 'G01AF05 - ekonazol', + }, + ], + }, + { + id: 'G01AX', + name: 'G01AX - Andre antiinfektiva og antiseptika', + children: [ + { + id: 'G01AX03', + name: 'G01AX03 - polikresulen', + }, + { + id: 'G01AX14', + name: 'G01AX14 - laktobakterier', + }, + ], + }, + { + id: 'G01AA', + name: 'G01AA - Antibiotika', + children: [ + { + id: 'G01AA01', + name: 'G01AA01 - nystatin', + }, + { + id: 'G01AA10', + name: 'G01AA10 - klindamycin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'G02', + name: 'G02 - ANDRE GYNEKOLOGISKE MIDLER', + children: [ + { + id: 'G02A', + name: 'G02A - UTEROTONIKA', + children: [ + { + id: 'G02AB', + name: 'G02AB - Sekalealkaloider', + children: [ + { + id: 'G02AB01', + name: 'G02AB01 - metylergometrin', + }, + ], + }, + { + id: 'G02AD', + name: 'G02AD - Prostaglandiner', + children: [ + { + id: 'G02AD02', + name: 'G02AD02 - dinoproston', + }, + ], + }, + ], + }, + { + id: 'G02B', + name: 'G02B - ANTIKONSEPTIVA, FOR TOPIKAL BRUK', + children: [ + { + id: 'G02BA', + name: 'G02BA - Intrauterine antikonseptiva', + children: [ + { + id: 'G02BA03', + name: 'G02BA03 - plastspiraler med progestogener', + }, + ], + }, + { + id: 'G02BB', + name: 'G02BB - Intravaginale antikonseptiva', + children: [ + { + id: 'G02BB01', + name: 'G02BB01 - vaginalring med progestogen og østrogen', + }, + ], + }, + ], + }, + { + id: 'G02C', + name: 'G02C - ANDRE GYNEKOLOGISKE MIDLER', + children: [ + { + id: 'G02CB', + name: 'G02CB - Prolaktinhemmende midler', + children: [ + { + id: 'G02CB01', + name: 'G02CB01 - bromokriptin', + }, + { + id: 'G02CB03', + name: 'G02CB03 - kabergolin', + }, + { + id: 'G02CB04', + name: 'G02CB04 - kinagolid', + }, + ], + }, + { + id: 'G02CX', + name: 'G02CX - Andre gynekologiske midler', + children: [ + { + id: 'G02CX04', + name: 'G02CX04 - klaseormedruerot', + }, + ], + }, + ], + }, + ], + }, + { + id: 'G03', + name: 'G03 - KJØNNSHORMONER OG MIDLER MED EFFEKT PÅ GENITALIA', + children: [ + { + id: 'G03A', + name: 'G03A - ANTIKONSEPTIVA, HORMONER, SYSTEMISKE', + children: [ + { + id: 'G03AB', + name: 'G03AB - Progestogener og østrogener, sekvensmidler', + children: [ + { + id: 'G03AB03', + name: 'G03AB03 - levonorgestrel og etinyløstradiol', + }, + { + id: 'G03AB04', + name: 'G03AB04 - noretisteron og etinyløstradiol', + }, + { + id: 'G03AB08', + name: 'G03AB08 - dienogest og østradiol', + }, + ], + }, + { + id: 'G03AC', + name: 'G03AC - Progestogener', + children: [ + { + id: 'G03AC01', + name: 'G03AC01 - noretisteron', + }, + { + id: 'G03AC02', + name: 'G03AC02 - lynestrenol', + }, + { + id: 'G03AC03', + name: 'G03AC03 - levonorgestrel', + }, + { + id: 'G03AC06', + name: 'G03AC06 - medroksyprogesteron', + }, + { + id: 'G03AC08', + name: 'G03AC08 - etonogestrel', + }, + { + id: 'G03AC09', + name: 'G03AC09 - desogestrel', + }, + { + id: 'G03AC10', + name: 'G03AC10 - drospirenon', + }, + ], + }, + { + id: 'G03AD', + name: 'G03AD - Nødprevensjon', + children: [ + { + id: 'G03AD01', + name: 'G03AD01 - levonorgestrel', + }, + { + id: 'G03AD02', + name: 'G03AD02 - ulipristal', + }, + ], + }, + { + id: 'G03AA', + name: 'G03AA - Progestogener og østrogener, faste kombinasjoner', + children: [ + { + id: 'G03AA06', + name: 'G03AA06 - norgestrel og etinyløstradiol', + }, + { + id: 'G03AA07', + name: 'G03AA07 - levonorgestrel og etinyløstradiol', + }, + { + id: 'G03AA09', + name: 'G03AA09 - desogestrel og etinyløstradiol', + }, + { + id: 'G03AA11', + name: 'G03AA11 - norgestimat og etinyløstradiol', + }, + { + id: 'G03AA12', + name: 'G03AA12 - drospirenon og etinyløstradiol', + }, + { + id: 'G03AA13', + name: 'G03AA13 - norelgestromin og etinyløstradiol', + }, + { + id: 'G03AA14', + name: 'G03AA14 - nomegestrol og østradiol', + }, + { + id: 'G03AA16', + name: 'G03AA16 - dienogest og etinyløstradiol', + }, + { + id: 'G03AA18', + name: 'G03AA18 - drospirenon og estetrol', + }, + ], + }, + ], + }, + { + id: 'G03B', + name: 'G03B - ANDROGENER', + children: [ + { + id: 'G03BA', + name: 'G03BA - 3-oksoandrosten (4) derivater', + children: [ + { + id: 'G03BA01', + name: 'G03BA01 - fluoksymesteron', + }, + { + id: 'G03BA03', + name: 'G03BA03 - testosteron', + }, + ], + }, + { + id: 'G03BB', + name: 'G03BB - 5-androstanon (3) derivater', + children: [ + { + id: 'G03BB01', + name: 'G03BB01 - mesterolon', + }, + ], + }, + ], + }, + { + id: 'G03C', + name: 'G03C - ØSTROGENER', + children: [ + { + id: 'G03CA', + name: 'G03CA - Naturlige og halvsyntetiske østrogener, usammensatte', + children: [ + { + id: 'G03CA01', + name: 'G03CA01 - etinyløstradiol', + }, + { + id: 'G03CA03', + name: 'G03CA03 - østradiol', + }, + { + id: 'G03CA04', + name: 'G03CA04 - østriol', + }, + { + id: 'G03CA53', + name: 'G03CA53 - østradiol, kombinasjoner', + }, + { + id: 'G03CA57', + name: 'G03CA57 - konjugerte østrogener', + }, + ], + }, + { + id: 'G03CC', + name: 'G03CC - Østrogener, kombinasjoner med andre midler', + children: [ + { + id: 'G03CC06', + name: 'G03CC06 - østriol', + }, + { + id: 'G03CC07', + name: 'G03CC07 - konjugerte østrogener og bazedoksifen', + }, + ], + }, + { + id: 'G03CX', + name: 'G03CX - Andre østrogener', + children: [ + { + id: 'G03CX01', + name: 'G03CX01 - tibolon', + }, + ], + }, + ], + }, + { + id: 'G03D', + name: 'G03D - PROGESTOGENER', + children: [ + { + id: 'G03DA', + name: 'G03DA - Pregnen (4) derivater', + children: [ + { + id: 'G03DA02', + name: 'G03DA02 - medroksyprogesteron', + }, + { + id: 'G03DA04', + name: 'G03DA04 - progesteron', + }, + ], + }, + { + id: 'G03DB', + name: 'G03DB - Pregnadienderivater', + children: [ + { + id: 'G03DB01', + name: 'G03DB01 - dydrogesteron', + }, + { + id: 'G03DB06', + name: 'G03DB06 - klormadinon', + }, + { + id: 'G03DB08', + name: 'G03DB08 - dienogest', + }, + ], + }, + { + id: 'G03DC', + name: 'G03DC - Estrenderivater', + children: [ + { + id: 'G03DC02', + name: 'G03DC02 - noretisteron', + }, + ], + }, + ], + }, + { + id: 'G03F', + name: 'G03F - PROGESTOGENER OG ØSTROGENER I KOMBINASJONER', + children: [ + { + id: 'G03FA', + name: 'G03FA - Progestogener og østrogener, faste kombinasjoner', + children: [ + { + id: 'G03FA01', + name: 'G03FA01 - noretisteron og østrogen', + }, + { + id: 'G03FA12', + name: 'G03FA12 - medroksyprogesteron og østrogen', + }, + { + id: 'G03FA14', + name: 'G03FA14 - dydrogesteron og østrogen', + }, + { + id: 'G03FA15', + name: 'G03FA15 - dienogest og østrogen', + }, + ], + }, + { + id: 'G03FB', + name: 'G03FB - Progestogener og østrogener, sekvensmidler', + children: [ + { + id: 'G03FB01', + name: 'G03FB01 - norgestrel og østrogen', + }, + { + id: 'G03FB05', + name: 'G03FB05 - noretisteron og østrogen', + }, + { + id: 'G03FB06', + name: 'G03FB06 - medroksyprogesteron og østrogen', + }, + { + id: 'G03FB08', + name: 'G03FB08 - dydrogesteron og østrogen', + }, + { + id: 'G03FB11', + name: 'G03FB11 - trimegeston og østrogen', + }, + ], + }, + ], + }, + { + id: 'G03G', + name: 'G03G - GONADOTROPINER OG ANDRE OVULASJONSSTIMULERENDE MIDLER', + children: [ + { + id: 'G03GA', + name: 'G03GA - Gonadotropiner', + children: [ + { + id: 'G03GA01', + name: 'G03GA01 - koriongonadotropin', + }, + { + id: 'G03GA02', + name: 'G03GA02 - menopausegonadotropin', + }, + { + id: 'G03GA04', + name: 'G03GA04 - urofollitropin', + }, + { + id: 'G03GA05', + name: 'G03GA05 - follitropin alfa', + }, + { + id: 'G03GA06', + name: 'G03GA06 - follitropin beta', + }, + { + id: 'G03GA07', + name: 'G03GA07 - lutropin alfa', + }, + { + id: 'G03GA08', + name: 'G03GA08 - koriongonadotropin alfa', + }, + { + id: 'G03GA09', + name: 'G03GA09 - korifollitropin alfa', + }, + { + id: 'G03GA10', + name: 'G03GA10 - follitropin delta', + }, + { + id: 'G03GA30', + name: 'G03GA30 - kombinasjoner', + }, + ], + }, + { + id: 'G03GB', + name: 'G03GB - Ovulasjonsstimulerende syntetiske midler', + children: [ + { + id: 'G03GB02', + name: 'G03GB02 - klomifen', + }, + ], + }, + ], + }, + { + id: 'G03H', + name: 'G03H - ANTIANDROGENER', + children: [ + { + id: 'G03HA', + name: 'G03HA - Antiandrogener, usammensatte', + children: [ + { + id: 'G03HA01', + name: 'G03HA01 - cyproteron', + }, + ], + }, + { + id: 'G03HB', + name: 'G03HB - Antiandrogener og østrogener', + children: [ + { + id: 'G03HB01', + name: 'G03HB01 - cyproteron og østrogen', + }, + ], + }, + ], + }, + { + id: 'G03X', + name: 'G03X - ANDRE KJØNNSHORMONER OG MIDLER MED EFFEKT PÅ GENITALIA', + children: [ + { + id: 'G03XA', + name: 'G03XA - Antigonadotropiner og lignende midler', + children: [ + { + id: 'G03XA01', + name: 'G03XA01 - danazol', + }, + ], + }, + { + id: 'G03XB', + name: 'G03XB - Progesteron reseptormodulatorer', + children: [ + { + id: 'G03XB01', + name: 'G03XB01 - mifepriston', + }, + { + id: 'G03XB02', + name: 'G03XB02 - ulipristal', + }, + ], + }, + { + id: 'G03XC', + name: 'G03XC - Midler med selektiv østrogenreseptor modulerende effekt', + children: [ + { + id: 'G03XC01', + name: 'G03XC01 - raloksifen', + }, + ], + }, + { + id: 'G03XX', + name: 'G03XX - Andre kjønnshormoner og midler med effekt på genitalia', + children: [ + { + id: 'G03XX01', + name: 'G03XX01 - prasteron', + }, + ], + }, + ], + }, + ], + }, + { + id: 'G04', + name: 'G04 - UROLOGIKA', + children: [ + { + id: 'G04B', + name: 'G04B - UROLOGIKA', + children: [ + { + id: 'G04BA', + name: 'G04BA - Surgjørende midler', + children: [ + { + id: 'G04BA01', + name: 'G04BA01 - ammoniumklorid', + }, + ], + }, + { + id: 'G04BD', + name: 'G04BD - Midler mot hyppig vannlatning og inkontinens', + children: [ + { + id: 'G04BD01', + name: 'G04BD01 - emepron', + }, + { + id: 'G04BD04', + name: 'G04BD04 - oksybutynin', + }, + { + id: 'G04BD07', + name: 'G04BD07 - tolterodin', + }, + { + id: 'G04BD08', + name: 'G04BD08 - solifenacin', + }, + { + id: 'G04BD10', + name: 'G04BD10 - darifenacin', + }, + { + id: 'G04BD11', + name: 'G04BD11 - fesoterodin', + }, + { + id: 'G04BD12', + name: 'G04BD12 - mirabegron', + }, + ], + }, + { + id: 'G04BE', + name: 'G04BE - Midler mot erektil dysfunksjon', + children: [ + { + id: 'G04BE01', + name: 'G04BE01 - alprostadil', + }, + { + id: 'G04BE03', + name: 'G04BE03 - sildenafil', + }, + { + id: 'G04BE04', + name: 'G04BE04 - johimbin', + }, + { + id: 'G04BE07', + name: 'G04BE07 - apomorfin', + }, + { + id: 'G04BE08', + name: 'G04BE08 - tadalafil', + }, + { + id: 'G04BE09', + name: 'G04BE09 - vardenafil', + }, + { + id: 'G04BE10', + name: 'G04BE10 - avanafil', + }, + { + id: 'G04BE30', + name: 'G04BE30 - kombinasjoner', + }, + ], + }, + { + id: 'G04BX', + name: 'G04BX - Andre urologiske midler', + children: [ + { + id: 'G04BX01', + name: 'G04BX01 - magnesiumhydroksid', + }, + { + id: 'G04BX13', + name: 'G04BX13 - dimetylsulfoksid', + }, + { + id: 'G04BX14', + name: 'G04BX14 - dapoksetin', + }, + { + id: 'G04BX15', + name: 'G04BX15 - pentosanpolysulfatnatrium', + }, + { + id: 'G04BX16', + name: 'G04BX16 - tiopronin', + }, + ], + }, + ], + }, + { + id: 'G04C', + name: 'G04C - MIDLER MOT BENIGN PROSTATAHYPERPLASI', + children: [ + { + id: 'G04CA', + name: 'G04CA - Alfablokkere', + children: [ + { + id: 'G04CA01', + name: 'G04CA01 - alfuzosin', + }, + { + id: 'G04CA02', + name: 'G04CA02 - tamsulosin', + }, + { + id: 'G04CA03', + name: 'G04CA03 - terazosin', + }, + { + id: 'G04CA52', + name: 'G04CA52 - tamsulosin og dutasterid', + }, + { + id: 'G04CA53', + name: 'G04CA53 - tamsulosin og solifenacin', + }, + ], + }, + { + id: 'G04CB', + name: 'G04CB - Testosteron-5-alfareduktasehemmer', + children: [ + { + id: 'G04CB01', + name: 'G04CB01 - finasterid', + }, + { + id: 'G04CB02', + name: 'G04CB02 - dutasterid', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'H', + name: 'H - HORMONER TIL SYSTEMISK BRUK, EKSKL. KJØNNSHORMONER OG INSULIN', + children: [ + { + id: 'H01', + name: 'H01 - HYPOFYSE- OG HYPOTHALAMUSHORMONER OG ANALOGER', + children: [ + { + id: 'H01A', + name: 'H01A - HYPOFYSEFORLAPPHORMONER OG ANALOGER', + children: [ + { + id: 'H01AB', + name: 'H01AB - Tyrotropin', + children: [ + { + id: 'H01AB01', + name: 'H01AB01 - tyrotropin alfa', + }, + ], + }, + { + id: 'H01AC', + name: 'H01AC - Somatropin og somatropinagonister', + children: [ + { + id: 'H01AC01', + name: 'H01AC01 - somatropin', + }, + { + id: 'H01AC03', + name: 'H01AC03 - mekasermin', + }, + ], + }, + { + id: 'H01AX', + name: 'H01AX - Andre hypofyseforlapphormoner og analoger', + children: [ + { + id: 'H01AX01', + name: 'H01AX01 - pegvisomant', + }, + ], + }, + { + id: 'H01AA', + name: 'H01AA - ACTH', + children: [ + { + id: 'H01AA02', + name: 'H01AA02 - tetrakosaktid', + }, + ], + }, + ], + }, + { + id: 'H01B', + name: 'H01B - HYPOFYSEBAKLAPPHORMONER', + children: [ + { + id: 'H01BA', + name: 'H01BA - Vasopressin og analoger', + children: [ + { + id: 'H01BA02', + name: 'H01BA02 - desmopressin', + }, + { + id: 'H01BA04', + name: 'H01BA04 - terlipressin', + }, + ], + }, + { + id: 'H01BB', + name: 'H01BB - Oksytocin og analoger', + children: [ + { + id: 'H01BB02', + name: 'H01BB02 - oksytocin', + }, + ], + }, + ], + }, + { + id: 'H01C', + name: 'H01C - HYPOTHALAMUSHORMONER', + children: [ + { + id: 'H01CA', + name: 'H01CA - Gonadotropinfrisettende hormoner', + children: [ + { + id: 'H01CA02', + name: 'H01CA02 - nafarelin', + }, + ], + }, + { + id: 'H01CB', + name: 'H01CB - Somatostatin og analoger', + children: [ + { + id: 'H01CB02', + name: 'H01CB02 - oktreotid', + }, + { + id: 'H01CB03', + name: 'H01CB03 - lanreotid', + }, + { + id: 'H01CB05', + name: 'H01CB05 - pasireotid', + }, + ], + }, + { + id: 'H01CC', + name: 'H01CC - Antigonadotropinfrisettende hormoner', + children: [ + { + id: 'H01CC01', + name: 'H01CC01 - ganireliks', + }, + { + id: 'H01CC02', + name: 'H01CC02 - cetroreliks', + }, + { + id: 'H01CC54', + name: 'H01CC54 - relugoliks, østradiol og noretisteron', + }, + ], + }, + ], + }, + ], + }, + { + id: 'H02', + name: 'H02 - KORTIKOSTEROIDER TIL SYSTEMISK BRUK', + children: [ + { + id: 'H02A', + name: 'H02A - KORTIKOSTEROIDER TIL SYSTEMISK BRUK, USAMMENSATTE', + children: [ + { + id: 'H02AB', + name: 'H02AB - Glukokortikoider', + children: [ + { + id: 'H02AB01', + name: 'H02AB01 - betametason', + }, + { + id: 'H02AB02', + name: 'H02AB02 - deksametason', + }, + { + id: 'H02AB04', + name: 'H02AB04 - metylprednisolon', + }, + { + id: 'H02AB06', + name: 'H02AB06 - prednisolon', + }, + { + id: 'H02AB07', + name: 'H02AB07 - prednison', + }, + { + id: 'H02AB08', + name: 'H02AB08 - triamcinolon', + }, + { + id: 'H02AB09', + name: 'H02AB09 - hydrokortison', + }, + { + id: 'H02AB10', + name: 'H02AB10 - kortison', + }, + { + id: 'H02AB13', + name: 'H02AB13 - deflazakort', + }, + ], + }, + { + id: 'H02AA', + name: 'H02AA - Mineralkortikoider', + children: [ + { + id: 'H02AA02', + name: 'H02AA02 - fludrokortison', + }, + ], + }, + ], + }, + { + id: 'H02B', + name: 'H02B - KORTIKOSTEROIDER TIL SYSTEMISK BRUK, KOMBINASJONER', + children: [ + { + id: 'H02BX', + name: 'H02BX - Kortikosteroider til systemisk bruk, kombinasjoner', + children: [ + { + id: 'H02BX01', + name: 'H02BX01 - metylprednisolon, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'H02C', + name: 'H02C - ANTIBINYREBARKHORMONER', + children: [ + { + id: 'H02CA', + name: 'H02CA - Antikortikosteroider', + children: [ + { + id: 'H02CA03', + name: 'H02CA03 - ketokonazol', + }, + ], + }, + ], + }, + ], + }, + { + id: 'H03', + name: 'H03 - THYREOIDEATERAPI', + children: [ + { + id: 'H03A', + name: 'H03A - THYREOIDEAMIDLER', + children: [ + { + id: 'H03AA', + name: 'H03AA - Thyreoideahormoner', + children: [ + { + id: 'H03AA01', + name: 'H03AA01 - levotyroksinnatrium', + }, + { + id: 'H03AA02', + name: 'H03AA02 - liotyroninnatrium', + }, + { + id: 'H03AA03', + name: 'H03AA03 - levotyroksin og liotyronin i kombinasjoner', + }, + { + id: 'H03AA04', + name: 'H03AA04 - tiratrikol', + }, + { + id: 'H03AA05', + name: 'H03AA05 - thyreoidea-kjertel midler', + }, + ], + }, + ], + }, + { + id: 'H03B', + name: 'H03B - ANTITHYREOIDEAMIDLER', + children: [ + { + id: 'H03BA', + name: 'H03BA - Tiouraciler', + children: [ + { + id: 'H03BA02', + name: 'H03BA02 - propyltiouracil', + }, + ], + }, + { + id: 'H03BB', + name: 'H03BB - Svovelholdige imidazolderivater', + children: [ + { + id: 'H03BB01', + name: 'H03BB01 - karbimazol', + }, + ], + }, + ], + }, + { + id: 'H03C', + name: 'H03C - JODTERAPI', + children: [ + { + id: 'H03CA', + name: 'H03CA - Jodterapi', + }, + ], + }, + ], + }, + { + id: 'H04', + name: 'H04 - PANKREASHORMONER', + children: [ + { + id: 'H04A', + name: 'H04A - GLYKOGENOLYTISK HORMON', + children: [ + { + id: 'H04AA', + name: 'H04AA - Glykogenolytisk hormon', + children: [ + { + id: 'H04AA01', + name: 'H04AA01 - glukagon', + }, + ], + }, + ], + }, + ], + }, + { + id: 'H05', + name: 'H05 - KALSIUM HOMØOSTASE', + children: [ + { + id: 'H05A', + name: 'H05A - PARATHYREOIDEAHORMONER OG ANALOGER', + children: [ + { + id: 'H05AA', + name: 'H05AA - Parathyreoideahormoner og analoger', + children: [ + { + id: 'H05AA02', + name: 'H05AA02 - teriparatid', + }, + { + id: 'H05AA03', + name: 'H05AA03 - parathyreoideahormon', + }, + ], + }, + ], + }, + { + id: 'H05B', + name: 'H05B - ANTIPARATHYREOIDEAMIDLER', + children: [ + { + id: 'H05BA', + name: 'H05BA - Kalsitoninmidler', + children: [ + { + id: 'H05BA01', + name: 'H05BA01 - laksekalsitonin, syntetisk', + }, + ], + }, + { + id: 'H05BX', + name: 'H05BX - Andre antiparathyroidea midler', + children: [ + { + id: 'H05BX01', + name: 'H05BX01 - cinakalset', + }, + { + id: 'H05BX02', + name: 'H05BX02 - parikalsitol', + }, + { + id: 'H05BX04', + name: 'H05BX04 - etelkalsetid', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'J', + name: 'J - ANTIINFEKTIVA TIL SYSTEMISK BRUK', + children: [ + { + id: 'J01', + name: 'J01 - ANTIBAKTERIELLE MIDLER TIL SYSTEMISK BRUK', + children: [ + { + id: 'J01A', + name: 'J01A - TETRASYKLINER', + children: [ + { + id: 'J01AA', + name: 'J01AA - tetrasykliner', + children: [ + { + id: 'J01AA02', + name: 'J01AA02 - doksysyklin', + }, + { + id: 'J01AA04', + name: 'J01AA04 - lymesyklin', + }, + { + id: 'J01AA06', + name: 'J01AA06 - oksytetrasyklin', + }, + { + id: 'J01AA07', + name: 'J01AA07 - tetrasyklin', + }, + { + id: 'J01AA08', + name: 'J01AA08 - minosyklin', + }, + { + id: 'J01AA12', + name: 'J01AA12 - tigesyklin', + }, + ], + }, + ], + }, + { + id: 'J01B', + name: 'J01B - AMFENIKOLER', + children: [ + { + id: 'J01BA', + name: 'J01BA - Amfenikoler', + children: [ + { + id: 'J01BA01', + name: 'J01BA01 - kloramfenikol', + }, + ], + }, + ], + }, + { + id: 'J01C', + name: 'J01C - BETA-LAKTAM ANTIBAKTERIELLE MIDLER, PENICILLINER', + children: [ + { + id: 'J01CA', + name: 'J01CA - Penicilliner med utvidet spekter', + children: [ + { + id: 'J01CA01', + name: 'J01CA01 - ampicillin', + }, + { + id: 'J01CA02', + name: 'J01CA02 - pivampicillin', + }, + { + id: 'J01CA04', + name: 'J01CA04 - amoksicillin', + }, + { + id: 'J01CA08', + name: 'J01CA08 - pivmecillinam', + }, + { + id: 'J01CA11', + name: 'J01CA11 - mecillinam', + }, + ], + }, + { + id: 'J01CE', + name: 'J01CE - Beta-laktamaseømfintlige penicilliner', + children: [ + { + id: 'J01CE01', + name: 'J01CE01 - benzylpenicillin', + }, + { + id: 'J01CE02', + name: 'J01CE02 - fenoksymetylpenicillin', + }, + { + id: 'J01CE08', + name: 'J01CE08 - benzatinbenzylpenicillin', + }, + ], + }, + { + id: 'J01CF', + name: 'J01CF - Beta-laktamaseresistente penicilliner', + children: [ + { + id: 'J01CF01', + name: 'J01CF01 - dikloksacillin', + }, + { + id: 'J01CF02', + name: 'J01CF02 - kloksacillin', + }, + { + id: 'J01CF05', + name: 'J01CF05 - flukloksacillin', + }, + ], + }, + { + id: 'J01CR', + name: 'J01CR - Kombinasjoner av penicilliner, inkludert beta-laktamasehemmere', + children: [ + { + id: 'J01CR02', + name: 'J01CR02 - amoksicillin og beta-laktamasehemmer', + }, + { + id: 'J01CR05', + name: 'J01CR05 - piperacillin og beta-laktamasehemmer', + }, + ], + }, + ], + }, + { + id: 'J01D', + name: 'J01D - ANDRE BETA-LAKTAM ANTIBAKTERIELLE MIDLER', + children: [ + { + id: 'J01DB', + name: 'J01DB - Første generasjon cefalosporiner', + children: [ + { + id: 'J01DB01', + name: 'J01DB01 - cefaleksin', + }, + { + id: 'J01DB03', + name: 'J01DB03 - cefalotin', + }, + { + id: 'J01DB04', + name: 'J01DB04 - cefazolin', + }, + ], + }, + { + id: 'J01DC', + name: 'J01DC - Andre generasjon cefalosporiner', + children: [ + { + id: 'J01DC02', + name: 'J01DC02 - cefuroksim', + }, + ], + }, + { + id: 'J01DD', + name: 'J01DD - Tredje generasjon cefalosporiner', + children: [ + { + id: 'J01DD01', + name: 'J01DD01 - cefotaksim', + }, + { + id: 'J01DD02', + name: 'J01DD02 - ceftazidim', + }, + { + id: 'J01DD04', + name: 'J01DD04 - ceftriakson', + }, + { + id: 'J01DD08', + name: 'J01DD08 - cefiksim', + }, + { + id: 'J01DD52', + name: 'J01DD52 - ceftazidim og beta-laktamasehemmer', + }, + ], + }, + { + id: 'J01DF', + name: 'J01DF - Monobaktamer', + children: [ + { + id: 'J01DF01', + name: 'J01DF01 - aztreonam', + }, + ], + }, + { + id: 'J01DH', + name: 'J01DH - Karbapenemer', + children: [ + { + id: 'J01DH02', + name: 'J01DH02 - meropenem', + }, + { + id: 'J01DH03', + name: 'J01DH03 - ertapenem', + }, + { + id: 'J01DH04', + name: 'J01DH04 - doripenem', + }, + { + id: 'J01DH51', + name: 'J01DH51 - imipenem og cilastatin', + }, + ], + }, + { + id: 'J01DI', + name: 'J01DI - Andre cefalosporiner og penemer', + children: [ + { + id: 'J01DI02', + name: 'J01DI02 - ceftarolin fosamil', + }, + { + id: 'J01DI54', + name: 'J01DI54 - ceftolozan og beta-laktamasehemmer', + }, + ], + }, + ], + }, + { + id: 'J01E', + name: 'J01E - SULFONAMIDER OG TRIMETOPRIM', + children: [ + { + id: 'J01EA', + name: 'J01EA - Trimetoprim og derivater', + children: [ + { + id: 'J01EA01', + name: 'J01EA01 - trimetoprim', + }, + ], + }, + { + id: 'J01EB', + name: 'J01EB - Sulfonamider med kort virketid', + children: [ + { + id: 'J01EB02', + name: 'J01EB02 - sulfametizol', + }, + ], + }, + { + id: 'J01EC', + name: 'J01EC - Sulfonamider med middels lang virketid', + children: [ + { + id: 'J01EC02', + name: 'J01EC02 - sulfadiazin', + }, + ], + }, + { + id: 'J01EE', + name: 'J01EE - Kombinasjoner av sulfonamider og trimetoprim, inkl. derivater', + children: [ + { + id: 'J01EE01', + name: 'J01EE01 - sulfametoksazol og trimetoprim', + }, + ], + }, + ], + }, + { + id: 'J01F', + name: 'J01F - MAKROLIDER, LINKOSAMIDER OG STREPTOGRAMINER', + children: [ + { + id: 'J01FA', + name: 'J01FA - Makrolider', + children: [ + { + id: 'J01FA01', + name: 'J01FA01 - erytromycin', + }, + { + id: 'J01FA02', + name: 'J01FA02 - spiramycin', + }, + { + id: 'J01FA06', + name: 'J01FA06 - roksitromycin', + }, + { + id: 'J01FA09', + name: 'J01FA09 - klaritromycin', + }, + { + id: 'J01FA10', + name: 'J01FA10 - azitromycin', + }, + { + id: 'J01FA15', + name: 'J01FA15 - telitromycin', + }, + ], + }, + { + id: 'J01FF', + name: 'J01FF - Linkosamider', + children: [ + { + id: 'J01FF01', + name: 'J01FF01 - klindamycin', + }, + ], + }, + { + id: 'J01FG', + name: 'J01FG - Streptograminer', + children: [ + { + id: 'J01FG01', + name: 'J01FG01 - pristinamycin', + }, + ], + }, + ], + }, + { + id: 'J01G', + name: 'J01G - AMINOGLYKOSIDER', + children: [ + { + id: 'J01GA', + name: 'J01GA - Streptomyciner', + children: [ + { + id: 'J01GA01', + name: 'J01GA01 - streptomycin', + }, + ], + }, + { + id: 'J01GB', + name: 'J01GB - Andre aminoglykosider', + children: [ + { + id: 'J01GB01', + name: 'J01GB01 - tobramycin', + }, + { + id: 'J01GB03', + name: 'J01GB03 - gentamicin', + }, + { + id: 'J01GB06', + name: 'J01GB06 - amikacin', + }, + { + id: 'J01GB07', + name: 'J01GB07 - netilmicin', + }, + ], + }, + ], + }, + { + id: 'J01M', + name: 'J01M - KINOLONER, ANTIBAKTERIELLE', + children: [ + { + id: 'J01MA', + name: 'J01MA - Fluorokinoloner', + children: [ + { + id: 'J01MA01', + name: 'J01MA01 - ofloksacin', + }, + { + id: 'J01MA02', + name: 'J01MA02 - ciprofloksacin', + }, + { + id: 'J01MA12', + name: 'J01MA12 - levofloksacin', + }, + { + id: 'J01MA14', + name: 'J01MA14 - moksifloksacin', + }, + ], + }, + { + id: 'J01MB', + name: 'J01MB - Andre kinoloner', + children: [ + { + id: 'J01MB02', + name: 'J01MB02 - nalidiksinsyre', + }, + ], + }, + ], + }, + { + id: 'J01X', + name: 'J01X - ANDRE ANTIBAKTERIELLE MIDLER', + children: [ + { + id: 'J01XA', + name: 'J01XA - Glykopeptid antibakterielle midler', + children: [ + { + id: 'J01XA01', + name: 'J01XA01 - vankomycin', + }, + { + id: 'J01XA02', + name: 'J01XA02 - teikoplanin', + }, + { + id: 'J01XA04', + name: 'J01XA04 - dalbavancin', + }, + ], + }, + { + id: 'J01XB', + name: 'J01XB - Polymyksiner', + children: [ + { + id: 'J01XB01', + name: 'J01XB01 - kolistin', + }, + ], + }, + { + id: 'J01XC', + name: 'J01XC - Steroid antibakterielle midler', + children: [ + { + id: 'J01XC01', + name: 'J01XC01 - fusidinsyre', + }, + ], + }, + { + id: 'J01XD', + name: 'J01XD - Imidazolderivater', + children: [ + { + id: 'J01XD01', + name: 'J01XD01 - metronidazol', + }, + ], + }, + { + id: 'J01XE', + name: 'J01XE - Nitrofuranderivater', + children: [ + { + id: 'J01XE01', + name: 'J01XE01 - nitrofurantoin', + }, + ], + }, + { + id: 'J01XX', + name: 'J01XX - Andre antibakterielle midler', + children: [ + { + id: 'J01XX01', + name: 'J01XX01 - fosfomycin', + }, + { + id: 'J01XX04', + name: 'J01XX04 - spektinomycin', + }, + { + id: 'J01XX05', + name: 'J01XX05 - metenamin', + }, + { + id: 'J01XX08', + name: 'J01XX08 - linezolid', + }, + { + id: 'J01XX09', + name: 'J01XX09 - daptomycin', + }, + { + id: 'J01XX11', + name: 'J01XX11 - tedizolid', + }, + ], + }, + ], + }, + ], + }, + { + id: 'J02', + name: 'J02 - ANTIMYKOTIKA TIL SYSTEMISK BRUK', + children: [ + { + id: 'J02A', + name: 'J02A - ANTIMYKOTIKA TIL SYSTEMISK BRUK', + children: [ + { + id: 'J02AB', + name: 'J02AB - Imidazolderivater', + children: [ + { + id: 'J02AB02', + name: 'J02AB02 - ketokonazol', + }, + ], + }, + { + id: 'J02AC', + name: 'J02AC - Triazol- og tetrazolderivater', + children: [ + { + id: 'J02AC01', + name: 'J02AC01 - flukonazol', + }, + { + id: 'J02AC02', + name: 'J02AC02 - itrakonazol', + }, + { + id: 'J02AC03', + name: 'J02AC03 - vorikonazol', + }, + { + id: 'J02AC04', + name: 'J02AC04 - posakonazol', + }, + { + id: 'J02AC05', + name: 'J02AC05 - isavukonazol', + }, + ], + }, + { + id: 'J02AX', + name: 'J02AX - Andre antimykotika til systemisk bruk', + children: [ + { + id: 'J02AX04', + name: 'J02AX04 - kaspofungin', + }, + { + id: 'J02AX05', + name: 'J02AX05 - mikafungin', + }, + { + id: 'J02AX06', + name: 'J02AX06 - anidulafungin', + }, + ], + }, + { + id: 'J02AA', + name: 'J02AA - Antibiotika', + children: [ + { + id: 'J02AA01', + name: 'J02AA01 - amfotericin b', + }, + ], + }, + ], + }, + ], + }, + { + id: 'J04', + name: 'J04 - ANTIMYKOBAKTERIELLE MIDLER', + children: [ + { + id: 'J04A', + name: 'J04A - MIDLER TIL BEHANDLING AV TUBERKULOSE', + children: [ + { + id: 'J04AB', + name: 'J04AB - Antibiotika', + children: [ + { + id: 'J04AB01', + name: 'J04AB01 - cykloserin', + }, + { + id: 'J04AB02', + name: 'J04AB02 - rifampicin', + }, + { + id: 'J04AB04', + name: 'J04AB04 - rifabutin', + }, + { + id: 'J04AB05', + name: 'J04AB05 - rifapentin', + }, + { + id: 'J04AB30', + name: 'J04AB30 - kapreomycin', + }, + ], + }, + { + id: 'J04AC', + name: 'J04AC - Hydrazider', + children: [ + { + id: 'J04AC01', + name: 'J04AC01 - isoniazid', + }, + ], + }, + { + id: 'J04AD', + name: 'J04AD - Tiokarbamidderivater', + children: [ + { + id: 'J04AD01', + name: 'J04AD01 - protionamid', + }, + ], + }, + { + id: 'J04AK', + name: 'J04AK - Andre midler til behandling av tuberkulose', + children: [ + { + id: 'J04AK01', + name: 'J04AK01 - pyrazinamid', + }, + { + id: 'J04AK02', + name: 'J04AK02 - etambutol', + }, + { + id: 'J04AK05', + name: 'J04AK05 - bedakvilin', + }, + { + id: 'J04AK08', + name: 'J04AK08 - pretomanid', + }, + ], + }, + { + id: 'J04AM', + name: 'J04AM - Midler til behandling av tuberkulose, kombinasjoner', + children: [ + { + id: 'J04AM02', + name: 'J04AM02 - rifampicin og isoniazid', + }, + { + id: 'J04AM05', + name: 'J04AM05 - rifampicin, pyrazinamid og isoniazid', + }, + { + id: 'J04AM06', + name: 'J04AM06 - rifampicin, pyrazinamid, etambutol og isoniazid', + }, + ], + }, + { + id: 'J04AA', + name: 'J04AA - Aminosalisylsyre og derivater', + children: [ + { + id: 'J04AA01', + name: 'J04AA01 - aminosalisylsyre', + }, + ], + }, + ], + }, + { + id: 'J04B', + name: 'J04B - MIDLER TIL BEHANDLING AV LEPRA', + children: [ + { + id: 'J04BA', + name: 'J04BA - Midler til behandling av lepra', + children: [ + { + id: 'J04BA01', + name: 'J04BA01 - klofazimin', + }, + { + id: 'J04BA02', + name: 'J04BA02 - dapson', + }, + ], + }, + ], + }, + ], + }, + { + id: 'J05', + name: 'J05 - ANTIVIRALE MIDLER TIL SYSTEMISK BRUK', + children: [ + { + id: 'J05A', + name: 'J05A - DIREKTEVIRKENDE ANTIVIRALE MIDLER', + children: [ + { + id: 'J05AB', + name: 'J05AB - Nukleosider og nukleotider ekskl. reverstranskriptase-hemmere', + children: [ + { + id: 'J05AB01', + name: 'J05AB01 - aciklovir', + }, + { + id: 'J05AB06', + name: 'J05AB06 - ganciklovir', + }, + { + id: 'J05AB09', + name: 'J05AB09 - famciklovir', + }, + { + id: 'J05AB11', + name: 'J05AB11 - valaciklovir', + }, + { + id: 'J05AB12', + name: 'J05AB12 - cidofovir', + }, + { + id: 'J05AB14', + name: 'J05AB14 - valganciklovir', + }, + ], + }, + { + id: 'J05AD', + name: 'J05AD - Fosfonsyrederivater', + children: [ + { + id: 'J05AD01', + name: 'J05AD01 - foskarnet', + }, + ], + }, + { + id: 'J05AE', + name: 'J05AE - Proteasehemmere', + children: [ + { + id: 'J05AE01', + name: 'J05AE01 - sakinavir', + }, + { + id: 'J05AE02', + name: 'J05AE02 - indinavir', + }, + { + id: 'J05AE03', + name: 'J05AE03 - ritonavir', + }, + { + id: 'J05AE04', + name: 'J05AE04 - nelfinavir', + }, + { + id: 'J05AE05', + name: 'J05AE05 - amprenavir', + }, + { + id: 'J05AE07', + name: 'J05AE07 - fosamprenavir', + }, + { + id: 'J05AE08', + name: 'J05AE08 - atazanavir', + }, + { + id: 'J05AE09', + name: 'J05AE09 - tipranavir', + }, + { + id: 'J05AE10', + name: 'J05AE10 - darunavir', + }, + { + id: 'J05AE30', + name: 'J05AE30 - nirmatrelvir og ritonavir', + }, + ], + }, + { + id: 'J05AF', + name: 'J05AF - Nukleosid og nukleotid reverstranskriptase-hemmere', + children: [ + { + id: 'J05AF01', + name: 'J05AF01 - zidovudin', + }, + { + id: 'J05AF02', + name: 'J05AF02 - didanosin', + }, + { + id: 'J05AF04', + name: 'J05AF04 - stavudin', + }, + { + id: 'J05AF05', + name: 'J05AF05 - lamivudin', + }, + { + id: 'J05AF06', + name: 'J05AF06 - abakavir', + }, + { + id: 'J05AF07', + name: 'J05AF07 - tenofovirdisoproksil', + }, + { + id: 'J05AF08', + name: 'J05AF08 - adefovirdipivoksil', + }, + { + id: 'J05AF09', + name: 'J05AF09 - emtricitabin', + }, + { + id: 'J05AF10', + name: 'J05AF10 - entekavir', + }, + { + id: 'J05AF11', + name: 'J05AF11 - telbivudin', + }, + { + id: 'J05AF13', + name: 'J05AF13 - tenofoviralafenamid', + }, + ], + }, + { + id: 'J05AG', + name: 'J05AG - Ikke-nukleosid reverstranskriptasehemmere', + children: [ + { + id: 'J05AG01', + name: 'J05AG01 - nevirapin', + }, + { + id: 'J05AG03', + name: 'J05AG03 - efavirenz', + }, + { + id: 'J05AG04', + name: 'J05AG04 - etravirin', + }, + { + id: 'J05AG05', + name: 'J05AG05 - rilpivirin', + }, + { + id: 'J05AG06', + name: 'J05AG06 - doravirin', + }, + ], + }, + { + id: 'J05AH', + name: 'J05AH - Neuraminidasehemmere', + children: [ + { + id: 'J05AH01', + name: 'J05AH01 - zanamivir', + }, + { + id: 'J05AH02', + name: 'J05AH02 - oseltamivir', + }, + ], + }, + { + id: 'J05AJ', + name: 'J05AJ - Integrasehemmere', + children: [ + { + id: 'J05AJ01', + name: 'J05AJ01 - raltegravir', + }, + { + id: 'J05AJ03', + name: 'J05AJ03 - dolutegravir', + }, + { + id: 'J05AJ04', + name: 'J05AJ04 - kabotegravir', + }, + ], + }, + { + id: 'J05AP', + name: 'J05AP - Antivirale midler til behandling av HCV infeksjoner', + children: [ + { + id: 'J05AP01', + name: 'J05AP01 - ribavirin', + }, + { + id: 'J05AP02', + name: 'J05AP02 - telaprevir', + }, + { + id: 'J05AP03', + name: 'J05AP03 - boceprevir', + }, + { + id: 'J05AP05', + name: 'J05AP05 - simeprevir', + }, + { + id: 'J05AP07', + name: 'J05AP07 - daklatasvir', + }, + { + id: 'J05AP08', + name: 'J05AP08 - sofosbuvir', + }, + { + id: 'J05AP09', + name: 'J05AP09 - dasabuvir', + }, + { + id: 'J05AP51', + name: 'J05AP51 - sofosbuvir og ledipasvir', + }, + { + id: 'J05AP53', + name: 'J05AP53 - ombitasvir, paritaprevir og ritonavir', + }, + { + id: 'J05AP54', + name: 'J05AP54 - elbasvir og grazoprevir', + }, + { + id: 'J05AP55', + name: 'J05AP55 - sofosbuvir og velpatasvir', + }, + { + id: 'J05AP56', + name: 'J05AP56 - sofosbuvir, velpatasvir og voksilaprevir', + }, + { + id: 'J05AP57', + name: 'J05AP57 - glekaprevir og pibrentasvir', + }, + ], + }, + { + id: 'J05AR', + name: 'J05AR - Antivirale midler til behandling av HIV infeksjoner, kombinasjoner', + children: [ + { + id: 'J05AR01', + name: 'J05AR01 - zidovudin og lamivudin', + }, + { + id: 'J05AR02', + name: 'J05AR02 - lamivudin og abakavir', + }, + { + id: 'J05AR03', + name: 'J05AR03 - tenofovirdisoproksil og emtricitabin', + }, + { + id: 'J05AR04', + name: 'J05AR04 - zidovudin, lamivudin og abakavir', + }, + { + id: 'J05AR06', + name: 'J05AR06 - emtricitabin, tenofovirdisoproksil og efavirenz', + }, + { + id: 'J05AR08', + name: 'J05AR08 - emtricitabin, tenofovirdisoproksil og rilpivirin', + }, + { + id: 'J05AR09', + name: 'J05AR09 - emtricitabin, tenofovirdisoproksil, elvitegravir og kobicistat', + }, + { + id: 'J05AR10', + name: 'J05AR10 - lopinavir og ritonavir', + }, + { + id: 'J05AR13', + name: 'J05AR13 - lamivudin, abakavir og dolutegravir', + }, + { + id: 'J05AR14', + name: 'J05AR14 - darunavir og kobicistat', + }, + { + id: 'J05AR15', + name: 'J05AR15 - atazanavir og kobicistat', + }, + { + id: 'J05AR17', + name: 'J05AR17 - emtricitabin og tenofoviralafenamid', + }, + { + id: 'J05AR18', + name: 'J05AR18 - emtricitabin, tenofoviralafenamid, elvitegravir og kobicistat', + }, + { + id: 'J05AR19', + name: 'J05AR19 - emtricitabin, tenofoviralafenamid og rilpivirin', + }, + { + id: 'J05AR20', + name: 'J05AR20 - emtricitabin, tenofoviralafenamid og biktegravir', + }, + { + id: 'J05AR21', + name: 'J05AR21 - dolutegravir og rilpivirin', + }, + { + id: 'J05AR22', + name: 'J05AR22 - emtricitabin, tenofoviralafenamid, darunavir og kobicistat', + }, + { + id: 'J05AR24', + name: 'J05AR24 - lamivudin, tenofovirdisoproksil og doravirin', + }, + { + id: 'J05AR25', + name: 'J05AR25 - lamivudin og dolutegravir', + }, + ], + }, + { + id: 'J05AX', + name: 'J05AX - Andre antivirale midler', + children: [ + { + id: 'J05AX05', + name: 'J05AX05 - inosin pranobeks', + }, + { + id: 'J05AX07', + name: 'J05AX07 - enfuvirtid', + }, + { + id: 'J05AX09', + name: 'J05AX09 - maravirok', + }, + { + id: 'J05AX10', + name: 'J05AX10 - maribavir', + }, + { + id: 'J05AX18', + name: 'J05AX18 - letermovir', + }, + { + id: 'J05AX27', + name: 'J05AX27 - favipiravir', + }, + ], + }, + ], + }, + ], + }, + { + id: 'J06', + name: 'J06 - IMMUNSERA OG IMMUNGLOBULINER', + children: [ + { + id: 'J06B', + name: 'J06B - IMMUNGLOBULINER', + children: [ + { + id: 'J06BA', + name: 'J06BA - Immunglobulin, normal human', + children: [ + { + id: 'J06BA01', + name: 'J06BA01 - immunglobulin, normal human, til ekstravaskulær adm', + }, + { + id: 'J06BA02', + name: 'J06BA02 - immunglobulin, normal human, til intravaskulær adm.', + }, + ], + }, + { + id: 'J06BB', + name: 'J06BB - Spesifikke immunglobuliner', + children: [ + { + id: 'J06BB01', + name: 'J06BB01 - immunglobulin mot rh-immunisering', + }, + { + id: 'J06BB02', + name: 'J06BB02 - immunglobulin mot stivkrampe', + }, + { + id: 'J06BB04', + name: 'J06BB04 - immunglobulin mot hepatitt b', + }, + { + id: 'J06BB05', + name: 'J06BB05 - immunglobulin mot hundegalskap', + }, + ], + }, + { + id: 'J06BC', + name: 'J06BC - Andre immunglobuliner', + children: [ + { + id: 'J06BC03', + name: 'J06BC03 - bezlotoksumab', + }, + ], + }, + { + id: 'J06BD', + name: 'J06BD - Antivirale monoklonale antistoffer', + children: [ + { + id: 'J06BD01', + name: 'J06BD01 - palivizumab', + }, + ], + }, + ], + }, + ], + }, + { + id: 'J07', + name: 'J07 - VAKSINER', + children: [ + { + id: 'J07A', + name: 'J07A - BAKTERIEVAKSINER', + children: [ + { + id: 'J07AE', + name: 'J07AE - Koleravaksiner', + children: [ + { + id: 'J07AE01', + name: 'J07AE01 - kolera, inaktivert, helcelle', + }, + { + id: 'J07AE02', + name: 'J07AE02 - kolera, levende, svekket', + }, + ], + }, + { + id: 'J07AG', + name: 'J07AG - Haemophilus influenzae B vaksiner', + children: [ + { + id: 'J07AG01', + name: 'J07AG01 - haemophilus influenzae b, renset antigen konjugert', + }, + ], + }, + { + id: 'J07AH', + name: 'J07AH - Meningokokkvaksiner', + children: [ + { + id: 'J07AH03', + name: 'J07AH03 - meningokokk a,c, divalent renset polysakkarid antigen', + }, + { + id: 'J07AH04', + name: 'J07AH04 - meningokokk a,c,y,w-135, tetravalent renset polysakkarid antigen', + }, + { + id: 'J07AH07', + name: 'J07AH07 - meningokokk c, renset polysakkarid antigen konjugert', + }, + { + id: 'J07AH08', + name: 'J07AH08 - meningokokk a,c,y,w-135, tetravalent renset polysakkarid antigen konjugert', + }, + { + id: 'J07AH09', + name: 'J07AH09 - meningokokk b, mulitkomponent vaksine', + }, + ], + }, + { + id: 'J07AJ', + name: 'J07AJ - Kikhostevaksiner', + children: [ + { + id: 'J07AJ52', + name: 'J07AJ52 - kikhoste, renset antigen, kombinasjoner med toksoider', + }, + ], + }, + { + id: 'J07AL', + name: 'J07AL - Pneumokokkvaksiner', + children: [ + { + id: 'J07AL01', + name: 'J07AL01 - pneumokokk, renset polysakkarid antigen', + }, + { + id: 'J07AL02', + name: 'J07AL02 - pneumokokk, renset polysakkarid antigen konjugert', + }, + { + id: 'J07AL52', + name: 'J07AL52 - pneumokokk, renset polysakkarid antigen og haemophilus influenzae, konjugert', + }, + ], + }, + { + id: 'J07AM', + name: 'J07AM - Tetanusvaksiner', + children: [ + { + id: 'J07AM01', + name: 'J07AM01 - tetanustoksoid', + }, + { + id: 'J07AM51', + name: 'J07AM51 - tetanustoksoid, kombinasjoner med difteritoksoid', + }, + ], + }, + { + id: 'J07AN', + name: 'J07AN - Tuberkulose vaksiner', + children: [ + { + id: 'J07AN01', + name: 'J07AN01 - tuberkulose, levende, svekket', + }, + ], + }, + { + id: 'J07AP', + name: 'J07AP - Tyfoidvaksiner', + children: [ + { + id: 'J07AP01', + name: 'J07AP01 - tyfoid, oral, levende, svekket', + }, + { + id: 'J07AP03', + name: 'J07AP03 - tyfoid, renset polysakkarid antigen', + }, + ], + }, + ], + }, + { + id: 'J07B', + name: 'J07B - VIRUSVAKSINER', + children: [ + { + id: 'J07BA', + name: 'J07BA - Encefalittvaksiner', + children: [ + { + id: 'J07BA01', + name: 'J07BA01 - encefalitt, skogflåttbåren, inaktivert helvirus', + }, + { + id: 'J07BA02', + name: 'J07BA02 - japansk encefalitt, inaktivert helvirus', + }, + ], + }, + { + id: 'J07BB', + name: 'J07BB - Influensavaksiner', + children: [ + { + id: 'J07BB02', + name: 'J07BB02 - influensa, inaktivert, splitvirus eller overflateantigen', + }, + { + id: 'J07BB03', + name: 'J07BB03 - influensa, levende, svekket', + }, + ], + }, + { + id: 'J07BC', + name: 'J07BC - Hepatittvaksiner', + children: [ + { + id: 'J07BC01', + name: 'J07BC01 - hepatitt b, renset antigen', + }, + { + id: 'J07BC02', + name: 'J07BC02 - hepatitt a, inaktivert, helvirus', + }, + { + id: 'J07BC20', + name: 'J07BC20 - kombinasjoner', + }, + ], + }, + { + id: 'J07BD', + name: 'J07BD - Meslingvaksiner', + children: [ + { + id: 'J07BD01', + name: 'J07BD01 - meslinger, levende, svekket', + }, + { + id: 'J07BD52', + name: 'J07BD52 - meslinger, kombinasjoner med kusma og rubella, levende svekket', + }, + ], + }, + { + id: 'J07BF', + name: 'J07BF - Poliomyelittvaksiner', + children: [ + { + id: 'J07BF03', + name: 'J07BF03 - poliomyelitt, trivalent, inaktivert helvirus', + }, + ], + }, + { + id: 'J07BG', + name: 'J07BG - Rabiesvaksiner', + children: [ + { + id: 'J07BG01', + name: 'J07BG01 - rabies, inaktivert, helvirus', + }, + ], + }, + { + id: 'J07BH', + name: 'J07BH - Rotavirusvaksiner', + children: [ + { + id: 'J07BH01', + name: 'J07BH01 - rotavirus, levende, svekket', + }, + ], + }, + { + id: 'J07BK', + name: 'J07BK - Varicella zoster vaksiner', + children: [ + { + id: 'J07BK01', + name: 'J07BK01 - varicella, levende, svekket', + }, + { + id: 'J07BK02', + name: 'J07BK02 - zoster, levende svekket', + }, + { + id: 'J07BK03', + name: 'J07BK03 - zoster, renset antigen', + }, + ], + }, + { + id: 'J07BL', + name: 'J07BL - Gulfebervaksiner', + children: [ + { + id: 'J07BL01', + name: 'J07BL01 - gulfeber, levende, svekket', + }, + ], + }, + { + id: 'J07BM', + name: 'J07BM - Papillomavirus vaksiner', + children: [ + { + id: 'J07BM01', + name: 'J07BM01 - papillomavirus (human type 6,11,16,18)', + }, + { + id: 'J07BM02', + name: 'J07BM02 - papillomavirus (human type 16,18)', + }, + { + id: 'J07BM03', + name: 'J07BM03 - papillomavirus (human typer 6, 11, 16, 18, 31, 33, 45, 52, 58)', + }, + ], + }, + { + id: 'J07BN', + name: 'J07BN - Covid-19 vaksiner', + children: [ + { + id: 'J07BN01', + name: 'J07BN01 - covid-19, rna-basert vaksine', + }, + ], + }, + { + id: 'J07BX', + name: 'J07BX - Andre virusvaksiner', + children: [ + { + id: 'J07BX04', + name: 'J07BX04 - denguevirusvaksiner', + }, + { + id: 'J07BX05', + name: 'J07BX05 - respiratoriske syncytialvirusvaksiner', + }, + ], + }, + ], + }, + { + id: 'J07C', + name: 'J07C - BAKTERIE- OG VIRUSVAKSINER, KOMBINERT', + children: [ + { + id: 'J07CA', + name: 'J07CA - Bakterie- og virusvaksiner, kombinert', + children: [ + { + id: 'J07CA02', + name: 'J07CA02 - difteri-kikhoste-poliomyelitt-tetanus', + }, + { + id: 'J07CA06', + name: 'J07CA06 - difteri-haemophilus influenzae b-kikhoste-poliomyelitt-tetanus', + }, + { + id: 'J07CA09', + name: 'J07CA09 - difteri-haemophilus influenzae b-kikhoste-poliomyelitt-tetanus-hepatitt b', + }, + { + id: 'J07CA10', + name: 'J07CA10 - tyfoid-hepatitt a', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'L', + name: 'L - ANTINEOPLASTISKE OG IMMUNMODULERENDE MIDLER', + children: [ + { + id: 'L01', + name: 'L01 - ANTINEOPLASTISKE MIDLER', + children: [ + { + id: 'L01A', + name: 'L01A - ALKYLERINGSMIDLER', + children: [ + { + id: 'L01AB', + name: 'L01AB - Alkylsulfonater', + children: [ + { + id: 'L01AB01', + name: 'L01AB01 - busulfan', + }, + ], + }, + { + id: 'L01AD', + name: 'L01AD - Nitrosoureaforbindelser', + children: [ + { + id: 'L01AD02', + name: 'L01AD02 - lomustin', + }, + { + id: 'L01AD04', + name: 'L01AD04 - streptozocin', + }, + ], + }, + { + id: 'L01AX', + name: 'L01AX - Andre alkyleringsmidler', + children: [ + { + id: 'L01AX03', + name: 'L01AX03 - temozolomid', + }, + { + id: 'L01AX04', + name: 'L01AX04 - dakarbazin', + }, + ], + }, + { + id: 'L01AA', + name: 'L01AA - Sennepsgassanaloger', + children: [ + { + id: 'L01AA01', + name: 'L01AA01 - syklofosfamid', + }, + { + id: 'L01AA02', + name: 'L01AA02 - klorambucil', + }, + { + id: 'L01AA03', + name: 'L01AA03 - melfalan', + }, + { + id: 'L01AA07', + name: 'L01AA07 - trofosfamid', + }, + { + id: 'L01AA09', + name: 'L01AA09 - bendamustin', + }, + ], + }, + ], + }, + { + id: 'L01B', + name: 'L01B - ANTIMETABOLITTER', + children: [ + { + id: 'L01BA', + name: 'L01BA - Folsyreanaloger', + children: [ + { + id: 'L01BA01', + name: 'L01BA01 - metotreksat', + }, + { + id: 'L01BA04', + name: 'L01BA04 - pemetreksed', + }, + ], + }, + { + id: 'L01BB', + name: 'L01BB - Purinanaloger', + children: [ + { + id: 'L01BB02', + name: 'L01BB02 - merkaptopurin', + }, + { + id: 'L01BB03', + name: 'L01BB03 - tioguanin', + }, + { + id: 'L01BB04', + name: 'L01BB04 - kladribin', + }, + { + id: 'L01BB05', + name: 'L01BB05 - fludarabin', + }, + ], + }, + { + id: 'L01BC', + name: 'L01BC - Pyrimidinanaloger', + children: [ + { + id: 'L01BC01', + name: 'L01BC01 - cytarabin', + }, + { + id: 'L01BC02', + name: 'L01BC02 - fluorouracil', + }, + { + id: 'L01BC05', + name: 'L01BC05 - gemcitabin', + }, + { + id: 'L01BC06', + name: 'L01BC06 - kapecitabin', + }, + { + id: 'L01BC07', + name: 'L01BC07 - azacitidin', + }, + { + id: 'L01BC08', + name: 'L01BC08 - decitabin', + }, + { + id: 'L01BC52', + name: 'L01BC52 - fluorouracil, kombinasjoner', + }, + { + id: 'L01BC53', + name: 'L01BC53 - tegafur, kombinasjoner', + }, + { + id: 'L01BC59', + name: 'L01BC59 - trifluridin, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'L01C', + name: 'L01C - PLANTEALKALOIDER OG ANDRE NATURPRODUKTER', + children: [ + { + id: 'L01CA', + name: 'L01CA - Vinkaalkaloider og analoger', + children: [ + { + id: 'L01CA01', + name: 'L01CA01 - vinblastin', + }, + { + id: 'L01CA02', + name: 'L01CA02 - vinkristin', + }, + { + id: 'L01CA04', + name: 'L01CA04 - vinorelbin', + }, + ], + }, + { + id: 'L01CB', + name: 'L01CB - Podofyllotoksinderivater', + children: [ + { + id: 'L01CB01', + name: 'L01CB01 - etoposid', + }, + ], + }, + { + id: 'L01CD', + name: 'L01CD - Taksaner', + children: [ + { + id: 'L01CD01', + name: 'L01CD01 - paklitaksel', + }, + { + id: 'L01CD02', + name: 'L01CD02 - docetaksel', + }, + ], + }, + { + id: 'L01CE', + name: 'L01CE - Topoisomerase 1 hemmere', + children: [ + { + id: 'L01CE01', + name: 'L01CE01 - topotekan', + }, + { + id: 'L01CE02', + name: 'L01CE02 - irinotekan', + }, + ], + }, + ], + }, + { + id: 'L01D', + name: 'L01D - CYTOTOKSISKE ANTIBIOTIKA OG LIGNENDE SUBSTANSER', + children: [ + { + id: 'L01DA', + name: 'L01DA - Aktinomyciner', + children: [ + { + id: 'L01DA01', + name: 'L01DA01 - daktinomycin', + }, + ], + }, + { + id: 'L01DB', + name: 'L01DB - Antracykliner og lignende substanser', + children: [ + { + id: 'L01DB01', + name: 'L01DB01 - doksorubicin', + }, + { + id: 'L01DB03', + name: 'L01DB03 - epirubicin', + }, + { + id: 'L01DB06', + name: 'L01DB06 - idarubicin', + }, + { + id: 'L01DB07', + name: 'L01DB07 - mitoksantron', + }, + ], + }, + { + id: 'L01DC', + name: 'L01DC - Andre cytotoksiske antibiotika', + children: [ + { + id: 'L01DC01', + name: 'L01DC01 - bleomycin', + }, + { + id: 'L01DC03', + name: 'L01DC03 - mitomycin', + }, + ], + }, + ], + }, + { + id: 'L01E', + name: 'L01E - PROTEINKINASEHEMMERE', + children: [ + { + id: 'L01EA', + name: 'L01EA - BCR-ABL tyrosinkinasehemmere', + children: [ + { + id: 'L01EA01', + name: 'L01EA01 - imatinib', + }, + { + id: 'L01EA02', + name: 'L01EA02 - dasatinib', + }, + { + id: 'L01EA03', + name: 'L01EA03 - nilotinib', + }, + { + id: 'L01EA04', + name: 'L01EA04 - bosutinib', + }, + { + id: 'L01EA05', + name: 'L01EA05 - ponatinib', + }, + { + id: 'L01EA06', + name: 'L01EA06 - askiminib', + }, + ], + }, + { + id: 'L01EB', + name: 'L01EB - Epidermal vekstfaktorreseptor (EGFR) tyrosinkinasehemmere', + children: [ + { + id: 'L01EB01', + name: 'L01EB01 - gefitinib', + }, + { + id: 'L01EB02', + name: 'L01EB02 - erlotinib', + }, + { + id: 'L01EB03', + name: 'L01EB03 - afatinib', + }, + { + id: 'L01EB04', + name: 'L01EB04 - osimertinib', + }, + { + id: 'L01EB07', + name: 'L01EB07 - dakomitinib', + }, + ], + }, + { + id: 'L01EC', + name: 'L01EC - B-Raf serin-treoninkinasehemmere (BRAF)', + children: [ + { + id: 'L01EC01', + name: 'L01EC01 - vemurafenib', + }, + { + id: 'L01EC02', + name: 'L01EC02 - dabrafenib', + }, + { + id: 'L01EC03', + name: 'L01EC03 - enkorafenib', + }, + ], + }, + { + id: 'L01ED', + name: 'L01ED - Anaplastisk lymfomkinasehemmere (ALK)', + children: [ + { + id: 'L01ED01', + name: 'L01ED01 - krizotinib', + }, + { + id: 'L01ED02', + name: 'L01ED02 - ceritinib', + }, + { + id: 'L01ED03', + name: 'L01ED03 - alektinib', + }, + { + id: 'L01ED04', + name: 'L01ED04 - brigatinib', + }, + { + id: 'L01ED05', + name: 'L01ED05 - lorlatinib', + }, + ], + }, + { + id: 'L01EE', + name: 'L01EE - Mitogenaktiverte proteinkinasehemmere (MEK)', + children: [ + { + id: 'L01EE01', + name: 'L01EE01 - trametinib', + }, + { + id: 'L01EE02', + name: 'L01EE02 - kobimetinib', + }, + { + id: 'L01EE03', + name: 'L01EE03 - binimetinib', + }, + { + id: 'L01EE04', + name: 'L01EE04 - selumetinib', + }, + ], + }, + { + id: 'L01EF', + name: 'L01EF - Cyklinavhengige kinasehemmere (CDK)', + children: [ + { + id: 'L01EF01', + name: 'L01EF01 - palbosiklib', + }, + { + id: 'L01EF02', + name: 'L01EF02 - ribosiklib', + }, + { + id: 'L01EF03', + name: 'L01EF03 - abemasiklib', + }, + ], + }, + { + id: 'L01EG', + name: 'L01EG - (mTOR) kinasehemmere', + children: [ + { + id: 'L01EG02', + name: 'L01EG02 - everolimus', + }, + ], + }, + { + id: 'L01EH', + name: 'L01EH - Human epidermal vekstfaktorreseptor 2 (HER2) tyrosinkinasehemmere', + children: [ + { + id: 'L01EH01', + name: 'L01EH01 - lapatinib', + }, + { + id: 'L01EH02', + name: 'L01EH02 - neratinib', + }, + { + id: 'L01EH03', + name: 'L01EH03 - tukatinib', + }, + ], + }, + { + id: 'L01EJ', + name: 'L01EJ - Janus assosierte kinasehemmere (JAK)', + children: [ + { + id: 'L01EJ01', + name: 'L01EJ01 - ruksolitinib', + }, + { + id: 'L01EJ02', + name: 'L01EJ02 - fedratinib', + }, + ], + }, + { + id: 'L01EK', + name: 'L01EK - Vaskulær endotel vekstfaktorreseptor (VEGFR) tyrosinkinasehemmere', + children: [ + { + id: 'L01EK01', + name: 'L01EK01 - aksitinib', + }, + { + id: 'L01EK03', + name: 'L01EK03 - tivozanib', + }, + ], + }, + { + id: 'L01EL', + name: 'L01EL - Brutons tyrosinkinasehemmere (BTK)', + children: [ + { + id: 'L01EL01', + name: 'L01EL01 - ibrutinib', + }, + { + id: 'L01EL02', + name: 'L01EL02 - akalabrutinib', + }, + { + id: 'L01EL03', + name: 'L01EL03 - zanubrutinib', + }, + ], + }, + { + id: 'L01EM', + name: 'L01EM - Fosfatidylinositol-3-kinasehemmere (Pi3K)', + children: [ + { + id: 'L01EM01', + name: 'L01EM01 - idelalisib', + }, + { + id: 'L01EM03', + name: 'L01EM03 - alpelisib', + }, + ], + }, + { + id: 'L01EX', + name: 'L01EX - Andre proteinkinasehemmere', + children: [ + { + id: 'L01EX01', + name: 'L01EX01 - sunitinib', + }, + { + id: 'L01EX02', + name: 'L01EX02 - sorafenib', + }, + { + id: 'L01EX03', + name: 'L01EX03 - pazopanib', + }, + { + id: 'L01EX04', + name: 'L01EX04 - vandetanib', + }, + { + id: 'L01EX05', + name: 'L01EX05 - regorafenib', + }, + { + id: 'L01EX07', + name: 'L01EX07 - kabozantinib', + }, + { + id: 'L01EX08', + name: 'L01EX08 - lenvatinib', + }, + { + id: 'L01EX09', + name: 'L01EX09 - nintedanib', + }, + { + id: 'L01EX10', + name: 'L01EX10 - midostaurin', + }, + { + id: 'L01EX12', + name: 'L01EX12 - larotrektinib', + }, + { + id: 'L01EX13', + name: 'L01EX13 - gilteritinib', + }, + { + id: 'L01EX14', + name: 'L01EX14 - entrektinib', + }, + { + id: 'L01EX22', + name: 'L01EX22 - selperkatinib', + }, + { + id: 'L01EX23', + name: 'L01EX23 - pralsetinib', + }, + ], + }, + ], + }, + { + id: 'L01F', + name: 'L01F - MONOKLONALE ANTISTOFFER OG ANTISTOFF-LEGEMIDDELKONJUGATER', + children: [ + { + id: 'L01FA', + name: 'L01FA - CD20 (Differensieringsantigen 20) hemmere', + children: [ + { + id: 'L01FA01', + name: 'L01FA01 - rituksimab', + }, + { + id: 'L01FA03', + name: 'L01FA03 - obinutuzumab', + }, + ], + }, + { + id: 'L01FC', + name: 'L01FC - CD38 (Differensieringsantigen 38) hemmere', + children: [ + { + id: 'L01FC01', + name: 'L01FC01 - daratumumab', + }, + ], + }, + { + id: 'L01FD', + name: 'L01FD - HER2 (Epidermal vekstfaktorreseptor 2, human) hemmere', + children: [ + { + id: 'L01FD01', + name: 'L01FD01 - trastuzumab', + }, + { + id: 'L01FD02', + name: 'L01FD02 - pertuzumab', + }, + ], + }, + { + id: 'L01FE', + name: 'L01FE - EGFR (Epidermal vekstfaktorreseptor) hemmere', + children: [ + { + id: 'L01FE01', + name: 'L01FE01 - cetuksimab', + }, + { + id: 'L01FE02', + name: 'L01FE02 - panitumumab', + }, + ], + }, + { + id: 'L01FF', + name: 'L01FF - PD-1/PD-L1 (Programmert celledødprotein 1/dødsligand 1) hemmere', + children: [ + { + id: 'L01FF01', + name: 'L01FF01 - nivolumab', + }, + { + id: 'L01FF02', + name: 'L01FF02 - pembrolizumab', + }, + { + id: 'L01FF03', + name: 'L01FF03 - durvalumab', + }, + { + id: 'L01FF05', + name: 'L01FF05 - atezolizumab', + }, + ], + }, + { + id: 'L01FG', + name: 'L01FG - VEGF/VEGFR (Vaskulær endotel vekstfaktor) hemmere', + children: [ + { + id: 'L01FG01', + name: 'L01FG01 - bevacizumab', + }, + ], + }, + { + id: 'L01FX', + name: 'L01FX - Andre monoklonale antistoffer og antistoff-legemiddelkonjugater', + children: [ + { + id: 'L01FX04', + name: 'L01FX04 - ipilimumab', + }, + ], + }, + { + id: 'L01FY', + name: 'L01FY - Kombinasjoner av monoklonale antistoffer og antistoff-legemiddelkonjugater', + children: [ + { + id: 'L01FY01', + name: 'L01FY01 - pertuzumab og trastuzumab', + }, + ], + }, + ], + }, + { + id: 'L01X', + name: 'L01X - ANDRE ANTINEOPLASTISKE MIDLER', + children: [ + { + id: 'L01XA', + name: 'L01XA - Platinaforbindelser', + children: [ + { + id: 'L01XA01', + name: 'L01XA01 - cisplatin', + }, + { + id: 'L01XA02', + name: 'L01XA02 - karboplatin', + }, + { + id: 'L01XA03', + name: 'L01XA03 - oksaliplatin', + }, + ], + }, + { + id: 'L01XB', + name: 'L01XB - Metylhydraziner', + children: [ + { + id: 'L01XB01', + name: 'L01XB01 - prokarbazin', + }, + ], + }, + { + id: 'L01XD', + name: 'L01XD - Aktiverende midler til fotodynamisk- og stråleterapi', + children: [ + { + id: 'L01XD03', + name: 'L01XD03 - metylaminolevulinat', + }, + { + id: 'L01XD04', + name: 'L01XD04 - aminolevulinsyre', + }, + ], + }, + { + id: 'L01XF', + name: 'L01XF - Retinoider for kreftbehandling', + children: [ + { + id: 'L01XF01', + name: 'L01XF01 - tretinoin', + }, + { + id: 'L01XF03', + name: 'L01XF03 - beksaroten', + }, + ], + }, + { + id: 'L01XG', + name: 'L01XG - Proteasomhemmere', + children: [ + { + id: 'L01XG01', + name: 'L01XG01 - bortezomib', + }, + { + id: 'L01XG02', + name: 'L01XG02 - karfilzomib', + }, + { + id: 'L01XG03', + name: 'L01XG03 - iksazomib', + }, + ], + }, + { + id: 'L01XH', + name: 'L01XH - Histondeacetylasehemmere (HDAC)', + children: [ + { + id: 'L01XH03', + name: 'L01XH03 - panobinostat', + }, + ], + }, + { + id: 'L01XJ', + name: 'L01XJ - Hedgehog-signalvei hemmere', + children: [ + { + id: 'L01XJ01', + name: 'L01XJ01 - vismodegib', + }, + { + id: 'L01XJ02', + name: 'L01XJ02 - sonidegib', + }, + ], + }, + { + id: 'L01XK', + name: 'L01XK - Poly (ADP-ribose) polymerasehemmere (PARP)', + children: [ + { + id: 'L01XK01', + name: 'L01XK01 - olaparib', + }, + { + id: 'L01XK02', + name: 'L01XK02 - niraparib', + }, + { + id: 'L01XK04', + name: 'L01XK04 - talazoparib', + }, + ], + }, + { + id: 'L01XX', + name: 'L01XX - Andre antineoplastiske midler', + children: [ + { + id: 'L01XX05', + name: 'L01XX05 - hydroksykarbamid', + }, + { + id: 'L01XX11', + name: 'L01XX11 - estramustin', + }, + { + id: 'L01XX16', + name: 'L01XX16 - mitoguazon', + }, + { + id: 'L01XX23', + name: 'L01XX23 - mitotan', + }, + { + id: 'L01XX35', + name: 'L01XX35 - anagrelid', + }, + { + id: 'L01XX41', + name: 'L01XX41 - eribulin', + }, + { + id: 'L01XX52', + name: 'L01XX52 - venetoklaks', + }, + { + id: 'L01XX73', + name: 'L01XX73 - sotorasib', + }, + ], + }, + ], + }, + ], + }, + { + id: 'L02', + name: 'L02 - ENDOKRIN TERAPI', + children: [ + { + id: 'L02A', + name: 'L02A - HORMONER OG BESLEKTEDE SUBSTANSER', + children: [ + { + id: 'L02AB', + name: 'L02AB - Progestogener', + children: [ + { + id: 'L02AB01', + name: 'L02AB01 - megestrol', + }, + { + id: 'L02AB02', + name: 'L02AB02 - medroksyprogesteron', + }, + ], + }, + { + id: 'L02AE', + name: 'L02AE - Gonadotropinfrigjørende hormonanaloger', + children: [ + { + id: 'L02AE01', + name: 'L02AE01 - buserelin', + }, + { + id: 'L02AE02', + name: 'L02AE02 - leuprorelin', + }, + { + id: 'L02AE03', + name: 'L02AE03 - goserelin', + }, + { + id: 'L02AE04', + name: 'L02AE04 - triptorelin', + }, + { + id: 'L02AE05', + name: 'L02AE05 - histrelin', + }, + ], + }, + { + id: 'L02AA', + name: 'L02AA - Østrogener', + children: [ + { + id: 'L02AA02', + name: 'L02AA02 - polyøstradiolfosfat', + }, + ], + }, + ], + }, + { + id: 'L02B', + name: 'L02B - HORMONANTAGONISTER OG BESLEKTEDE SUBSTANSER', + children: [ + { + id: 'L02BA', + name: 'L02BA - Antiøstrogener', + children: [ + { + id: 'L02BA01', + name: 'L02BA01 - tamoksifen', + }, + { + id: 'L02BA03', + name: 'L02BA03 - fulvestrant', + }, + ], + }, + { + id: 'L02BB', + name: 'L02BB - Antiandrogener', + children: [ + { + id: 'L02BB01', + name: 'L02BB01 - flutamid', + }, + { + id: 'L02BB03', + name: 'L02BB03 - bikalutamid', + }, + { + id: 'L02BB04', + name: 'L02BB04 - enzalutamid', + }, + { + id: 'L02BB05', + name: 'L02BB05 - apalutamid', + }, + { + id: 'L02BB06', + name: 'L02BB06 - darolutamid', + }, + ], + }, + { + id: 'L02BG', + name: 'L02BG - Aromatasehemmere', + children: [ + { + id: 'L02BG03', + name: 'L02BG03 - anastrozol', + }, + { + id: 'L02BG04', + name: 'L02BG04 - letrozol', + }, + { + id: 'L02BG06', + name: 'L02BG06 - eksemestan', + }, + ], + }, + { + id: 'L02BX', + name: 'L02BX - Andre hormonantagonister og beslektede substanser', + children: [ + { + id: 'L02BX02', + name: 'L02BX02 - degareliks', + }, + { + id: 'L02BX03', + name: 'L02BX03 - abirateron', + }, + ], + }, + ], + }, + ], + }, + { + id: 'L03', + name: 'L03 - IMMUNSTIMULERENDE MIDLER', + children: [ + { + id: 'L03A', + name: 'L03A - IMMUNSTIMULERENDE MIDLER', + children: [ + { + id: 'L03AB', + name: 'L03AB - Interferoner', + children: [ + { + id: 'L03AB01', + name: 'L03AB01 - naturlig interferon alfa', + }, + { + id: 'L03AB03', + name: 'L03AB03 - interferon gamma', + }, + { + id: 'L03AB04', + name: 'L03AB04 - interferon alfa-2a', + }, + { + id: 'L03AB05', + name: 'L03AB05 - interferon alfa-2b', + }, + { + id: 'L03AB07', + name: 'L03AB07 - interferon beta-1a', + }, + { + id: 'L03AB08', + name: 'L03AB08 - interferon beta-1b', + }, + { + id: 'L03AB10', + name: 'L03AB10 - peginterferon alfa-2b', + }, + { + id: 'L03AB11', + name: 'L03AB11 - peginterferon alfa-2a', + }, + { + id: 'L03AB13', + name: 'L03AB13 - peginterferon beta-1a', + }, + { + id: 'L03AB15', + name: 'L03AB15 - ropeginterferon alfa-2b', + }, + ], + }, + { + id: 'L03AC', + name: 'L03AC - Interleukiner', + children: [ + { + id: 'L03AC01', + name: 'L03AC01 - aldesleukin', + }, + ], + }, + { + id: 'L03AX', + name: 'L03AX - Andre immunstimulerende midler', + children: [ + { + id: 'L03AX03', + name: 'L03AX03 - bcg vaksine', + }, + { + id: 'L03AX13', + name: 'L03AX13 - glatirameracetat', + }, + ], + }, + { + id: 'L03AA', + name: 'L03AA - Kolonistimulerende midler', + children: [ + { + id: 'L03AA02', + name: 'L03AA02 - filgrastim', + }, + { + id: 'L03AA13', + name: 'L03AA13 - pegfilgrastim', + }, + { + id: 'L03AA14', + name: 'L03AA14 - lipegfilgrastim', + }, + ], + }, + ], + }, + ], + }, + { + id: 'L04', + name: 'L04 - IMMUNSUPPRESSIVE MIDLER', + children: [ + { + id: 'L04A', + name: 'L04A - IMMUNSUPPRESSIVE MIDLER', + children: [ + { + id: 'L04AB', + name: 'L04AB - Tumornekrosefaktor alfa (TNF-alfa)-hemmere', + children: [ + { + id: 'L04AB01', + name: 'L04AB01 - etanercept', + }, + { + id: 'L04AB02', + name: 'L04AB02 - infliksimab', + }, + { + id: 'L04AB04', + name: 'L04AB04 - adalimumab', + }, + { + id: 'L04AB05', + name: 'L04AB05 - certolizumab pegol', + }, + { + id: 'L04AB06', + name: 'L04AB06 - golimumab', + }, + ], + }, + { + id: 'L04AC', + name: 'L04AC - Interleukinhemmere', + children: [ + { + id: 'L04AC01', + name: 'L04AC01 - daklizumab', + }, + { + id: 'L04AC03', + name: 'L04AC03 - anakinra', + }, + { + id: 'L04AC05', + name: 'L04AC05 - ustekinumab', + }, + { + id: 'L04AC07', + name: 'L04AC07 - tocilizumab', + }, + { + id: 'L04AC08', + name: 'L04AC08 - kanakinumab', + }, + { + id: 'L04AC10', + name: 'L04AC10 - sekukinumab', + }, + { + id: 'L04AC12', + name: 'L04AC12 - brodalumab', + }, + { + id: 'L04AC13', + name: 'L04AC13 - iksekizumab', + }, + { + id: 'L04AC16', + name: 'L04AC16 - guselkumab', + }, + { + id: 'L04AC17', + name: 'L04AC17 - tildrakizumab', + }, + { + id: 'L04AC18', + name: 'L04AC18 - risankizumab', + }, + { + id: 'L04AC21', + name: 'L04AC21 - bimekizumab', + }, + ], + }, + { + id: 'L04AD', + name: 'L04AD - Kalsineurinhemmere', + children: [ + { + id: 'L04AD01', + name: 'L04AD01 - ciklosporin', + }, + { + id: 'L04AD02', + name: 'L04AD02 - takrolimus', + }, + ], + }, + { + id: 'L04AE', + name: 'L04AE - Sfingosin-1-fosfat (S1P) reseptormodulatorer', + children: [ + { + id: 'L04AE01', + name: 'L04AE01 - fingolimod', + }, + { + id: 'L04AE02', + name: 'L04AE02 - ozanimod', + }, + { + id: 'L04AE04', + name: 'L04AE04 - ponesimod', + }, + ], + }, + { + id: 'L04AF', + name: 'L04AF - Janus assosierte kinasehemmere (JAK)', + children: [ + { + id: 'L04AF01', + name: 'L04AF01 - tofacitinib', + }, + { + id: 'L04AF02', + name: 'L04AF02 - baricitinib', + }, + { + id: 'L04AF03', + name: 'L04AF03 - upadacitinib', + }, + { + id: 'L04AF04', + name: 'L04AF04 - filgotinib', + }, + { + id: 'L04AF07', + name: 'L04AF07 - deukravasitinib', + }, + ], + }, + { + id: 'L04AG', + name: 'L04AG - Monoklonale antistoffer', + children: [ + { + id: 'L04AG02', + name: 'L04AG02 - efalizumab', + }, + { + id: 'L04AG03', + name: 'L04AG03 - natalizumab', + }, + { + id: 'L04AG04', + name: 'L04AG04 - belimumab', + }, + { + id: 'L04AG05', + name: 'L04AG05 - vedolizumab', + }, + { + id: 'L04AG06', + name: 'L04AG06 - alemtuzumab', + }, + { + id: 'L04AG12', + name: 'L04AG12 - ofatumumab', + }, + ], + }, + { + id: 'L04AH', + name: 'L04AH - (mTOR) kinasehemmere', + children: [ + { + id: 'L04AH01', + name: 'L04AH01 - sirolimus', + }, + { + id: 'L04AH02', + name: 'L04AH02 - everolimus', + }, + ], + }, + { + id: 'L04AJ', + name: 'L04AJ - Komplementhemmere', + children: [ + { + id: 'L04AJ01', + name: 'L04AJ01 - ekulizumab', + }, + { + id: 'L04AJ05', + name: 'L04AJ05 - avakopan', + }, + ], + }, + { + id: 'L04AK', + name: 'L04AK - Dihydroorotatdehydrogenase (DHODH) hemmere', + children: [ + { + id: 'L04AK01', + name: 'L04AK01 - leflunomid', + }, + { + id: 'L04AK02', + name: 'L04AK02 - teriflunomid', + }, + ], + }, + { + id: 'L04AX', + name: 'L04AX - Andre immunsuppresive midler', + children: [ + { + id: 'L04AX01', + name: 'L04AX01 - azatioprin', + }, + { + id: 'L04AX02', + name: 'L04AX02 - talidomid', + }, + { + id: 'L04AX03', + name: 'L04AX03 - metotreksat', + }, + { + id: 'L04AX04', + name: 'L04AX04 - lenalidomid', + }, + { + id: 'L04AX05', + name: 'L04AX05 - pirfenidon', + }, + { + id: 'L04AX06', + name: 'L04AX06 - pomalidomid', + }, + { + id: 'L04AX07', + name: 'L04AX07 - dimetylfumarat', + }, + { + id: 'L04AX09', + name: 'L04AX09 - diroksimelfumarat', + }, + ], + }, + { + id: 'L04AA', + name: 'L04AA - Selektive immunsuppressive midler', + children: [ + { + id: 'L04AA06', + name: 'L04AA06 - mykofenolsyre', + }, + { + id: 'L04AA24', + name: 'L04AA24 - abatacept', + }, + { + id: 'L04AA28', + name: 'L04AA28 - belatacept', + }, + { + id: 'L04AA32', + name: 'L04AA32 - apremilast', + }, + { + id: 'L04AA40', + name: 'L04AA40 - kladribin', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'M', + name: 'M - MUSKLER OG SKJELETT', + children: [ + { + id: 'M01', + name: 'M01 - ANTIINFLAMMATORISKE OG ANTIREUMATISKE MIDLER', + children: [ + { + id: 'M01A', + name: 'M01A - ANTIINFLAMMATORISKE OG ANTIREUMATISKE MIDLER, EKSKL. STEROIDER', + children: [ + { + id: 'M01AB', + name: 'M01AB - Eddiksyrederivater og lignende substanser', + children: [ + { + id: 'M01AB01', + name: 'M01AB01 - indometacin', + }, + { + id: 'M01AB02', + name: 'M01AB02 - sulindak', + }, + { + id: 'M01AB05', + name: 'M01AB05 - diklofenak', + }, + { + id: 'M01AB15', + name: 'M01AB15 - ketorolak', + }, + { + id: 'M01AB16', + name: 'M01AB16 - aceklofenak', + }, + { + id: 'M01AB55', + name: 'M01AB55 - diklofenak, kombinasjoner', + }, + ], + }, + { + id: 'M01AC', + name: 'M01AC - Oksikamer', + children: [ + { + id: 'M01AC01', + name: 'M01AC01 - piroksikam', + }, + { + id: 'M01AC06', + name: 'M01AC06 - meloksikam', + }, + ], + }, + { + id: 'M01AE', + name: 'M01AE - Propionsyrederivater', + children: [ + { + id: 'M01AE01', + name: 'M01AE01 - ibuprofen', + }, + { + id: 'M01AE02', + name: 'M01AE02 - naproksen', + }, + { + id: 'M01AE03', + name: 'M01AE03 - ketoprofen', + }, + { + id: 'M01AE14', + name: 'M01AE14 - deksibuprofen', + }, + { + id: 'M01AE17', + name: 'M01AE17 - deksketoprofen', + }, + { + id: 'M01AE52', + name: 'M01AE52 - naproksen og esomeprazol', + }, + ], + }, + { + id: 'M01AG', + name: 'M01AG - Fenamater', + children: [ + { + id: 'M01AG02', + name: 'M01AG02 - tolfenamsyre', + }, + ], + }, + { + id: 'M01AH', + name: 'M01AH - Koksiber', + children: [ + { + id: 'M01AH01', + name: 'M01AH01 - celekoksib', + }, + { + id: 'M01AH02', + name: 'M01AH02 - rofekoksib', + }, + { + id: 'M01AH03', + name: 'M01AH03 - valdekoksib', + }, + { + id: 'M01AH04', + name: 'M01AH04 - parekoksib', + }, + { + id: 'M01AH05', + name: 'M01AH05 - etorikoksib', + }, + ], + }, + { + id: 'M01AX', + name: 'M01AX - Andre antiinflammatoriske og antireumatiske midler, ikke-steroider', + children: [ + { + id: 'M01AX01', + name: 'M01AX01 - nabumeton', + }, + { + id: 'M01AX05', + name: 'M01AX05 - glukosamin', + }, + ], + }, + { + id: 'M01AA', + name: 'M01AA - Butylpyrazolidiner', + children: [ + { + id: 'M01AA01', + name: 'M01AA01 - fenylbutazon', + }, + ], + }, + ], + }, + { + id: 'M01C', + name: 'M01C - SPESIFIKKE ANTIREUMATISKE MIDLER', + children: [ + { + id: 'M01CB', + name: 'M01CB - Gullmidler', + children: [ + { + id: 'M01CB01', + name: 'M01CB01 - natriumaurotiomalat', + }, + { + id: 'M01CB03', + name: 'M01CB03 - auranofin', + }, + ], + }, + { + id: 'M01CC', + name: 'M01CC - Penicillamin og lignende substanser', + children: [ + { + id: 'M01CC01', + name: 'M01CC01 - penicillamin', + }, + ], + }, + { + id: 'M01CX', + name: 'M01CX - Andre spesifikke antireumatiske midler', + }, + ], + }, + ], + }, + { + id: 'M02', + name: 'M02 - TOPIKALE MIDLER VED MUSKEL- OG LEDDSMERTER', + children: [ + { + id: 'M02A', + name: 'M02A - TOPIKALE MIDLER VED MUSKEL- OG LEDDSMERTER', + children: [ + { + id: 'M02AB', + name: 'M02AB - Capsaicin og lignende stoffer', + children: [ + { + id: 'M02AB01', + name: 'M02AB01 - capsaicin', + }, + ], + }, + { + id: 'M02AC', + name: 'M02AC - Midler med innhold av salisyrederivater', + }, + { + id: 'M02AX', + name: 'M02AX - Andre topikale midler ved muskel- og leddsmerter', + children: [ + { + id: 'M02AX10', + name: 'M02AX10 - diverse', + }, + ], + }, + { + id: 'M02AA', + name: 'M02AA - Ikke-steroide antiinflammatoriske midler til topikal bruk', + children: [ + { + id: 'M02AA10', + name: 'M02AA10 - ketoprofen', + }, + { + id: 'M02AA13', + name: 'M02AA13 - ibuprofen', + }, + { + id: 'M02AA15', + name: 'M02AA15 - diklofenak', + }, + ], + }, + ], + }, + ], + }, + { + id: 'M03', + name: 'M03 - MUSKELRELAKSERENDE MIDLER', + children: [ + { + id: 'M03A', + name: 'M03A - PERIFERT VIRKENDE MUSKELRELAKSERENDE MIDLER', + children: [ + { + id: 'M03AB', + name: 'M03AB - Kolinderivater', + children: [ + { + id: 'M03AB01', + name: 'M03AB01 - suksametonium', + }, + ], + }, + { + id: 'M03AC', + name: 'M03AC - Andre kvartære ammoniumforbindelser', + children: [ + { + id: 'M03AC01', + name: 'M03AC01 - pankuronium', + }, + { + id: 'M03AC03', + name: 'M03AC03 - ekuronium', + }, + { + id: 'M03AC09', + name: 'M03AC09 - rokuroniumbromid', + }, + { + id: 'M03AC10', + name: 'M03AC10 - mivakuriumklorid', + }, + { + id: 'M03AC11', + name: 'M03AC11 - cisatrakurium', + }, + ], + }, + { + id: 'M03AX', + name: 'M03AX - Andre perifert virkende muskelrelakserende midler', + children: [ + { + id: 'M03AX01', + name: 'M03AX01 - botulinumtoksin', + }, + ], + }, + ], + }, + { + id: 'M03B', + name: 'M03B - SENTRALT VIRKENDE MUSKELRELAKSERENDE MIDLER', + children: [ + { + id: 'M03BA', + name: 'M03BA - Karbaminsyreestre', + children: [ + { + id: 'M03BA02', + name: 'M03BA02 - karisoprodol', + }, + { + id: 'M03BA03', + name: 'M03BA03 - metokarbamol', + }, + { + id: 'M03BA52', + name: 'M03BA52 - karisoprodol, kombinasjoner ekskl. psykoleptika', + }, + ], + }, + { + id: 'M03BB', + name: 'M03BB - Oksazol-, tiazin- og triazinderivater', + children: [ + { + id: 'M03BB03', + name: 'M03BB03 - klorzoksason', + }, + { + id: 'M03BB53', + name: 'M03BB53 - klorzoksason, kombinasjoner ekskl. psykoleptika', + }, + ], + }, + { + id: 'M03BC', + name: 'M03BC - Etere, kjemisk nærstående antihistaminer', + children: [ + { + id: 'M03BC51', + name: 'M03BC51 - orfenadrin, kombinasjoner', + }, + ], + }, + { + id: 'M03BX', + name: 'M03BX - Andre sentralt virkende midler', + children: [ + { + id: 'M03BX01', + name: 'M03BX01 - baklofen', + }, + { + id: 'M03BX02', + name: 'M03BX02 - tizanidin', + }, + ], + }, + ], + }, + { + id: 'M03C', + name: 'M03C - DIREKTE VIRKENDE MUSKELRELAKSERENDE MIDLER', + children: [ + { + id: 'M03CA', + name: 'M03CA - Dantrolen og derivater', + children: [ + { + id: 'M03CA01', + name: 'M03CA01 - dantrolen', + }, + ], + }, + ], + }, + ], + }, + { + id: 'M04', + name: 'M04 - GIKTMIDLER', + children: [ + { + id: 'M04A', + name: 'M04A - GIKTMIDLER', + children: [ + { + id: 'M04AB', + name: 'M04AB - Midler som øker urinsyreutskillelsen', + children: [ + { + id: 'M04AB01', + name: 'M04AB01 - probenecid', + }, + { + id: 'M04AB03', + name: 'M04AB03 - benzbromaron', + }, + { + id: 'M04AB05', + name: 'M04AB05 - lesinurad', + }, + ], + }, + { + id: 'M04AC', + name: 'M04AC - Midler uten virkning på urinsyreomsetningen', + children: [ + { + id: 'M04AC01', + name: 'M04AC01 - kolkisin', + }, + ], + }, + { + id: 'M04AA', + name: 'M04AA - Midler som hemmer urinsyreproduksjonen', + children: [ + { + id: 'M04AA01', + name: 'M04AA01 - allopurinol', + }, + { + id: 'M04AA03', + name: 'M04AA03 - febuksostat', + }, + ], + }, + ], + }, + ], + }, + { + id: 'M05', + name: 'M05 - MIDLER TIL BEHANDLING AV BENSYKDOMMER', + children: [ + { + id: 'M05B', + name: 'M05B - MIDLER MED EFFEKT PÅ BENSTRUKTUR OG MINERALISERING', + children: [ + { + id: 'M05BA', + name: 'M05BA - Bisfosfonater', + children: [ + { + id: 'M05BA01', + name: 'M05BA01 - etidronsyre', + }, + { + id: 'M05BA02', + name: 'M05BA02 - klodronsyre', + }, + { + id: 'M05BA03', + name: 'M05BA03 - pamidronsyre', + }, + { + id: 'M05BA04', + name: 'M05BA04 - alendronsyre', + }, + { + id: 'M05BA06', + name: 'M05BA06 - ibandronsyre', + }, + { + id: 'M05BA07', + name: 'M05BA07 - risedronsyre', + }, + { + id: 'M05BA08', + name: 'M05BA08 - zoledronsyre', + }, + ], + }, + { + id: 'M05BB', + name: 'M05BB - Bisfosfonater, kombinasjoner', + children: [ + { + id: 'M05BB01', + name: 'M05BB01 - etidronsyre og kalsium, sekvensielle', + }, + { + id: 'M05BB03', + name: 'M05BB03 - alendronsyre og kolekalsiferol', + }, + ], + }, + { + id: 'M05BX', + name: 'M05BX - Andre midler med effekt på benstruktur og mineralisering', + children: [ + { + id: 'M05BX04', + name: 'M05BX04 - denosumab', + }, + { + id: 'M05BX05', + name: 'M05BX05 - burosumab', + }, + { + id: 'M05BX06', + name: 'M05BX06 - romosozumab', + }, + ], + }, + ], + }, + ], + }, + { + id: 'M09', + name: 'M09 - ANDRE MIDLER MOT MUSKEL- OG SKJELETTSYKDOMMER', + children: [ + { + id: 'M09A', + name: 'M09A - ANDRE MIDLER MOT MUSKEL- OG SKJELETTSYKDOMMER', + children: [ + { + id: 'M09AB', + name: 'M09AB - Enzymer', + children: [ + { + id: 'M09AB02', + name: 'M09AB02 - kollagenase klostridum histolyticum', + }, + ], + }, + { + id: 'M09AX', + name: 'M09AX - Andre midler mot muskel- og skjelettsykdommer', + children: [ + { + id: 'M09AX01', + name: 'M09AX01 - hyaluronsyre', + }, + { + id: 'M09AX03', + name: 'M09AX03 - ataluren', + }, + { + id: 'M09AX10', + name: 'M09AX10 - risdiplam', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'N', + name: 'N - NERVESYSTEMET', + children: [ + { + id: 'N01', + name: 'N01 - ANESTETIKA', + children: [ + { + id: 'N01A', + name: 'N01A - GENERELLE ANESTETIKA', + children: [ + { + id: 'N01AB', + name: 'N01AB - Halogenerte hydrokarboner', + children: [ + { + id: 'N01AB06', + name: 'N01AB06 - isofluran', + }, + { + id: 'N01AB08', + name: 'N01AB08 - sevofluran', + }, + ], + }, + { + id: 'N01AF', + name: 'N01AF - Barbiturater, usammensatte', + children: [ + { + id: 'N01AF03', + name: 'N01AF03 - tiopental', + }, + ], + }, + { + id: 'N01AH', + name: 'N01AH - Opioidanestetika', + children: [ + { + id: 'N01AH01', + name: 'N01AH01 - fentanyl', + }, + { + id: 'N01AH02', + name: 'N01AH02 - alfentanil', + }, + { + id: 'N01AH03', + name: 'N01AH03 - sufentanil', + }, + { + id: 'N01AH06', + name: 'N01AH06 - remifentanil', + }, + { + id: 'N01AH51', + name: 'N01AH51 - fentanyl, kombinasjoner', + }, + ], + }, + { + id: 'N01AX', + name: 'N01AX - Andre generelle anestetika', + children: [ + { + id: 'N01AX03', + name: 'N01AX03 - ketamin', + }, + { + id: 'N01AX10', + name: 'N01AX10 - propofol', + }, + { + id: 'N01AX14', + name: 'N01AX14 - esketamin', + }, + ], + }, + ], + }, + { + id: 'N01B', + name: 'N01B - LOKALANESTETIKA', + children: [ + { + id: 'N01BA', + name: 'N01BA - Aminobenzosyreestre', + children: [ + { + id: 'N01BA02', + name: 'N01BA02 - prokain', + }, + { + id: 'N01BA03', + name: 'N01BA03 - tetrakain', + }, + { + id: 'N01BA04', + name: 'N01BA04 - klorprokain', + }, + { + id: 'N01BA05', + name: 'N01BA05 - benzokain', + }, + { + id: 'N01BA53', + name: 'N01BA53 - tetrakain, kombinasjoner', + }, + ], + }, + { + id: 'N01BB', + name: 'N01BB - Amider', + children: [ + { + id: 'N01BB01', + name: 'N01BB01 - bupivakain', + }, + { + id: 'N01BB02', + name: 'N01BB02 - lidokain', + }, + { + id: 'N01BB03', + name: 'N01BB03 - mepivakain', + }, + { + id: 'N01BB09', + name: 'N01BB09 - ropivakain', + }, + { + id: 'N01BB10', + name: 'N01BB10 - levobupivakain', + }, + { + id: 'N01BB20', + name: 'N01BB20 - kombinasjoner', + }, + { + id: 'N01BB51', + name: 'N01BB51 - bupivakain, kombinasjoner', + }, + { + id: 'N01BB52', + name: 'N01BB52 - lidokain, kombinasjoner', + }, + { + id: 'N01BB53', + name: 'N01BB53 - mepivakain, kombinasjoner', + }, + { + id: 'N01BB54', + name: 'N01BB54 - prilokain, kombinasjoner', + }, + { + id: 'N01BB58', + name: 'N01BB58 - artikain, kombinasjoner', + }, + ], + }, + { + id: 'N01BC', + name: 'N01BC - Benzosyreestre', + children: [ + { + id: 'N01BC01', + name: 'N01BC01 - kokain', + }, + ], + }, + { + id: 'N01BX', + name: 'N01BX - Andre lokalanestetika', + children: [ + { + id: 'N01BX01', + name: 'N01BX01 - etylklorid', + }, + { + id: 'N01BX04', + name: 'N01BX04 - capsaicin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'N02', + name: 'N02 - ANALGETIKA', + children: [ + { + id: 'N02A', + name: 'N02A - OPIOIDER', + children: [ + { + id: 'N02AB', + name: 'N02AB - Fenylpiperidinderivater', + children: [ + { + id: 'N02AB01', + name: 'N02AB01 - ketobemidon', + }, + { + id: 'N02AB02', + name: 'N02AB02 - petidin', + }, + { + id: 'N02AB03', + name: 'N02AB03 - fentanyl', + }, + ], + }, + { + id: 'N02AC', + name: 'N02AC - Difenylpropylaminderivater', + children: [ + { + id: 'N02AC03', + name: 'N02AC03 - piritramid', + }, + { + id: 'N02AC04', + name: 'N02AC04 - dekstropropoksyfen', + }, + { + id: 'N02AC54', + name: 'N02AC54 - dekstropropoksyfen, kombinasjoner ekskl. psykoleptika', + }, + ], + }, + { + id: 'N02AD', + name: 'N02AD - Benzomorfanderivater', + children: [ + { + id: 'N02AD01', + name: 'N02AD01 - pentazocin', + }, + ], + }, + { + id: 'N02AE', + name: 'N02AE - Oripavinderivater', + children: [ + { + id: 'N02AE01', + name: 'N02AE01 - buprenorfin', + }, + ], + }, + { + id: 'N02AG', + name: 'N02AG - Opioider i kombinasjoner med spasmolytika', + children: [ + { + id: 'N02AG01', + name: 'N02AG01 - morfin og spasmolytika', + }, + { + id: 'N02AG02', + name: 'N02AG02 - ketobemidon og spasmolytika', + }, + ], + }, + { + id: 'N02AJ', + name: 'N02AJ - Opioider i kombinasjon med ikke-opioide analgetika', + children: [ + { + id: 'N02AJ06', + name: 'N02AJ06 - kodein og paracetamol', + }, + { + id: 'N02AJ07', + name: 'N02AJ07 - kodein og acetylsalisylsyre', + }, + { + id: 'N02AJ13', + name: 'N02AJ13 - tramadol og paracetamol', + }, + ], + }, + { + id: 'N02AX', + name: 'N02AX - Andre opioider', + children: [ + { + id: 'N02AX02', + name: 'N02AX02 - tramadol', + }, + { + id: 'N02AX06', + name: 'N02AX06 - tapentadol', + }, + ], + }, + { + id: 'N02AA', + name: 'N02AA - Opiumsalkaloider', + children: [ + { + id: 'N02AA01', + name: 'N02AA01 - morfin', + }, + { + id: 'N02AA03', + name: 'N02AA03 - hydromorfon', + }, + { + id: 'N02AA05', + name: 'N02AA05 - oksykodon', + }, + { + id: 'N02AA08', + name: 'N02AA08 - dihydrokodein', + }, + { + id: 'N02AA51', + name: 'N02AA51 - morfin, kombinasjoner', + }, + { + id: 'N02AA55', + name: 'N02AA55 - oksykodon og nalokson', + }, + ], + }, + ], + }, + { + id: 'N02B', + name: 'N02B - ANDRE ANALGETIKA OG ANTIPYRETIKA', + children: [ + { + id: 'N02BA', + name: 'N02BA - Salisylsyrederivater', + children: [ + { + id: 'N02BA01', + name: 'N02BA01 - acetylsalisylsyre', + }, + { + id: 'N02BA11', + name: 'N02BA11 - diflunisal', + }, + { + id: 'N02BA51', + name: 'N02BA51 - acetylsalisylsyre, kombinasjoner ekskl. psykoleptika', + }, + ], + }, + { + id: 'N02BB', + name: 'N02BB - Pyrazoloner', + children: [ + { + id: 'N02BB02', + name: 'N02BB02 - metamizolnatrium', + }, + { + id: 'N02BB51', + name: 'N02BB51 - fenazon, kombinasjoner ekskl. psykoleptika', + }, + ], + }, + { + id: 'N02BE', + name: 'N02BE - Anilider', + children: [ + { + id: 'N02BE01', + name: 'N02BE01 - paracetamol', + }, + { + id: 'N02BE05', + name: 'N02BE05 - propacetamol', + }, + { + id: 'N02BE51', + name: 'N02BE51 - paracetamol, kombinasjoner ekskl. psykoleptika', + }, + ], + }, + { + id: 'N02BF', + name: 'N02BF - Gabapentinoider', + children: [ + { + id: 'N02BF01', + name: 'N02BF01 - gabapentin', + }, + { + id: 'N02BF02', + name: 'N02BF02 - pregabalin', + }, + { + id: 'N02BF03', + name: 'N02BF03 - mirogabalin', + }, + ], + }, + { + id: 'N02BG', + name: 'N02BG - Andre analgetika og antipyretika', + children: [ + { + id: 'N02BG07', + name: 'N02BG07 - flupirtin', + }, + { + id: 'N02BG08', + name: 'N02BG08 - zikonotid', + }, + { + id: 'N02BG09', + name: 'N02BG09 - metoksyfluran', + }, + { + id: 'N02BG10', + name: 'N02BG10 - cannabinoider', + }, + ], + }, + ], + }, + { + id: 'N02C', + name: 'N02C - MIGRENEMIDLER', + children: [ + { + id: 'N02CA', + name: 'N02CA - Sekalealkaloider', + children: [ + { + id: 'N02CA04', + name: 'N02CA04 - metysergid', + }, + { + id: 'N02CA52', + name: 'N02CA52 - ergotamin, kombinasjoner ekskl. psykoleptika', + }, + { + id: 'N02CA72', + name: 'N02CA72 - ergotamin, kombinasjoner med psykoleptika', + }, + ], + }, + { + id: 'N02CC', + name: 'N02CC - Selektive serotonin (5HT1) agonister', + children: [ + { + id: 'N02CC01', + name: 'N02CC01 - sumatriptan', + }, + { + id: 'N02CC02', + name: 'N02CC02 - naratriptan', + }, + { + id: 'N02CC03', + name: 'N02CC03 - zolmitriptan', + }, + { + id: 'N02CC04', + name: 'N02CC04 - rizatriptan', + }, + { + id: 'N02CC05', + name: 'N02CC05 - almotriptan', + }, + { + id: 'N02CC06', + name: 'N02CC06 - eletriptan', + }, + { + id: 'N02CC07', + name: 'N02CC07 - frovatriptan', + }, + ], + }, + { + id: 'N02CD', + name: 'N02CD - Kalsitonin-genrelatert peptid (CGRP) antagonister', + children: [ + { + id: 'N02CD01', + name: 'N02CD01 - erenumab', + }, + { + id: 'N02CD02', + name: 'N02CD02 - galkanezumab', + }, + { + id: 'N02CD03', + name: 'N02CD03 - fremanezumab', + }, + { + id: 'N02CD05', + name: 'N02CD05 - eptinezumab', + }, + { + id: 'N02CD06', + name: 'N02CD06 - rimegepant', + }, + { + id: 'N02CD07', + name: 'N02CD07 - atogepant', + }, + ], + }, + { + id: 'N02CX', + name: 'N02CX - Andre migrenemidler', + children: [ + { + id: 'N02CX01', + name: 'N02CX01 - pizotifen', + }, + { + id: 'N02CX02', + name: 'N02CX02 - klonidin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'N03', + name: 'N03 - ANTIEPILEPTIKA', + children: [ + { + id: 'N03A', + name: 'N03A - ANTIEPILEPTIKA', + children: [ + { + id: 'N03AB', + name: 'N03AB - Hydantoinderivater', + children: [ + { + id: 'N03AB02', + name: 'N03AB02 - fenytoin', + }, + { + id: 'N03AB05', + name: 'N03AB05 - fosfenytoin', + }, + ], + }, + { + id: 'N03AD', + name: 'N03AD - Suksinimidderivater', + children: [ + { + id: 'N03AD01', + name: 'N03AD01 - etosuksimid', + }, + ], + }, + { + id: 'N03AE', + name: 'N03AE - Benzodiazepinderivater', + children: [ + { + id: 'N03AE01', + name: 'N03AE01 - klonazepam', + }, + ], + }, + { + id: 'N03AF', + name: 'N03AF - Karboksamidderivater', + children: [ + { + id: 'N03AF01', + name: 'N03AF01 - karbamazepin', + }, + { + id: 'N03AF02', + name: 'N03AF02 - okskarbazepin', + }, + { + id: 'N03AF03', + name: 'N03AF03 - rufinamid', + }, + { + id: 'N03AF04', + name: 'N03AF04 - eslikarbazepin', + }, + ], + }, + { + id: 'N03AG', + name: 'N03AG - Fettsyrederivater', + children: [ + { + id: 'N03AG01', + name: 'N03AG01 - valproinsyre', + }, + { + id: 'N03AG03', + name: 'N03AG03 - aminobutyrsyre', + }, + { + id: 'N03AG04', + name: 'N03AG04 - vigabatrin', + }, + { + id: 'N03AG06', + name: 'N03AG06 - tiagabin', + }, + ], + }, + { + id: 'N03AX', + name: 'N03AX - Diverse antiepileptika', + children: [ + { + id: 'N03AX03', + name: 'N03AX03 - sultiam', + }, + { + id: 'N03AX09', + name: 'N03AX09 - lamotrigin', + }, + { + id: 'N03AX10', + name: 'N03AX10 - felbamat', + }, + { + id: 'N03AX11', + name: 'N03AX11 - topiramat', + }, + { + id: 'N03AX14', + name: 'N03AX14 - levetiracetam', + }, + { + id: 'N03AX15', + name: 'N03AX15 - zonisamid', + }, + { + id: 'N03AX17', + name: 'N03AX17 - stiripentol', + }, + { + id: 'N03AX18', + name: 'N03AX18 - lakosamid', + }, + { + id: 'N03AX21', + name: 'N03AX21 - retigabin', + }, + { + id: 'N03AX22', + name: 'N03AX22 - perampanel', + }, + { + id: 'N03AX23', + name: 'N03AX23 - brivaracetam', + }, + { + id: 'N03AX24', + name: 'N03AX24 - cannabidiol', + }, + { + id: 'N03AX25', + name: 'N03AX25 - senobamat', + }, + ], + }, + { + id: 'N03AA', + name: 'N03AA - Barbiturater og derivater', + children: [ + { + id: 'N03AA02', + name: 'N03AA02 - fenobarbital', + }, + { + id: 'N03AA03', + name: 'N03AA03 - primidon', + }, + ], + }, + ], + }, + ], + }, + { + id: 'N04', + name: 'N04 - ANTIPARKINSONMIDLER', + children: [ + { + id: 'N04A', + name: 'N04A - ANTIKOLINERGIKA', + children: [ + { + id: 'N04AB', + name: 'N04AB - Etere, kjemisk nærstående antihistaminer', + children: [ + { + id: 'N04AB02', + name: 'N04AB02 - orfenadrin (klorid)', + }, + ], + }, + { + id: 'N04AC', + name: 'N04AC - Etere av tropin eller tropinderivater', + children: [ + { + id: 'N04AC01', + name: 'N04AC01 - benztropin', + }, + ], + }, + { + id: 'N04AA', + name: 'N04AA - Tertiære aminer', + children: [ + { + id: 'N04AA01', + name: 'N04AA01 - triheksylfenidyl', + }, + { + id: 'N04AA02', + name: 'N04AA02 - biperiden', + }, + { + id: 'N04AA04', + name: 'N04AA04 - procyklidin', + }, + ], + }, + ], + }, + { + id: 'N04B', + name: 'N04B - DOPAMINERGE MIDLER', + children: [ + { + id: 'N04BA', + name: 'N04BA - Dopa og dopaderivater', + children: [ + { + id: 'N04BA02', + name: 'N04BA02 - levodopa og dekarboksylasehemmer', + }, + { + id: 'N04BA03', + name: 'N04BA03 - levodopa, dekarboksylasehemmer og comt-hemmer', + }, + ], + }, + { + id: 'N04BB', + name: 'N04BB - Adamantanderivater', + children: [ + { + id: 'N04BB01', + name: 'N04BB01 - amantadin', + }, + ], + }, + { + id: 'N04BC', + name: 'N04BC - Dopaminagonister', + children: [ + { + id: 'N04BC01', + name: 'N04BC01 - bromokriptin', + }, + { + id: 'N04BC02', + name: 'N04BC02 - pergolid', + }, + { + id: 'N04BC04', + name: 'N04BC04 - ropinirol', + }, + { + id: 'N04BC05', + name: 'N04BC05 - pramipeksol', + }, + { + id: 'N04BC06', + name: 'N04BC06 - kabergolin', + }, + { + id: 'N04BC07', + name: 'N04BC07 - apomorfin', + }, + { + id: 'N04BC09', + name: 'N04BC09 - rotigotin', + }, + ], + }, + { + id: 'N04BD', + name: 'N04BD - MAO-hemmere, type B', + children: [ + { + id: 'N04BD01', + name: 'N04BD01 - selegilin', + }, + { + id: 'N04BD02', + name: 'N04BD02 - rasagilin', + }, + { + id: 'N04BD03', + name: 'N04BD03 - safinamid', + }, + ], + }, + { + id: 'N04BX', + name: 'N04BX - Andre dopaminerge midler', + children: [ + { + id: 'N04BX01', + name: 'N04BX01 - tolkapon', + }, + { + id: 'N04BX02', + name: 'N04BX02 - entakapon', + }, + { + id: 'N04BX04', + name: 'N04BX04 - opikapon', + }, + ], + }, + ], + }, + ], + }, + { + id: 'N05', + name: 'N05 - PSYKOLEPTIKA', + children: [ + { + id: 'N05A', + name: 'N05A - ANTIPSYKOTIKA', + children: [ + { + id: 'N05AB', + name: 'N05AB - Fentiaziner med piperazinring i sidekjeden', + children: [ + { + id: 'N05AB01', + name: 'N05AB01 - diksyrazin', + }, + { + id: 'N05AB02', + name: 'N05AB02 - flufenazin', + }, + { + id: 'N05AB03', + name: 'N05AB03 - perfenazin', + }, + { + id: 'N05AB04', + name: 'N05AB04 - proklorperazin', + }, + { + id: 'N05AB06', + name: 'N05AB06 - trifluoperazin', + }, + ], + }, + { + id: 'N05AC', + name: 'N05AC - Fentiaziner med piperidinring i sidekjeden', + children: [ + { + id: 'N05AC01', + name: 'N05AC01 - periciazin', + }, + { + id: 'N05AC02', + name: 'N05AC02 - tioridazin', + }, + { + id: 'N05AC04', + name: 'N05AC04 - pipotiazin', + }, + ], + }, + { + id: 'N05AD', + name: 'N05AD - Butyrofenonderivater', + children: [ + { + id: 'N05AD01', + name: 'N05AD01 - haloperidol', + }, + { + id: 'N05AD03', + name: 'N05AD03 - melperon', + }, + { + id: 'N05AD08', + name: 'N05AD08 - droperidol', + }, + ], + }, + { + id: 'N05AE', + name: 'N05AE - Indolderivater', + children: [ + { + id: 'N05AE03', + name: 'N05AE03 - sertindol', + }, + { + id: 'N05AE04', + name: 'N05AE04 - ziprasidon', + }, + { + id: 'N05AE05', + name: 'N05AE05 - lurasidon', + }, + ], + }, + { + id: 'N05AF', + name: 'N05AF - Tioksantenderivater', + children: [ + { + id: 'N05AF01', + name: 'N05AF01 - flupentiksol', + }, + { + id: 'N05AF03', + name: 'N05AF03 - klorprotiksen', + }, + { + id: 'N05AF05', + name: 'N05AF05 - zuklopentiksol', + }, + ], + }, + { + id: 'N05AG', + name: 'N05AG - Difenylbutylpiperidinderivater', + children: [ + { + id: 'N05AG01', + name: 'N05AG01 - fluspirilen', + }, + { + id: 'N05AG02', + name: 'N05AG02 - pimozid', + }, + { + id: 'N05AG03', + name: 'N05AG03 - penfluridol', + }, + ], + }, + { + id: 'N05AH', + name: 'N05AH - Diazepiner, oksazepiner, tiazepiner og oksepiner', + children: [ + { + id: 'N05AH01', + name: 'N05AH01 - loksapin', + }, + { + id: 'N05AH02', + name: 'N05AH02 - klozapin', + }, + { + id: 'N05AH03', + name: 'N05AH03 - olanzapin', + }, + { + id: 'N05AH04', + name: 'N05AH04 - kvetiapin', + }, + { + id: 'N05AH05', + name: 'N05AH05 - asenapin', + }, + ], + }, + { + id: 'N05AL', + name: 'N05AL - Benzamider', + children: [ + { + id: 'N05AL01', + name: 'N05AL01 - sulpirid', + }, + { + id: 'N05AL03', + name: 'N05AL03 - tiaprid', + }, + { + id: 'N05AL05', + name: 'N05AL05 - amisulprid', + }, + ], + }, + { + id: 'N05AN', + name: 'N05AN - Litium', + children: [ + { + id: 'N05AN01', + name: 'N05AN01 - litium', + }, + ], + }, + { + id: 'N05AX', + name: 'N05AX - Andre antipsykotika', + children: [ + { + id: 'N05AX07', + name: 'N05AX07 - protipendyl', + }, + { + id: 'N05AX08', + name: 'N05AX08 - risperidon', + }, + { + id: 'N05AX12', + name: 'N05AX12 - aripiprazol', + }, + { + id: 'N05AX13', + name: 'N05AX13 - paliperidon', + }, + { + id: 'N05AX15', + name: 'N05AX15 - kariprazin', + }, + { + id: 'N05AX16', + name: 'N05AX16 - brekspiprazol', + }, + ], + }, + { + id: 'N05AA', + name: 'N05AA - Fentiaziner med alifatisk sidekjede', + children: [ + { + id: 'N05AA01', + name: 'N05AA01 - klorpromazin', + }, + { + id: 'N05AA02', + name: 'N05AA02 - levomepromazin', + }, + ], + }, + ], + }, + { + id: 'N05B', + name: 'N05B - ANKSIOLYTIKA', + children: [ + { + id: 'N05BA', + name: 'N05BA - Benzodiazepinderivater', + children: [ + { + id: 'N05BA01', + name: 'N05BA01 - diazepam', + }, + { + id: 'N05BA02', + name: 'N05BA02 - klordiazepoksid', + }, + { + id: 'N05BA04', + name: 'N05BA04 - oksazepam', + }, + { + id: 'N05BA06', + name: 'N05BA06 - lorazepam', + }, + { + id: 'N05BA08', + name: 'N05BA08 - bromazepam', + }, + { + id: 'N05BA09', + name: 'N05BA09 - klobazam', + }, + { + id: 'N05BA12', + name: 'N05BA12 - alprazolam', + }, + ], + }, + { + id: 'N05BB', + name: 'N05BB - Difenylmetanderivater', + children: [ + { + id: 'N05BB01', + name: 'N05BB01 - hydroksyzin', + }, + ], + }, + { + id: 'N05BC', + name: 'N05BC - Karbamater', + children: [ + { + id: 'N05BC01', + name: 'N05BC01 - meprobamat', + }, + ], + }, + { + id: 'N05BE', + name: 'N05BE - Azaspirodekandionderivater', + children: [ + { + id: 'N05BE01', + name: 'N05BE01 - buspiron', + }, + ], + }, + ], + }, + { + id: 'N05C', + name: 'N05C - HYPNOTIKA OG SEDATIVA', + children: [ + { + id: 'N05CA', + name: 'N05CA - Barbiturater, usammensatte', + children: [ + { + id: 'N05CA04', + name: 'N05CA04 - barbital', + }, + ], + }, + { + id: 'N05CC', + name: 'N05CC - Aldehyder og derivater', + children: [ + { + id: 'N05CC01', + name: 'N05CC01 - kloralhydrat', + }, + ], + }, + { + id: 'N05CD', + name: 'N05CD - Benzodiazepinderivater', + children: [ + { + id: 'N05CD01', + name: 'N05CD01 - flurazepam', + }, + { + id: 'N05CD02', + name: 'N05CD02 - nitrazepam', + }, + { + id: 'N05CD03', + name: 'N05CD03 - flunitrazepam', + }, + { + id: 'N05CD04', + name: 'N05CD04 - estazolam', + }, + { + id: 'N05CD05', + name: 'N05CD05 - triazolam', + }, + { + id: 'N05CD08', + name: 'N05CD08 - midazolam', + }, + ], + }, + { + id: 'N05CF', + name: 'N05CF - Benzodiazepinlignende midler', + children: [ + { + id: 'N05CF01', + name: 'N05CF01 - zopiklon', + }, + { + id: 'N05CF02', + name: 'N05CF02 - zolpidem', + }, + { + id: 'N05CF03', + name: 'N05CF03 - zaleplon', + }, + ], + }, + { + id: 'N05CH', + name: 'N05CH - Melatonin reseptor agonister', + children: [ + { + id: 'N05CH01', + name: 'N05CH01 - melatonin', + }, + ], + }, + { + id: 'N05CM', + name: 'N05CM - Andre hypnotika og sedativa', + children: [ + { + id: 'N05CM02', + name: 'N05CM02 - klometiazol', + }, + { + id: 'N05CM05', + name: 'N05CM05 - skopolamin', + }, + { + id: 'N05CM06', + name: 'N05CM06 - propiomazin', + }, + { + id: 'N05CM09', + name: 'N05CM09 - valerianae radix', + }, + { + id: 'N05CM11', + name: 'N05CM11 - bromider', + }, + { + id: 'N05CM18', + name: 'N05CM18 - deksmedetomidin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'N06', + name: 'N06 - PSYKOANALEPTIKA', + children: [ + { + id: 'N06A', + name: 'N06A - ANTIDEPRESSIVA', + children: [ + { + id: 'N06AB', + name: 'N06AB - Selektive serotoninreopptakshemmere', + children: [ + { + id: 'N06AB03', + name: 'N06AB03 - fluoksetin', + }, + { + id: 'N06AB04', + name: 'N06AB04 - citalopram', + }, + { + id: 'N06AB05', + name: 'N06AB05 - paroksetin', + }, + { + id: 'N06AB06', + name: 'N06AB06 - sertralin', + }, + { + id: 'N06AB08', + name: 'N06AB08 - fluvoksamin', + }, + { + id: 'N06AB10', + name: 'N06AB10 - escitalopram', + }, + ], + }, + { + id: 'N06AF', + name: 'N06AF - MAO-hemmere, uselektive', + children: [ + { + id: 'N06AF01', + name: 'N06AF01 - isokarboksazid', + }, + { + id: 'N06AF03', + name: 'N06AF03 - fenelsin', + }, + { + id: 'N06AF04', + name: 'N06AF04 - tranylcypromin', + }, + ], + }, + { + id: 'N06AG', + name: 'N06AG - MAO-hemmere, type A', + children: [ + { + id: 'N06AG02', + name: 'N06AG02 - moklobemid', + }, + ], + }, + { + id: 'N06AX', + name: 'N06AX - Andre antidepressiva', + children: [ + { + id: 'N06AX01', + name: 'N06AX01 - oksitriptan', + }, + { + id: 'N06AX02', + name: 'N06AX02 - tryptofan', + }, + { + id: 'N06AX03', + name: 'N06AX03 - mianserin', + }, + { + id: 'N06AX05', + name: 'N06AX05 - trazodon', + }, + { + id: 'N06AX06', + name: 'N06AX06 - nefazodon', + }, + { + id: 'N06AX11', + name: 'N06AX11 - mirtazapin', + }, + { + id: 'N06AX12', + name: 'N06AX12 - bupropion', + }, + { + id: 'N06AX14', + name: 'N06AX14 - tianeptin', + }, + { + id: 'N06AX16', + name: 'N06AX16 - venlafaksin', + }, + { + id: 'N06AX18', + name: 'N06AX18 - reboksetin', + }, + { + id: 'N06AX21', + name: 'N06AX21 - duloksetin', + }, + { + id: 'N06AX22', + name: 'N06AX22 - agomelatin', + }, + { + id: 'N06AX25', + name: 'N06AX25 - hyperici herba', + }, + { + id: 'N06AX26', + name: 'N06AX26 - vortioksetin', + }, + { + id: 'N06AX27', + name: 'N06AX27 - esketamin', + }, + ], + }, + { + id: 'N06AA', + name: 'N06AA - Ikke-selektive monoaminreopptakshemmere', + children: [ + { + id: 'N06AA01', + name: 'N06AA01 - desipramin', + }, + { + id: 'N06AA02', + name: 'N06AA02 - imipramin', + }, + { + id: 'N06AA04', + name: 'N06AA04 - klomipramin', + }, + { + id: 'N06AA05', + name: 'N06AA05 - opipramol', + }, + { + id: 'N06AA06', + name: 'N06AA06 - trimipramin', + }, + { + id: 'N06AA07', + name: 'N06AA07 - lofepramin', + }, + { + id: 'N06AA09', + name: 'N06AA09 - amitriptylin', + }, + { + id: 'N06AA10', + name: 'N06AA10 - nortriptylin', + }, + { + id: 'N06AA12', + name: 'N06AA12 - doksepin', + }, + { + id: 'N06AA21', + name: 'N06AA21 - maprotilin', + }, + ], + }, + ], + }, + { + id: 'N06B', + name: 'N06B - PSYKOSTIMULANTIA, MIDLER VED ADHD OG NOOTROPIKA', + children: [ + { + id: 'N06BA', + name: 'N06BA - Sentralt virkende sympatomimetika', + children: [ + { + id: 'N06BA01', + name: 'N06BA01 - amfetamin', + }, + { + id: 'N06BA02', + name: 'N06BA02 - deksamfetamin', + }, + { + id: 'N06BA04', + name: 'N06BA04 - metylfenidat', + }, + { + id: 'N06BA07', + name: 'N06BA07 - modafinil', + }, + { + id: 'N06BA09', + name: 'N06BA09 - atomoksetin', + }, + { + id: 'N06BA12', + name: 'N06BA12 - lisdeksamfetamin', + }, + ], + }, + { + id: 'N06BC', + name: 'N06BC - Xantinderivater', + children: [ + { + id: 'N06BC01', + name: 'N06BC01 - koffein', + }, + ], + }, + { + id: 'N06BX', + name: 'N06BX - Andre psykostimulantia og nootropika', + children: [ + { + id: 'N06BX03', + name: 'N06BX03 - piracetam', + }, + { + id: 'N06BX13', + name: 'N06BX13 - idebenon', + }, + { + id: 'N06BX17', + name: 'N06BX17 - adrafinil', + }, + ], + }, + ], + }, + { + id: 'N06C', + name: 'N06C - PSYKOLEPTIKA OG PSYKOANALEPTIKA I KOMBINASJONER', + children: [ + { + id: 'N06CA', + name: 'N06CA - Antidepressiva i kombinasjon med psykoleptika', + children: [ + { + id: 'N06CA02', + name: 'N06CA02 - melitracen og psykoleptika', + }, + ], + }, + ], + }, + { + id: 'N06D', + name: 'N06D - MIDLER MOT DEMENS', + children: [ + { + id: 'N06DA', + name: 'N06DA - Antikolinesteraser', + children: [ + { + id: 'N06DA02', + name: 'N06DA02 - donepezil', + }, + { + id: 'N06DA03', + name: 'N06DA03 - rivastigmin', + }, + { + id: 'N06DA04', + name: 'N06DA04 - galantamin', + }, + ], + }, + { + id: 'N06DX', + name: 'N06DX - Andre midler mot demens', + children: [ + { + id: 'N06DX01', + name: 'N06DX01 - memantin', + }, + { + id: 'N06DX02', + name: 'N06DX02 - ginkgo folium', + }, + ], + }, + ], + }, + ], + }, + { + id: 'N07', + name: 'N07 - ANDRE MIDLER MED VIRKNING PÅ NERVESYSTEMET', + children: [ + { + id: 'N07A', + name: 'N07A - PARASYMPATOMIMETIKA', + children: [ + { + id: 'N07AB', + name: 'N07AB - Kolinestere', + children: [ + { + id: 'N07AB01', + name: 'N07AB01 - karbakolin', + }, + { + id: 'N07AB02', + name: 'N07AB02 - betanekol', + }, + ], + }, + { + id: 'N07AX', + name: 'N07AX - Andre parasympatika', + children: [ + { + id: 'N07AX01', + name: 'N07AX01 - pilokarpin', + }, + { + id: 'N07AX03', + name: 'N07AX03 - cevimelin', + }, + ], + }, + { + id: 'N07AA', + name: 'N07AA - Antikolinesteraser', + children: [ + { + id: 'N07AA01', + name: 'N07AA01 - neostigmin', + }, + { + id: 'N07AA02', + name: 'N07AA02 - pyridostigmin', + }, + { + id: 'N07AA30', + name: 'N07AA30 - ambenonium', + }, + { + id: 'N07AA51', + name: 'N07AA51 - neostigmin, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'N07B', + name: 'N07B - MIDLER VED AVHENGIGHETSLIDELSER', + children: [ + { + id: 'N07BA', + name: 'N07BA - Midler ved nikotinavhengighet', + children: [ + { + id: 'N07BA01', + name: 'N07BA01 - nikotin', + }, + { + id: 'N07BA03', + name: 'N07BA03 - vareniklin', + }, + ], + }, + { + id: 'N07BB', + name: 'N07BB - Midler ved alkoholavhengighet', + children: [ + { + id: 'N07BB01', + name: 'N07BB01 - disulfiram', + }, + { + id: 'N07BB03', + name: 'N07BB03 - akamprosat', + }, + { + id: 'N07BB04', + name: 'N07BB04 - naltrekson', + }, + { + id: 'N07BB05', + name: 'N07BB05 - nalmefen', + }, + ], + }, + { + id: 'N07BC', + name: 'N07BC - Midler ved opioidavhengighet', + children: [ + { + id: 'N07BC01', + name: 'N07BC01 - buprenorfin', + }, + { + id: 'N07BC02', + name: 'N07BC02 - metadon', + }, + { + id: 'N07BC04', + name: 'N07BC04 - lofeksidin', + }, + { + id: 'N07BC05', + name: 'N07BC05 - levometadon', + }, + { + id: 'N07BC51', + name: 'N07BC51 - buprenorfin, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'N07C', + name: 'N07C - ANTIVERTIGOMIDLER', + children: [ + { + id: 'N07CA', + name: 'N07CA - Antivertigomidler', + children: [ + { + id: 'N07CA01', + name: 'N07CA01 - betahistin', + }, + { + id: 'N07CA03', + name: 'N07CA03 - flunarizin', + }, + { + id: 'N07CA52', + name: 'N07CA52 - cinnarizin, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'N07X', + name: 'N07X - ANDRE MIDLER MED VIRKNING PÅ NERVESYSTEMET', + children: [ + { + id: 'N07XX', + name: 'N07XX - Andre midler med virkning på nervesystemet', + children: [ + { + id: 'N07XX02', + name: 'N07XX02 - riluzol', + }, + { + id: 'N07XX04', + name: 'N07XX04 - natriumoksybat', + }, + { + id: 'N07XX05', + name: 'N07XX05 - amifampridin', + }, + { + id: 'N07XX06', + name: 'N07XX06 - tetrabenazin', + }, + { + id: 'N07XX07', + name: 'N07XX07 - fampridin', + }, + { + id: 'N07XX08', + name: 'N07XX08 - tafamidis', + }, + { + id: 'N07XX11', + name: 'N07XX11 - pitolisant', + }, + { + id: 'N07XX59', + name: 'N07XX59 - dekstrometorfan, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'P', + name: 'P - ANTIPARASITÆRE MIDLER, INSEKTICIDER OG INSEKTMIDLER', + children: [ + { + id: 'P01', + name: 'P01 - PROTOZOMIDLER', + children: [ + { + id: 'P01A', + name: 'P01A - MIDLER TIL BEHANDLING AV AMØBESYKDOMMER OG ANDRE PROTOZOSYKDOMMER', + children: [ + { + id: 'P01AB', + name: 'P01AB - Nitroimidazolderivater', + children: [ + { + id: 'P01AB01', + name: 'P01AB01 - metronidazol', + }, + { + id: 'P01AB02', + name: 'P01AB02 - tinidazol', + }, + { + id: 'P01AB03', + name: 'P01AB03 - ornidazol', + }, + { + id: 'P01AB06', + name: 'P01AB06 - nimorazol', + }, + ], + }, + { + id: 'P01AC', + name: 'P01AC - Dikloracetamidderivater', + children: [ + { + id: 'P01AC01', + name: 'P01AC01 - diloksanid', + }, + ], + }, + { + id: 'P01AX', + name: 'P01AX - Andre midler mot amøbesykdommer og andre protozosykdommer', + children: [ + { + id: 'P01AX05', + name: 'P01AX05 - mepakrin', + }, + { + id: 'P01AX06', + name: 'P01AX06 - atovakvon', + }, + { + id: 'P01AX11', + name: 'P01AX11 - nitazoksanid', + }, + ], + }, + ], + }, + { + id: 'P01B', + name: 'P01B - MALARIAMIDLER', + children: [ + { + id: 'P01BA', + name: 'P01BA - Aminokinoliner', + children: [ + { + id: 'P01BA01', + name: 'P01BA01 - klorokin', + }, + { + id: 'P01BA02', + name: 'P01BA02 - hydroksyklorokin', + }, + { + id: 'P01BA03', + name: 'P01BA03 - primakin', + }, + ], + }, + { + id: 'P01BB', + name: 'P01BB - Biguanider', + children: [ + { + id: 'P01BB01', + name: 'P01BB01 - proguanil', + }, + { + id: 'P01BB51', + name: 'P01BB51 - proguanil og atovakvin', + }, + ], + }, + { + id: 'P01BC', + name: 'P01BC - Metanolkinoliner', + children: [ + { + id: 'P01BC01', + name: 'P01BC01 - kinin', + }, + { + id: 'P01BC02', + name: 'P01BC02 - meflokin', + }, + ], + }, + { + id: 'P01BD', + name: 'P01BD - Diaminopyrimidiner', + children: [ + { + id: 'P01BD01', + name: 'P01BD01 - pyrimetamin', + }, + ], + }, + { + id: 'P01BE', + name: 'P01BE - Artemisinin og derivater, usammensatte', + children: [ + { + id: 'P01BE03', + name: 'P01BE03 - artesunat', + }, + ], + }, + { + id: 'P01BF', + name: 'P01BF - Artemisinin og derivater, kombinasjoner', + children: [ + { + id: 'P01BF01', + name: 'P01BF01 - artemeter og lumefantrin', + }, + ], + }, + ], + }, + { + id: 'P01C', + name: 'P01C - MIDLER MOT LEISHMANIASIS OG TRYPANOSOMIASIS', + children: [ + { + id: 'P01CX', + name: 'P01CX - Andre midler mot leishmaniasis og trypanosomiasis', + children: [ + { + id: 'P01CX01', + name: 'P01CX01 - pentamidinisetionat', + }, + { + id: 'P01CX04', + name: 'P01CX04 - miltefosin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'P02', + name: 'P02 - ANTHELMINTIKA', + children: [ + { + id: 'P02B', + name: 'P02B - MIDLER MOT TREMATODER', + children: [ + { + id: 'P02BA', + name: 'P02BA - Kinolinderivater og lignende substanser', + children: [ + { + id: 'P02BA01', + name: 'P02BA01 - prazikvantel', + }, + ], + }, + ], + }, + { + id: 'P02C', + name: 'P02C - MIDLER MOT NEMATODER', + children: [ + { + id: 'P02CA', + name: 'P02CA - Benzimidazol derivater', + children: [ + { + id: 'P02CA01', + name: 'P02CA01 - mebendazol', + }, + { + id: 'P02CA02', + name: 'P02CA02 - tiabendazol', + }, + { + id: 'P02CA03', + name: 'P02CA03 - albendazol', + }, + ], + }, + { + id: 'P02CE', + name: 'P02CE - Imidazotiazol derivater', + children: [ + { + id: 'P02CE01', + name: 'P02CE01 - levamisol', + }, + ], + }, + { + id: 'P02CF', + name: 'P02CF - Avermektiner', + children: [ + { + id: 'P02CF01', + name: 'P02CF01 - ivermektin', + }, + ], + }, + { + id: 'P02CX', + name: 'P02CX - Andre midler mot nematoder', + children: [ + { + id: 'P02CX01', + name: 'P02CX01 - pyrvin', + }, + ], + }, + ], + }, + { + id: 'P02D', + name: 'P02D - MIDLER MOT CESTODER', + children: [ + { + id: 'P02DA', + name: 'P02DA - Salisylsyrederivater', + children: [ + { + id: 'P02DA01', + name: 'P02DA01 - niklosamid', + }, + ], + }, + ], + }, + ], + }, + { + id: 'P03', + name: 'P03 - EKTOPARASITTMIDLER, INKL. SKABBMIDLER OG INSEKTMIDLER', + children: [ + { + id: 'P03A', + name: 'P03A - EKTOPARASITTMIDLER, INKL. SKABBMIDLER', + children: [ + { + id: 'P03AC', + name: 'P03AC - Pyretriner, inklusive syntetiske forbindelser', + children: [ + { + id: 'P03AC04', + name: 'P03AC04 - permetrin', + }, + ], + }, + { + id: 'P03AX', + name: 'P03AX - Andre ektoparasittmidler, inkl. skabbmidler', + children: [ + { + id: 'P03AX01', + name: 'P03AX01 - benzylbenzoat', + }, + { + id: 'P03AX03', + name: 'P03AX03 - malation', + }, + ], + }, + { + id: 'P03AA', + name: 'P03AA - Svovelholdige midler', + children: [ + { + id: 'P03AA54', + name: 'P03AA54 - disulfiram, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'R', + name: 'R - RESPIRASJONSORGANER', + children: [ + { + id: 'R01', + name: 'R01 - RHINOLOGIKA', + children: [ + { + id: 'R01A', + name: 'R01A - RHINOLOGIKA OG ANDRE MIDLER TIL TOPIKAL BRUK I NESEN', + children: [ + { + id: 'R01AB', + name: 'R01AB - Adrenergika, kombinasjoner ekskl. kortikosteroider', + children: [ + { + id: 'R01AB06', + name: 'R01AB06 - xylometazolin', + }, + ], + }, + { + id: 'R01AC', + name: 'R01AC - Antiallergiske midler, ekskl. kortikosteroider', + children: [ + { + id: 'R01AC01', + name: 'R01AC01 - natriumkromoglikat', + }, + { + id: 'R01AC02', + name: 'R01AC02 - levokabastin', + }, + { + id: 'R01AC03', + name: 'R01AC03 - azelastin', + }, + ], + }, + { + id: 'R01AD', + name: 'R01AD - Kortikosteroider', + children: [ + { + id: 'R01AD01', + name: 'R01AD01 - beklometason', + }, + { + id: 'R01AD03', + name: 'R01AD03 - deksametason', + }, + { + id: 'R01AD04', + name: 'R01AD04 - flunisolid', + }, + { + id: 'R01AD05', + name: 'R01AD05 - budesonid', + }, + { + id: 'R01AD08', + name: 'R01AD08 - flutikason', + }, + { + id: 'R01AD09', + name: 'R01AD09 - mometason', + }, + { + id: 'R01AD11', + name: 'R01AD11 - triamcinolon', + }, + { + id: 'R01AD12', + name: 'R01AD12 - flutikasonfuroat', + }, + { + id: 'R01AD58', + name: 'R01AD58 - flutikason, kombinasjoner', + }, + { + id: 'R01AD59', + name: 'R01AD59 - mometason, kombinasjoner', + }, + ], + }, + { + id: 'R01AX', + name: 'R01AX - Andre midler til bruk i nesen', + children: [ + { + id: 'R01AX03', + name: 'R01AX03 - ipratropiumbromid', + }, + { + id: 'R01AX06', + name: 'R01AX06 - mupirocin', + }, + ], + }, + { + id: 'R01AA', + name: 'R01AA - Adrenergika, usammensatte', + children: [ + { + id: 'R01AA05', + name: 'R01AA05 - oksymetazolin', + }, + { + id: 'R01AA07', + name: 'R01AA07 - xylometazolin', + }, + ], + }, + ], + }, + { + id: 'R01B', + name: 'R01B - RHINOLOGIKA TIL SYSTEMISK BRUK', + children: [ + { + id: 'R01BA', + name: 'R01BA - Adrenergika', + children: [ + { + id: 'R01BA01', + name: 'R01BA01 - fenylpropanolamin', + }, + { + id: 'R01BA51', + name: 'R01BA51 - fenylpropanolamin, kombinasjoner', + }, + { + id: 'R01BA52', + name: 'R01BA52 - pseudoefedrin, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + { + id: 'R02', + name: 'R02 - HALSMIDLER', + children: [ + { + id: 'R02A', + name: 'R02A - HALSMIDLER', + children: [ + { + id: 'R02AX', + name: 'R02AX - Andre halsmidler', + children: [ + { + id: 'R02AX01', + name: 'R02AX01 - flurbiprofen', + }, + { + id: 'R02AX03', + name: 'R02AX03 - benzydamin', + }, + ], + }, + { + id: 'R02AA', + name: 'R02AA - Antiseptika', + children: [ + { + id: 'R02AA03', + name: 'R02AA03 - diklorbenzylalkohol', + }, + { + id: 'R02AA05', + name: 'R02AA05 - klorheksidin', + }, + ], + }, + ], + }, + ], + }, + { + id: 'R03', + name: 'R03 - MIDLER VED OBSTRUKTIV LUNGESYKDOM', + children: [ + { + id: 'R03A', + name: 'R03A - ADRENERGIKA, MIDLER TIL INHALASJON', + children: [ + { + id: 'R03AC', + name: 'R03AC - Selektive beta-2-agonister', + children: [ + { + id: 'R03AC02', + name: 'R03AC02 - salbutamol', + }, + { + id: 'R03AC03', + name: 'R03AC03 - terbutalin', + }, + { + id: 'R03AC04', + name: 'R03AC04 - fenoterol', + }, + { + id: 'R03AC12', + name: 'R03AC12 - salmeterol', + }, + { + id: 'R03AC13', + name: 'R03AC13 - formoterol', + }, + { + id: 'R03AC18', + name: 'R03AC18 - indakaterol', + }, + { + id: 'R03AC19', + name: 'R03AC19 - olodaterol', + }, + ], + }, + { + id: 'R03AK', + name: 'R03AK - Adrenergika i kombinasjon med kortikosteroider eller andre midler, ekskl. antikolinergika', + children: [ + { + id: 'R03AK06', + name: 'R03AK06 - salmeterol og flutikason', + }, + { + id: 'R03AK07', + name: 'R03AK07 - formoterol og budesonid', + }, + { + id: 'R03AK08', + name: 'R03AK08 - formoterol og beklometason', + }, + { + id: 'R03AK10', + name: 'R03AK10 - vilanterol og flutikasonfuroat', + }, + { + id: 'R03AK11', + name: 'R03AK11 - formoterol og flutikason', + }, + { + id: 'R03AK14', + name: 'R03AK14 - indakaterol og mometason', + }, + ], + }, + { + id: 'R03AL', + name: 'R03AL - Adrenergika i kombinasjon med antikolinergika inkludert trippelkombinasjoner med kortikosteroider', + children: [ + { + id: 'R03AL02', + name: 'R03AL02 - salbutamol og ipratropiumbromid', + }, + { + id: 'R03AL03', + name: 'R03AL03 - vilanterol og umeklidiniumbromid', + }, + { + id: 'R03AL04', + name: 'R03AL04 - indakaterol og glykopyrroniumbromid', + }, + { + id: 'R03AL05', + name: 'R03AL05 - formoterol og aklidiniumbromid', + }, + { + id: 'R03AL06', + name: 'R03AL06 - olodaterol og tiotropiumbromid', + }, + { + id: 'R03AL07', + name: 'R03AL07 - formoterol og glykopyrronbromid', + }, + { + id: 'R03AL08', + name: 'R03AL08 - vilanterol, umeklidiniumbromid og flutikasonfuroat', + }, + { + id: 'R03AL09', + name: 'R03AL09 - formoterol, glykopyrroniumbromid og beklometason', + }, + { + id: 'R03AL11', + name: 'R03AL11 - formoterol, glykopyrroniumbromid og budesonid', + }, + { + id: 'R03AL12', + name: 'R03AL12 - indakaterol, glykopyrroniumbromid og mometason', + }, + ], + }, + { + id: 'R03AA', + name: 'R03AA - Alfa- og betaagonister', + children: [ + { + id: 'R03AA01', + name: 'R03AA01 - adrenalin', + }, + ], + }, + ], + }, + { + id: 'R03B', + name: 'R03B - ANDRE MIDLER VED OBSTRUKTIV LUNGESYKDOM, TIL INHALASJON', + children: [ + { + id: 'R03BA', + name: 'R03BA - Glukokortikoider', + children: [ + { + id: 'R03BA01', + name: 'R03BA01 - beklometason', + }, + { + id: 'R03BA02', + name: 'R03BA02 - budesonid', + }, + { + id: 'R03BA05', + name: 'R03BA05 - flutikason', + }, + { + id: 'R03BA07', + name: 'R03BA07 - mometason', + }, + { + id: 'R03BA08', + name: 'R03BA08 - ciklesonid', + }, + ], + }, + { + id: 'R03BB', + name: 'R03BB - Antikolinergika', + children: [ + { + id: 'R03BB01', + name: 'R03BB01 - ipratropiumbromid', + }, + { + id: 'R03BB04', + name: 'R03BB04 - tiotropiumbromid', + }, + { + id: 'R03BB05', + name: 'R03BB05 - aklidiniumbromid', + }, + { + id: 'R03BB06', + name: 'R03BB06 - glykopyrroniumbromid', + }, + { + id: 'R03BB07', + name: 'R03BB07 - umeklidiniumbromid', + }, + ], + }, + { + id: 'R03BC', + name: 'R03BC - Antiallergiske midler, ekskl. kortikosteroider', + children: [ + { + id: 'R03BC01', + name: 'R03BC01 - natriumkromoglikat', + }, + ], + }, + ], + }, + { + id: 'R03C', + name: 'R03C - ADRENERGIKA, MIDLER TIL SYSTEMISK BRUK', + children: [ + { + id: 'R03CA', + name: 'R03CA - Alfa- og betaagonister', + children: [ + { + id: 'R03CA02', + name: 'R03CA02 - efedrin', + }, + ], + }, + { + id: 'R03CB', + name: 'R03CB - Ikke-selektive betaagonister', + children: [ + { + id: 'R03CB03', + name: 'R03CB03 - orciprenalin', + }, + ], + }, + { + id: 'R03CC', + name: 'R03CC - Selektive beta-2-agonister', + children: [ + { + id: 'R03CC02', + name: 'R03CC02 - salbutamol', + }, + { + id: 'R03CC03', + name: 'R03CC03 - terbutalin', + }, + { + id: 'R03CC12', + name: 'R03CC12 - bambuterol', + }, + { + id: 'R03CC13', + name: 'R03CC13 - klenbuterol', + }, + ], + }, + ], + }, + { + id: 'R03D', + name: 'R03D - ANDRE SYSTEMISKE MIDLER VED OBSTRUKTIV LUNGESYKDOM', + children: [ + { + id: 'R03DA', + name: 'R03DA - Xantinderivater', + children: [ + { + id: 'R03DA02', + name: 'R03DA02 - kolinteofyllinat', + }, + { + id: 'R03DA04', + name: 'R03DA04 - teofyllin', + }, + { + id: 'R03DA05', + name: 'R03DA05 - teofyllinetylendiamin', + }, + ], + }, + { + id: 'R03DC', + name: 'R03DC - Leukotrienreseptor antagonister', + children: [ + { + id: 'R03DC01', + name: 'R03DC01 - zafirlukast', + }, + { + id: 'R03DC03', + name: 'R03DC03 - montelukast', + }, + ], + }, + { + id: 'R03DX', + name: 'R03DX - Andre systemiske midler ved obstruktiv lungesykdom', + children: [ + { + id: 'R03DX05', + name: 'R03DX05 - omalizumab', + }, + { + id: 'R03DX07', + name: 'R03DX07 - roflumilast', + }, + { + id: 'R03DX08', + name: 'R03DX08 - reslizumab', + }, + { + id: 'R03DX09', + name: 'R03DX09 - mepolizumab', + }, + { + id: 'R03DX10', + name: 'R03DX10 - benralizumab', + }, + { + id: 'R03DX11', + name: 'R03DX11 - tezepelumab', + }, + ], + }, + ], + }, + ], + }, + { + id: 'R05', + name: 'R05 - HOSTE- OG FORKJØLELSESMIDLER', + children: [ + { + id: 'R05C', + name: 'R05C - EKSPEKTORANTIA, EKSKL. KOMBINASJONER MED ANTITUSSIVA', + children: [ + { + id: 'R05CA', + name: 'R05CA - Ekspektorantia', + children: [ + { + id: 'R05CA03', + name: 'R05CA03 - guaifenesin', + }, + { + id: 'R05CA10', + name: 'R05CA10 - kombinasjoner', + }, + ], + }, + { + id: 'R05CB', + name: 'R05CB - Mukolytika', + children: [ + { + id: 'R05CB01', + name: 'R05CB01 - acetylcystein', + }, + { + id: 'R05CB02', + name: 'R05CB02 - bromheksin', + }, + { + id: 'R05CB13', + name: 'R05CB13 - dornase alfa (desoksyribonuklease)', + }, + { + id: 'R05CB16', + name: 'R05CB16 - mannitol', + }, + ], + }, + ], + }, + { + id: 'R05D', + name: 'R05D - ANTITUSSIVA, EKSKL. KOMBINASJONER MED EKSPEKTORANTIA', + children: [ + { + id: 'R05DA', + name: 'R05DA - Opiumsalkaloider og derivater', + children: [ + { + id: 'R05DA01', + name: 'R05DA01 - etylmorfin', + }, + { + id: 'R05DA03', + name: 'R05DA03 - hydrokodon', + }, + { + id: 'R05DA04', + name: 'R05DA04 - kodein', + }, + { + id: 'R05DA07', + name: 'R05DA07 - noskapin', + }, + { + id: 'R05DA08', + name: 'R05DA08 - folkodin', + }, + { + id: 'R05DA09', + name: 'R05DA09 - dekstrometorfan', + }, + { + id: 'R05DA20', + name: 'R05DA20 - kombinasjoner', + }, + ], + }, + { + id: 'R05DB', + name: 'R05DB - Andre antitussiva', + children: [ + { + id: 'R05DB05', + name: 'R05DB05 - pentoksyverin', + }, + ], + }, + ], + }, + { + id: 'R05F', + name: 'R05F - ANTITUSSIVA OG EKSPEKTORANTIA, KOMBINASJONER', + children: [ + { + id: 'R05FA', + name: 'R05FA - Opiumsderivater og ekspektorantia', + children: [ + { + id: 'R05FA02', + name: 'R05FA02 - opiumsderivater og ekspektorantia', + }, + ], + }, + ], + }, + ], + }, + { + id: 'R06', + name: 'R06 - ANTIHISTAMINER TIL SYSTEMISK BRUK', + children: [ + { + id: 'R06A', + name: 'R06A - ANTIHISTAMINER TIL SYSTEMISK BRUK', + children: [ + { + id: 'R06AB', + name: 'R06AB - Alkylaminer, substituerte', + children: [ + { + id: 'R06AB02', + name: 'R06AB02 - deksklorfeniramin', + }, + ], + }, + { + id: 'R06AD', + name: 'R06AD - Fentiazinderivater', + children: [ + { + id: 'R06AD01', + name: 'R06AD01 - alimemazin', + }, + { + id: 'R06AD02', + name: 'R06AD02 - prometazin', + }, + { + id: 'R06AD03', + name: 'R06AD03 - tietylperazin', + }, + ], + }, + { + id: 'R06AE', + name: 'R06AE - Piperazinderivater', + children: [ + { + id: 'R06AE03', + name: 'R06AE03 - syklizin', + }, + { + id: 'R06AE04', + name: 'R06AE04 - klorcyklizin', + }, + { + id: 'R06AE05', + name: 'R06AE05 - meklozin', + }, + { + id: 'R06AE07', + name: 'R06AE07 - cetirizin', + }, + { + id: 'R06AE09', + name: 'R06AE09 - levocetirizin', + }, + ], + }, + { + id: 'R06AX', + name: 'R06AX - Andre antihistaminer til systemisk bruk', + children: [ + { + id: 'R06AX02', + name: 'R06AX02 - cyproheptadin', + }, + { + id: 'R06AX12', + name: 'R06AX12 - terfenadin', + }, + { + id: 'R06AX13', + name: 'R06AX13 - loratadin', + }, + { + id: 'R06AX17', + name: 'R06AX17 - ketotifen', + }, + { + id: 'R06AX22', + name: 'R06AX22 - ebastin', + }, + { + id: 'R06AX26', + name: 'R06AX26 - feksofenadin', + }, + { + id: 'R06AX27', + name: 'R06AX27 - desloratadin', + }, + { + id: 'R06AX28', + name: 'R06AX28 - rupatadin', + }, + { + id: 'R06AX29', + name: 'R06AX29 - bilastin', + }, + ], + }, + { + id: 'R06AA', + name: 'R06AA - Aminoalkyletere', + children: [ + { + id: 'R06AA02', + name: 'R06AA02 - difenhydramin', + }, + { + id: 'R06AA04', + name: 'R06AA04 - klemastin', + }, + { + id: 'R06AA09', + name: 'R06AA09 - doksylamin', + }, + { + id: 'R06AA11', + name: 'R06AA11 - dimenhydrinat', + }, + { + id: 'R06AA52', + name: 'R06AA52 - difenhydramin, kombinasjoner', + }, + { + id: 'R06AA59', + name: 'R06AA59 - doksylamin, kombinasjoner', + }, + ], + }, + ], + }, + ], + }, + { + id: 'R07', + name: 'R07 - ANDRE MIDLER MED VIRKNING PÅ RESPIRASJONSSYSTEMET', + children: [ + { + id: 'R07A', + name: 'R07A - ANDRE MIDLER MED VIRKNING PÅ RESPIRASJONSSYSTEMET', + children: [ + { + id: 'R07AX', + name: 'R07AX - Andre midler med virkning på respirasjonssystemet', + children: [ + { + id: 'R07AX02', + name: 'R07AX02 - ivakaftor', + }, + { + id: 'R07AX30', + name: 'R07AX30 - ivakaftor og lumakaftor', + }, + { + id: 'R07AX31', + name: 'R07AX31 - ivakaftor og tezakaftor', + }, + { + id: 'R07AX32', + name: 'R07AX32 - ivakaftor, tezakaftor og eleksakaftor', + }, + ], + }, + { + id: 'R07AA', + name: 'R07AA - Lungesurfaktanter', + children: [ + { + id: 'R07AA02', + name: 'R07AA02 - naturlige fosfolipider', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'S', + name: 'S - SANSEORGANER', + children: [ + { + id: 'S01', + name: 'S01 - ØYEMIDLER', + children: [ + { + id: 'S01A', + name: 'S01A - ANTIINFEKTIVA', + children: [ + { + id: 'S01AD', + name: 'S01AD - Antivirale midler', + children: [ + { + id: 'S01AD01', + name: 'S01AD01 - idoksuridin', + }, + { + id: 'S01AD02', + name: 'S01AD02 - trifluridin', + }, + { + id: 'S01AD03', + name: 'S01AD03 - aciklovir', + }, + { + id: 'S01AD09', + name: 'S01AD09 - ganciklovir', + }, + ], + }, + { + id: 'S01AE', + name: 'S01AE - Fluorokinoloner', + children: [ + { + id: 'S01AE03', + name: 'S01AE03 - ciprofloksacin', + }, + { + id: 'S01AE07', + name: 'S01AE07 - moksifloksacin', + }, + ], + }, + { + id: 'S01AX', + name: 'S01AX - Andre antiinfektiva', + children: [ + { + id: 'S01AX05', + name: 'S01AX05 - bibrokatol', + }, + { + id: 'S01AX09', + name: 'S01AX09 - klorheksidin', + }, + { + id: 'S01AX15', + name: 'S01AX15 - propamidin', + }, + { + id: 'S01AX18', + name: 'S01AX18 - povidon, jodert', + }, + ], + }, + { + id: 'S01AA', + name: 'S01AA - Antibiotika', + children: [ + { + id: 'S01AA01', + name: 'S01AA01 - kloramfenikol', + }, + { + id: 'S01AA02', + name: 'S01AA02 - klortetrasyklin', + }, + { + id: 'S01AA10', + name: 'S01AA10 - natamycin', + }, + { + id: 'S01AA11', + name: 'S01AA11 - gentamicin', + }, + { + id: 'S01AA12', + name: 'S01AA12 - tobramycin', + }, + { + id: 'S01AA13', + name: 'S01AA13 - fusidinsyre', + }, + { + id: 'S01AA26', + name: 'S01AA26 - azitromycin', + }, + { + id: 'S01AA27', + name: 'S01AA27 - cefuroksim', + }, + { + id: 'S01AA28', + name: 'S01AA28 - vankomycin', + }, + { + id: 'S01AA30', + name: 'S01AA30 - kombinasjoner av ulike antibiotika', + }, + ], + }, + ], + }, + { + id: 'S01B', + name: 'S01B - ANTIINFLAMMATORISKE MIDLER', + children: [ + { + id: 'S01BA', + name: 'S01BA - Kortikosteroider, usammensatte', + children: [ + { + id: 'S01BA01', + name: 'S01BA01 - deksametason', + }, + { + id: 'S01BA02', + name: 'S01BA02 - hydrokortison', + }, + { + id: 'S01BA04', + name: 'S01BA04 - prednisolon', + }, + { + id: 'S01BA07', + name: 'S01BA07 - fluorometolon', + }, + { + id: 'S01BA09', + name: 'S01BA09 - klobetason', + }, + { + id: 'S01BA13', + name: 'S01BA13 - rimeksolon', + }, + ], + }, + { + id: 'S01BB', + name: 'S01BB - Kortikosteroider og mydriatika i kombinasjon', + children: [ + { + id: 'S01BB03', + name: 'S01BB03 - fluorometolon og mydriatika', + }, + ], + }, + { + id: 'S01BC', + name: 'S01BC - Antiinflammatoriske midler, ikke-steroide', + children: [ + { + id: 'S01BC03', + name: 'S01BC03 - diklofenak', + }, + { + id: 'S01BC10', + name: 'S01BC10 - nepafenak', + }, + { + id: 'S01BC11', + name: 'S01BC11 - bromfenak', + }, + ], + }, + ], + }, + { + id: 'S01C', + name: 'S01C - ANTIINFLAMMATORISKE MIDLER OG ANTIINFEKTIVA I KOMBINASJON', + children: [ + { + id: 'S01CA', + name: 'S01CA - Kortikosteroider og antiinfektiva i kombinasjon', + children: [ + { + id: 'S01CA01', + name: 'S01CA01 - deksametason og antiinfektiva', + }, + ], + }, + ], + }, + { + id: 'S01E', + name: 'S01E - GLAUKOMMIDLER OG MIOTIKA', + children: [ + { + id: 'S01EA', + name: 'S01EA - Sympatomimetika', + children: [ + { + id: 'S01EA01', + name: 'S01EA01 - adrenalin', + }, + { + id: 'S01EA02', + name: 'S01EA02 - dipivefrin', + }, + { + id: 'S01EA03', + name: 'S01EA03 - apraklonidin', + }, + { + id: 'S01EA05', + name: 'S01EA05 - brimonidin', + }, + ], + }, + { + id: 'S01EB', + name: 'S01EB - Parasympatomimetika', + children: [ + { + id: 'S01EB01', + name: 'S01EB01 - pilokarpin', + }, + { + id: 'S01EB02', + name: 'S01EB02 - karbakolin', + }, + { + id: 'S01EB09', + name: 'S01EB09 - acetylkolin', + }, + ], + }, + { + id: 'S01EC', + name: 'S01EC - Karboanhydrasehemmere', + children: [ + { + id: 'S01EC01', + name: 'S01EC01 - acetazolamid', + }, + { + id: 'S01EC02', + name: 'S01EC02 - diklofenamid', + }, + { + id: 'S01EC03', + name: 'S01EC03 - dorzolamid', + }, + { + id: 'S01EC04', + name: 'S01EC04 - brinzolamid', + }, + { + id: 'S01EC05', + name: 'S01EC05 - metazolamid', + }, + { + id: 'S01EC54', + name: 'S01EC54 - brinzolamid, kombinasjoner', + }, + ], + }, + { + id: 'S01ED', + name: 'S01ED - Betablokkere', + children: [ + { + id: 'S01ED01', + name: 'S01ED01 - timolol', + }, + { + id: 'S01ED02', + name: 'S01ED02 - betaksolol', + }, + { + id: 'S01ED51', + name: 'S01ED51 - timolol, kombinasjoner', + }, + ], + }, + { + id: 'S01EE', + name: 'S01EE - Prostaglandinanaloger', + children: [ + { + id: 'S01EE01', + name: 'S01EE01 - latanoprost', + }, + { + id: 'S01EE03', + name: 'S01EE03 - bimatoprost', + }, + { + id: 'S01EE04', + name: 'S01EE04 - travoprost', + }, + { + id: 'S01EE05', + name: 'S01EE05 - tafluprost', + }, + { + id: 'S01EE51', + name: 'S01EE51 - latanoprost og netarsudil', + }, + ], + }, + ], + }, + { + id: 'S01F', + name: 'S01F - MYDRIATIKA OG CYKLOPLEGIKA', + children: [ + { + id: 'S01FA', + name: 'S01FA - Antikolinergika', + children: [ + { + id: 'S01FA01', + name: 'S01FA01 - atropin', + }, + { + id: 'S01FA02', + name: 'S01FA02 - skopolamin', + }, + { + id: 'S01FA04', + name: 'S01FA04 - cyklopentolat', + }, + { + id: 'S01FA05', + name: 'S01FA05 - homatropin', + }, + { + id: 'S01FA06', + name: 'S01FA06 - tropikamid', + }, + { + id: 'S01FA54', + name: 'S01FA54 - cyklopentolat, kombinasjoner', + }, + ], + }, + { + id: 'S01FB', + name: 'S01FB - Sympatomimetika ekskl. antiglaukommidler', + children: [ + { + id: 'S01FB01', + name: 'S01FB01 - fenylefrin', + }, + ], + }, + ], + }, + { + id: 'S01G', + name: 'S01G - KARKONTRAHERENDE OG ANTIALLERGISKE MIDLER', + children: [ + { + id: 'S01GA', + name: 'S01GA - Karkontraherende midler (sympatomimetika)', + children: [ + { + id: 'S01GA01', + name: 'S01GA01 - nafazolin', + }, + { + id: 'S01GA51', + name: 'S01GA51 - nafazolin, kombinasjoner', + }, + { + id: 'S01GA52', + name: 'S01GA52 - tetryzolin, kombinasjoner', + }, + ], + }, + { + id: 'S01GX', + name: 'S01GX - Andre antiallergiske midler', + children: [ + { + id: 'S01GX01', + name: 'S01GX01 - natriumkromoglikat', + }, + { + id: 'S01GX02', + name: 'S01GX02 - levokabastin', + }, + { + id: 'S01GX04', + name: 'S01GX04 - nedokromil', + }, + { + id: 'S01GX05', + name: 'S01GX05 - lodoksamid', + }, + { + id: 'S01GX06', + name: 'S01GX06 - emedastin', + }, + { + id: 'S01GX07', + name: 'S01GX07 - azelastin', + }, + { + id: 'S01GX08', + name: 'S01GX08 - ketotifen', + }, + { + id: 'S01GX09', + name: 'S01GX09 - olopatadin', + }, + ], + }, + ], + }, + { + id: 'S01H', + name: 'S01H - LOKALANESTETIKA', + children: [ + { + id: 'S01HA', + name: 'S01HA - Lokalanestetika', + children: [ + { + id: 'S01HA02', + name: 'S01HA02 - oksybuprokain', + }, + { + id: 'S01HA03', + name: 'S01HA03 - tetrakain', + }, + { + id: 'S01HA04', + name: 'S01HA04 - proksymetakain', + }, + ], + }, + ], + }, + { + id: 'S01J', + name: 'S01J - DIAGNOSTIKA', + children: [ + { + id: 'S01JA', + name: 'S01JA - Fargestoffer', + children: [ + { + id: 'S01JA01', + name: 'S01JA01 - fluorescein', + }, + { + id: 'S01JA51', + name: 'S01JA51 - fluorescein, kombinasjoner', + }, + ], + }, + ], + }, + { + id: 'S01K', + name: 'S01K - MIDLER TIL BRUK VED OPERASJONER', + children: [ + { + id: 'S01KA', + name: 'S01KA - Viskoelastiske midler', + children: [ + { + id: 'S01KA01', + name: 'S01KA01 - hyaluronsyre', + }, + ], + }, + ], + }, + { + id: 'S01L', + name: 'S01L - MIDLER VED OKULÆR VASKULÆR SYKDOM', + children: [ + { + id: 'S01LA', + name: 'S01LA - Antineovaskulariserende midler', + children: [ + { + id: 'S01LA01', + name: 'S01LA01 - verteporfin', + }, + { + id: 'S01LA04', + name: 'S01LA04 - ranibizumab', + }, + { + id: 'S01LA05', + name: 'S01LA05 - aflibercept', + }, + ], + }, + ], + }, + { + id: 'S01X', + name: 'S01X - ANDRE ØYEMIDLER', + children: [ + { + id: 'S01XA', + name: 'S01XA - Andre øyemidler', + children: [ + { + id: 'S01XA03', + name: 'S01XA03 - natriumklorid, hyperton', + }, + { + id: 'S01XA08', + name: 'S01XA08 - acetylcystein', + }, + { + id: 'S01XA18', + name: 'S01XA18 - ciklosporin', + }, + { + id: 'S01XA20', + name: 'S01XA20 - indifferente midler', + }, + { + id: 'S01XA21', + name: 'S01XA21 - merkaptamin', + }, + { + id: 'S01XA25', + name: 'S01XA25 - lifitegrast', + }, + ], + }, + ], + }, + ], + }, + { + id: 'S02', + name: 'S02 - ØREMIDLER', + children: [ + { + id: 'S02A', + name: 'S02A - ANTIINFEKTIVA', + children: [ + { + id: 'S02AA', + name: 'S02AA - Antiinfektiva', + children: [ + { + id: 'S02AA01', + name: 'S02AA01 - kloramfenikol', + }, + { + id: 'S02AA03', + name: 'S02AA03 - borsyre', + }, + { + id: 'S02AA15', + name: 'S02AA15 - ciprofloksacin', + }, + ], + }, + ], + }, + { + id: 'S02B', + name: 'S02B - KORTIKOSTEROIDER', + children: [ + { + id: 'S02BA', + name: 'S02BA - Kortikosteroider', + children: [ + { + id: 'S02BA07', + name: 'S02BA07 - betametason', + }, + { + id: 'S02BA08', + name: 'S02BA08 - fluocinolonacetonid', + }, + ], + }, + ], + }, + { + id: 'S02C', + name: 'S02C - KORTIKOSTEROIDER OG ANTIINFEKTIVA I KOMBINASJON', + children: [ + { + id: 'S02CA', + name: 'S02CA - Kortikosteroider og antiinfektiva i kombinasjon', + children: [ + { + id: 'S02CA02', + name: 'S02CA02 - flumetason og antiinfektiva', + }, + { + id: 'S02CA05', + name: 'S02CA05 - fluocinolonacetonid og antiinfektiva', + }, + ], + }, + ], + }, + ], + }, + { + id: 'S03', + name: 'S03 - ØYE-OG ØREMIDLER', + children: [ + { + id: 'S03B', + name: 'S03B - KORTIKOSTEROIDER', + children: [ + { + id: 'S03BA', + name: 'S03BA - Kortikosteroider', + children: [ + { + id: 'S03BA01', + name: 'S03BA01 - deksametason', + }, + { + id: 'S03BA03', + name: 'S03BA03 - betametason', + }, + ], + }, + ], + }, + { + id: 'S03C', + name: 'S03C - KORTIKOSTEROIDER OG ANTIINFEKTIVA I KOMBINASJON', + children: [ + { + id: 'S03CA', + name: 'S03CA - Kortikosteroider og antiinfektiva i kombinasjon', + children: [ + { + id: 'S03CA01', + name: 'S03CA01 - deksametason og antiinfektiva', + }, + { + id: 'S03CA04', + name: 'S03CA04 - hydrokortison og antiinfektiva', + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + id: 'V', + name: 'V - VARIA', + children: [ + { + id: 'V01', + name: 'V01 - ALLERGENER', + children: [ + { + id: 'V01A', + name: 'V01A - ALLERGENER', + children: [ + { + id: 'V01AA', + name: 'V01AA - Allergenekstrakter', + children: [ + { + id: 'V01AA02', + name: 'V01AA02 - gresspollen', + }, + { + id: 'V01AA03', + name: 'V01AA03 - husstøvmidd', + }, + { + id: 'V01AA05', + name: 'V01AA05 - trepollen', + }, + { + id: 'V01AA07', + name: 'V01AA07 - insekter', + }, + { + id: 'V01AA10', + name: 'V01AA10 - blomster', + }, + { + id: 'V01AA11', + name: 'V01AA11 - dyr', + }, + ], + }, + ], + }, + ], + }, + { + id: 'V03', + name: 'V03 - ALLE ANDRE TERAPEUTISKE MIDLER', + children: [ + { + id: 'V03A', + name: 'V03A - ALLE ANDRE TERAPEUTISKE MIDLER', + children: [ + { + id: 'V03AB', + name: 'V03AB - Midler mot forgiftninger', + children: [ + { + id: 'V03AB01', + name: 'V03AB01 - ipekakuanharot', + }, + { + id: 'V03AB03', + name: 'V03AB03 - edetater', + }, + { + id: 'V03AB06', + name: 'V03AB06 - tiosulfat', + }, + { + id: 'V03AB09', + name: 'V03AB09 - dimerkaprol', + }, + { + id: 'V03AB13', + name: 'V03AB13 - obidoksim', + }, + { + id: 'V03AB14', + name: 'V03AB14 - protamin', + }, + { + id: 'V03AB15', + name: 'V03AB15 - nalokson', + }, + { + id: 'V03AB16', + name: 'V03AB16 - etanol', + }, + { + id: 'V03AB17', + name: 'V03AB17 - metyltioninklorid', + }, + { + id: 'V03AB19', + name: 'V03AB19 - fysostigmin', + }, + { + id: 'V03AB21', + name: 'V03AB21 - kaliumjodid', + }, + { + id: 'V03AB22', + name: 'V03AB22 - amylnitritt', + }, + { + id: 'V03AB25', + name: 'V03AB25 - flumazenil', + }, + { + id: 'V03AB32', + name: 'V03AB32 - glutation', + }, + { + id: 'V03AB33', + name: 'V03AB33 - hydroksokobalamin', + }, + ], + }, + { + id: 'V03AC', + name: 'V03AC - Jernbindende midler', + children: [ + { + id: 'V03AC01', + name: 'V03AC01 - deferoksamin', + }, + { + id: 'V03AC02', + name: 'V03AC02 - deferipron', + }, + { + id: 'V03AC03', + name: 'V03AC03 - deferasiroks', + }, + ], + }, + { + id: 'V03AE', + name: 'V03AE - Midler mot hyperkalemi og hyperfosfatemi', + children: [ + { + id: 'V03AE01', + name: 'V03AE01 - polystyrensulfonat', + }, + { + id: 'V03AE02', + name: 'V03AE02 - sevelamer', + }, + { + id: 'V03AE03', + name: 'V03AE03 - lantanumkarbonat', + }, + { + id: 'V03AE04', + name: 'V03AE04 - kalsiumacetat og magnesiumkarbonat', + }, + { + id: 'V03AE05', + name: 'V03AE05 - sukroferrioksihydroksid', + }, + { + id: 'V03AE07', + name: 'V03AE07 - kalsiumacetat', + }, + { + id: 'V03AE09', + name: 'V03AE09 - patiromerkalsium', + }, + { + id: 'V03AE10', + name: 'V03AE10 - natriumsirkoniumsyklosilikat', + }, + ], + }, + { + id: 'V03AF', + name: 'V03AF - Midler som motvirker toksisitet av antineoplastiske midler', + children: [ + { + id: 'V03AF01', + name: 'V03AF01 - mesna', + }, + { + id: 'V03AF03', + name: 'V03AF03 - kalsiumfolinat', + }, + { + id: 'V03AF04', + name: 'V03AF04 - kalsiumlevofolinat', + }, + { + id: 'V03AF07', + name: 'V03AF07 - rasburikase', + }, + ], + }, + { + id: 'V03AG', + name: 'V03AG - Midler mot hyperkalsemi', + children: [ + { + id: 'V03AG05', + name: 'V03AG05 - natriumfosfat', + }, + ], + }, + { + id: 'V03AH', + name: 'V03AH - Midler mot hypoglykemi', + children: [ + { + id: 'V03AH01', + name: 'V03AH01 - diazoksid', + }, + ], + }, + { + id: 'V03AN', + name: 'V03AN - Medisinske gasser', + children: [ + { + id: 'V03AN01', + name: 'V03AN01 - oksygen', + }, + ], + }, + { + id: 'V03AX', + name: 'V03AX - Andre terapeutiske midler', + }, + { + id: 'V03AZ', + name: 'V03AZ - Midler til nervelammelse', + children: [ + { + id: 'V03AZ01', + name: 'V03AZ01 - etanol', + }, + ], + }, + ], + }, + ], + }, + { + id: 'V04', + name: 'V04 - DIAGNOSTIKA', + children: [ + { + id: 'V04C', + name: 'V04C - ANDRE DIAGNOSTIKA', + children: [ + { + id: 'V04CA', + name: 'V04CA - Midler til diabetesundersøkelse', + children: [ + { + id: 'V04CA02', + name: 'V04CA02 - glukose', + }, + ], + }, + { + id: 'V04CB', + name: 'V04CB - Midler til undersøkelse av fettabsorbsjon', + children: [ + { + id: 'V04CB01', + name: 'V04CB01 - vitamin-a-konsentrat', + }, + ], + }, + { + id: 'V04CD', + name: 'V04CD - Midler til undersøkelse av hypofysefunksjoner', + children: [ + { + id: 'V04CD01', + name: 'V04CD01 - metyrapon', + }, + ], + }, + { + id: 'V04CF', + name: 'V04CF - Midler til tuberkuloseundersøkelse', + children: [ + { + id: 'V04CF01', + name: 'V04CF01 - tuberkulin', + }, + ], + }, + { + id: 'V04CH', + name: 'V04CH - Midler til test av nyrefunksjon og skader i urinveiene', + children: [ + { + id: 'V04CH02', + name: 'V04CH02 - indigokarmin', + }, + ], + }, + { + id: 'V04CL', + name: 'V04CL - Midler til allergidiagnostikk', + }, + { + id: 'V04CM', + name: 'V04CM - Midler til undersøkelse av fertilitetsforstyrrelser', + children: [ + { + id: 'V04CM01', + name: 'V04CM01 - gonadorelin', + }, + ], + }, + { + id: 'V04CX', + name: 'V04CX - Andre diagnostika', + children: [ + { + id: 'V04CX03', + name: 'V04CX03 - metakolin', + }, + { + id: 'V04CX04', + name: 'V04CX04 - mannitol', + }, + { + id: 'V04CX05', + name: 'V04CX05 - 13c-urea', + }, + ], + }, + ], + }, + ], + }, + { + id: 'V06', + name: 'V06 - NUTRIENTIA', + children: [ + { + id: 'V06C', + name: 'V06C - BARNEDIETTER', + }, + { + id: 'V06D', + name: 'V06D - ANDRE NUTRIENTIA', + children: [ + { + id: 'V06DA', + name: 'V06DA - Karbohydrater, proteiner, mineraler og vitaminer, kombinasjoner', + }, + { + id: 'V06DB', + name: 'V06DB - Fett, karbohydrater, proteiner, mineraler, vitaminer', + }, + { + id: 'V06DC', + name: 'V06DC - Karbohydrater', + children: [ + { + id: 'V06DC01', + name: 'V06DC01 - glukose', + }, + ], + }, + { + id: 'V06DD', + name: 'V06DD - Aminosyrer, inkl. kombinasjoner med polypeptider', + }, + { + id: 'V06DX', + name: 'V06DX - Andre kombinasjoner av næringsmidler', + }, + ], + }, + ], + }, + { + id: 'V07', + name: 'V07 - ALLE ANDRE IKKE-TERAPEUTISKE MIDLER', + children: [ + { + id: 'V07A', + name: 'V07A - ALLE ANDRE IKKE-TERAPEUTISKE MIDLER', + children: [ + { + id: 'V07AB', + name: 'V07AB - Oppløsnings-og fortynningsvæsker, inkl. skyllemidler', + }, + { + id: 'V07AD', + name: 'V07AD - Hjelpemidler ved blodprøver', + }, + { + id: 'V07AY', + name: 'V07AY - Andre ikke-terapeutiske hjelpeprodukter', + }, + { + id: 'V07AZ', + name: 'V07AZ - Analysekjemikalier og reagenser', + }, + ], + }, + ], + }, + { + id: 'V08', + name: 'V08 - KONTRASTMIDLER', + children: [ + { + id: 'V08A', + name: 'V08A - RØNTGENKONTRASTMIDLER, MED JOD', + children: [ + { + id: 'V08AB', + name: 'V08AB - Vannløselige, nefrotrope, lavosmolære røntgenkontrastmidler', + children: [ + { + id: 'V08AB02', + name: 'V08AB02 - joheksol', + }, + ], + }, + { + id: 'V08AD', + name: 'V08AD - Ikke-vannløselige røntgenkontrastmidler', + children: [ + { + id: 'V08AD01', + name: 'V08AD01 - etylestre av joderte fettsyrer', + }, + ], + }, + { + id: 'V08AA', + name: 'V08AA - Vannløselige, nefrotrope, høyosmolære røntgenkontrastmidler', + children: [ + { + id: 'V08AA01', + name: 'V08AA01 - diatrizoinsyre', + }, + ], + }, + ], + }, + { + id: 'V08B', + name: 'V08B - RØNTGENKONTRASTMIDLER, UTEN JOD', + children: [ + { + id: 'V08BA', + name: 'V08BA - Bariumsulfatholdige røntgenkontrastmidler', + children: [ + { + id: 'V08BA01', + name: 'V08BA01 - bariumsulfat med suspensjonsmidler', + }, + ], + }, + ], + }, + { + id: 'V08D', + name: 'V08D - KONTRASTMIDLER FOR ULTRALYD', + children: [ + { + id: 'V08DA', + name: 'V08DA - Kontrastmidler for ultralyd', + children: [ + { + id: 'V08DA02', + name: 'V08DA02 - mikropartikler av galaktose', + }, + { + id: 'V08DA05', + name: 'V08DA05 - svovelheksafluorid, fosfolipidmikrosfærer', + }, + ], + }, + ], + }, + ], + }, + ], + }, +]; diff --git a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html index 22d02454..1b58485c 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html @@ -8,6 +8,8 @@
diff --git a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts index 19d4b9e3..158bd5a7 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts @@ -6,6 +6,8 @@ import { FhiTreeViewSelectionItem, } from '@folkehelseinstituttet/angular-components'; +import { alleAtcKoderSomItems } from './alle_atckoder_som_items'; + @Component({ selector: 'app-tree-views', templateUrl: './tree-views.component.html', @@ -25,20 +27,18 @@ export class TreeViewsComponent implements OnInit { constructor(private changeDetector: ChangeDetectorRef) {} ngOnInit() { - this.itemsCheck = this.getTreeviewSelectionItems(); - this.itemsRadio = this.getTreeviewSelectionItems(); + this.itemsCheck = this.getTreeviewCheckboxItems(); + this.itemsRadio = this.getTreeViewRadioItems(); this.treeNavItems = this.getTreeviewNavigationItems(); this.changeDetector.detectChanges(); } onCheckboxChange(items: FhiTreeViewSelectionItem[]) { this.itemsCheck = items; - console.info('checkbox items: ', this.itemsCheck); } onRadioChange(items: FhiTreeViewSelectionItem[]) { this.itemsRadio = items; - console.info('radio items: ', this.itemsRadio); } private getTreeviewNavigationItems(): FhiTreeViewNavigationItem[] { @@ -84,7 +84,11 @@ export class TreeViewsComponent implements OnInit { ]; } - private getTreeviewSelectionItems(): FhiTreeViewSelectionItem[] { + private getTreeviewCheckboxItems(): FhiTreeViewSelectionItem[] { + return alleAtcKoderSomItems; + } + + private getTreeViewRadioItems(): FhiTreeViewSelectionItem[] { return [ { name: 'For utviklere', diff --git a/src/app/views/shared/library/library-copy-button/library-copy-button.component.html b/src/app/views/shared/library/library-copy-button/library-copy-button.component.html index 65a46ba5..d78c1c25 100644 --- a/src/app/views/shared/library/library-copy-button/library-copy-button.component.html +++ b/src/app/views/shared/library/library-copy-button/library-copy-button.component.html @@ -1,4 +1,4 @@ -
+
+ + + +
+
+
+
@@ -85,35 +82,30 @@

{{ diagramOptions.title }}

Fullskjerm - +
- - - -
- +
- - +
diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index d40faa5f..76ea3803 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -11,8 +11,10 @@ import { import { first } from 'rxjs'; import * as Highcharts from 'highcharts'; import * as Highmaps from 'highcharts/highmaps'; -import { Options } from 'highcharts'; +import { Chart, Options } from 'highcharts'; import HighchartsAccessibility from 'highcharts/modules/accessibility'; +import HighchartsExporting from 'highcharts/modules/exporting'; +import HighchartsOfflineExporting from 'highcharts/modules/offline-exporting'; import { FhiDiagramOptions, FhiDiagramTypeIds } from './models/fhi-diagram-options.model'; import { FhiDiagramSerie } from './models/fhi-diagram-serie.model'; @@ -36,6 +38,11 @@ import { TableData } from './models/table-data.model'; import { DiagramTypeGroup } from './models/diagram-type-group.model'; import { MetadataForSerie } from './models/metadata-for-serie.model'; import { FlaggedSerie } from './models/flagged-serie.model'; +import { DownloadService } from './services/download.service'; + +enum ControlsPopoverMenuActions { + downloadSvg = 'downloadSvg', +} @Component({ selector: 'fhi-angular-highcharts', @@ -44,6 +51,7 @@ import { FlaggedSerie } from './models/flagged-serie.model'; }) export class FhiAngularHighchartsComponent implements OnChanges { private allSerieNames: string[] = []; + private chartInstance!: Chart; @Input() diagramOptions!: FhiDiagramOptions; @@ -64,6 +72,7 @@ export class FhiAngularHighchartsComponent implements OnChanges { showDefaultChartTemplate: boolean; showDiagramTypeDisabledWarning: boolean; showDiagramTypeNav: boolean; + showDownloadButton: boolean; showDuplicateSerieNameError: boolean; showFooter: boolean; showFullScreenButton: boolean; @@ -72,6 +81,7 @@ export class FhiAngularHighchartsComponent implements OnChanges { constructor( private changeDetector: ChangeDetectorRef, + private downloadService: DownloadService, private optionsService: OptionsService, private diagramTypeGroupService: DiagramTypeGroupService, private tableService: TableService, @@ -79,6 +89,8 @@ export class FhiAngularHighchartsComponent implements OnChanges { ) { HighchartsAccessibility(Highcharts); HighchartsAccessibility(Highmaps); + HighchartsExporting(Highcharts); + HighchartsOfflineExporting(Highcharts); this.highcharts.setOptions({ lang: { decimalPoint: ',', @@ -105,6 +117,20 @@ export class FhiAngularHighchartsComponent implements OnChanges { } } + onChartInstance(chartInstance: Chart) { + this.chartInstance = chartInstance; + } + + onControlsPopoverMenuAction(actionName: string) { + if (actionName === ControlsPopoverMenuActions.downloadSvg) { + this.downloadService.downloadImage( + this.chartInstance, + 'image/svg+xml', + this.diagramOptions.title, + ); + } + } + onDiagramTypeNavigation(diagramType: DiagramType) { this.diagramTypeNavigation.emit(diagramType.id as FhiDiagramTypeIds); } @@ -270,6 +296,7 @@ export class FhiAngularHighchartsComponent implements OnChanges { this.diagramOptions.activeDiagramType, ); this.showDiagramTypeDisabledWarning = diagramTypeIsDisabled ? true : false; + this.showDownloadButton = diagramTypeIsDisabled ? false : this.canShowDownloadButton(); this.showFooter = diagramTypeIsDisabled ? false : this.canShowFooter(); this.showFullScreenButton = !!this.diagramOptions.controls?.fullScreenButton?.show; this.showMetadataButton = !!this.diagramOptions.controls?.metadataButton?.show; @@ -344,6 +371,13 @@ export class FhiAngularHighchartsComponent implements OnChanges { }); } + private canShowDownloadButton(): boolean { + return ( + !!this.diagramOptions.controls?.downloadButton?.show && + this.diagramOptions.activeDiagramType !== 'table' + ); + } + private canShowFooter(): boolean { if (this.showMap && !this.diagramOptions.openSource) { return true; diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.module.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.module.ts index 7d45f9eb..bb8b5f6a 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.module.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.module.ts @@ -4,8 +4,12 @@ import { FormsModule } from '@angular/forms'; import { HighchartsChartModule } from 'highcharts-angular'; import { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap'; -import { FhiModalComponent } from '@folkehelseinstituttet/angular-components'; +import { + FhiModalComponent, + FhiPopoverMenuComponent, +} from '@folkehelseinstituttet/angular-components'; +import { DownloadService } from './services/download.service'; import { OptionsService } from './services/options.service'; import { TableService } from './services/table.service'; import { DiagramTypeGroupService } from './services/diagram-type-group.service'; @@ -22,9 +26,16 @@ import { FhiDiagramTypeNavDefaultComponent } from './fhi-diagram-type-navs/fhi-d HighchartsChartModule, NgbPopoverModule, FhiModalComponent, + FhiPopoverMenuComponent, FhiDiagramTypeNavDefaultComponent, ], exports: [FhiAngularHighchartsComponent], - providers: [TopoJsonService, DiagramTypeGroupService, OptionsService, TableService], + providers: [ + TopoJsonService, + DiagramTypeGroupService, + DownloadService, + OptionsService, + TableService, + ], }) export class FhiAngularHighchartsModule {} diff --git a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-controls.model.ts b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-controls.model.ts index 8e75ef6b..fceac7f7 100644 --- a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-controls.model.ts +++ b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-controls.model.ts @@ -2,6 +2,9 @@ import { DiagramTypeNavIds } from '../constants-and-enums/diagram-type-nav-ids'; import { ChartTypeIds, MapTypeIds } from '../constants-and-enums/diagram-type-ids'; export interface FhiDiagramControls { + downloadButton?: { + show: boolean; + }; fullScreenButton?: { show: boolean; }; diff --git a/projects/fhi-angular-highcharts/src/lib/services/chart-instance.service.ts b/projects/fhi-angular-highcharts/src/lib/services/chart-instance.service.ts deleted file mode 100644 index 82b04ec3..00000000 --- a/projects/fhi-angular-highcharts/src/lib/services/chart-instance.service.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Chart } from 'highcharts'; - -@Injectable() -export class ChartInstanceService { - private _chart!: Chart; - - set chart(chart: Chart) { - this._chart = chart; - } - get chart(): Chart { - return this._chart; - } -} diff --git a/projects/fhi-angular-highcharts/src/lib/services/csv.service.ts b/projects/fhi-angular-highcharts/src/lib/services/csv.service.ts deleted file mode 100644 index c3cf2441..00000000 --- a/projects/fhi-angular-highcharts/src/lib/services/csv.service.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable() -export class CsvService { - private _csv!: string; - - set csv(chartCsv: string) { - this._csv = chartCsv; - } - - get csv(): string { - return this._csv; - } -} diff --git a/projects/fhi-angular-highcharts/src/lib/services/download.service.ts b/projects/fhi-angular-highcharts/src/lib/services/download.service.ts index 88cdd267..bc3ab6fc 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/download.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/download.service.ts @@ -1,63 +1,27 @@ import { Injectable } from '@angular/core'; import { formatDate } from '@angular/common'; -import { Options, ExportingMimeTypeValue, ExportingOptions } from 'highcharts'; - -import { ChartInstanceService } from './chart-instance.service'; -import { CsvService } from './csv.service'; -import { FhiDiagramOptions } from '../models/diagram-type.model'; +import { Chart, ExportingMimeTypeValue, ExportingOptions } from 'highcharts'; @Injectable() export class DownloadService { - constructor( - private chartInstanceService: ChartInstanceService, - private csvService: CsvService, - ) {} - - private diagramOptions!: FhiDiagramOptions; - - setConfig(diagramOptions: FhiDiagramOptions) { - this.diagramOptions = diagramOptions; - } - - downloadImage(MIMEtype: ExportingMimeTypeValue) { + downloadImage(chartInstance: Chart, MIMEtype: ExportingMimeTypeValue, title: string) { + if (!chartInstance) { + console.warn(`No "chartInstance", can't download chart.`); + return; + } const exportingOptions: ExportingOptions = { type: MIMEtype, sourceWidth: 1200, sourceHeight: 800, - filename: this.getFilename(), + filename: this.getFilename(title), }; - const chartOptions: Options = { - chart: { - spacingBottom: this.diagramOptions.disclaimer ? 100 : 50, - }, - }; - this.chartInstanceService.chart.exportChartLocal(exportingOptions, chartOptions); - } - - downloadCSV() { - const filename = this.getFilename().concat('.csv'); - const credits = `"${this.diagramOptions.creditsText}"\n\n\n`; - this.downloadBlob(credits.concat(this.csvService.csv), filename); + chartInstance.exportChartLocal(exportingOptions); } - private getFilename() { + private getFilename(title: string) { + const formattedTitle = title.replace(/ /gi, '-').replace(/,/gi, '').replace(/---/gi, '-'); const today = formatDate(new Date(), 'yyyy-MM-dd', 'nb-NO'); - const title = this.diagramOptions.title - .replace(/ /gi, '-') - .replace(/,/gi, '') - .replace(/---/gi, '-'); - const filename = today.concat('.', title.toLowerCase()); + const filename = today.concat('.', formattedTitle.toLowerCase()); return filename; } - - private downloadBlob(blob: string, filename: string) { - const body = window.document.body; - const link = document.createElement('a'); - const url = URL.createObjectURL(new Blob(['\ufeff', blob])); - link.href = url; - link.download = filename; - body.appendChild(link); - link.click(); - body.removeChild(link); - } } diff --git a/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-nav.block.scss b/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-nav.block.scss index cbbaa0cf..7df56f34 100644 --- a/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-nav.block.scss +++ b/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-nav.block.scss @@ -1,60 +1,40 @@ -.fhi-highcharts-nav { - container-name: highcharts-nav; +.fhi-diagram-controls { + container-name: diagramControls; container-type: inline-size; - flex-grow: 1; position: relative; z-index: 1; - &__standalone-btn { - container-name: highcharts-nav__standalone-btns; - container-type: inline-size; - } - - &__meta-btn--push-end { + &__navigation, + &__metadata { margin-right: $fhi-core-space-3; + margin-bottom: $fhi-core-space-3; } } -// < 360px -@container highcharts-nav (width < 22.5rem) { - .fhi-highcharts-nav { - .fhi-btn-group { - flex-direction: column; - align-items: flex-start; - justify-content: center; - - > .btn { - width: 100%; - } - } +@container diagramControls (max-width: #{$fhi-core-px * 449}) { + .fhi-btn-group { + flex-direction: column; + align-items: flex-start; + justify-content: center; - &__standalone-btns { - text-align: right; + &__btn { + width: 100%; } - &__meta-btn { - display: block; - - &--push-end { - margin-right: 0; - } + &__split-btn { + min-width: $fhi-core-px * 99; } + } - .dropdown-menu { - left: calc(#{$fhi-core-px} * -97) !important; - } + .dropdown-menu { + left: calc(#{$fhi-core-px} * -97) !important; } } -// < 322px -@container highcharts-nav (width < 20.125rem) { - .fhi-highcharts-nav { - &__meta-btn { - display: inline; - - &--push-end { - margin-right: $fhi-core-space-3; - } +@container diagramControls (min-width: #{$fhi-core-px * 288}) { + .fhi-diagram-controls { + &__metadata { + margin-bottom: 0; } } } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 8fd1c15d..283c4d27 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -160,6 +160,9 @@ export class HighchartsComponent implements OnInit { activeDiagramType: 'column', title: this.titles.title_3a, controls: { + downloadButton: { + show: true, + }, fullScreenButton: { show: true, }, diff --git a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html index 1b58485c..438a0f07 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html @@ -9,7 +9,6 @@ [items]="itemsCheck" [enableCheckAll]="true" [enableFilter]="true" - filterLabel="ATC-koder" (itemsChange)="onCheckboxChange($event)" > diff --git a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts index 158bd5a7..f15792e9 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.ts @@ -6,7 +6,7 @@ import { FhiTreeViewSelectionItem, } from '@folkehelseinstituttet/angular-components'; -import { alleAtcKoderSomItems } from './alle_atckoder_som_items'; +// import { alleAtcKoderSomItems } from './alle_atckoder_som_items'; // use this for stress testing fhi-tree-view-checkbox or fhi-tree-view-radio with large dataset @Component({ selector: 'app-tree-views', @@ -17,18 +17,16 @@ export class TreeViewsComponent implements OnInit { @Input() items!: LibraryItemsShared; treeNavItems: FhiTreeViewNavigationItem[]; - itemsCheck!: FhiTreeViewSelectionItem[]; itemsRadio!: FhiTreeViewSelectionItem[]; - checkAll: boolean = true; hasRadioButtons: boolean = true; constructor(private changeDetector: ChangeDetectorRef) {} ngOnInit() { - this.itemsCheck = this.getTreeviewCheckboxItems(); - this.itemsRadio = this.getTreeViewRadioItems(); + this.itemsCheck = this.getTreeViewSelectionItems(); + this.itemsRadio = this.getTreeViewSelectionItems(); this.treeNavItems = this.getTreeviewNavigationItems(); this.changeDetector.detectChanges(); } @@ -84,11 +82,7 @@ export class TreeViewsComponent implements OnInit { ]; } - private getTreeviewCheckboxItems(): FhiTreeViewSelectionItem[] { - return alleAtcKoderSomItems; - } - - private getTreeViewRadioItems(): FhiTreeViewSelectionItem[] { + private getTreeViewSelectionItems(): FhiTreeViewSelectionItem[] { return [ { name: 'For utviklere', From da94070a7960de8675e75016319d4576f9d5ddaa Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 14 Aug 2024 10:00:10 +0200 Subject: [PATCH 08/52] Bugfix/treeview problem (#630) Improve the generation of ID's in the FhiTreeViewSelectionComponent This closes #628 --- .../fhi-tree-view-selection.component.html | 27 ++++++++++--------- .../fhi-tree-view-selection.component.ts | 24 +++++++---------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.html b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.html index e657f52b..471d4cb5 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.html +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.html @@ -1,17 +1,19 @@
- +
    @@ -52,7 +53,7 @@
    @@ -83,7 +84,7 @@
@@ -132,7 +133,7 @@
diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts index da521131..15829826 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts @@ -6,6 +6,7 @@ import { OnChanges, OnInit, Output, + SimpleChanges, ViewEncapsulation, } from '@angular/core'; import { CommonModule } from '@angular/common'; @@ -36,11 +37,7 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { filterString = ''; minimumFilterLength: number = 3; searchMode: boolean = false; - uniqueFilterId: string; - - constructor() { - this.uniqueFilterId = this.generateUniqueFilterId(); - } + instanceID = crypto.randomUUID(); ngOnInit() { if (this.enableCheckAll) { @@ -49,9 +46,9 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { this.filteredItems = [...this.items]; } - ngOnChanges() { - if (this.items !== undefined) { - this.createIds(this.items, 1); + ngOnChanges(changes: SimpleChanges) { + if (changes['items'].currentValue !== undefined) { + this.createIds(this.items); this.updateDecendantState(this.items, true); } } @@ -143,10 +140,6 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { return filterItems(treeData); } - private generateUniqueFilterId(): string { - return 'search-filter-' + Math.random().toString(36).substring(2, 11); - } - private updateCheckedState( id: number | string, items: Item[], @@ -218,13 +211,14 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { return itemsState; } - private createIds(items: Item[], id: number) { + private createIds(items: Item[], id?: number) { + let itemID = id ? id : 0; items.forEach((item) => { if (item.id === undefined) { - item.id = id++; + item.id = this.instanceID + '-' + itemID++; } if (item.children && item.children.length > 0) { - this.createIds(item.children, (id - 1) * 10 + 1); + this.createIds(item.children, itemID * 10); } }); } From a71a815e3cd9ba5f0328b8bc426cab9857979496 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 21 Aug 2024 14:49:12 +0200 Subject: [PATCH 09/52] Enhancement/highcharts update color palette (#634) --- Fhi.Frontend.Style | 2 +- projects/fhi-angular-highcharts/CHANGELOG.md | 3 +- .../lib/fhi-angular-highcharts.component.ts | 18 ++-- .../lib/highcharts-options/options-charts.ts | 2 +- .../lib/highcharts-options/options-maps.ts | 4 - .../lib/models/metadata-for-serie.model.ts | 1 + .../src/lib/services/options.service.ts | 43 ++++++++++ .../src/styles/{ => blocks}/_mixins.scss | 0 .../src/styles/import/_all.scss | 86 +++++++++++-------- .../src/styles/theme/_shared.scss | 41 +++++++++ .../src/styles/theme/_variables.scss | 81 ++--------------- 11 files changed, 155 insertions(+), 126 deletions(-) rename projects/fhi-angular-highcharts/src/styles/{ => blocks}/_mixins.scss (100%) diff --git a/Fhi.Frontend.Style b/Fhi.Frontend.Style index fecc18ba..248a4018 160000 --- a/Fhi.Frontend.Style +++ b/Fhi.Frontend.Style @@ -1 +1 @@ -Subproject commit fecc18ba4b24880701a157cd5726a0a0dabe9957 +Subproject commit 248a4018e366acf5e0f756ea37977ba5a56d076c diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index b555e57c..caf5c30e 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,7 +1,8 @@ # Unreleased -> Jul 16, 2024 +> Aug 20, 2024 +* :tada: **Enhancement** Add new color palette, extend the color count to 20, and add support for negative values in map gradient (red to blue) * :tada: **Enhancement** Add support for SVG export ## 4.1.0 diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index 76ea3803..05de00f5 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -226,6 +226,7 @@ export class FhiAngularHighchartsComponent implements OnChanges { decimals: this.getVerifiedMaxDecimalCount(serie), hasDecimalData: this.serieHasDecimalDataPoints(serie), hasNegativeData: this.serieHasNegativeDataPoints(serie), + hasPositiveData: this.serieHasPositiveDataPoints(serie), }); } @@ -248,20 +249,21 @@ export class FhiAngularHighchartsComponent implements OnChanges { const decimalData = serie.data.filter( (dataPoint) => typeof dataPoint.y === 'number' && dataPoint.y % 1 != 0, ); - if (decimalData.length !== 0) { - return true; - } - return false; + return decimalData.length !== 0; } private serieHasNegativeDataPoints(serie: FhiDiagramSerie): boolean { const negativeData = serie.data.filter( (dataPoint) => typeof dataPoint.y === 'number' && dataPoint.y < 0, ); - if (negativeData.length !== 0) { - return true; - } - return false; + return negativeData.length > 0; + } + + private serieHasPositiveDataPoints(serie: FhiDiagramSerie): boolean { + const positiveData = serie.data.filter( + (dataPoint) => typeof dataPoint.y === 'number' && dataPoint.y >= 0, + ); + return positiveData.length > 0; } private updateDiagramTypeGroups() { diff --git a/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts b/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts index 8ca75647..80c76031 100644 --- a/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts +++ b/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts @@ -1,6 +1,6 @@ export const OptionsCharts = { chart: { - colorCount: 9, + colorCount: 20, }, legend: { align: 'left', diff --git a/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-maps.ts b/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-maps.ts index 0ff20624..98f8c9f9 100644 --- a/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-maps.ts +++ b/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-maps.ts @@ -25,8 +25,4 @@ export const OptionsMaps = { verticalAlign: buttonOptionsVerticalAlignValue, }, }, - colorAxis: { - maxColor: '#32345C', - minColor: '#95e8ff', - }, }; diff --git a/projects/fhi-angular-highcharts/src/lib/models/metadata-for-serie.model.ts b/projects/fhi-angular-highcharts/src/lib/models/metadata-for-serie.model.ts index c0a8fc1f..ccf9a3bc 100644 --- a/projects/fhi-angular-highcharts/src/lib/models/metadata-for-serie.model.ts +++ b/projects/fhi-angular-highcharts/src/lib/models/metadata-for-serie.model.ts @@ -2,4 +2,5 @@ export interface MetadataForSerie { decimals: number; hasDecimalData?: boolean; hasNegativeData?: boolean; + hasPositiveData?: boolean; } diff --git a/projects/fhi-angular-highcharts/src/lib/services/options.service.ts b/projects/fhi-angular-highcharts/src/lib/services/options.service.ts index 2aab8905..5856fdcb 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/options.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/options.service.ts @@ -74,6 +74,49 @@ export class OptionsService { } private updateMapOptions(options: Options): Options { + const hasNegativeData = !!this.metadataForSeries.find((serie) => serie.hasNegativeData); + const hasPositiveData = !!this.metadataForSeries.find((serie) => serie.hasPositiveData); + const colorAxis = options.colorAxis; + const stopsPositive: Array<[number, string]> = [ + [0, '#ffffff'], + [0.17, '#c8e1ec'], // B2-90 + [0.33, '#8fc5dc'], // B2-80 + [0.5, '#65a9c5'], // B2-70 + [0.67, '#4089a7'], // B2-60 + [0.83, '#2a6a82'], // B2-50 + [1, '#234e5f'], // B2-40 + ]; + const stopsNegative: Array<[number, string]> = [ + [0, '#7b2623'], // R1-40 + [0.17, '#a93c38'], // R1-50 + [0.33, '#d74b46'], // R1-60 + [0.5, '#ec7c73'], // R1-70 + [0.67, '#fda49b'], // R1-80 + [0.83, '#ffd2cc'], // R1-90 + [1, '#ffffff'], + ]; + const stopsNegativeAndPositive: Array<[number, string]> = [ + [0, '#7b2623'], // R1-40 + [0.08, '#a93c38'], // R1-50 + [0.17, '#d74b46'], // R1-60 + [0.25, '#ec7c73'], // R1-70 + [0.33, '#fda49b'], // R1-80 + [0.42, '#ffd2cc'], // R1-90 + [0.5, '#ffffff'], + [0.58, '#c8e1ec'], // B2-90 + [0.67, '#8fc5dc'], // B2-80 + [0.75, '#65a9c5'], // B2-70 + [0.83, '#4089a7'], // B2-60 + [0.92, '#2a6a82'], // B2-50 + [1, '#234e5f'], // B2-40 + ]; + if (hasNegativeData && hasPositiveData) { + options.colorAxis = { ...colorAxis, stops: stopsNegativeAndPositive }; + } else if (hasNegativeData) { + options.colorAxis = { ...colorAxis, stops: stopsNegative }; + } else { + options.colorAxis = { ...colorAxis, stops: stopsPositive }; + } options.chart.map = this.diagramOptions.activeDiagramType; options.series = [ this.topoJsonService.getHighmapsSerie(this.getSeriesWithoutFlaggedDataPoints()[0]), diff --git a/projects/fhi-angular-highcharts/src/styles/_mixins.scss b/projects/fhi-angular-highcharts/src/styles/blocks/_mixins.scss similarity index 100% rename from projects/fhi-angular-highcharts/src/styles/_mixins.scss rename to projects/fhi-angular-highcharts/src/styles/blocks/_mixins.scss diff --git a/projects/fhi-angular-highcharts/src/styles/import/_all.scss b/projects/fhi-angular-highcharts/src/styles/import/_all.scss index 6c8a3455..d7d49a12 100644 --- a/projects/fhi-angular-highcharts/src/styles/import/_all.scss +++ b/projects/fhi-angular-highcharts/src/styles/import/_all.scss @@ -1,49 +1,63 @@ -@import "../theme/variables"; @import "highcharts/css/highcharts"; -@import "../mixins"; +:root { + // Data series and points (extends default FHI color palette) + // NB! OptionsCharts.chart.colorCount must match number of different colors here. + + // Qualitative A (Main Series) + --highcharts-color-0: #ec7c73; // R1-70 + --highcharts-color-1: #40436d; // B1-40 + --highcharts-color-2: #61d2b2; // GR1-80 + --highcharts-color-3: #a93c38; // R1-50 + --highcharts-color-4: #f9dc8c; // GU1-90 + --highcharts-color-5: #7176c9; // B1-60 + --highcharts-color-6: #e0f0f7; // B2-95 + --highcharts-color-7: #09181f; // B2-20 + + // Qualitative B (Additional/Extras) + --highcharts-color-8: #65a9c5; // B2-70 + --highcharts-color-9: #f0af5e; // GU1-50 + --highcharts-color-10: #2a6a82; // B2-80 + --highcharts-color-11: #fee9e6; // R1-95 + --highcharts-color-12: #179463; // GR1-60 + --highcharts-color-13: #c8e1ec; // B2-90 + --highcharts-color-14: #65a9c5; // B2-70 + --highcharts-color-15: #f0af5e; // GU1-50 + --highcharts-color-16: #2a6a82; // B2-80 + --highcharts-color-17: #fee9e6; // R1-95 + --highcharts-color-18: #179463; // GR1-60 + --highcharts-color-19: #c8e1ec; // B2-90 + + // Neutral color variations + // https://www.highcharts.com/samples/highcharts/css/palette-helper + --highcharts-background-color: #{$fhi-core-white}; + --highcharts-neutral-color-100: #000000; + --highcharts-neutral-color-80: #333333; + --highcharts-neutral-color-60: #666666; + --highcharts-neutral-color-40: #999999; + --highcharts-neutral-color-20: #cccccc; + --highcharts-neutral-color-10: #e6e6e6; + --highcharts-neutral-color-5: #f2f2f2; + --highcharts-neutral-color-3: #f7f7f7; + + // Highlight color variations + --highcharts-highlight-color-100: #0022ff; + --highcharts-highlight-color-80: #334eff; + --highcharts-highlight-color-60: #667aff; + --highcharts-highlight-color-20: #ccd3ff; + --highcharts-highlight-color-10: #e6e9ff; +} // Theme: all style changes to thw SVG's generated by Highcharts +@import "../theme/variables"; @import "../theme/shared"; +@import "../theme/map"; @import "../theme/bar-chart"; @import "../theme/column-chart"; @import "../theme/line-chart"; -@import "../theme/map"; // Blocks: all custom css for the FHI AngularHighcharts +@import "../blocks/mixins"; @import "../blocks/fhi-highcharts-chart.block"; @import "../blocks/fhi-highcharts-map.block"; @import "../blocks/fhi-highcharts-nav.block"; - -:root { - // Data series and points (extends default FHI color palette) - // NB! OptionsCharts.chart.colorCount must match number of different colors here. - --highcharts-color-0: #0067c4; - --highcharts-color-1: #c360b2; - --highcharts-color-2: #64a409; - --highcharts-color-3: #f86559; - --highcharts-color-4: #7f85fa; - --highcharts-color-5: #94949e; - --highcharts-color-6: #5a9ca0; - --highcharts-color-7: #f7b501; - --highcharts-color-8: #e665b7; -} - -@media (prefers-color-scheme: dark) { - :root { - --highcharts-background-color: #{$fhi-core-white}; - --highcharts-neutral-color-100: #000000; - --highcharts-neutral-color-80: #333333; - --highcharts-neutral-color-60: #666666; - --highcharts-neutral-color-40: #999999; - --highcharts-neutral-color-20: #cccccc; - --highcharts-neutral-color-10: #e6e6e6; - --highcharts-neutral-color-5: #f2f2f2; - --highcharts-neutral-color-3: #f7f7f7; - --highcharts-highlight-color-100: #0022ff; - --highcharts-highlight-color-80: #334eff; - --highcharts-highlight-color-60: #667aff; - --highcharts-highlight-color-20: #ccd3ff; - --highcharts-highlight-color-10: #e6e9ff; - } -} diff --git a/projects/fhi-angular-highcharts/src/styles/theme/_shared.scss b/projects/fhi-angular-highcharts/src/styles/theme/_shared.scss index 2118414e..98a1d680 100644 --- a/projects/fhi-angular-highcharts/src/styles/theme/_shared.scss +++ b/projects/fhi-angular-highcharts/src/styles/theme/_shared.scss @@ -1,3 +1,44 @@ +.highcharts-color-10 { + fill: var(--highcharts-color-10); + stroke: var(--highcharts-color-10); +} +.highcharts-color-11 { + fill: var(--highcharts-color-11); + stroke: var(--highcharts-color-11); +} +.highcharts-color-12 { + fill: var(--highcharts-color-12); + stroke: var(--highcharts-color-12); +} +.highcharts-color-13 { + fill: var(--highcharts-color-13); + stroke: var(--highcharts-color-13); +} +.highcharts-color-14 { + fill: var(--highcharts-color-14); + stroke: var(--highcharts-color-14); +} +.highcharts-color-15 { + fill: var(--highcharts-color-15); + stroke: var(--highcharts-color-15); +} +.highcharts-color-16 { + fill: var(--highcharts-color-16); + stroke: var(--highcharts-color-16); +} +.highcharts-color-17 { + fill: var(--highcharts-color-17); + stroke: var(--highcharts-color-17); +} +.highcharts-color-18 { + fill: var(--highcharts-color-18); + stroke: var(--highcharts-color-18); +} +.highcharts-color-19 { + fill: var(--highcharts-color-19); + stroke: var(--highcharts-color-19); +} + .highcharts-title { fill: $text-color; font-size: 20px; diff --git a/projects/fhi-angular-highcharts/src/styles/theme/_variables.scss b/projects/fhi-angular-highcharts/src/styles/theme/_variables.scss index a9b3ef4b..f2010fe6 100644 --- a/projects/fhi-angular-highcharts/src/styles/theme/_variables.scss +++ b/projects/fhi-angular-highcharts/src/styles/theme/_variables.scss @@ -1,29 +1,9 @@ -/** - * Fhi Highcharts Theme - */ - -// TODO: Color variables are deprecated since Highcharts 11; the system below must be updated! -// Colors - -// Neutral colors, grayscale by default. The default colors are defined by mixing the background-color with neutral, with a weight corresponding to the number in the name. -$neutral-color-100: #000000 !default; // Strong text. -$neutral-color-80: #333333 !default; // Main text and some strokes. -$neutral-color-60: #666666 !default; // Axis labels, axis title, connector fallback. -$neutral-color-40: #999999 !default; // Credits text, export menu stroke. -$neutral-color-20: #cccccc !default; // Disabled texts, button strokes, crosshair etc. -$neutral-color-10: #e6e6e6 !default; // Grid lines etc. -$neutral-color-5: #f2f2f2 !default; // Minor grid lines etc. -$neutral-color-3: #f7f7f7 !default; // Tooltip backgroud, button fills, map null points. - -// Colored, shades of blue by default -$highlight-color-100: #003399 !default; // Drilldown clickable labels, color axis max color. -$highlight-color-80: #335cad !default; // Selection marker, menu hover, button hover, chart border, navigator series. -$highlight-color-60: #6685c2 !default; // Navigator mask fill. -$highlight-color-20: #ccd6eb !default; // Ticks and axis line. -$highlight-color-10: #e6ebf5 !default; // Pressed button, color axis min color. - -// Chart background, point stroke for markers and columns etc -$background-color: #ffffff !default; +// +// Variables +// Only used by: +// ./_map.scss +// ./_shared.scss +// $line-color-1: #dddddd; $line-color-2: #dddddd; @@ -31,55 +11,6 @@ $line-color-2: #dddddd; $inline-link-hover-color: #b10640; $text-color: #222222; -// Fonts - -// $font-family: "Calibri", Arial, Helvetica, sans-serif !default; -// NB! Å endre font her fører til at labels kan bli kappet på print! -// Se om exporting: { allowHTML... kan gjøre noe med dette. - -$title-font-size: 1.5em !default; -$subtitle-font-size: 1em !default; -$legend-font-size: 1em !default; -$axis-labels-font-size: 0.9em !default; - $font-family-highcharts-regular: "SourceSansPro Regular", sans-serif; $font-family-highcharts-italic: "SourceSansPro Italic", sans-serif; $font-family-highcharts-semi-bold: "SourceSansPro SemiBold", sans-serif; - -// Tooltip -$tooltip-border: 0 !default; -$tooltip-background: $neutral-color-3 !default; - -// Axes -$xaxis-grid-line: 0px !default; - -// Range-selector -$range-selector-button-border: 0px !default; -$range-selector-input-text: $neutral-color-80 !default; -$range-selector-input-border: $neutral-color-20 !default; - -// Data-labels -$data-label-color: $neutral-color-80 !default; - -// Buttons -$context-button-background: $background-color !default; - -$highcharts-button-background: $neutral-color-3 !default; -$highcharts-button-border: $neutral-color-20 !default; -$highcharts-button-text: $neutral-color-80 !default; - -$highcharts-button-pressed-background: $highlight-color-10 !default; -$highcharts-button-pressed-border: $neutral-color-20 !default; -$highcharts-button-pressed-text: $neutral-color-80 !default; - -$highcharts-button-hover-background: $neutral-color-10 !default; -$highcharts-button-hover-border: $neutral-color-20 !default; -$highcharts-button-hover-text: $neutral-color-80 !default; - -// Navigator -$navigator-series-fill: $highlight-color-80 !default; -$navigator-series-border: $highlight-color-80 !default; - -// Scrollbar -$scrollbar-track-background: $neutral-color-5 !default; -$scrollbar-track-border: $neutral-color-5 !default; From 38b51b5d000cb5003f7b01cc01df4af474aa72c0 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 22 Aug 2024 11:54:16 +0200 Subject: [PATCH 10/52] Add issue templates (#632) Add issue templates --- .github/ISSUE_TEMPLATE/1.bug.yml | 74 ++++++++++++++++++++ .github/ISSUE_TEMPLATE/2.feature-request.yml | 38 ++++++++++ .github/ISSUE_TEMPLATE/3.documentation.yml | 43 ++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 1 + 4 files changed, 156 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/1.bug.yml create mode 100644 .github/ISSUE_TEMPLATE/2.feature-request.yml create mode 100644 .github/ISSUE_TEMPLATE/3.documentation.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/1.bug.yml b/.github/ISSUE_TEMPLATE/1.bug.yml new file mode 100644 index 00000000..486cd8de --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1.bug.yml @@ -0,0 +1,74 @@ +name: 🐛 Bug report +description: File a bug report +labels: ['Status: Unconfirmed', 'Bug'] +projects: ['folkehelseinstituttet/12'] +body: + - type: markdown + attributes: + value: | + ## Thanks for taking the time to fill out this bug report! + + Please fill out the sections below to help us reproduce and fix the bug you are encountering. + + > [!TIP] + > You may choose between writing in English or Norwegian. + > _Du kan velge mellom å skrive på engelsk eller norsk._ + + - type: textarea + id: description + attributes: + label: Description * + description: Explain, in as much detail as possible, the bug you've met. Is this something that used to work and now doesn't? + placeholder: When I click the accordion header the site freezes... + validations: + required: true + + - type: textarea + id: expected-result + attributes: + label: What was the expected result? * + placeholder: I expected the accordion to toggle open/closed... + validations: + required: true + + - type: input + id: browsers + attributes: + label: What browsers are you seeing the problem on? + placeholder: Firefox, Edge, Chrome, etc... + + - type: input + id: framework + attributes: + label: What framework are you using? + placeholder: Angular, React, Blazor, etc... + + - type: textarea + id: steps-to-reproduce + attributes: + label: Steps to reproduce * + description: Please add a list of steps we can follow to reproduce the bug. + placeholder: | + 1. Open www.example.com/booking + 2. Click the header of the first accordion in the information section + 3. ... + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Relevant log output (e.g web browser console logs) + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell + + - type: textarea + id: additional-information + attributes: + label: Additional information + description: Please add any other comments or pieces of information you think are useful. For example, if you've found a workaround, share it with us to help others while we're swatting this bug. + + - type: markdown + attributes: + value: | + By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/blob/dev/CODE_OF_CONDUCT.md) diff --git a/.github/ISSUE_TEMPLATE/2.feature-request.yml b/.github/ISSUE_TEMPLATE/2.feature-request.yml new file mode 100644 index 00000000..6e7daa92 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2.feature-request.yml @@ -0,0 +1,38 @@ +name: 💡 Feature request +description: Request a new feature, or improvements to existing features +labels: ['Status: Unconfirmed'] +projects: ['folkehelseinstituttet/12'] +body: + - type: markdown + attributes: + value: | + ## Thanks for taking the time to add a feature request! + + > [!TIP] + > You may choose between writing in English or Norwegian. + > _Du kan velge mellom å skrive på engelsk eller norsk._ + + - type: textarea + id: description + attributes: + label: Description * + description: Describe the feature or improvement in as much detail possible, including the experience that led to its need and how you would use the new feature. + validations: + required: true + + - type: textarea + id: acceptance-criteria + attributes: + label: Acceptance Criteria + description: A list of criteria that should be satisfied before the issue can be marked as complete. + + - type: textarea + id: additional-information + attributes: + label: Additional information + description: Here you can add any examples of other, similar features for inspiration, alternatives or workarounds you have considered that could be used instead or any other information that could make this feature even better. + + - type: markdown + attributes: + value: | + By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/blob/dev/CODE_OF_CONDUCT.md) diff --git a/.github/ISSUE_TEMPLATE/3.documentation.yml b/.github/ISSUE_TEMPLATE/3.documentation.yml new file mode 100644 index 00000000..672522dd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3.documentation.yml @@ -0,0 +1,43 @@ +name: 📖 Documentation +description: For questions, improvements and issues relating to documentation +labels: ['Status: Unconfirmed', 'Documentation'] +projects: ['folkehelseinstituttet/12'] +body: + - type: markdown + attributes: + value: | + ## Thanks for helping us improve the documentation! + + > [!TIP] + > You may choose between writing in English or Norwegian. + > _Du kan velge mellom å skrive på engelsk eller norsk._ + + - type: input + id: link + attributes: + label: URL to the relevant documentation page + placeholder: https://... + + - type: textarea + id: description + attributes: + label: Description * + description: How could we improve the documentation? Is something missing, unclear or confusing? + validations: + required: true + + - type: textarea + id: proposed-improvement + attributes: + label: Proposed improvement + description: Your proposed improvement, if you have any, for the specific part you described above + + - type: textarea + id: additional-information + attributes: + label: Additional information + + - type: markdown + attributes: + value: | + By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/blob/dev/CODE_OF_CONDUCT.md) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..3ba13e0c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false From 45ccd061ecef42428f7a101b944a53f82fc947cf Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 22 Aug 2024 12:18:10 +0200 Subject: [PATCH 11/52] Remove asterisks in issue template labels, they are added automatically in public repos (#635) --- .github/ISSUE_TEMPLATE/1.bug.yml | 6 +++--- .github/ISSUE_TEMPLATE/2.feature-request.yml | 2 +- .github/ISSUE_TEMPLATE/3.documentation.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1.bug.yml b/.github/ISSUE_TEMPLATE/1.bug.yml index 486cd8de..69fe8a01 100644 --- a/.github/ISSUE_TEMPLATE/1.bug.yml +++ b/.github/ISSUE_TEMPLATE/1.bug.yml @@ -17,7 +17,7 @@ body: - type: textarea id: description attributes: - label: Description * + label: Description description: Explain, in as much detail as possible, the bug you've met. Is this something that used to work and now doesn't? placeholder: When I click the accordion header the site freezes... validations: @@ -26,7 +26,7 @@ body: - type: textarea id: expected-result attributes: - label: What was the expected result? * + label: What was the expected result? placeholder: I expected the accordion to toggle open/closed... validations: required: true @@ -46,7 +46,7 @@ body: - type: textarea id: steps-to-reproduce attributes: - label: Steps to reproduce * + label: Steps to reproduce description: Please add a list of steps we can follow to reproduce the bug. placeholder: | 1. Open www.example.com/booking diff --git a/.github/ISSUE_TEMPLATE/2.feature-request.yml b/.github/ISSUE_TEMPLATE/2.feature-request.yml index 6e7daa92..3d6efabc 100644 --- a/.github/ISSUE_TEMPLATE/2.feature-request.yml +++ b/.github/ISSUE_TEMPLATE/2.feature-request.yml @@ -15,7 +15,7 @@ body: - type: textarea id: description attributes: - label: Description * + label: Description description: Describe the feature or improvement in as much detail possible, including the experience that led to its need and how you would use the new feature. validations: required: true diff --git a/.github/ISSUE_TEMPLATE/3.documentation.yml b/.github/ISSUE_TEMPLATE/3.documentation.yml index 672522dd..13e7a6a1 100644 --- a/.github/ISSUE_TEMPLATE/3.documentation.yml +++ b/.github/ISSUE_TEMPLATE/3.documentation.yml @@ -21,7 +21,7 @@ body: - type: textarea id: description attributes: - label: Description * + label: Description description: How could we improve the documentation? Is something missing, unclear or confusing? validations: required: true From cdf3315f669375a864cb2cefe4e4ed4e29bede2c Mon Sep 17 00:00:00 2001 From: Trygve Bernhardt <51702336+trybern@users.noreply.github.com> Date: Fri, 23 Aug 2024 14:49:25 +0200 Subject: [PATCH 12/52] Update color-system.ts (#637) * Update color-system.ts Added missing colors, rearranged them to correspond with official identity and removed an intruder. Some names are a bit jalla, but we'll live with that until new web components and system is in place. * Update _ds-tmp.block.scss Added temp. css for documentation page --- .../library-items/colors/color-system.ts | 16 ++++++++++---- .../fhi-frontend-library/_ds-tmp.block.scss | 21 +++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/MOCK_DB_DATA/library-items/colors/color-system.ts b/src/MOCK_DB_DATA/library-items/colors/color-system.ts index 4e0bfdf9..d5f9c806 100644 --- a/src/MOCK_DB_DATA/library-items/colors/color-system.ts +++ b/src/MOCK_DB_DATA/library-items/colors/color-system.ts @@ -34,10 +34,10 @@ ${colorHtml('#fbfbfb', 'fhi-core-grey-light-1')} ${colorHtml('#f7f6f5', 'fhi-core-grey-light-2')} ${colorHtml('#f0edeb', 'fhi-core-grey-light-3')} ${colorHtml('#e0dddb', 'fhi-core-grey-light-4')} - -

Grå

${colorHtml('#cfd0cb', 'fhi-core-grey-1')} ${colorHtml('#767676', 'fhi-core-grey-3')} + +

Tekst

${colorHtml('#222222', 'fhi-core-grey-4')}

Blågrå

@@ -46,18 +46,25 @@ ${colorHtml('#dbe6ec', 'fhi-core-blue-grey-3')} ${colorHtml('#cbd9df', 'fhi-core-blue-grey-4')} ${colorHtml('#879ba5', 'fhi-core-blue-grey-6')} ${colorHtml('#435c68', 'fhi-core-blue-grey-7')} -${colorHtml('#333841', 'fhi-core-charcoal-1')} -

Blå

+

Systemblå

${colorHtml('#0067c4', 'fhi-core-blue-1')} ${colorHtml('#0e4485', 'fhi-core-blue-2')} + +

FHI-blå

+${colorHtml('#d5ebf5', 'fhi-core-blue-fhi4')} +${colorHtml('#65adc3', 'fhi-core-blue-fhi3')} +${colorHtml('#386e84', 'fhi-core-blue-fhi2')} ${colorHtml('#393c61', 'fhi-core-blue-3')}

Grønn

${colorHtml('#cceee4', 'fhi-core-green-1')} +${colorHtml('#68cdaf', 'fhi-core-green-1a')} ${colorHtml('#04ab79', 'fhi-core-green-2')}

Rød

+${colorHtml('#fff0f0', 'fhi-core-red-4')} +${colorHtml('#fbd1cd', 'fhi-core-red-3')} ${colorHtml('#f86559', 'fhi-core-red-1')} ${colorHtml('#d14641', 'fhi-core-red-2')} @@ -67,6 +74,7 @@ ${colorHtml('#de2968', 'fhi-core-pink-dark-1')}

Oransje

${colorHtml('#feeed9', 'fhi-core-orange-1')} +${colorHtml('#fee191', 'fhi-core-yellow-2')} ${colorHtml('#f7b665', 'fhi-core-orange-2')} `; } diff --git a/src/styles/fhi-frontend-library/_ds-tmp.block.scss b/src/styles/fhi-frontend-library/_ds-tmp.block.scss index c2f6e228..9613c5e5 100644 --- a/src/styles/fhi-frontend-library/_ds-tmp.block.scss +++ b/src/styles/fhi-frontend-library/_ds-tmp.block.scss @@ -113,11 +113,23 @@ &__color--fhi-core-blue-3 { background-color: $fhi-core-blue-3; } + &__color--fhi-core-blue-fhi4 { + background-color: #d5ebf5; + } + &__color--fhi-core-blue-fhi3 { + background-color: #65adc3; + } + &__color--fhi-core-blue-fhi2 { + background-color: #386e84; + } // Green &__color--fhi-core-green-1 { background-color: $fhi-core-green-1; } + &__color--fhi-core-green-1a { + background-color: #68cdaf; + } &__color--fhi-core-green-2 { background-color: $fhi-core-green-2; } @@ -126,11 +138,20 @@ &__color--fhi-core-orange-2 { background-color: $fhi-core-orange-2; } + &__color--fhi-core-yellow-2 { + background-color: #fee191; + } &__color--fhi-core-orange-1 { background-color: $fhi-core-orange-1; } // Red + &__color--fhi-core-red-4 { + background-color: #fff0f0; + } + &__color--fhi-core-red-3 { + background-color: #fbd1cd; + } &__color--fhi-core-red-1 { background-color: $fhi-core-red-1; } From db34cd4ed5c838dc7e602af2038d0a732a948583 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 29 Aug 2024 13:47:43 +0200 Subject: [PATCH 13/52] Enhancement/improve feedback about disabled diagram types, and (#639) * Enable line diagram with only one data point pr series. * Remove 0 as default value on y-axis in diagram type line when no unit is defined. * Update ref. Fhi.Style --- Fhi.Frontend.Style | 2 +- projects/fhi-angular-highcharts/CHANGELOG.md | 5 +- .../lib/fhi-angular-highcharts.component.html | 2 +- .../lib/fhi-angular-highcharts.component.ts | 8 +- .../lib/highcharts-options/options-charts.ts | 1 - .../services/diagram-type-group.service.ts | 113 +++++++++++++++--- .../highcharts/highcharts.component.html | 1 + .../highcharts/highcharts.component.ts | 13 ++ .../highcharts/mock-data.enum.ts | 1 + .../highcharts/mock-data.service.ts | 4 + .../9.prikkede-data-med-to-serier.ts | 34 ++++++ 11 files changed, 161 insertions(+), 23 deletions(-) create mode 100644 src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts diff --git a/Fhi.Frontend.Style b/Fhi.Frontend.Style index 248a4018..304a1350 160000 --- a/Fhi.Frontend.Style +++ b/Fhi.Frontend.Style @@ -1 +1 @@ -Subproject commit 248a4018e366acf5e0f756ea37977ba5a56d076c +Subproject commit 304a1350d9b322515ac21d985d60746e0fbbc59d diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index caf5c30e..7b024173 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,7 +1,10 @@ # Unreleased -> Aug 20, 2024 +> Aug 27, 2024 +* :tada: **Enhancement** Add console warning if a diagram type can't be rendered. +* :tada: **Enhancement** Enable line diagram with only one data point pr series. +* :tada: **Enhancement** Remove 0 as default value on y-axis in diagram type line when no unit is defined. * :tada: **Enhancement** Add new color palette, extend the color count to 20, and add support for negative values in map gradient (red to blue) * :tada: **Enhancement** Add support for SVG export diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html index 3791b89f..8723ef3f 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html @@ -56,7 +56,7 @@

{{ diagramOptions.title }}

Om dataene - + diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index 05de00f5..aad00a46 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -297,7 +297,7 @@ export class FhiAngularHighchartsComponent implements OnChanges { this.diagramTypeGroups, this.diagramOptions.activeDiagramType, ); - this.showDiagramTypeDisabledWarning = diagramTypeIsDisabled ? true : false; + this.showDiagramTypeDisabledWarning = diagramTypeIsDisabled; this.showDownloadButton = diagramTypeIsDisabled ? false : this.canShowDownloadButton(); this.showFooter = diagramTypeIsDisabled ? false : this.canShowFooter(); this.showFullScreenButton = !!this.diagramOptions.controls?.fullScreenButton?.show; @@ -306,6 +306,12 @@ export class FhiAngularHighchartsComponent implements OnChanges { if (!diagramTypeIsDisabled) { this.updateDiagram(); + } else { + console.warn( + `Kan ikke vise diagramtype "${this.diagramOptions.activeDiagramType}" fordi "${this.diagramTypeGroupService.getDiagramTypeDisabledWarningMsg( + this.diagramOptions.activeDiagramType, + )}"`, + ); } } diff --git a/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts b/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts index 80c76031..7d8649f3 100644 --- a/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts +++ b/projects/fhi-angular-highcharts/src/lib/highcharts-options/options-charts.ts @@ -19,6 +19,5 @@ export const OptionsCharts = { title: { text: null, }, - min: 0, }, }; diff --git a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts index 86400f55..873066b8 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts @@ -8,7 +8,7 @@ import { FhiDiagramSerie } from '../models/fhi-diagram-serie.model'; import { FlaggedSerie } from '../models/flagged-serie.model'; import { DiagramType } from '../models/diagram-type.model'; import { DiagramTypes } from '../constants-and-enums/fhi-diagram-types'; -import { FhiDiagramOptions } from '../models/fhi-diagram-options.model'; +import { FhiDiagramOptions, FhiDiagramTypeIds } from '../models/fhi-diagram-options.model'; @Injectable() export class DiagramTypeGroupService { @@ -16,6 +16,19 @@ export class DiagramTypeGroupService { private flaggedSeries!: FlaggedSerie[]; private diagramOptions: FhiDiagramOptions; private series!: FhiDiagramSerie[]; + private diagramTypeDisabledWarnings: { [key in FhiDiagramTypeIds]?: string } = {}; + private diagramTypeDisabledWarningsText = { + flaggedData: 'series.length > 1 && flaggedSeries?.length !== 0', + moreThanOneSeries: 'series.length > 1', + notTwoUnits: 'diagramOptions.units?.length !== 2', + notGeo: 'series.length === 1 && isNotGeo(this.series[0])', + noSeriesOrNoData: 'this.series.length === 0 || this.series[0].data.length === 0', + allDataInOneOrMoreSeriesAreFlagged: 'allDataInOneOrMoreSeriesAreFlagged', + }; + + getDiagramTypeDisabledWarningMsg(activeDiagramType: string): string { + return this.diagramTypeDisabledWarnings[activeDiagramType]; + } getActiveDiagramTypeGroup(groups: DiagramTypeGroup[]): DiagramTypeGroup { let activeGroup: DiagramTypeGroup; @@ -69,7 +82,13 @@ export class DiagramTypeGroupService { this.removeDiagramTypesNotInSubset(group, diagramTypeSubset); } group.children.forEach((diagramType) => { - this.disableDiagramType(diagramType); + if (this.series.length === 0 || this.series[0].data.length === 0) { + diagramType.disabled = true; + this.diagramTypeDisabledWarnings[diagramType.id] = + this.diagramTypeDisabledWarningsText.noSeriesOrNoData; + } else { + this.disableDiagramType(diagramType); + } this.setDiagramTypeToActive(diagramType, this.diagramOptions.activeDiagramType); }); }); @@ -175,43 +194,87 @@ export class DiagramTypeGroupService { } private disableBar(): boolean { - return this.series.length > 1 && this.flaggedSeries?.length !== 0; + if (this.series.length > 1 && this.flaggedSeries?.length !== 0) { + this.diagramTypeDisabledWarnings.bar = this.diagramTypeDisabledWarningsText.flaggedData; + return true; + } + return false; } private disableBarStacked(): boolean { - return this.disableBar(); + if (this.disableBar()) { + this.diagramTypeDisabledWarnings.barStacked = + this.diagramTypeDisabledWarningsText.flaggedData; + return true; + } + return false; } private disableColumn(): boolean { - return this.disableBar(); + if (this.disableBar()) { + this.diagramTypeDisabledWarnings.column = this.diagramTypeDisabledWarningsText.flaggedData; + return true; + } + return false; } private disableColumnAndLine(): boolean { - return this.disableBar() || this.diagramOptions.units?.length !== 2; + if (this.disableBar()) { + this.diagramTypeDisabledWarnings.columnAndLine = + this.diagramTypeDisabledWarningsText.flaggedData; + return true; + } else if (this.diagramOptions.units?.length !== 2) { + this.diagramTypeDisabledWarnings.columnAndLine = + this.diagramTypeDisabledWarningsText.notTwoUnits; + return true; + } + return false; } private disableColumnStacked(): boolean { - return this.disableBar(); + if (this.disableBar()) { + this.diagramTypeDisabledWarnings.columnStacked = + this.diagramTypeDisabledWarningsText.flaggedData; + return true; + } + return false; } private disableLine(): boolean { - return ( - this.getNumberOfDataPointsPrSerie() === 1 || - (this.series.length > 1 && this.flaggedSeries?.length !== 0) - ); + if (this.disableBar()) { + this.diagramTypeDisabledWarnings.line = this.diagramTypeDisabledWarningsText.flaggedData; + return true; + } + return false; } private disableMap(): boolean { - return this.series.length > 1 || (this.series.length === 1 && this.isNotGeo(this.series[0])); + let disable: boolean; + let message: string; + + if (this.series.length > 1) { + disable = true; + message = this.diagramTypeDisabledWarningsText.moreThanOneSeries; + } else if (this.series.length === 1 && this.isNotGeo(this.series[0])) { + disable = true; + message = this.diagramTypeDisabledWarningsText.notGeo; + } else if (this.allDataInOneOrMoreSeriesAreFlagged(this.series)) { + disable = true; + message = this.diagramTypeDisabledWarningsText.allDataInOneOrMoreSeriesAreFlagged; + } + this.diagramTypeDisabledWarnings.mapFylker = + this.diagramTypeDisabledWarnings.mapFylker2019 = + this.diagramTypeDisabledWarnings.mapFylker2023 = + message; + return disable; } private disablePie(): boolean { - return this.series.length > 1; - } - - private getNumberOfDataPointsPrSerie(): number { - // Using series[0] since all series should have the same length - return this.series[0].data.length; + if (this.series.length > 1) { + this.diagramTypeDisabledWarnings.pie = this.diagramTypeDisabledWarningsText.moreThanOneSeries; + return true; + } + return false; } private isNotGeo(serie: FhiDiagramSerie): boolean { @@ -224,6 +287,20 @@ export class DiagramTypeGroupService { return false; } + private allDataInOneOrMoreSeriesAreFlagged(series: FhiDiagramSerie[]) { + let allFlaggedInOneOreMoreSeries = true; + series.forEach((serie) => { + let allFlaggedInCurrentSerie = true; + serie.data.forEach((dataPoint) => { + allFlaggedInCurrentSerie = !(dataPoint.y.valueOf() === 'number'); + }); + if (allFlaggedInOneOreMoreSeries && !allFlaggedInCurrentSerie) { + allFlaggedInOneOreMoreSeries = false; + } + }); + return allFlaggedInOneOreMoreSeries; + } + /** * Returns a list of leagal geo names for all maps * diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html index 995d2b70..bbfb94b2 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html @@ -28,6 +28,7 @@ + diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 283c4d27..dc6c7a24 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -34,6 +34,7 @@ export class HighchartsComponent implements OnInit { title_3b: 'Befolkning - inndeling per 1.1.2024 (andel)', title_3c: 'Dødsfall hjerte og kar, fordelt på fylke', title_3d: 'Dobbel akse, linje og søyle', + title_3e: 'Prikkede data med to serier', }; constructor( @@ -114,6 +115,9 @@ export class HighchartsComponent implements OnInit { case '3d': this.getData__example_3d(); break; + case '3e': + this.getData__example_3e(); + break; // this.getTestData(); // Data for testing/debugging while developing locally, do not show in dev or prod. } } @@ -244,6 +248,15 @@ export class HighchartsComponent implements OnInit { }); } + private getData__example_3e() { + this.getData(MockData.PrikkedeDataMedToSerier, { + ...this.diagramOptions, + activeDiagramType: 'line', + title: this.titles.title_3e, + units: undefined, + }); + } + private getTestData() { this.getData(MockData.TestData, { series: undefined, diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.enum.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.enum.ts index 9eb67b4d..228e4f82 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.enum.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.enum.ts @@ -7,5 +7,6 @@ export enum MockData { BefolkningInndelingPr2024_antall, BefolkningInndelingPr2024_andel, AgensAntallOgAndel, + PrikkedeDataMedToSerier, TestData, } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.service.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.service.ts index f5223c92..c7f0915d 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.service.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data.service.ts @@ -12,6 +12,7 @@ import { DodsfallHjerteOgKarEtterFylke } from './mock-data/5.dodsfall-hjerte-og- import { BefolkningInndelingPr2024_antall } from './mock-data/6.befolkning-inndeling-pr-2024-antall'; import { BefolkningInndelingPr2024_andel } from './mock-data/7.befolkning-inndeling-pr-2024-andel'; import { AgensAntallOgAndel } from './mock-data/8.agens-antall-og-andel'; +import { PrikkedeDataMedToSerier } from './mock-data/9.prikkede-data-med-to-serier'; // Data for testing/debugging while developing locally, do not show in dev or prod. import { TestData } from './mock-data/test-data-8'; @@ -47,6 +48,9 @@ export class MockDataService { case MockData.AgensAntallOgAndel: dataSet.next(AgensAntallOgAndel); break; + case MockData.PrikkedeDataMedToSerier: + dataSet.next(PrikkedeDataMedToSerier); + break; // Data for testing while developing locally, do not show in dev or prod. case MockData.TestData: diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts new file mode 100644 index 00000000..4a8b50e8 --- /dev/null +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts @@ -0,0 +1,34 @@ +export const PrikkedeDataMedToSerier = [ + { + name: ['Hjerte- og karsystemet', 'Kvinne'], + data: [ + { name: '2008', y: 7535 }, + { name: '2009', y: 7303 }, + { name: '2010', y: '.' }, + { name: '2011', y: 6967 }, + { name: '2012', y: 7057 }, + { name: '2013', y: 6581 }, + { name: '2014', y: ':' }, + { name: '2015', y: 6195 }, + { name: '2016', y: 5817 }, + { name: '2017', y: 5436 }, + { name: '2018', y: 5229 }, + ], + }, + { + name: 'Hjerte- og karsystemet | Mann', + data: [ + { name: '2008', y: 6601 }, + { name: '2009', y: 6224 }, + { name: '2010', y: 6122 }, + { name: '2011', y: 6009 }, + { name: '2012', y: 5978 }, + { name: '2013', y: 5760 }, + { name: '2014', y: 5500 }, + { name: '2015', y: 5457 }, + { name: '2016', y: ':' }, + { name: '2017', y: 4941 }, + { name: '2018', y: 4857 }, + ], + }, +]; From c7b9cac30eb4a4472faadbc4688d75d2be461ece Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 30 Aug 2024 10:15:20 +0200 Subject: [PATCH 14/52] Bugfix/placeholder ng select (#642) * Update Fhi.Frontend.Style * Fix z-index to show placeholders (and remove old comments) * Update CHANGELOG --- Fhi.Frontend.Style | 2 +- projects/fhi-angular-components/CHANGELOG.md | 3 ++- .../fhi-multiselect.component.scss | 10 ++++++++++ .../fhi-ng-selects/fhi-ng-select-wrapper.scss | 19 +++++-------------- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Fhi.Frontend.Style b/Fhi.Frontend.Style index 304a1350..902ec661 160000 --- a/Fhi.Frontend.Style +++ b/Fhi.Frontend.Style @@ -1 +1 @@ -Subproject commit 304a1350d9b322515ac21d985d60746e0fbbc59d +Subproject commit 902ec661ba1b9cd02ba1178970e62c15c30c9bbc diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 41b1452a..4dba6bed 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,7 +1,8 @@ # Unreleased -> Jun 28, 2024 +> Aug 29, 2024 +* :bug: **Bugfix** Make placeholders visible in `FhiAutosuggestComponent` and `FhiMultiselectComponent` by adding correct z-index * :tada: **Enhancement** Add search filter to `FhiTreeViewCheckbox` and `FhiTreeViewRadio` ## 4.3.0 diff --git a/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-multiselect.component.scss b/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-multiselect.component.scss index a9409ad1..59f555b9 100644 --- a/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-multiselect.component.scss +++ b/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-multiselect.component.scss @@ -15,6 +15,16 @@ } } + .ng-select.ng-select-multiple { + .ng-select-container { + .ng-value-container { + .ng-placeholder { + z-index: 3; + } + } + } + } + .ng-dropdown-panel-items { .ng-option { padding: $fhi-core-space-2; diff --git a/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-ng-select-wrapper.scss b/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-ng-select-wrapper.scss index 628de544..ba46da34 100644 --- a/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-ng-select-wrapper.scss +++ b/projects/fhi-angular-components/src/styles/fhi-ng-selects/fhi-ng-select-wrapper.scss @@ -1,23 +1,13 @@ -// Disclaimer! -// -// We need to make some changes to https://github.com/folkehelseinstituttet/Fhi.Frontend.Style -// (See https://github.com/folkehelseinstituttet/Fhi.Frontend.Style/issues/234) before all -// todo's in this file can be removed. The Designsystem team is woring hard to get this -// done as soon as possible. -// - .fhi-ng-select-wrapper { - // TODO: should be part of default form style label { font-weight: 600; } p { - color: $fhi-core-grey-3; // TODO: need $fhi-[skjemahjelpetekst?]-color in core.variables + color: $fhi-core-grey-3; font-size: $fhi-core-font-size-2; margin: 0; } - // /form style .ng-select { font-size: 1rem; @@ -40,7 +30,8 @@ } .ng-placeholder { - color: $fhi-core-grey-3; // TODO: need $fhi-input-placeholder-color in core.variables and $input-placeholder-color: $fhi-input-placeholder-color + color: $fhi-core-grey-3; + z-index: 1; } } } @@ -77,8 +68,8 @@ .ng-dropdown-panel { background-color: $fhi-core-white; border: 1px solid $fhi-core-grey-3; - border-radius: $fhi-core-px * 4; // TODO: lage core.variables for standard border radius - box-shadow: 0 3px 6px rgba($fhi-core-grey-4, 0.16); // TODO: lage core.variables for de fire tilatte drop-shadows + border-radius: $fhi-core-px * 4; + box-shadow: 0 3px 6px rgba($fhi-core-grey-4, 0.16); margin: $fhi-core-space-2 0 $fhi-core-space-2; &.ng-select-top { From 64581365ad3c75eca333f7ed2206af86c1d89460 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 30 Aug 2024 10:54:17 +0200 Subject: [PATCH 15/52] Enhancement/open modal from parent (#643) --- projects/fhi-angular-components/CHANGELOG.md | 3 +- .../src/lib/fhi-modal/README.md | 15 +++--- .../src/lib/fhi-modal/fhi-modal.component.ts | 30 +++++++----- .../library-items/modals/modal.ts | 46 +++++++++++++++++-- .../modals/modals.component.html | 10 ++++ .../modals/modals.component.ts | 12 +++++ 6 files changed, 91 insertions(+), 25 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 4dba6bed..44f20145 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,7 +1,8 @@ # Unreleased -> Aug 29, 2024 +> Jun 30, 2024 +* :tada: **Enhancement** Add support for opening `fhi-modal` by a method call from the parent * :bug: **Bugfix** Make placeholders visible in `FhiAutosuggestComponent` and `FhiMultiselectComponent` by adding correct z-index * :tada: **Enhancement** Add search filter to `FhiTreeViewCheckbox` and `FhiTreeViewRadio` diff --git a/projects/fhi-angular-components/src/lib/fhi-modal/README.md b/projects/fhi-angular-components/src/lib/fhi-modal/README.md index ad92a30a..ebb71ca0 100644 --- a/projects/fhi-angular-components/src/lib/fhi-modal/README.md +++ b/projects/fhi-angular-components/src/lib/fhi-modal/README.md @@ -4,13 +4,14 @@ ### Input -| Input | Type | Default | Required | Description | -| ---------------------- | ------------------------ | -------------- | -------- | ----------- | -| `[actionButtons]` | `FhiModalActionButton[]` | - | no | Object defining the buttons in the modal. | -| `modalTitle` | `string` | - | no | Title at the top of the modal. | -| `openModalButtonClass` | `string` | `fhi-btn-link` | no | Button class on the button that opens the modal. The button can also be modified with markup inside the button. | -| `[scrollable]` | `boolean` | `true` | no | Same as NgbModal | -| `size` | `string` | `md` | no | Same as NgbModal | +| Input | Type | Default | Required | Description | +| ----------------------- | ------------------------ | -------------- | -------- | ----------- | +| `[actionButtons]` | `FhiModalActionButton[]` | - | no | Object defining the buttons in the modal. | +| `modalTitle` | `string` | - | no | Title at the top of the modal. | +| `openModalButtonClass` | `string` | `fhi-btn-link` | no | Button class on the button that opens the modal. The button can also be modified with markup inside the button. | +| `[openModalFromParent]` | `boolean` | `false` | no | When set to `true` the method `FhiModalComponent.modal.open()` will be triggered. To be able to trigger change detection more than once, parent component is responsible for toggeling the value. | +| `[scrollable]` | `boolean` | `true` | no | Same as NgbModal | +| `size` | `string` | `md` | no | Same as NgbModal | ### Output diff --git a/projects/fhi-angular-components/src/lib/fhi-modal/fhi-modal.component.ts b/projects/fhi-angular-components/src/lib/fhi-modal/fhi-modal.component.ts index dfc53653..cac70d4d 100644 --- a/projects/fhi-angular-components/src/lib/fhi-modal/fhi-modal.component.ts +++ b/projects/fhi-angular-components/src/lib/fhi-modal/fhi-modal.component.ts @@ -8,6 +8,8 @@ import { OnChanges, ChangeDetectionStrategy, ViewEncapsulation, + ViewChild, + ElementRef, } from '@angular/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { cloneDeep } from 'lodash-es'; @@ -26,6 +28,7 @@ export class FhiModalComponent implements OnChanges { @Input() actionButtons: FhiModalActionButton[]; @Input() modalTitle!: string; @Input() openModalButtonClass = 'fhi-btn-link'; + @Input() openModalFromParent = false; @Input() scrollable = true; @Input() size = 'md'; @@ -33,6 +36,8 @@ export class FhiModalComponent implements OnChanges { @Output() modalAction = new EventEmitter(); @Output() openModal = new EventEmitter(); + @ViewChild('modalContent') modalContentRef: ElementRef; + buttons!: FhiModalActionButton[]; constructor(private modal: NgbModal) {} @@ -42,10 +47,23 @@ export class FhiModalComponent implements OnChanges { this.buttons = cloneDeep(this.actionButtons); this.buttons[this.buttons.length - 1].primary = true; } + if (changes['openModalFromParent']?.currentValue === true) { + this.modalOpen(this.modalContentRef); + } } // eslint-disable-next-line @typescript-eslint/no-explicit-any onClickOpenModal(modalContent: any) { + this.modalOpen(modalContent); + } + + onModalAction(button: FhiModalActionButton) { + this.modalAction.emit(button.name); + this.modal.dismissAll(); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private modalOpen(modalContent: any) { this.openModal.emit(); this.modal.open(modalContent, { backdropClass: 'fhi-modal-backdrop', @@ -58,16 +76,4 @@ export class FhiModalComponent implements OnChanges { }, }); } - - onModalAction(button: FhiModalActionButton) { - // TODO: should we use [disabled]="button.disabled" in the - // template as currently implemented - // OR should we emit undefined (code blow)? - // if (button.disabled) { - // this.modalAction.emit(); - // return; - // } - this.modalAction.emit(button.name); - this.modal.dismissAll(); - } } diff --git a/src/MOCK_DB_DATA/library-items/modals/modal.ts b/src/MOCK_DB_DATA/library-items/modals/modal.ts index a1a2b531..fe92d091 100644 --- a/src/MOCK_DB_DATA/library-items/modals/modal.ts +++ b/src/MOCK_DB_DATA/library-items/modals/modal.ts @@ -1,8 +1,5 @@ import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; - -const itemTitle = 'Modal'; export const Modal: LibraryItem[] = [ { @@ -28,10 +25,49 @@ function getExampleHtml(): string { */ function getCodeHtml(): string | null { return ` - + + Åpne modal

Modalvindu innhold.

-
`; +
+ + + + Åpne lite modalvindu +

Modalvindu innhold.

+
+ + + + + + Åpne fullskjerm modalvindu + + +
@Input() actionButtons: FhiModalActionButton[] = {{ actionButtons | json }};
+
+
+ + + + +

Modalvindu innhold.

+
+`; } /* diff --git a/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.html b/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.html index 3d256eb4..67c6a3ee 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.html @@ -30,3 +30,13 @@
@Input() actionButtons: FhiModalActionButton[] = {{ actionButtons | json }};
+

+ + + + +

Modalvindu innhold.

+
diff --git a/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.ts index ed1fb501..8b4c34e0 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/modals/modals.component.ts @@ -17,7 +17,19 @@ export class ModalsComponent { { name: 'Handling 1' }, ]; + openModal = false; + onModalAction(action: string) { console.info('onModalAction:', action); } + + onPopoverActionOpenModalFromParent(action: string) { + if (action === 'openModal') { + this.openModal = true; + } + } + + onDismissModal() { + this.openModal = false; + } } From 235090aa41d34867a4b188d3b4bf9d129a533f20 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Mon, 2 Sep 2024 14:19:50 +0200 Subject: [PATCH 16/52] Release/fhi-angular-components/4.4.0 (#646) --- projects/fhi-angular-components/CHANGELOG.md | 2 +- projects/fhi-angular-components/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 44f20145..b001369f 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,4 +1,4 @@ -# Unreleased +# 4.4.0 > Jun 30, 2024 diff --git a/projects/fhi-angular-components/package.json b/projects/fhi-angular-components/package.json index a86f2ddb..c157af39 100644 --- a/projects/fhi-angular-components/package.json +++ b/projects/fhi-angular-components/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-components", - "version": "4.3.0", + "version": "4.4.0", "publishConfig": { "tag": "latest" }, From 678ebe0845886a59c8e93ad93572945856f89178 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Mon, 2 Sep 2024 15:04:59 +0200 Subject: [PATCH 17/52] Prerelease fix FHI Angular Highcharts (#644) * Update CHANGELOG, README and package.json to make everything ready for next release * Improve the method allDataInOneOrMoreSeriesAreFlagged() * Fix old error in CHANGELOG --- projects/fhi-angular-highcharts/CHANGELOG.md | 3 +-- projects/fhi-angular-highcharts/README.md | 3 ++- projects/fhi-angular-highcharts/package.json | 2 +- .../src/lib/services/diagram-type-group.service.ts | 14 +++++--------- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 7b024173..fc005f9f 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,6 +1,6 @@ # Unreleased -> Aug 27, 2024 +> Sep 2, 2024 * :tada: **Enhancement** Add console warning if a diagram type can't be rendered. * :tada: **Enhancement** Enable line diagram with only one data point pr series. @@ -53,7 +53,6 @@ * :tada: **Enhancement** Add support for one unit at the time on yAxis * :tada: **Enhancement** Add support for unit i tooltip * :tada: **Enhancement** Diagram navigation with split button on chart selector -* :tada: **Enhancement** Diagram navigation with split button on chart selector * :tada: **Enhancement** Alert on disabled diagram type changed to warning type ## 3.0.0 diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index 0bc1b425..a62117d7 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -27,7 +27,8 @@ _An opinionated wrapper to the official minimal [Highcharts wrapper for Angular] | FHI Angular Highcharts | FHI Angular Componets | FHI Style | Bootstrap | NgBootstrap | Highcharts | Highcharts Angular | Angular | Node/NPM | | ---------------------- | --------------------- | --------- | --------- | ----------- | ---------- | ------------------ | ------- | -------- | -| >3.1 | 4.0 | 6.2 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | +| Unreleased | 4 | 6.3 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | +| >=3.1 <=4.1 | 4 | 6.2 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | 3 | 4.0 | 6 | 5.3.2 | 16 | 11.1 | 4.0 | 17 | 18/10 * | | 2 | 3.1 | 5.9 | 5.3.2 | 16 | 11.1 | 4.0 | 17 | 18/10 * | | 1 | - | 5 | 5 | 15 | 11.1 | 4.0 | 16 | 18/9 * | diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 58c6d596..2511dad4 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -12,7 +12,7 @@ "peerDependencies": { "@angular/common": "^17.0.0", "@angular/core": "^17.0.0", - "@folkehelseinstituttet/style": "~6.2.0", + "@folkehelseinstituttet/style": "^6.3.0", "@folkehelseinstituttet/angular-components": "^4.0.0", "@ng-bootstrap/ng-bootstrap": "^16.0.0", "bootstrap": "5.3.2", diff --git a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts index 873066b8..c3532922 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts @@ -287,18 +287,14 @@ export class DiagramTypeGroupService { return false; } - private allDataInOneOrMoreSeriesAreFlagged(series: FhiDiagramSerie[]) { - let allFlaggedInOneOreMoreSeries = true; + private allDataInOneOrMoreSeriesAreFlagged(series: FhiDiagramSerie[]): boolean { + let allDataInOneSerieFlagged = false; series.forEach((serie) => { - let allFlaggedInCurrentSerie = true; - serie.data.forEach((dataPoint) => { - allFlaggedInCurrentSerie = !(dataPoint.y.valueOf() === 'number'); - }); - if (allFlaggedInOneOreMoreSeries && !allFlaggedInCurrentSerie) { - allFlaggedInOneOreMoreSeries = false; + if (serie.data.every((dataPoint) => !(typeof dataPoint.y.valueOf() === 'number'))) { + allDataInOneSerieFlagged = true; } }); - return allFlaggedInOneOreMoreSeries; + return allDataInOneSerieFlagged; } /** From a2b171130d8f39c46de21267b81e1d1c23800db3 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 3 Sep 2024 13:24:30 +0200 Subject: [PATCH 18/52] Release/fhi-angular-highcharts/4.2.0 (#647) --- projects/fhi-angular-highcharts/CHANGELOG.md | 4 ++-- projects/fhi-angular-highcharts/README.md | 2 +- projects/fhi-angular-highcharts/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index fc005f9f..26389abc 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,6 +1,6 @@ -# Unreleased +# 4.2.0 -> Sep 2, 2024 +> Sep 3, 2024 * :tada: **Enhancement** Add console warning if a diagram type can't be rendered. * :tada: **Enhancement** Enable line diagram with only one data point pr series. diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index a62117d7..a701d102 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -27,7 +27,7 @@ _An opinionated wrapper to the official minimal [Highcharts wrapper for Angular] | FHI Angular Highcharts | FHI Angular Componets | FHI Style | Bootstrap | NgBootstrap | Highcharts | Highcharts Angular | Angular | Node/NPM | | ---------------------- | --------------------- | --------- | --------- | ----------- | ---------- | ------------------ | ------- | -------- | -| Unreleased | 4 | 6.3 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | +| >4.1 | 4 | 6.3 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | >=3.1 <=4.1 | 4 | 6.2 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | 3 | 4.0 | 6 | 5.3.2 | 16 | 11.1 | 4.0 | 17 | 18/10 * | | 2 | 3.1 | 5.9 | 5.3.2 | 16 | 11.1 | 4.0 | 17 | 18/10 * | diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 2511dad4..0be45147 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "4.1.0", + "version": "4.2.0", "publishConfig": { "tag": "latest" }, From 6a56cb3a311592a7bc1c63b8241fa0315757dc68 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 4 Sep 2024 14:44:30 +0200 Subject: [PATCH 19/52] Remove diagram type navigation from fullscreen view (#652) since the navigation fails if diagram type is disabled, and since it doesn't add that much value for the end user. --- projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++++++- .../src/lib/fhi-angular-highcharts.component.html | 9 ++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 26389abc..89e40023 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,4 +1,10 @@ -# 4.2.0 +# Unreleased + +> Sep 4, 2024 + +:bug: **Bugfix** Remove diagram type navigation from fullscreen view since the navigation fails if diagram type is disabled, and since it doesn't add that much value for the end user. + +## 4.2.0 > Sep 3, 2024 diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html index 8723ef3f..276d25d9 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html @@ -38,7 +38,7 @@

{{ diagramOptions.title }}

- +
@@ -50,20 +50,20 @@

{{ diagramOptions.title }}

- +
@@ -82,7 +82,6 @@

{{ diagramOptions.title }}

Fullskjerm - From 7814e17e0fc7441eba681bf374dde8e4e58e97ff Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 4 Sep 2024 15:01:49 +0200 Subject: [PATCH 20/52] Give the diagrams better aspect ratios (#651) on differnt screen widths by: - using CSS property aspect-ratio and `@container` - adding ratio variables Also: - remove inline with on table header cells - add new modifier class to the div in the map template in order have one BEM-block for all diagrams - remove deprecated code --- projects/fhi-angular-highcharts/CHANGELOG.md | 3 +- .../lib/fhi-angular-highcharts.component.html | 3 +- .../blocks/_fhi-highcharts-chart.block.scss | 49 +++++++++++++++++-- .../blocks/_fhi-highcharts-map.block.scss | 26 ---------- .../src/styles/blocks/_mixins.scss | 24 --------- .../src/styles/import/_all.scss | 2 - .../src/styles/theme/_map.scss | 2 +- 7 files changed, 48 insertions(+), 61 deletions(-) delete mode 100644 projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-map.block.scss delete mode 100644 projects/fhi-angular-highcharts/src/styles/blocks/_mixins.scss diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 89e40023..4ec85cc6 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,7 +2,8 @@ > Sep 4, 2024 -:bug: **Bugfix** Remove diagram type navigation from fullscreen view since the navigation fails if diagram type is disabled, and since it doesn't add that much value for the end user. +* :tada: **Enhancement** Give the diagrams better aspect ratios on differnt screen widths +* :bug: **Bugfix** Remove diagram type navigation from fullscreen view since the navigation fails if diagram type is disabled, and since it doesn't add that much value for the end user. ## 4.2.0 diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html index 276d25d9..434835e7 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html @@ -98,7 +98,7 @@

{{ diagramOptions.title }}

-
+
{{ diagramOptions.title }} 350px) { + .fhi-highcharts-chart--map { + highcharts-chart { + aspect-ratio: $square; + } + } +} + +@container (width > 650px) { + .fhi-highcharts-chart { + highcharts-chart { + aspect-ratio: $golden-ratio; + } + } + .fhi-highcharts-chart--map { + highcharts-chart { + max-height: 50vh; + } } } -@media (orientation: landscape) { +@container (width > 1200px) { .fhi-highcharts-chart { - padding-bottom: calc(100% / 4 * 3); + highcharts-chart { + max-height: 50vh; + } } } diff --git a/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-map.block.scss b/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-map.block.scss deleted file mode 100644 index 737b2cd2..00000000 --- a/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-map.block.scss +++ /dev/null @@ -1,26 +0,0 @@ -.fhi-highcharts-map { - @include diagram-container; - @include chart-in-fullscreen-modal; - - highcharts-chart { - @include fill-container; - } -} - -@media (orientation: portrait) { - .fhi-highcharts-map { - min-height: 450px; - } -} - -@media (orientation: landscape) { - .fhi-highcharts-map { - padding-bottom: calc(100% / 3 * 2); - } -} - -@include media-breakpoint-up(md) { - .fhi-highcharts-map { - min-height: 550px; - } -} diff --git a/projects/fhi-angular-highcharts/src/styles/blocks/_mixins.scss b/projects/fhi-angular-highcharts/src/styles/blocks/_mixins.scss deleted file mode 100644 index 8696f1d3..00000000 --- a/projects/fhi-angular-highcharts/src/styles/blocks/_mixins.scss +++ /dev/null @@ -1,24 +0,0 @@ -@mixin diagram-container { - position: relative; - height: 0; - min-height: 400px; - padding-bottom: 100%; - width: 100%; -} - -@mixin fill-container { - display: block; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -@mixin chart-in-fullscreen-modal { - @include media-breakpoint-up(sm) { - .modal-fullscreen & { - padding-bottom: 60vh; - } - } -} diff --git a/projects/fhi-angular-highcharts/src/styles/import/_all.scss b/projects/fhi-angular-highcharts/src/styles/import/_all.scss index d7d49a12..63fa4810 100644 --- a/projects/fhi-angular-highcharts/src/styles/import/_all.scss +++ b/projects/fhi-angular-highcharts/src/styles/import/_all.scss @@ -57,7 +57,5 @@ @import "../theme/line-chart"; // Blocks: all custom css for the FHI AngularHighcharts -@import "../blocks/mixins"; @import "../blocks/fhi-highcharts-chart.block"; -@import "../blocks/fhi-highcharts-map.block"; @import "../blocks/fhi-highcharts-nav.block"; diff --git a/projects/fhi-angular-highcharts/src/styles/theme/_map.scss b/projects/fhi-angular-highcharts/src/styles/theme/_map.scss index 462f07b1..8cdcc6ae 100644 --- a/projects/fhi-angular-highcharts/src/styles/theme/_map.scss +++ b/projects/fhi-angular-highcharts/src/styles/theme/_map.scss @@ -1,4 +1,4 @@ -.fhi-highcharts-map { +.fhi-highcharts-chart--map { .highcharts-map-navigation { font-size: 16px; font-weight: bold; From dae08053e10a51d04218fd54e7632fddb81ae5d2 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 5 Sep 2024 13:45:47 +0200 Subject: [PATCH 21/52] Always update to latest minor version of @folkehelseinstituttet/style 6 (#655) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eb44c7b8..a4c1b78b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@angular/platform-browser": "17.3.3", "@angular/platform-browser-dynamic": "17.3.3", "@angular/router": "17.3.3", - "@folkehelseinstituttet/style": "6.2.2", + "@folkehelseinstituttet/style": "^6.0.0", "@ng-bootstrap/ng-bootstrap": "^16.0.0", "@ng-select/ng-select": "^12.0.6", "@popperjs/core": "^2.11.8", From 5386654c315229faae3c9209a95cb075686dc663 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 5 Sep 2024 14:09:05 +0200 Subject: [PATCH 22/52] Bugfix/consistent label formatting (#653) --- Fhi.Frontend.Style | 2 +- projects/fhi-angular-components/CHANGELOG.md | 10 ++++++++-- .../lib/fhi-autosuggest/fhi-autosuggest.component.html | 3 ++- .../lib/fhi-multiselect/fhi-multiselect.component.html | 5 +++-- .../styles/fhi-ng-selects/fhi-ng-select-wrapper.scss | 10 ---------- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/Fhi.Frontend.Style b/Fhi.Frontend.Style index 902ec661..fd3f4234 160000 --- a/Fhi.Frontend.Style +++ b/Fhi.Frontend.Style @@ -1 +1 @@ -Subproject commit 902ec661ba1b9cd02ba1178970e62c15c30c9bbc +Subproject commit fd3f42343f19aa2b887c860ff4e3ebe8f8244f1a diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index b001369f..5f85d06c 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,6 +1,12 @@ -# 4.4.0 +# Unreleased -> Jun 30, 2024 +> Sep 4, 2024 + +* :bug: **Bugfix** Add missing Bootstrap classes to `FhiAutosuggestComponent` and `FhiMultiselectComponent` + +## 4.4.0 + +> Sep 2, 2024 * :tada: **Enhancement** Add support for opening `fhi-modal` by a method call from the parent * :bug: **Bugfix** Make placeholders visible in `FhiAutosuggestComponent` and `FhiMultiselectComponent` by adding correct z-index diff --git a/projects/fhi-angular-components/src/lib/fhi-autosuggest/fhi-autosuggest.component.html b/projects/fhi-angular-components/src/lib/fhi-autosuggest/fhi-autosuggest.component.html index cbbd17a7..c570833e 100644 --- a/projects/fhi-angular-components/src/lib/fhi-autosuggest/fhi-autosuggest.component.html +++ b/projects/fhi-angular-components/src/lib/fhi-autosuggest/fhi-autosuggest.component.html @@ -1,6 +1,7 @@
-

{{ description }}

+

{{ description }}

+ - -

{{ description }}

+ +

{{ description }}

+ Date: Mon, 9 Sep 2024 12:20:48 +0200 Subject: [PATCH 23/52] Release/fhi-angular-components/4.4.1 (#660) --- Fhi.Frontend.Style | 2 +- projects/fhi-angular-components/CHANGELOG.md | 4 ++-- projects/fhi-angular-components/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Fhi.Frontend.Style b/Fhi.Frontend.Style index fd3f4234..249e5c90 160000 --- a/Fhi.Frontend.Style +++ b/Fhi.Frontend.Style @@ -1 +1 @@ -Subproject commit fd3f42343f19aa2b887c860ff4e3ebe8f8244f1a +Subproject commit 249e5c90fc930fe19a0ecfe78427c9d543896df7 diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 5f85d06c..1eacf4af 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,6 +1,6 @@ -# Unreleased +# 4.4.1 -> Sep 4, 2024 +> Sep 9, 2024 * :bug: **Bugfix** Add missing Bootstrap classes to `FhiAutosuggestComponent` and `FhiMultiselectComponent` diff --git a/projects/fhi-angular-components/package.json b/projects/fhi-angular-components/package.json index c157af39..75b5e05a 100644 --- a/projects/fhi-angular-components/package.json +++ b/projects/fhi-angular-components/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-components", - "version": "4.4.0", + "version": "4.4.1", "publishConfig": { "tag": "latest" }, From e0fead15233ddd9be9079ac784a9d6d88e9add9b Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Mon, 9 Sep 2024 13:25:09 +0200 Subject: [PATCH 24/52] Release/fhi-angular-highcharts/4.3.0 (#661) --- projects/fhi-angular-highcharts/CHANGELOG.md | 4 ++-- projects/fhi-angular-highcharts/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 4ec85cc6..479751a7 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,6 +1,6 @@ -# Unreleased +# 4.3.0 -> Sep 4, 2024 +> Sep 9, 2024 * :tada: **Enhancement** Give the diagrams better aspect ratios on differnt screen widths * :bug: **Bugfix** Remove diagram type navigation from fullscreen view since the navigation fails if diagram type is disabled, and since it doesn't add that much value for the end user. diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 0be45147..354943c4 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "4.2.0", + "version": "4.3.0", "publishConfig": { "tag": "latest" }, From 3201e9fb3debea5a42a31271089289b0031f67ea Mon Sep 17 00:00:00 2001 From: stalehaugenes <98531449+stalehaugenes@users.noreply.github.com> Date: Thu, 12 Sep 2024 15:20:58 +0200 Subject: [PATCH 25/52] Add support for showing diagram type line with multiple series even if flagged. (#664) --- .gitignore | 1 + projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++++++- .../lib/services/diagram-type-group.service.ts | 12 ------------ .../src/lib/services/options.service.ts | 16 ++++++++++++++++ .../highcharts/highcharts.component.html | 2 +- .../highcharts/highcharts.component.ts | 9 +++++++++ .../mock-data/9.prikkede-data-med-to-serier.ts | 4 ++-- 7 files changed, 36 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index f6bd40d5..5f8c5b75 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ speed-measure-plugin*.json *.launch .settings/ *.sublime-workspace +/.vs # IDE - VSCode .vscode/* diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 479751a7..e59d7ef0 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,4 +1,10 @@ -# 4.3.0 +# Unreleased + +> Sep 12, 2024 + +* :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. + +## 4.3.0 > Sep 9, 2024 diff --git a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts index c3532922..6af6824c 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts @@ -174,10 +174,6 @@ export class DiagramTypeGroupService { diagramType.disabled = this.disableColumnStacked(); break; - case DiagramTypeIdValues.line: - diagramType.disabled = this.disableLine(); - break; - case DiagramTypeIdValues.mapFylker: case DiagramTypeIdValues.mapFylker2019: case DiagramTypeIdValues.mapFylker2023: @@ -240,14 +236,6 @@ export class DiagramTypeGroupService { return false; } - private disableLine(): boolean { - if (this.disableBar()) { - this.diagramTypeDisabledWarnings.line = this.diagramTypeDisabledWarningsText.flaggedData; - return true; - } - return false; - } - private disableMap(): boolean { let disable: boolean; let message: string; diff --git a/projects/fhi-angular-highcharts/src/lib/services/options.service.ts b/projects/fhi-angular-highcharts/src/lib/services/options.service.ts index 5856fdcb..3ac96b77 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/options.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/options.service.ts @@ -136,6 +136,10 @@ export class OptionsService { private updateOptionsForCurrentDiagramType(options: Options): Options { switch (this.diagramOptions.activeDiagramType) { + case DiagramTypeIdValues.line: + options.series = this.setStringToNull(this.diagramOptions.series); + break; + case DiagramTypeIdValues.pie: if (options.legend && options.legend.title) { options.legend.title.text = options.series[0].name; @@ -151,6 +155,18 @@ export class OptionsService { return options; } + private setStringToNull(series: FhiDiagramSerie[]): SeriesOptionsType[] { + const newSeries = cloneDeep(series); + newSeries.forEach((serie) => { + serie.data.forEach((dataPoint) => { + if (typeof dataPoint.y === 'string') { + dataPoint.y = null; + } + }); + }); + return newSeries as SeriesOptionsType[]; + } + private getSeriesWithoutFlaggedDataPoints() { const seriesWithoutFlags = cloneDeep(this.diagramOptions.series); seriesWithoutFlags.forEach((serie) => { diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html index bbfb94b2..504ef2dc 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.html @@ -28,7 +28,7 @@ - +
diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index dc6c7a24..43d4e808 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -254,6 +254,15 @@ export class HighchartsComponent implements OnInit { activeDiagramType: 'line', title: this.titles.title_3e, units: undefined, + footer: { + credits: { + href: 'https://www.fhi.no', + text: 'Folkehelseinstituttet', + }, + disclaimer: 'Disse dataene kan inneholde feil.', + flags: [{ symbol: '.', label: 'Lar seg ikke beregne' }], + lastUpdated: '18.04.2024', + }, }); } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts index 4a8b50e8..755f1569 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/9.prikkede-data-med-to-serier.ts @@ -8,7 +8,7 @@ export const PrikkedeDataMedToSerier = [ { name: '2011', y: 6967 }, { name: '2012', y: 7057 }, { name: '2013', y: 6581 }, - { name: '2014', y: ':' }, + { name: '2014', y: '.' }, { name: '2015', y: 6195 }, { name: '2016', y: 5817 }, { name: '2017', y: 5436 }, @@ -26,7 +26,7 @@ export const PrikkedeDataMedToSerier = [ { name: '2013', y: 5760 }, { name: '2014', y: 5500 }, { name: '2015', y: 5457 }, - { name: '2016', y: ':' }, + { name: '2016', y: '.' }, { name: '2017', y: 4941 }, { name: '2018', y: 4857 }, ], From 6871d8ae455fca33fefdc7cd44a7b755d413bba7 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 09:56:39 +0200 Subject: [PATCH 26/52] Add null check for unit.decimals (#667) --- projects/fhi-angular-highcharts/CHANGELOG.md | 3 ++- .../src/lib/fhi-angular-highcharts.component.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index e59d7ef0..7c08fc80 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,7 +1,8 @@ # Unreleased -> Sep 12, 2024 +> Sep 13, 2024 +* :bug: **Bugfix** Add null check for unit.decimals * :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. ## 4.3.0 diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index aad00a46..0fd43dd0 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -236,7 +236,7 @@ export class FhiAngularHighchartsComponent implements OnChanges { if (!unit && this.diagramOptions.units?.length === 1) { unit = this.diagramOptions.units[0]; } - if (unit?.decimals >= 0 && unit?.decimals <= 12) { + if (unit?.decimals !== null && unit?.decimals >= 0 && unit?.decimals <= 12) { return unit.decimals; } if (unit?.decimals > 12) { From 7a8843a2fe0f9133c6f4edf2c1a88f189ba03740 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 10:08:59 +0200 Subject: [PATCH 27/52] Don't remove decimals if they end with zero (#668) --- projects/fhi-angular-highcharts/CHANGELOG.md | 1 + .../src/lib/fhi-angular-highcharts.component.html | 2 +- .../src/lib/services/table.service.ts | 15 +++++++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 7c08fc80..1c4cc5db 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 13, 2024 +* :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table) * :bug: **Bugfix** Add null check for unit.decimals * :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html index 434835e7..2198671c 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html @@ -148,7 +148,7 @@

{{ diagramOptions.title }}

- {{ tableCell.data | number: '1.0-' + tableCell.decimals }} + {{ tableCell.data | number: '1.' + tableCell.decimals + '-' + tableCell.decimals }} {{ tableCell.data }} diff --git a/projects/fhi-angular-highcharts/src/lib/services/table.service.ts b/projects/fhi-angular-highcharts/src/lib/services/table.service.ts index 641e577f..9d696e34 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/table.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/table.service.ts @@ -73,10 +73,14 @@ export class TableService { }; } else { // Table row data + const decimals = this.decimalsCount(series[j - 1].data[i].y as number); tbodyRows[i][j] = { isHeading: false, data: series[j - 1].data[i].y, - decimals: metadataForSeries[j - 1].decimals, + decimals: + decimals < metadataForSeries[j - 1].decimals + ? decimals + : metadataForSeries[j - 1].decimals, }; } } @@ -137,10 +141,12 @@ export class TableService { }; } else { // Table row data + const decimals = this.decimalsCount(series[i].data[j - dimentionsCount].y as number); tbodyRows[i][j] = { isHeading: false, data: series[i].data[j - dimentionsCount].y, - decimals: metadataForSeries[i].decimals, + decimals: + decimals < metadataForSeries[i].decimals ? decimals : metadataForSeries[i].decimals, }; } } @@ -201,4 +207,9 @@ export class TableService { } return counts; } + + private decimalsCount(value: number) { + if (Math.floor(value) === value) return 0; + return value.toString().split('.')[1].length || 0; + } } From 8a3cbfe9ccc5544600c84e2db5d349b9f20fa8d2 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 10:19:32 +0200 Subject: [PATCH 28/52] Reduce max decimal places to 9 (#669) --- projects/fhi-angular-highcharts/CHANGELOG.md | 1 + .../src/lib/fhi-angular-highcharts.component.ts | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 1c4cc5db..dc638280 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 13, 2024 +* :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more) * :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table) * :bug: **Bugfix** Add null check for unit.decimals * :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index 0fd43dd0..b882601f 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -239,10 +239,12 @@ export class FhiAngularHighchartsComponent implements OnChanges { if (unit?.decimals !== null && unit?.decimals >= 0 && unit?.decimals <= 12) { return unit.decimals; } - if (unit?.decimals > 12) { - console.warn('Max decimal places is 12 due to loss of precision at runtime!'); + if (unit?.decimals > 9) { + console.warn( + 'Max decimal places is 9 because Highcharts tooltips fails if 10 decimals or more.', + ); } - return 12; + return 9; } private serieHasDecimalDataPoints(serie: FhiDiagramSerie): boolean { From 2122b5c7afb38f92026a3da0261268df5fcdffb0 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 10:33:29 +0200 Subject: [PATCH 29/52] Update documentation for Interface FhiDiagramUnit (#670) --- projects/fhi-angular-highcharts/CHANGELOG.md | 1 + projects/fhi-angular-highcharts/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index dc638280..13bd6719 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 13, 2024 +* :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.) * :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more) * :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table) * :bug: **Bugfix** Add null check for unit.decimals diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index a701d102..97cb322f 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -208,7 +208,7 @@ FhiDiagramSerieData is a custum type for FHI Angular Highcharts, but it is based | Property | Type | Default | Required | Description | | ---------- | ------------------ | ------- | -------- | ----------- | | `id` | `number \| string` | - | no | Used to associate the unit with a serie. This only works if a `serie.unitId` ([FhiDiagramSerie](#interface-fhidiagramserie)) is set, and value is equal to `unit.id`. | -| `decimals` | `number` | - | no | The decimal count. If not set the decimal count same as in data. Count is **limited to 14** decimals due to loss of precision at runtime above 14. A warning will be given in the consol if more than 14 decimals. | +| `decimals` | `number` | - | no | The decimal count. If not set the decimal count is same as in the source data. Count is **limited to 9** decimals because Highcharts tooltips fails if 10 decimals or more. A warning will be given in the consol if more than 14 decimals. | | `label` | `string` | - | yes | The vertical y-axis label, showing next to the axis line. | | `symbol` | `string` | - | no | Symbol before or after the value in both tooltip and y-axis. | | `position` | `string` | - | no | Wether the symbol i placed before or after the numbers in the diagram. Possible values: `'start' \| 'end'` | From 70d1169eab8b6a5aad8e06c74ccaafe1b9da1e2c Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 10:44:55 +0200 Subject: [PATCH 30/52] Adjust allowed max widths on the Highcharts (#672) container element, and use max-width instead of max-height to control max container size --- projects/fhi-angular-highcharts/CHANGELOG.md | 1 + .../blocks/_fhi-highcharts-chart.block.scss | 18 +++++------------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 13bd6719..9c93cef8 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 13, 2024 +* :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element * :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.) * :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more) * :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table) diff --git a/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-chart.block.scss b/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-chart.block.scss index f7818589..2f9087f2 100644 --- a/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-chart.block.scss +++ b/projects/fhi-angular-highcharts/src/styles/blocks/_fhi-highcharts-chart.block.scss @@ -4,6 +4,7 @@ $square: 1; .fhi-highcharts-chart { width: 100%; + max-width: 1500px; container-type: inline-size; highcharts-chart { @@ -23,6 +24,10 @@ $square: 1; } } +.fhi-highcharts-chart--map { + max-width: 1100px; +} + @container (width > 350px) { .fhi-highcharts-chart--map { highcharts-chart { @@ -37,17 +42,4 @@ $square: 1; aspect-ratio: $golden-ratio; } } - .fhi-highcharts-chart--map { - highcharts-chart { - max-height: 50vh; - } - } -} - -@container (width > 1200px) { - .fhi-highcharts-chart { - highcharts-chart { - max-height: 50vh; - } - } } From b2b979aac178ea42750594014389d08e7e1a925e Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 15:05:44 +0200 Subject: [PATCH 31/52] enhancement/highcharts Add support for showing a description below the title in (#673) --- projects/fhi-angular-highcharts/CHANGELOG.md | 1 + .../src/lib/fhi-angular-highcharts.component.html | 4 ++++ .../src/lib/models/fhi-diagram-options.model.ts | 1 + 3 files changed, 6 insertions(+) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 9c93cef8..148efcfe 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 13, 2024 +* :tada: **Enhancement** Add support for showing a description below the title. * :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element * :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.) * :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more) diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html index 2198671c..1ed41798 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html @@ -1,6 +1,10 @@

{{ diagramOptions.title }}

+ @if (diagramOptions.description) { +

{{ diagramOptions.description }}

+ } + @if (showDiagramTypeNav || showDownloadButton || showFullScreenButton || showMetadataButton) { } diff --git a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts index ab8e1513..8fbd38c3 100644 --- a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts +++ b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts @@ -14,6 +14,7 @@ export type FhiTableOrientations = keyof typeof TableOrientations; export interface FhiDiagramOptions { activeDiagramType?: FhiDiagramTypeIds; controls?: FhiDiagramControls; + description?: string; footer?: FhiDiagramFooter; openSource?: boolean; series: FhiDiagramSerie[]; From c62b2d03ee57504f3e7a1ad8e0b97981c94aacdc Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 13 Sep 2024 15:22:12 +0200 Subject: [PATCH 32/52] Bugfix/highcharts dynamically add diagram types to nav (#665) --- projects/fhi-angular-highcharts/CHANGELOG.md | 1 + .../constants-and-enums/fhi-diagram-types.ts | 2 +- .../lib/fhi-angular-highcharts.component.ts | 5 +- ...hi-diagram-type-nav-default.component.html | 28 +-- .../services/diagram-type-group.service.ts | 178 +++++++++--------- .../highcharts/highcharts.component.ts | 11 +- 6 files changed, 118 insertions(+), 107 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 148efcfe..55f278b2 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 13, 2024 +* :bug: **Bugfix** Make it possible to dynamically add diagram types to the diagram type navigation. * :tada: **Enhancement** Add support for showing a description below the title. * :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element * :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.) diff --git a/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts b/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts index b55252f1..bbe057a6 100644 --- a/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts +++ b/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts @@ -126,6 +126,6 @@ export const AllDiagramTypes = [ table, ]; -// This is the order used in diagram-type-navs +// Diagram types used in diagram-type-navs by default. Overwritten if defined in diagramOptions. export const ChartTypes = [line, column, bar, columnStacked, barStacked, pie, columnAndLine]; export const MapTypes = [mapFylker, mapFylker2019, mapFylker2023]; diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index b882601f..37daef8c 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -280,15 +280,12 @@ export class FhiAngularHighchartsComponent implements OnChanges { } private updateDiagramOptions() { - const activeDiagramType = this.diagramOptions.activeDiagramType; const footer = this.diagramOptions.footer; const openSource = this.diagramOptions.openSource; this.diagramOptions = { ...this.diagramOptions, - activeDiagramType: activeDiagramType - ? activeDiagramType - : (DiagramTypeIds.table as FhiDiagramTypeIds), + activeDiagramType: this.activeDiagramTypeGroup.diagramType.id as FhiDiagramTypeIds, footer: footer ? footer : undefined, openSource: openSource === undefined || openSource ? true : false, }; diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-diagram-type-navs/fhi-diagram-type-nav-default/fhi-diagram-type-nav-default.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-diagram-type-navs/fhi-diagram-type-nav-default/fhi-diagram-type-nav-default.component.html index dd326e82..abe2475b 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-diagram-type-navs/fhi-diagram-type-nav-default/fhi-diagram-type-nav-default.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-diagram-type-navs/fhi-diagram-type-nav-default/fhi-diagram-type-nav-default.component.html @@ -4,13 +4,13 @@ @@ -21,14 +21,14 @@ @@ -45,12 +45,12 @@
@@ -64,14 +64,14 @@
  • {{ group2.name }} (id:{{ group2.diagramType.id }}) - [active] + [active] [disabled]
    • {{ diagramType2.name }} - [active] + [active] [disabled]
    diff --git a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts index 6af6824c..a82144ee 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts @@ -3,11 +3,14 @@ import { cloneDeep } from 'lodash-es'; import { DiagramTypeIdValues } from '../constants-and-enums/diagram-type-ids'; import { DiagramTypeGroup } from '../models/diagram-type-group.model'; -import { DiagramTypeGroups } from '../constants-and-enums/diagram-type-groups'; +import { + DiagramTypeGroupNames, + DiagramTypeGroups, +} from '../constants-and-enums/diagram-type-groups'; import { FhiDiagramSerie } from '../models/fhi-diagram-serie.model'; import { FlaggedSerie } from '../models/flagged-serie.model'; import { DiagramType } from '../models/diagram-type.model'; -import { DiagramTypes } from '../constants-and-enums/fhi-diagram-types'; +import { ChartTypes, DiagramTypes, MapTypes } from '../constants-and-enums/fhi-diagram-types'; import { FhiDiagramOptions, FhiDiagramTypeIds } from '../models/fhi-diagram-options.model'; @Injectable() @@ -31,33 +34,20 @@ export class DiagramTypeGroupService { } getActiveDiagramTypeGroup(groups: DiagramTypeGroup[]): DiagramTypeGroup { - let activeGroup: DiagramTypeGroup; - groups.forEach((group) => { - if (group.diagramType.active) { - activeGroup = group; - } - }); - return activeGroup; + return groups.find((group) => group.diagramType.active); } getDiagramTypeGroups( diagramOptions: FhiDiagramOptions, flaggedSeries: FlaggedSerie[], - diagramTypeGroups: DiagramTypeGroup[], + previousDiagramTypeGroups: DiagramTypeGroup[], ): DiagramTypeGroup[] { this.diagramOptions = diagramOptions; - this.series = this.diagramOptions.series; + this.series = diagramOptions.series; this.flaggedSeries = flaggedSeries; this.activeDiagramType = undefined; - let groups = diagramTypeGroups ? cloneDeep(diagramTypeGroups) : cloneDeep(DiagramTypeGroups); - - groups = this.updateDiagramTypes(groups); - groups = this.removeEmptyGroups(groups); - groups = this.updateInactiveGroup(groups); - groups = this.updateActiveGroup(groups); - - return groups; + return this.createGroups(previousDiagramTypeGroups); } diagramTypeIsDisabled(groups: DiagramTypeGroup[], diagramTypeId: string): boolean { @@ -75,117 +65,131 @@ export class DiagramTypeGroupService { return false; } - private updateDiagramTypes(groups: DiagramTypeGroup[]): DiagramTypeGroup[] { - const diagramTypeSubset = this.getDiagramTypeSubset(); + private createGroups(previousGroups: DiagramTypeGroup[]): DiagramTypeGroup[] { + const groups: DiagramTypeGroup[] = []; + cloneDeep(DiagramTypeGroups).forEach((group) => { + groups.push(this.removeOrAddDiagramTypes(group)); + }); + this.updateChildrenDiagramTypeStates(groups); + this.updateActiveDiagramType(groups); + this.updateGroupDiagramTypeStates(groups, previousGroups); + return groups.filter((group) => group.children?.length > 0); + } + + private updateChildrenDiagramTypeStates(groups: DiagramTypeGroup[]) { groups.forEach((group) => { - if (diagramTypeSubset !== undefined && group.diagramType?.id !== DiagramTypeIdValues.table) { - this.removeDiagramTypesNotInSubset(group, diagramTypeSubset); - } group.children.forEach((diagramType) => { if (this.series.length === 0 || this.series[0].data.length === 0) { diagramType.disabled = true; this.diagramTypeDisabledWarnings[diagramType.id] = this.diagramTypeDisabledWarningsText.noSeriesOrNoData; } else { - this.disableDiagramType(diagramType); + diagramType.disabled = this.getDisabledState(diagramType); } - this.setDiagramTypeToActive(diagramType, this.diagramOptions.activeDiagramType); + diagramType.active = this.getActiveState(diagramType, groups); }); }); - return groups; - } - - private getDiagramTypeSubset(): string[] { - const chartTypeSubset: string[] | undefined = - this.diagramOptions.controls?.navigation?.items?.chartTypes; - const mapTypeSubset: string[] | undefined = - this.diagramOptions.controls?.navigation?.items?.mapTypes; - return chartTypeSubset?.concat(mapTypeSubset); } - private removeEmptyGroups(groups: DiagramTypeGroup[]): DiagramTypeGroup[] { - return groups.filter((group) => group.children?.length > 0); - } - - private updateInactiveGroup(groups: DiagramTypeGroup[]): DiagramTypeGroup[] { + private updateActiveDiagramType(groups: DiagramTypeGroup[]) { groups.forEach((group) => { - if (group.children.find((diagramType) => diagramType === group.diagramType) === undefined) { - group.diagramType = group.children[0]; + const activeChild = group.children.find((diagramType) => diagramType.active); + if (activeChild !== undefined) { + this.activeDiagramType = activeChild; } }); - return groups; } - private updateActiveGroup(groups: DiagramTypeGroup[]): DiagramTypeGroup[] { - let activeDiagramType: DiagramType; - - if (this.activeDiagramType) { - activeDiagramType = this.activeDiagramType; - } else { - activeDiagramType = { ...DiagramTypes.table, active: true, disabled: false }; - } - groups.forEach((group) => { - if ( - group.children.find((diagramType) => diagramType.id === activeDiagramType.id) !== undefined - ) { - if (group.diagramType.id === DiagramTypes.table.id) { - group.children[0] = activeDiagramType; - } - group.diagramType = activeDiagramType; + private updateGroupDiagramTypeStates( + groups: DiagramTypeGroup[], + previousGroups: DiagramTypeGroup[], + ) { + groups.forEach((group, index) => { + const activeChild = group.children.find( + (diagramType) => diagramType.id === this.activeDiagramType.id, + ); + + if (activeChild !== undefined) { + group.diagramType = activeChild; + } else if (previousGroups !== undefined && previousGroups[index]?.diagramType !== undefined) { + group.diagramType = group.children.find( + (diagramType) => diagramType.id === previousGroups[index].diagramType.id, + ); } else { - group.diagramType.active = false; + group.diagramType = group.children[0]; } }); - return groups; } - private removeDiagramTypesNotInSubset(group: DiagramTypeGroup, diagramTypeSubset: string[]) { - group.children = group.children.filter((type) => diagramTypeSubset.includes(type.id)); - } + private removeOrAddDiagramTypes(group: DiagramTypeGroup): DiagramTypeGroup { + if (group.name === DiagramTypeGroupNames.table) { + return group; + } + + const items = this.diagramOptions.controls?.navigation?.items; + const isChart = group.name === DiagramTypeGroupNames.chart; + const isMap = group.name === DiagramTypeGroupNames.map; - private setDiagramTypeToActive(diagramType: DiagramType, diagramTypeId: string) { - if (diagramType.id === diagramTypeId) { - diagramType.active = true; - this.activeDiagramType = diagramType; - } else { - diagramType.active = false; + group.children = []; + + if (isChart && items?.chartTypes !== undefined) { + items.chartTypes.forEach((id) => { + group.children.push(ChartTypes.find((type) => type.id === id)); + }); + } else if (isChart) { + group.children = ChartTypes; + } else if (isMap && items?.mapTypes !== undefined) { + items.mapTypes.forEach((id) => { + group.children.push(MapTypes.find((type) => type.id === id)); + }); + } else if (isMap) { + group.children = MapTypes; } + return group; + } + + private getActiveState(diagramType: DiagramType, groups: DiagramTypeGroup[]) { + const activeFromOptionsNotFoundInGrops = (() => + groups.every( + (group) => + group.children.find( + (diagramType) => diagramType.id === this.diagramOptions.activeDiagramType, + ) === undefined, + ))(); + + const fallbackToTable = + diagramType.id === DiagramTypes.table.id && activeFromOptionsNotFoundInGrops; + + return diagramType.id === this.diagramOptions.activeDiagramType || fallbackToTable; } - private disableDiagramType(diagramType: DiagramType) { + private getDisabledState(diagramType: DiagramType) { switch (diagramType.id) { case DiagramTypeIdValues.bar: - diagramType.disabled = this.disableBar(); - break; + return this.disableBar(); case DiagramTypeIdValues.barStacked: - diagramType.disabled = this.disableBarStacked(); - break; + return this.disableBarStacked(); case DiagramTypeIdValues.column: - diagramType.disabled = this.disableColumn(); - break; + return this.disableColumn(); case DiagramTypeIdValues.columnAndLine: - diagramType.disabled = this.disableColumnAndLine(); - break; + return this.disableColumnAndLine(); case DiagramTypeIdValues.columnStacked: - diagramType.disabled = this.disableColumnStacked(); - break; + return this.disableColumnStacked(); case DiagramTypeIdValues.mapFylker: case DiagramTypeIdValues.mapFylker2019: case DiagramTypeIdValues.mapFylker2023: - diagramType.disabled = this.disableMap(); - break; + return this.disableMap(); case DiagramTypeIdValues.pie: - diagramType.disabled = this.disablePie(); - break; + return this.disablePie(); default: - diagramType.disabled = false; + return false; } } @@ -237,7 +241,7 @@ export class DiagramTypeGroupService { } private disableMap(): boolean { - let disable: boolean; + let disable = false; let message: string; if (this.series.length > 1) { diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 43d4e808..f505af8e 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -175,7 +175,7 @@ export class HighchartsComponent implements OnInit { }, navigation: { items: { - chartTypes: ['bar', 'column', 'columnAndLine', 'line', 'pie'], + chartTypes: ['bar', 'column', 'line', 'pie'], mapTypes: ['mapFylker2023'], }, show: true, @@ -201,6 +201,7 @@ export class HighchartsComponent implements OnInit { } private getData__example_3b() { + this.diagramOptions.controls.navigation.items.chartTypes = ['bar', 'column', 'line', 'pie']; this.getData(MockData.BefolkningInndelingPr2024_andel, { ...this.diagramOptions, activeDiagramType: 'line', @@ -219,6 +220,7 @@ export class HighchartsComponent implements OnInit { } private getData__example_3c() { + this.diagramOptions.controls.navigation.items.chartTypes = ['bar', 'column', 'line', 'pie']; this.getData(MockData.DodsfallHjerteOgKarEtterFylke, { ...this.diagramOptions, activeDiagramType: 'mapFylker2023', @@ -228,6 +230,13 @@ export class HighchartsComponent implements OnInit { } private getData__example_3d() { + this.diagramOptions.controls.navigation.items.chartTypes = [ + 'bar', + 'column', + 'columnAndLine', + 'line', + 'pie', + ]; this.getData(MockData.AgensAntallOgAndel, { ...this.diagramOptions, activeDiagramType: 'columnAndLine', From 669e9c53f48b7d6a5ef43395cd3fa2652f2ac310 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 17 Sep 2024 10:55:58 +0200 Subject: [PATCH 33/52] Release/fhi-angular-highcharts/4.4.0 (#681) --- Fhi.Frontend.Style | 2 +- projects/fhi-angular-highcharts/CHANGELOG.md | 18 +++++++++--------- projects/fhi-angular-highcharts/package.json | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Fhi.Frontend.Style b/Fhi.Frontend.Style index 249e5c90..2425d98a 160000 --- a/Fhi.Frontend.Style +++ b/Fhi.Frontend.Style @@ -1 +1 @@ -Subproject commit 249e5c90fc930fe19a0ecfe78427c9d543896df7 +Subproject commit 2425d98aac6029988d23a29bc7aa4659421e08f5 diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 55f278b2..0228e5da 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,15 +1,15 @@ -# Unreleased +# 4.4.0 > Sep 13, 2024 -* :bug: **Bugfix** Make it possible to dynamically add diagram types to the diagram type navigation. -* :tada: **Enhancement** Add support for showing a description below the title. -* :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element -* :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.) -* :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more) -* :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table) -* :bug: **Bugfix** Add null check for unit.decimals -* :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. +* :bug: **Bugfix** Make it possible to dynamically add diagram types to the diagram type navigation. [(#665)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/665) +* :tada: **Enhancement** Add support for showing a description below the title. [(#673)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/673) +* :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element. [(#672)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/672) +* :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.). [(#670)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/670) +* :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more). [(#669)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/669) +* :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table). [(#668)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/668) +* :bug: **Bugfix** Add null check for unit.decimals. [(#667)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/667) +* :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. [(#664)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/664) ## 4.3.0 diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 354943c4..c63efd28 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "4.3.0", + "version": "4.4.0", "publishConfig": { "tag": "latest" }, From cc837f27c304888efe63beb6307a7c4c0a6c8139 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 17 Sep 2024 10:56:52 +0200 Subject: [PATCH 34/52] Add test for undefined in FhiTreeViewNavigationComponent (#680) --- projects/fhi-angular-components/CHANGELOG.md | 1 + .../fhi-tree-view-navigation.component.ts | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 1eacf4af..b47bead5 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -2,6 +2,7 @@ > Sep 9, 2024 +* :bug: **Bugfix** Add test for `undefined` in `FhiTreeViewNavigationComponent`. * :bug: **Bugfix** Add missing Bootstrap classes to `FhiAutosuggestComponent` and `FhiMultiselectComponent` ## 4.4.0 diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-navigation/fhi-tree-view-navigation.component.ts b/projects/fhi-angular-components/src/lib/fhi-tree-view-navigation/fhi-tree-view-navigation.component.ts index f25eaa90..a1dcfff0 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-navigation/fhi-tree-view-navigation.component.ts +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-navigation/fhi-tree-view-navigation.component.ts @@ -1,4 +1,11 @@ -import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + Input, + OnChanges, + SimpleChanges, + ViewEncapsulation, +} from '@angular/core'; import { FhiTreeViewNavigationItem as Item } from './fhi-tree-view-navigation-item.model'; @@ -8,11 +15,13 @@ import { FhiTreeViewNavigationItem as Item } from './fhi-tree-view-navigation-it encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class FhiTreeViewNavigationComponent { +export class FhiTreeViewNavigationComponent implements OnChanges { @Input() items: Item[] = []; - ngOnChanges() { - this.createIds(this.items, 1); + ngOnChanges(changes: SimpleChanges) { + if (changes['items'].currentValue !== undefined) { + this.createIds(this.items, 1); + } } toggleExpanded(item: Item) { From b1e322c738da172d1ed18ddbfed967d54007d8cc Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 17 Sep 2024 11:30:11 +0200 Subject: [PATCH 35/52] Bugfix/fhi-tree-view-selection (#679) --- projects/fhi-angular-components/CHANGELOG.md | 10 ++++++++-- .../fhi-tree-view-selection.component.ts | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index b47bead5..f55f8918 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,8 +1,14 @@ -# 4.4.1 +# Unreleased -> Sep 9, 2024 +> Sep 16, 2024 +* :bug: **Bugfix** Make `FhiTreeViewCheckbox` and `FhiTreeViewRadio` rerender items when it receives new items. * :bug: **Bugfix** Add test for `undefined` in `FhiTreeViewNavigationComponent`. + +## 4.4.1 + +> Sep 9, 2024 + * :bug: **Bugfix** Add missing Bootstrap classes to `FhiAutosuggestComponent` and `FhiMultiselectComponent` ## 4.4.0 diff --git a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts index 15829826..74e4335a 100644 --- a/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts +++ b/projects/fhi-angular-components/src/lib/fhi-tree-view-selection/fhi-tree-view-selection.component.ts @@ -43,14 +43,15 @@ export class FhiTreeViewSelectionComponent implements OnInit, OnChanges { if (this.enableCheckAll) { this.singleSelection = false; } - this.filteredItems = [...this.items]; } ngOnChanges(changes: SimpleChanges) { if (changes['items'].currentValue !== undefined) { this.createIds(this.items); this.updateDecendantState(this.items, true); + this.filteredItems = [...this.items]; } + this.itemsChange.emit(this.items); } onFilterNgModelChange(filterValue: string) { From fbc88713f4ca90556ac15d77b1266ff281be97e3 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 17 Sep 2024 13:53:30 +0200 Subject: [PATCH 36/52] Release/fhi-angular-components/4.4.2 (#683) --- projects/fhi-angular-components/CHANGELOG.md | 8 ++++---- projects/fhi-angular-components/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index f55f8918..3027f706 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,9 +1,9 @@ -# Unreleased +# 4.4.2 -> Sep 16, 2024 +> Sep 17, 2024 -* :bug: **Bugfix** Make `FhiTreeViewCheckbox` and `FhiTreeViewRadio` rerender items when it receives new items. -* :bug: **Bugfix** Add test for `undefined` in `FhiTreeViewNavigationComponent`. +* :bug: **Bugfix** Make `FhiTreeViewCheckbox` and `FhiTreeViewRadio` rerender items when it receives new items. [(#679)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/679) +* :bug: **Bugfix** Add test for `undefined` in `FhiTreeViewNavigationComponent`. [(#680)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/680) ## 4.4.1 diff --git a/projects/fhi-angular-components/package.json b/projects/fhi-angular-components/package.json index 75b5e05a..b4893b8b 100644 --- a/projects/fhi-angular-components/package.json +++ b/projects/fhi-angular-components/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-components", - "version": "4.4.1", + "version": "4.4.2", "publishConfig": { "tag": "latest" }, From 54fdab8fdd75fe094390f45bd411b058ea748910 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 12:45:15 +0200 Subject: [PATCH 37/52] Bugfix/highcharts: Don't set default diagram types (#688) --- package-lock.json | 2002 ++++++++--------- projects/fhi-angular-highcharts/CHANGELOG.md | 14 +- .../constants-and-enums/fhi-diagram-types.ts | 1 - .../services/diagram-type-group.service.ts | 21 +- .../highcharts/highcharts.component.ts | 12 + 5 files changed, 952 insertions(+), 1098 deletions(-) diff --git a/package-lock.json b/package-lock.json index 67500f92..14139c41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@angular/platform-browser": "17.3.3", "@angular/platform-browser-dynamic": "17.3.3", "@angular/router": "17.3.3", - "@folkehelseinstituttet/style": "6.2.2", + "@folkehelseinstituttet/style": "^6.0.0", "@ng-bootstrap/ng-bootstrap": "^16.0.0", "@ng-select/ng-select": "^12.0.6", "@popperjs/core": "^2.11.8", @@ -96,12 +96,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1703.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.8.tgz", - "integrity": "sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g==", + "version": "0.1703.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.9.tgz", + "integrity": "sha512-kEPfTOVnzrJxPGTvaXy8653HU9Fucxttx9gVfQR1yafs+yIEGx3fKGKe89YPmaEay32bIm7ZUpxDF1FO14nkdQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.3.8", + "@angular-devkit/core": "17.3.9", "rxjs": "7.8.1" }, "engines": { @@ -120,15 +120,15 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.8.tgz", - "integrity": "sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.9.tgz", + "integrity": "sha512-EuAPSC4c2DSJLlL4ieviKLx1faTyY+ymWycq6KFwoxu1FgWly/dqBeWyXccYinLhPVZmoh6+A/5S4YWXlOGSnA==", "dev": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1703.8", - "@angular-devkit/build-webpack": "0.1703.8", - "@angular-devkit/core": "17.3.8", + "@angular-devkit/architect": "0.1703.9", + "@angular-devkit/build-webpack": "0.1703.9", + "@angular-devkit/core": "17.3.9", "@babel/core": "7.24.0", "@babel/generator": "7.23.6", "@babel/helper-annotate-as-pure": "7.22.5", @@ -139,7 +139,7 @@ "@babel/preset-env": "7.24.0", "@babel/runtime": "7.24.0", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.3.8", + "@ngtools/webpack": "17.3.9", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.18", @@ -183,7 +183,7 @@ "undici": "6.11.1", "vite": "5.1.7", "watchpack": "2.4.0", - "webpack": "5.90.3", + "webpack": "5.94.0", "webpack-dev-middleware": "6.1.2", "webpack-dev-server": "4.15.1", "webpack-merge": "5.10.0", @@ -248,65 +248,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -316,78 +257,19 @@ "tslib": "^2.1.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1703.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.8.tgz", - "integrity": "sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q==", + "version": "0.1703.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.9.tgz", + "integrity": "sha512-3b0LND39Nc+DwCQ0N7Tbsd7RAFWTeIc4VDwk/7RO8EMYTP5Kfgr/TK66nwTBypHsjmD69IMKHZZaZuiDfGfx2A==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1703.8", + "@angular-devkit/architect": "0.1703.9", "rxjs": "7.8.1" }, "engines": { @@ -410,9 +292,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.8.tgz", - "integrity": "sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.9.tgz", + "integrity": "sha512-/iKyn5YT7NW5ylrg9yufUydS8byExeQ2HHIwFC4Ebwb/JYYCz+k4tBf2LdP+zXpemDpLznXTQGWia0/yJjG8Vg==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -968,11 +850,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", - "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.24.6", + "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" }, "engines": { @@ -980,9 +862,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz", - "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "engines": { "node": ">=6.9.0" } @@ -1056,25 +938,26 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.6.tgz", - "integrity": "sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz", - "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dependencies": { - "@babel/compat-data": "^7.24.6", - "@babel/helper-validator-option": "^7.24.6", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -1091,19 +974,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.6.tgz", - "integrity": "sha512-djsosdPJVZE6Vsw3kk7IPRWethP94WHGOhQTc67SNXE0ZzMhHgALw8iGmYS0TD1bbMM0VDROy43od7/hN6WYcA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-member-expression-to-functions": "^7.24.6", - "@babel/helper-optimise-call-expression": "^7.24.6", - "@babel/helper-replace-supers": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -1114,24 +995,12 @@ } }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", - "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1147,12 +1016,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.6.tgz", - "integrity": "sha512-C875lFBIWWwyv6MHZUG9HmRrlTDgOsLWZfYR0nW69gaKJNe0/Mpxx5r0EID2ZdHQkdUmQo2t0uNckTL08/1BgA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -1164,12 +1033,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", - "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1201,69 +1070,51 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz", - "integrity": "sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz", - "integrity": "sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==", - "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz", - "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.6.tgz", - "integrity": "sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz", - "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz", - "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-module-imports": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -1272,47 +1123,36 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.6.tgz", - "integrity": "sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz", - "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.6.tgz", - "integrity": "sha512-1Qursq9ArRZPAMOZf/nuzVW8HgJLkTB9y9LfP4lW2MVp4e9WkLJDovfKBxoDcCk6VuzIxyqWHyBoaCtSRP10yg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-wrap-function": "^7.24.6" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1322,26 +1162,26 @@ } }, "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", - "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.6.tgz", - "integrity": "sha512-mRhfPwDqDpba8o1F8ESxsEkJMQkUF8ZIWrAc0FtWhxnjfextxMWxr22RtFizxxSYLjVHDeMgVsRq8BBZR2ikJQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-member-expression-to-functions": "^7.24.6", - "@babel/helper-optimise-call-expression": "^7.24.6" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1351,23 +1191,25 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz", - "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.6.tgz", - "integrity": "sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1386,61 +1228,61 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz", - "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", - "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz", - "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.6.tgz", - "integrity": "sha512-f1JLrlw/jbiNfxvdrfBgio/gRBk3yTAEJWirpAkiJG2Hb22E7cEYKHWo0dFPTv/niPovzIdPdEDetrv6tC6gPQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.24.6", - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz", - "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", "dependencies": { - "@babel/template": "^7.24.6", - "@babel/types": "^7.24.6" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", - "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.6", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -1450,9 +1292,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz", - "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1461,12 +1306,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.6.tgz", - "integrity": "sha512-iVuhb6poq5ikqRq2XWU6OQ+R5o9wF+r/or9CeUyovgptz0UlnK4/seOQ1Istu/XybYjAhQv1FRSSfHHufIku5Q==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1476,14 +1321,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.6.tgz", - "integrity": "sha512-c8TER5xMDYzzFcGqOEp9l4hvB7dcbhcGjcLVwxWfe4P5DOafdwjsBJZKsmv+o3aXh7NhopvayQIovHrh2zSRUQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", - "@babel/plugin-transform-optional-chaining": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1493,13 +1338,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.6.tgz", - "integrity": "sha512-z8zEjYmwBUHN/pCF3NuWBhHQjJCrd33qAi8MgANfMrAvn72k2cImT8VjK9LJFu4ysOLJqhfkYYb3MvwANRUNZQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1584,12 +1429,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.6.tgz", - "integrity": "sha512-BE6o2BogJKJImTmGpkmOic4V0hlRRxVtzqxiSPa8TIFxyhi4EFjHm08nq1M4STK4RytuLMgnSz0/wfflvGFNOg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", + "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1599,12 +1444,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.6.tgz", - "integrity": "sha512-D+CfsVZousPXIdudSII7RGy52+dYRtbyKAZcvtQKq/NpsivyMVduepzcLqG5pMBugtMdedxdC8Ramdpcne9ZWQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1756,12 +1601,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.6.tgz", - "integrity": "sha512-jSSSDt4ZidNMggcLx8SaKsbGNEfIl0PHx/4mFEulorE7bpYLbN0d3pDW3eJ7Y5Z3yPhy3L3NaPCYyTUY7TuugQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1806,12 +1651,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.6.tgz", - "integrity": "sha512-XNW7jolYHW9CwORrZgA/97tL/k05qe/HL0z/qqJq1mdWhwwCM6D4BJBV7wAz9HgFziN5dTOG31znkVIzwxv+vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1821,12 +1666,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.6.tgz", - "integrity": "sha512-S/t1Xh4ehW7sGA7c1j/hiOBLnEYCp/c2sEG4ZkL8kI1xX9tW2pqJTCHKtdhe/jHKt8nG0pFCrDHUXd4DvjHS9w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1836,13 +1681,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.6.tgz", - "integrity": "sha512-j6dZ0Z2Z2slWLR3kt9aOmSIrBvnntWjMDN/TVcMPxhXMLmJVqX605CBRlcGI4b32GMbfifTEsdEjGjiE+j/c3A==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1852,13 +1697,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.6.tgz", - "integrity": "sha512-1QSRfoPI9RoLRa8Mnakc6v3e0gJxiZQTYrMfLn+mD0sz5+ndSzwymp2hDcYJTyT0MOn0yuWzj8phlIvO72gTHA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1869,18 +1714,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.6.tgz", - "integrity": "sha512-+fN+NO2gh8JtRmDSOB6gaCVo36ha8kfCW1nMq2Gc0DABln0VcHN4PrALDvF5/diLzIRKptC7z/d7Lp64zk92Fg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-replace-supers": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -1891,37 +1734,25 @@ } }, "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", - "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.6.tgz", - "integrity": "sha512-cRzPobcfRP0ZtuIEkA8QzghoUpSB3X3qSH5W2+FzG+VjWbJXExtx0nbRqwumdBN1x/ot2SlTNQLfBCnPdzp6kg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/template": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1931,12 +1762,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.6.tgz", - "integrity": "sha512-YLW6AE5LQpk5npNXL7i/O+U9CE4XsBCuRPgyjl1EICZYKmcitV+ayuuUGMJm2lC1WWjXYszeTnIxF/dq/GhIZQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1946,13 +1777,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.6.tgz", - "integrity": "sha512-rCXPnSEKvkm/EjzOtLoGvKseK+dS4kZwx1HexO3BtRtgL0fQ34awHn34aeSHuXtZY2F8a1X8xqBBPRtOxDVmcA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1962,12 +1793,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.6.tgz", - "integrity": "sha512-/8Odwp/aVkZwPFJMllSbawhDAO3UJi65foB00HYnK/uXvvCPm0TAXSByjz1mpRmp0q6oX2SIxpkUOpPFHk7FLA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1977,12 +1808,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.6.tgz", - "integrity": "sha512-vpq8SSLRTBLOHUZHSnBqVo0AKX3PBaoPs2vVzYVWslXDTDIpwAcCDtfhUcHSQQoYoUvcFPTdC8TZYXu9ZnLT/w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1993,13 +1824,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.6.tgz", - "integrity": "sha512-EemYpHtmz0lHE7hxxxYEuTYOOBZ43WkDgZ4arQ4r+VX9QHuNZC+WH3wUWmRNvR8ECpTRne29aZV6XO22qpOtdA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2009,12 +1840,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.6.tgz", - "integrity": "sha512-inXaTM1SVrIxCkIJ5gqWiozHfFMStuGbGJAxZFBoHcRRdDP0ySLb3jH6JOwmfiinPwyMZqMBX+7NBDCO4z0NSA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -2025,13 +1856,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.6.tgz", - "integrity": "sha512-n3Sf72TnqK4nw/jziSqEl1qaWPbCRw2CziHH+jdRYvw4J6yeCzsj4jdw8hIntOEeDGTmHVe2w4MVL44PN0GMzg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2041,14 +1872,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.6.tgz", - "integrity": "sha512-sOajCu6V0P1KPljWHKiDq6ymgqB+vfo3isUS4McqW1DZtvSVU2v/wuMhmRmkg3sFoq6GMaUUf8W4WtoSLkOV/Q==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -2058,12 +1889,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.6.tgz", - "integrity": "sha512-Uvgd9p2gUnzYJxVdBLcU0KurF8aVhkmVyMKW4MIY1/BByvs3EBpv45q01o7pRTVmTvtQq5zDlytP3dcUgm7v9w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -2074,12 +1905,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.6.tgz", - "integrity": "sha512-f2wHfR2HF6yMj+y+/y07+SLqnOSwRp8KYLpQKOzS58XLVlULhXbiYcygfXQxJlMbhII9+yXDwOUFLf60/TL5tw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2089,12 +1920,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.6.tgz", - "integrity": "sha512-EKaWvnezBCMkRIHxMJSIIylzhqK09YpiJtDbr2wsXTwnO0TxyjMUkaw4RlFIZMIS0iDj0KyIg7H7XCguHu/YDA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -2105,12 +1936,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.6.tgz", - "integrity": "sha512-9g8iV146szUo5GWgXpRbq/GALTnY+WnNuRTuRHWWFfWGbP9ukRL0aO/jpu9dmOPikclkxnNsjY8/gsWl6bmZJQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2120,13 +1951,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.6.tgz", - "integrity": "sha512-eAGogjZgcwqAxhyFgqghvoHRr+EYRQPFjUXrTYKBRb5qPnAVxOOglaxc4/byHqjvq/bqO2F3/CGwTHsgKJYHhQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2136,14 +1967,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.6.tgz", - "integrity": "sha512-JEV8l3MHdmmdb7S7Cmx6rbNEjRCgTQMZxllveHO0mx6uiclB0NflCawlQQ6+o5ZrwjUBYPzHm2XoK4wqGVUFuw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-simple-access": "^7.24.6" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2153,15 +1984,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.6.tgz", - "integrity": "sha512-xg1Z0J5JVYxtpX954XqaaAT6NpAY6LtZXvYFCJmGFJWwtlz2EmJoR8LycFRGNE8dBKizGWkGQZGegtkV8y8s+w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -2171,13 +2002,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.6.tgz", - "integrity": "sha512-esRCC/KsSEUvrSjv5rFYnjZI6qv4R1e/iHQrqwbZIoRJqk7xCvEUiN7L1XrmW5QSmQe3n1XD88wbgDTWLbVSyg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2187,13 +2018,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.6.tgz", - "integrity": "sha512-6DneiCiu91wm3YiNIGDWZsl6GfTTbspuj/toTEqLh9d4cx50UIzSdg+T96p8DuT7aJOBRhFyaE9ZvTHkXrXr6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2203,12 +2034,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.6.tgz", - "integrity": "sha512-f8liz9JG2Va8A4J5ZBuaSdwfPqN6axfWRK+y66fjKYbwf9VBLuq4WxtinhJhvp1w6lamKUwLG0slK2RxqFgvHA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2218,12 +2049,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.6.tgz", - "integrity": "sha512-+QlAiZBMsBK5NqrBWFXCYeXyiU1y7BQ/OYaiPAcQJMomn5Tyg+r5WuVtyEuvTbpV7L25ZSLfE+2E9ywj4FD48A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -2234,12 +2065,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.6.tgz", - "integrity": "sha512-6voawq8T25Jvvnc4/rXcWZQKKxUNZcKMS8ZNrjxQqoRFernJJKjE3s18Qo6VFaatG5aiX5JV1oPD7DbJhn0a4Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -2250,15 +2081,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.6.tgz", - "integrity": "sha512-OKmi5wiMoRW5Smttne7BwHM8s/fb5JFs+bVGNSeHWzwZkWXWValR1M30jyXo1s/RaqgwwhEC62u4rFH/FBcBPg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.6" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2268,13 +2099,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.6.tgz", - "integrity": "sha512-N/C76ihFKlZgKfdkEYKtaRUtXZAgK7sOY4h2qrbVbVTXPrKGIi8aww5WGe/+Wmg8onn8sr2ut6FXlsbu/j6JHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-replace-supers": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2284,12 +2115,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.6.tgz", - "integrity": "sha512-L5pZ+b3O1mSzJ71HmxSCmTVd03VOT2GXOigug6vDYJzE5awLI7P1g0wFcdmGuwSDSrQ0L2rDOe/hHws8J1rv3w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -2300,13 +2131,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.6.tgz", - "integrity": "sha512-cHbqF6l1QP11OkYTYQ+hhVx1E017O5ZcSPXk9oODpqhcAD1htsWG2NpHrrhthEO2qZomLK0FXS+u7NfrkF5aOQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -2317,12 +2148,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.6.tgz", - "integrity": "sha512-ST7guE8vLV+vI70wmAxuZpIKzVjvFX9Qs8bl5w6tN/6gOypPWUmMQL2p7LJz5E63vEGrDhAiYetniJFyBH1RkA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2332,13 +2163,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.6.tgz", - "integrity": "sha512-T9LtDI0BgwXOzyXrvgLTT8DFjCC/XgWLjflczTLXyvxbnSR/gpv0hbmzlHE/kmh9nOvlygbamLKRo6Op4yB6aw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2348,14 +2179,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.6.tgz", - "integrity": "sha512-Qu/ypFxCY5NkAnEhCF86Mvg3NSabKsh/TPpBVswEdkGl7+FbsYHy1ziRqJpwGH4thBdQHh8zx+z7vMYmcJ7iaQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.6", - "@babel/helper-create-class-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -2366,24 +2197,24 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.6.tgz", - "integrity": "sha512-DitEzDfOMnd13kZnDqns1ccmftwJTS9DMkyn9pYTxulS7bZxUxpMly3Nf23QQ6NwA4UB8lAqjbqWtyvElEMAkg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.24.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.6.tgz", - "integrity": "sha512-oARaglxhRsN18OYsnPTpb8TcKQWDYNsPNmTnx5++WOAsUJ0cSC/FZVlIJCKvPbU4yn/UXsS0551CFKJhN0CaMw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2393,12 +2224,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.6.tgz", - "integrity": "sha512-SMDxO95I8WXRtXhTAc8t/NFQUT7VYbIWwJCJgEli9ml4MhqUMh4S6hxgH6SmAC3eAQNWCDJFxcFeEt9w2sDdXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -2409,12 +2240,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.6.tgz", - "integrity": "sha512-DcrgFXRRlK64dGE0ZFBPD5egM2uM8mgfrvTMOSB2yKzOtjpGegVYkzh3s1zZg1bBck3nkXiaOamJUqK3Syk+4A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2453,12 +2284,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.6.tgz", - "integrity": "sha512-xnEUvHSMr9eOWS5Al2YPfc32ten7CXdH7Zwyyk7IqITg4nX61oHj+GxpNvl+y5JHjfN3KXE2IV55wAWowBYMVw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2468,13 +2299,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.6.tgz", - "integrity": "sha512-h/2j7oIUDjS+ULsIrNZ6/TKG97FgmEk1PXryk/HQq6op4XUUUwif2f69fJrzK0wza2zjCS1xhXmouACaWV5uPA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2484,12 +2315,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.6.tgz", - "integrity": "sha512-fN8OcTLfGmYv7FnDrsjodYBo1DhPL3Pze/9mIIE2MGCT1KgADYIOD7rEglpLHZj8PZlC/JFX5WcD+85FLAQusw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2499,12 +2330,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.6.tgz", - "integrity": "sha512-BJbEqJIcKwrqUP+KfUIkxz3q8VzXe2R8Wv8TaNgO1cx+nNavxn/2+H8kp9tgFSOL6wYPPEgFvU6IKS4qoGqhmg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2514,12 +2345,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.6.tgz", - "integrity": "sha512-IshCXQ+G9JIFJI7bUpxTE/oA2lgVLAIK8q1KdJNoPXOpvRaNjMySGuvLfBw/Xi2/1lLo953uE8hyYSDW3TSYig==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2529,12 +2360,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.6.tgz", - "integrity": "sha512-bKl3xxcPbkQQo5eX9LjjDpU2xYHeEeNQbOhj0iPvetSzA+Tu9q/o5lujF4Sek60CM6MgYvOS/DJuwGbiEYAnLw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2544,13 +2375,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.6.tgz", - "integrity": "sha512-8EIgImzVUxy15cZiPii9GvLZwsy7Vxc+8meSlR3cXFmBIl5W5Tn9LGBf7CDKkHj4uVfNXCJB8RsVfnmY61iedA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2560,13 +2391,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.6.tgz", - "integrity": "sha512-pssN6ExsvxaKU638qcWb81RrvvgZom3jDgU/r5xFZ7TONkZGFf4MhI2ltMb8OcQWhHyxgIavEU+hgqtbKOmsPA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2576,13 +2407,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.6.tgz", - "integrity": "sha512-quiMsb28oXWIDK0gXLALOJRXLgICLiulqdZGOaPPd0vRT7fQp74NtdADAVu+D8s00C+0Xs0MxVP0VKF/sZEUgw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.6", - "@babel/helper-plugin-utils": "^7.24.6" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2727,31 +2558,28 @@ } }, "node_modules/@babel/template": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz", - "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz", - "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==", - "dependencies": { - "@babel/code-frame": "^7.24.6", - "@babel/generator": "^7.24.6", - "@babel/helper-environment-visitor": "^7.24.6", - "@babel/helper-function-name": "^7.24.6", - "@babel/helper-hoist-variables": "^7.24.6", - "@babel/helper-split-export-declaration": "^7.24.6", - "@babel/parser": "^7.24.6", - "@babel/types": "^7.24.6", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2760,11 +2588,11 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz", - "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", "dependencies": { - "@babel/types": "^7.24.6", + "@babel/types": "^7.25.6", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -2773,24 +2601,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz", - "integrity": "sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==", - "dependencies": { - "@babel/types": "^7.24.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz", - "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dependencies": { - "@babel/helper-string-parser": "^7.24.6", - "@babel/helper-validator-identifier": "^7.24.6", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -3205,9 +3022,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -3326,29 +3143,30 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@folkehelseinstituttet/style": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@folkehelseinstituttet/style/-/style-6.2.2.tgz", - "integrity": "sha512-u56jg0bv0QFVM+RhLJ17f5/7eCqYs0MruJv9g3aku2Pl6M2nXNvxeSan0eCzGC4usLqYuyAXeYoikO9go0Q7fQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@folkehelseinstituttet/style/-/style-6.3.1.tgz", + "integrity": "sha512-V3oqpSZtELeaPfgM6H8AgiN3X1uhPe4wddZPi2rQWLwSHRoCsJuTf5HP7mxSdAbh2j9wryvHdnwnI+83fhAcfg==", "peerDependencies": { "bootstrap": "^5.3.2" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -3395,6 +3213,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@isaacs/cliui": { @@ -3415,9 +3234,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "engines": { "node": ">=12" @@ -3570,9 +3389,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -3635,9 +3454,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "17.3.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.8.tgz", - "integrity": "sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ==", + "version": "17.3.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.9.tgz", + "integrity": "sha512-2+NvEQuYKRWdZaJbRJWEnR48tpW0uYbhwfHBHLDI9Kazb3mb0oAwYBVXdq+TtDLBypXnMsFpCewjRHTvkVx4/A==", "dev": true, "engines": { "node": "^18.13.0 || >=20.9.0", @@ -3699,13 +3518,10 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/@npmcli/fs": { "version": "3.1.1", @@ -3720,12 +3536,13 @@ } }, "node_modules/@npmcli/git": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", - "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", "dev": true, "dependencies": { "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", @@ -3738,6 +3555,15 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@npmcli/git/node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/@npmcli/git/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -3748,13 +3574,10 @@ } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/@npmcli/git/node_modules/proc-log": { "version": "4.2.0", @@ -3806,9 +3629,9 @@ } }, "node_modules/@npmcli/package-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.1.0.tgz", - "integrity": "sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, "dependencies": { "@npmcli/git": "^5.0.0", @@ -3824,31 +3647,29 @@ } }, "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -4266,9 +4087,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", "cpu": [ "arm" ], @@ -4279,9 +4100,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", "cpu": [ "arm64" ], @@ -4292,9 +4113,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", "cpu": [ "arm64" ], @@ -4305,9 +4126,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", "cpu": [ "x64" ], @@ -4318,9 +4139,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", "cpu": [ "arm" ], @@ -4331,9 +4152,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", "cpu": [ "arm" ], @@ -4344,9 +4165,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", "cpu": [ "arm64" ], @@ -4357,9 +4178,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", "cpu": [ "arm64" ], @@ -4370,9 +4191,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", "cpu": [ "ppc64" ], @@ -4383,9 +4204,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", "cpu": [ "riscv64" ], @@ -4396,9 +4217,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", "cpu": [ "s390x" ], @@ -4409,9 +4230,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", "cpu": [ "x64" ], @@ -4422,9 +4243,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", "cpu": [ "x64" ], @@ -4435,9 +4256,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", "cpu": [ "arm64" ], @@ -4448,9 +4269,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", "cpu": [ "ia32" ], @@ -4461,9 +4282,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", "cpu": [ "x64" ], @@ -4474,9 +4295,9 @@ ] }, "node_modules/@rollup/wasm-node": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.18.0.tgz", - "integrity": "sha512-DkLoyblRMhJw9ZogW9zCpyH0CNJ+7GaM7Ty+Vl+G21z/Gr7uKBaXqcJqwWUiNYVxTOgxZrxhDG6pmOFxOuswvw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.21.3.tgz", + "integrity": "sha512-uZFl4GXMgyllfuKjY/zlXxTxDs+G/LB7snVENskpJt7IIXw6cD1yqi3eBeGM8NxE9kuxrNB0Qr1QLNtDYTlqeQ==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -4662,9 +4483,9 @@ } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -4796,26 +4617,6 @@ "@types/ms": "*" } }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -4835,9 +4636,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz", - "integrity": "sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==", + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "dependencies": { "@types/node": "*", @@ -4853,9 +4654,9 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -4883,9 +4684,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==" + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==" }, "node_modules/@types/lodash-es": { "version": "4.17.12", @@ -4917,12 +4718,12 @@ "optional": true }, "node_modules/@types/node": { - "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "version": "20.16.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", + "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { @@ -4935,9 +4736,9 @@ } }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true }, "node_modules/@types/range-parser": { @@ -5004,15 +4805,15 @@ } }, "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "optional": true }, "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -5629,9 +5430,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5640,10 +5441,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "peerDependencies": { "acorn": "^8" @@ -5886,9 +5687,9 @@ } }, "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, "node_modules/asynckit": { @@ -5935,9 +5736,9 @@ } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -6140,9 +5941,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -6153,7 +5954,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -6233,9 +6034,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -6251,10 +6052,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -6315,9 +6116,9 @@ } }, "node_modules/cacache": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", - "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", @@ -6338,40 +6139,35 @@ } }, "node_modules/cacache/node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -6421,9 +6217,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001625", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001625.tgz", - "integrity": "sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==", + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", "funding": [ { "type": "opencollective", @@ -6501,9 +6297,9 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "engines": { "node": ">=6.0" @@ -6931,12 +6727,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -7196,9 +6992,9 @@ "dev": true }, "node_modules/cytoscape": { - "version": "3.29.2", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.29.2.tgz", - "integrity": "sha512-2G1ycU28Nh7OHT9rkXRLpCDP30MKH1dXJORZuBhtEhEW7pKwgPi77ImqlCWinouyE1PNepIOGZBOrE84DG7LyQ==", + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz", + "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==", "optional": true, "engines": { "node": ">=0.10" @@ -7707,17 +7503,17 @@ } }, "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", "optional": true }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -7987,9 +7783,9 @@ } }, "node_modules/dompurify": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.4.tgz", - "integrity": "sha512-2gnshi6OshmuKil8rMZuQCGiUF3cUxHY3NGDzUAdUx/NPEe5DVnO8BDoAQouvgwnx0R/+a6jUn36Z0FSdq8vww==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==", "optional": true }, "node_modules/domutils": { @@ -8061,9 +7857,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.783", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz", - "integrity": "sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==" + "version": "1.5.25", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz", + "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==" }, "node_modules/elkjs": { "version": "0.9.3", @@ -8154,18 +7950,18 @@ } }, "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -8188,10 +7984,16 @@ } }, "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/entities": { "version": "4.5.0", @@ -8264,9 +8066,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", - "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, "node_modules/esbuild": { @@ -8321,9 +8123,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { "node": ">=6" } @@ -8343,16 +8145,16 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -8410,13 +8212,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -8440,9 +8242,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -8758,9 +8560,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -8859,37 +8661,37 @@ "dev": true }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -8918,14 +8720,23 @@ "ms": "2.0.0" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -9205,9 +9016,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -9225,9 +9036,9 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -9603,14 +9414,14 @@ } }, "node_modules/highcharts": { - "version": "11.4.3", - "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.4.3.tgz", - "integrity": "sha512-rMmvYvcdwyUVfnRPfiZ0PnW6TgVhoS0FTBI8fc4Fp8l8ocoC9dMecvxS6E6tm7h7LrnSGoEo3b/0IRHuLatD2w==" + "version": "11.4.8", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.4.8.tgz", + "integrity": "sha512-5Tke9LuzZszC4osaFisxLIcw7xgNGz4Sy3Jc9pRMV+ydm6sYqsPYdU8ELOgpzGNrbrRNDRBtveoR5xS3SzneEA==" }, "node_modules/highcharts-angular": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-4.0.0.tgz", - "integrity": "sha512-0ghWnKvab6u+AgSDR1mgmWa2RLZHeAQ1tHyfqx/8nJr6iy1NA5m6kVRERF6NAofrLQoZ0v+lNP2AlN/pim0d9A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-4.0.1.tgz", + "integrity": "sha512-KAy+RRJyrDDKFYLFr3p2O+ups3ZyDP3CoakHuO3u+ZUCm85ziJ29WT1qPjzp2NBupYt+MGZV/DAyPMi5iyAIHw==", "dependencies": { "tslib": "^2.0.0" }, @@ -9633,13 +9444,10 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/hpack.js": { "version": "2.1.6", @@ -9919,9 +9727,9 @@ } }, "node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", "dev": true }, "node_modules/import-fresh": { @@ -10119,12 +9927,15 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10415,16 +10226,13 @@ } }, "node_modules/jackspeak": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", - "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -10433,9 +10241,9 @@ } }, "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "dependencies": { "async": "^3.2.3", @@ -10543,9 +10351,9 @@ } }, "node_modules/jasmine-core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", - "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.3.0.tgz", + "integrity": "sha512-zsOmeBKESky4toybvWEikRiZ0jHoBEu79wNArLfMdSnlLMZx3Xcp6CSm2sUcYyoJC+Uyj8LBJap/MUbVSfJ27g==", "dev": true }, "node_modules/jasmine-spec-reporter": { @@ -10690,9 +10498,9 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -10799,9 +10607,9 @@ ] }, "node_modules/karma": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", - "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, "dependencies": { "@colors/colors": "1.5.0", @@ -11081,9 +10889,9 @@ } }, "node_modules/katex": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", - "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", + "version": "0.16.11", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", + "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -11148,9 +10956,9 @@ } }, "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, "dependencies": { "picocolors": "^1.0.0", @@ -11594,10 +11402,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -12093,9 +11904,9 @@ "optional": true }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -12276,9 +12087,9 @@ "dev": true }, "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, "dependencies": { "jsonparse": "^1.3.1", @@ -12430,9 +12241,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -12699,9 +12510,9 @@ } }, "node_modules/node-gyp": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", - "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", + "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", "dev": true, "dependencies": { "env-paths": "^2.2.0", @@ -12710,9 +12521,9 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5", - "tar": "^6.1.2", + "tar": "^6.2.1", "which": "^4.0.0" }, "bin": { @@ -12723,9 +12534,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", "dev": true, "optional": true, "bin": { @@ -12735,23 +12546,21 @@ } }, "node_modules/node-gyp/node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -12766,9 +12575,9 @@ } }, "node_modules/node-gyp/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -12780,6 +12589,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/node-gyp/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/node-gyp/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", @@ -12802,9 +12620,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", @@ -12828,13 +12646,12 @@ } }, "node_modules/normalize-package-data": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", - "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -13183,10 +13000,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13451,6 +13271,12 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, "node_modules/pacote": { "version": "17.0.6", "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", @@ -13631,18 +13457,15 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/path-type": { @@ -13655,9 +13478,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "4.0.1", @@ -13776,9 +13599,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "engines": { "node": ">=12.20" @@ -13912,9 +13735,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -13940,9 +13763,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -14071,13 +13894,10 @@ "optional": true }, "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true }, "node_modules/qjobs": { "version": "1.2.0", @@ -14089,12 +13909,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -14191,31 +14011,29 @@ } }, "node_modules/read-package-json/node_modules/glob": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", - "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -14275,9 +14093,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -14465,9 +14283,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, "node_modules/rimraf": { @@ -14493,9 +14311,9 @@ "optional": true }, "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -14508,22 +14326,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, @@ -14749,9 +14567,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { "debug": "2.6.9", @@ -14799,12 +14617,6 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -14893,20 +14705,29 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -15108,14 +14929,14 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", - "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" @@ -15131,9 +14952,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15217,9 +15038,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "dev": true }, "node_modules/spdy": { @@ -15434,9 +15255,9 @@ } }, "node_modules/stylis": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", - "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", + "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==", "optional": true }, "node_modules/supports-color": { @@ -15472,9 +15293,9 @@ } }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", @@ -15851,9 +15672,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/tuf-js": { "version": "2.2.1", @@ -15925,9 +15746,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.38", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", - "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==", "dev": true, "funding": [ { @@ -15943,6 +15764,9 @@ "url": "https://github.com/sponsors/faisalman" } ], + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -15957,15 +15781,15 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "engines": { "node": ">=4" @@ -15985,9 +15809,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "engines": { "node": ">=4" @@ -16058,9 +15882,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -16095,6 +15919,15 @@ "punycode": "^2.1.0" } }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -16686,21 +16519,20 @@ "optional": true }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -16964,9 +16796,9 @@ } }, "node_modules/webpack/node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -17214,9 +17046,9 @@ } }, "node_modules/zone.js": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.6.tgz", - "integrity": "sha512-vyRNFqofdaHVdWAy7v3Bzmn84a1JHWSjpuTZROT/uYn8I3p2cmo7Ro9twFmYRQDPhiYOV7QLk0hhY4JJQVqS6Q==" + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==" } } } diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 0228e5da..844661b4 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,15 +1,19 @@ -# 4.4.0 +# Unreleased -> Sep 13, 2024 +* :boom: **Breaking** Only populate the the `fhi-diagram-type-nav-default` with diagram type `table` if no diagram types defined options (`navigation.items.chartTypes` or `navigation.items.mapTypes`). + +## 4.4.0 + +> Sep 17, 2024 -* :bug: **Bugfix** Make it possible to dynamically add diagram types to the diagram type navigation. [(#665)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/665) * :tada: **Enhancement** Add support for showing a description below the title. [(#673)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/673) -* :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element. [(#672)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/672) * :tada: **Enhancement** Update documentation for Interface FhiDiagramUnit (about decimal count limited to 9 etc.). [(#670)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/670) +* :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. [(#664)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/664) +* :bug: **Bugfix** Make it possible to dynamically add diagram types to the diagram type navigation. [(#665)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/665) +* :bug: **Bugfix** Adjust allowed max widths on the Highcharts container element. [(#672)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/672) * :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more). [(#669)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/669) * :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table). [(#668)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/668) * :bug: **Bugfix** Add null check for unit.decimals. [(#667)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/667) -* :tada: **Enhancement** Add support for showing diagram type line with multiple series even if flagged. This will also affect diagram type line with single series: data points will no longer be removed, instead the line will be broken. [(#664)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/664) ## 4.3.0 diff --git a/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts b/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts index bbe057a6..17aa087e 100644 --- a/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts +++ b/projects/fhi-angular-highcharts/src/lib/constants-and-enums/fhi-diagram-types.ts @@ -126,6 +126,5 @@ export const AllDiagramTypes = [ table, ]; -// Diagram types used in diagram-type-navs by default. Overwritten if defined in diagramOptions. export const ChartTypes = [line, column, bar, columnStacked, barStacked, pie, columnAndLine]; export const MapTypes = [mapFylker, mapFylker2019, mapFylker2023]; diff --git a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts index a82144ee..86082d03 100644 --- a/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts +++ b/projects/fhi-angular-highcharts/src/lib/services/diagram-type-group.service.ts @@ -126,25 +126,32 @@ export class DiagramTypeGroupService { return group; } - const items = this.diagramOptions.controls?.navigation?.items; + const navigation = this.diagramOptions.controls?.navigation; + const items = navigation?.items; const isChart = group.name === DiagramTypeGroupNames.chart; const isMap = group.name === DiagramTypeGroupNames.map; + if (!navigation || !navigation.show) { + return group; + } + group.children = []; - if (isChart && items?.chartTypes !== undefined) { + if ((isChart && !items?.chartTypes) || (isMap && !items?.mapTypes)) { + return group; + } + + if (isChart) { items.chartTypes.forEach((id) => { group.children.push(ChartTypes.find((type) => type.id === id)); }); - } else if (isChart) { - group.children = ChartTypes; - } else if (isMap && items?.mapTypes !== undefined) { + } + if (isMap) { items.mapTypes.forEach((id) => { group.children.push(MapTypes.find((type) => type.id === id)); }); - } else if (isMap) { - group.children = MapTypes; } + return group; } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index f505af8e..70f2c16f 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -138,6 +138,18 @@ export class HighchartsComponent implements OnInit { title: this.titles.title_2a, controls: { navigation: { + items: { + chartTypes: [ + 'line', + 'bar', + 'barStacked', + 'column', + 'columnStacked', + 'pie', + 'columnAndLine', + ], + mapTypes: ['mapFylker', 'mapFylker2019', 'mapFylker2023'], + }, show: true, }, }, From e3bd896a0a896e921b553999c63020e8c2755479 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 12:46:28 +0200 Subject: [PATCH 38/52] Update to Angular 18 in @folkehelseinstituttet/angular-components (#689) --- projects/fhi-angular-components/CHANGELOG.md | 6 +++++- projects/fhi-angular-components/README.md | 13 +++++++------ projects/fhi-angular-components/package.json | 8 ++++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 3027f706..44ee5cc3 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,4 +1,8 @@ -# 4.4.2 +# Unreleased + +* :boom: **Breaking** Update to Angular 18 + +## 4.4.2 > Sep 17, 2024 diff --git a/projects/fhi-angular-components/README.md b/projects/fhi-angular-components/README.md index 04ca2f53..0922af3b 100644 --- a/projects/fhi-angular-components/README.md +++ b/projects/fhi-angular-components/README.md @@ -15,12 +15,13 @@ _Contains Angular components used by Folkehelseinstituttet, which are based on [ | FHI Angular Components | FHI Style | Bootstrap | NgSelect | NgBootstrap | Angular | Node/NPM | | ---------------------- | --------- | --------- | -------- | ----------- | ------- | -------- | -| 4.x.x | 6 | 5.3.2 | 12 | 16 | 17 | 18/9 * | -| 3.x.x | 5.9 | 5.3.2 | 12 | 16 | 17 | 18/9 * | -| 2.x.x | 5 | 5 | 11 | 15 | 16 | 18/9 * | -| 1.x.x | 5 | 5 | 10 | 14 | 15 | 18/9 * | -| 0.5.x | 5 | 5 | 10 | 14 | 15 | 18/9 * | -| 0.4.x | 5 | 5 | 10 | 14 | 15 | 18/9 * | +| Unreleased | 6 | 5.3.2 | 13 | 17 | 18 | 20/10 * | +| 4 | 6 | 5.3.2 | 12 | 16 | 17 | 18/9 * | +| 3 | 5.9 | 5.3.2 | 12 | 16 | 17 | 18/9 * | +| 2 | 5 | 5 | 11 | 15 | 16 | 18/9 * | +| 1 | 5 | 5 | 10 | 14 | 15 | 18/9 * | +| 0.5 | 5 | 5 | 10 | 14 | 15 | 18/9 * | +| 0.4 | 5 | 5 | 10 | 14 | 15 | 18/9 * | | 0.3.0 | 4 | 5 | 10 | 14 | 15 | 18/9 * | | 0.2.0 | 4 | 5 | 9 | 13 | 14 | 16/8 * | diff --git a/projects/fhi-angular-components/package.json b/projects/fhi-angular-components/package.json index b4893b8b..7ef48e44 100644 --- a/projects/fhi-angular-components/package.json +++ b/projects/fhi-angular-components/package.json @@ -10,11 +10,11 @@ "directory": "projects/fhi-angular-components" }, "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", + "@angular/common": "18.2.4", + "@angular/core": "18.2.4", "@folkehelseinstituttet/style": "^6.0.0", - "@ng-bootstrap/ng-bootstrap": "^16.0.0", - "@ng-select/ng-select": "^12.0.0", + "@ng-bootstrap/ng-bootstrap": "^17.0.1", + "@ng-select/ng-select": "^13.7.1", "bootstrap": "^5.3.2", "date-fns": ">=3.3.1" }, From 402e11e5e092ee13b6fcf771011f24f92db98f79 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 12:52:30 +0200 Subject: [PATCH 39/52] Update to Angular 18 in @folkehelseinstituttet/angular-highcharts (#691) --- projects/fhi-angular-highcharts/CHANGELOG.md | 3 +- projects/fhi-angular-highcharts/README.md | 19 +-- projects/fhi-angular-highcharts/package.json | 12 +- .../lib/fhi-angular-highcharts.component.ts | 160 +----------------- .../lib/models/fhi-diagram-options.model.ts | 17 -- .../highcharts/highcharts.component.ts | 17 -- 6 files changed, 10 insertions(+), 218 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 844661b4..1bb266d8 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,5 +1,6 @@ # Unreleased +* :boom: **Breaking** Update to Angular 18, and remove deprecated properties from `FhiDiagramOptions`. * :boom: **Breaking** Only populate the the `fhi-diagram-type-nav-default` with diagram type `table` if no diagram types defined options (`navigation.items.chartTypes` or `navigation.items.mapTypes`). ## 4.4.0 @@ -14,7 +15,7 @@ * :bug: **Bugfix** Reduce max decimal places to 9 (because Highcharts tooltips fails if 10 decimals or more). [(#669)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/669) * :bug: **Bugfix** Don't remove decimals if they end with zero (only applies to diagram type table). [(#668)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/668) * :bug: **Bugfix** Add null check for unit.decimals. [(#667)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/667) - + ## 4.3.0 > Sep 9, 2024 diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index 97cb322f..c9094c02 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -12,7 +12,6 @@ _An opinionated wrapper to the official minimal [Highcharts wrapper for Angular] - [Inputs](#inputs) - [Outputs](#outputs) - [Interface FhiDiagramOptions](#interface-fhidiagramoptions) - - [(TO BE DEPRECATED IN v5) Interface FhiDiagramOptions](#to-be-deprecated-in-v5-interface-fhidiagramoptions) - [Interface FhiDiagramControls](#interface-fhidiagramcontrols) - [Interface FhiDiagramFooter](#interface-fhidiagramfooter) - [Interface FhiDiagramSerie](#interface-fhidiagramserie) @@ -27,6 +26,7 @@ _An opinionated wrapper to the official minimal [Highcharts wrapper for Angular] | FHI Angular Highcharts | FHI Angular Componets | FHI Style | Bootstrap | NgBootstrap | Highcharts | Highcharts Angular | Angular | Node/NPM | | ---------------------- | --------------------- | --------- | --------- | ----------- | ---------- | ------------------ | ------- | -------- | +| Unreleased | 5 | 6.3 | 5.3.2 | 17 | 11.4 | 4.0 | 18 | 20/10 * | | >4.1 | 4 | 6.3 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | >=3.1 <=4.1 | 4 | 6.2 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | 3 | 4.0 | 6 | 5.3.2 | 16 | 11.1 | 4.0 | 17 | 18/10 * | @@ -134,23 +134,6 @@ This is where `allowedCommonJsDependencies` i located in `angular.json` | `title` | `string` | - | yes | The title above the diagram. | | `units` | `FhiDiagramUnit[]` | - | no | Decimal count, and metadata for y-axis and tooltip. See [FhiDiagramUnit](#interface-fhidiagramunit) for details. | -### (TO BE DEPRECATED IN v5) Interface FhiDiagramOptions - -| Property | Type | Default | Required | Description | -| ---------------------- | ------------------------ | --------- | -------- | ----------- | -| `creditsHref` | `string` | - | no | Link to source ref. in footer. | -| `creditsText` | `string` | - | no | Text to source ref. in footer. | -| `decimals` | `number` | - | no | How many decimals to show (max) | -| `diagramTypeId` | `string` | `table` | no | ID to specify default diagram type. Values defined by enum `FhiDiagramTypeIds` | -| `diagramTypeNavId` | `string` | - | no | ID to specify which type of navigation to use. If omitted, no navigation will be rendered. Values defined by enum `DiagramTypeNavIds` | -| `[diagramTypeSubset]` | `Array` | - | no | ID's for diagram types available in navigation, in addition to `table`. If omitted, all diagram types that are possible for the given series will show in the navigation. Values for each array item defined by enum `FhiDiagramTypeIds` | -| `disclaimer` | `string` | - | no | Text at the bootom of the footer used to say something about uncertainty in the data shown in a diagram. | -| `[flags]` | `Array` | - | no | List of all flags used in `FhiDiagramSerie[]`. | -| `lastUpdated` | `string` | - | no | Text after label _Sist oppdatert_ in footer. Free format, but `dd.mm.yyyy` is the most common one. | -| `mapTypeId` | `MapTypeIds` | - | no | ID to specify map type. If omitted, map will not be available in the diagram navigation. | -| `metadataButton` | `boolean` | `false` | no | Whether to show a button with an event for custom navigation to your metadata. | -| `showFullScreenButton` | `boolean` | `false` | no | Whether to show a button which opens the diagram in full screen. | - ### Interface FhiDiagramControls | Property | Type | Default | Required | Description | diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index c63efd28..27340548 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -10,12 +10,12 @@ "directory": "projects/fhi-angular-highcharts" }, "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "@folkehelseinstituttet/style": "^6.3.0", - "@folkehelseinstituttet/angular-components": "^4.0.0", - "@ng-bootstrap/ng-bootstrap": "^16.0.0", - "bootstrap": "5.3.2", + "@angular/common": "18.2.4", + "@angular/core": "18.2.4", + "@folkehelseinstituttet/style": "^6.0.0", + "@folkehelseinstituttet/angular-components": "^4.4.1", + "@ng-bootstrap/ng-bootstrap": "^17.0.1", + "@ng-select/ng-select": "^13.7.1", "highcharts": "~11.4.0", "highcharts-angular": "~4.0.0" }, diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts index 37daef8c..482d228d 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.ts @@ -22,11 +22,7 @@ import { FhiDiagramSerieData } from './models/fhi-diagram-serie-data.model'; import { FlagWithDataPointName } from './models/flag-with-data-point-name.model'; import { DiagramType } from './models/diagram-type.model'; -import { - ChartTypeIds, - DiagramTypeIdValues as DiagramTypeIds, - MapTypeIds, -} from './constants-and-enums/diagram-type-ids'; +import { DiagramTypeIdValues as DiagramTypeIds } from './constants-and-enums/diagram-type-ids'; import { DiagramSerieNameSeperator as Seperator } from './constants-and-enums/diagram-serie-name-seperator'; import { DiagramTypeGroupNames } from './constants-and-enums/diagram-type-groups'; @@ -99,8 +95,6 @@ export class FhiAngularHighchartsComponent implements OnChanges { } ngOnChanges() { - this.tmpAdapterForDeprecatedDiagramOptions(); - try { this.resetDiagramState(); this.diagramOptions.series.forEach((serie) => { @@ -418,156 +412,4 @@ export class FhiAngularHighchartsComponent implements OnChanges { API documentation: https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/blob/main/projects/fhi-angular-highcharts/README.md#api`; } - - // ----------------------------------------------------------------------------------------------- - // Tmp adapter for converting deprecated API properties to avoid breaking change in PR for issue: - // https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/issues/540 - // - // This adapter will be removed in v5 - // - private tmpAdapterForDeprecatedDiagramOptions() { - const opt = this.diagramOptions; - // console.log('this.diagramOptions 1', this.diagramOptions); - // debugger; - - // diagramTypeId & mapTypeId - if (opt.diagramTypeId) { - if (opt.diagramTypeId === 'map') { - opt.activeDiagramType = opt.mapTypeId; - } else { - opt.activeDiagramType = opt.diagramTypeId; - } - } - if (opt.activeDiagramType === 'map') { - opt.activeDiagramType = 'mapFylker'; - } - delete opt.diagramTypeId; - delete opt.mapTypeId; - - // diagramTypeNavId - if (opt.diagramTypeNavId && !opt.controls?.navigation) { - if (!opt.controls) { - opt.controls = {}; - } - if (!opt.controls.navigation) { - opt.controls.navigation = { - show: !!opt.diagramTypeNavId, - type: opt.diagramTypeNavId, - }; - } - } - delete opt.diagramTypeNavId; - - // diagramTypeSubset - if (opt.diagramTypeSubset && !opt.controls?.navigation?.items) { - if (opt.diagramTypeSubset.find((type) => type === 'map')) { - opt.diagramTypeSubset.push('mapFylker'); - opt.diagramTypeSubset = opt.diagramTypeSubset.filter((type) => type !== 'map'); - } - opt.controls.navigation.items = {}; - - if (!opt.controls.navigation.items.mapTypes) { - opt.controls.navigation.items.mapTypes = opt.diagramTypeSubset.filter( - (type) => type.slice(0, 3) === 'map', - ) as (keyof typeof MapTypeIds)[]; - } - if (!opt.controls.navigation.items.chartTypes) { - opt.controls.navigation.items.chartTypes = opt.diagramTypeSubset.filter( - (type) => type.slice(0, 3) !== 'map', - ) as (keyof typeof ChartTypeIds)[]; - } - } - delete opt.diagramTypeSubset; - - // showFullScreenButton - if ( - opt.showFullScreenButton !== undefined && - opt.controls?.fullScreenButton?.show === undefined - ) { - if (!opt.controls) { - opt.controls = {}; - } - if (!opt.controls.fullScreenButton) { - opt.controls.fullScreenButton = { - show: opt.showFullScreenButton, - }; - } - } - delete opt.showFullScreenButton; - - // metadataButton - if (opt.metadataButton !== undefined && opt.controls?.metadataButton?.show === undefined) { - if (!opt.controls) { - opt.controls = {}; - } - if (!opt.controls.metadataButton) { - opt.controls.metadataButton = { - show: opt.metadataButton, - }; - } - } - delete opt.metadataButton; - - // creditsHref & creditsText - if ((opt.creditsHref || opt.creditsText) && !opt.footer?.credits) { - if (!opt.footer) { - opt.footer = {}; - } - if (!opt.footer.credits) { - opt.footer.credits = { - href: opt.creditsHref, - text: opt.creditsText, - }; - } - } - delete opt.creditsHref; - delete opt.creditsText; - - // disclaimer - if (opt.disclaimer && !opt.footer?.disclaimer) { - if (!opt.footer) { - opt.footer = {}; - } - if (!opt.footer.disclaimer) { - opt.footer.disclaimer = opt.disclaimer; - } - } - delete opt.disclaimer; - - // flags - if (opt.flags && !opt.footer?.flags) { - if (!opt.footer) { - opt.footer = {}; - } - if (!opt.footer.flags) { - opt.footer.flags = opt.flags; - } - } - delete opt.flags; - - // lastUpdated - if (opt.lastUpdated && !opt.footer?.lastUpdated) { - if (!opt.footer) { - opt.footer = {}; - } - if (!opt.footer.lastUpdated) { - opt.footer.lastUpdated = opt.lastUpdated; - } - } - delete opt.lastUpdated; - - // decimals - if (opt.decimals && (!opt.units || opt.units?.length === 1)) { - if (!opt.units) { - opt.units = [{ label: undefined }]; - } - if (!opt.units[0].decimals) { - opt.units[0].decimals = opt.decimals; - } - } - delete opt.decimals; - - this.diagramOptions = opt; - // console.log('this.diagramOptions 2', this.diagramOptions); - } } diff --git a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts index 8fbd38c3..570b028d 100644 --- a/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts +++ b/projects/fhi-angular-highcharts/src/lib/models/fhi-diagram-options.model.ts @@ -1,8 +1,5 @@ import { DiagramTypeIds } from '../constants-and-enums/diagram-type-ids'; -import { DiagramTypeNavIds } from '../constants-and-enums/diagram-type-nav-ids'; -import { MapTypeIds } from '../constants-and-enums/diagram-type-ids'; import { TableOrientations } from '../constants-and-enums/table-orientations'; -import { FhiDiagramFlag } from './fhi-diagram-flag.model'; import { FhiDiagramSerie } from './fhi-diagram-serie.model'; import { FhiDiagramUnit } from './fhi-diagram-unit.model'; import { FhiDiagramControls } from './fhi-diagram-controls.model'; @@ -21,18 +18,4 @@ export interface FhiDiagramOptions { tableOrientation?: FhiTableOrientations; title: string; units?: FhiDiagramUnit[]; - - // The following will be deprecated in v5 - creditsHref?: string; - creditsText?: string; - decimals?: number; - diagramTypeId?: FhiDiagramTypeIds; - diagramTypeNavId?: keyof typeof DiagramTypeNavIds; - diagramTypeSubset?: FhiDiagramTypeIds[]; - disclaimer?: string; - flags?: FhiDiagramFlag[]; - lastUpdated?: string; - mapTypeId?: keyof typeof MapTypeIds; - metadataButton?: boolean; - showFullScreenButton?: boolean; } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 70f2c16f..08149c10 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -320,23 +320,6 @@ export class HighchartsComponent implements OnInit { position: 'end', }, ], - - // The following will be deprecated in v5 - // -------------------------------------- - // diagramTypeId: 'map', - // diagramTypeNavId: 'default', - // decimals: 2, - // flags: [ - // { symbol: '..', label: 'Manglende data' }, - // { symbol: '.', label: 'Lar seg ikke beregne' }, - // { symbol: ':', label: 'Anonymisert' }, - // ], - // creditsHref: 'https://www.fhi.no/hn/folkehelse/artikler/oppdateringer', - // creditsText: 'Nøkkeltall for folkehelse', - // disclaimer: 'Disse dataene kan inneholde feil.', - // lastUpdated: '06.06.2023', - // mapTypeId: 'mapFylker', - // showFullScreenButton: true, }); } } From 4d8ccbd520205e6e4e17812041dd91837aae96c3 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 13:19:55 +0200 Subject: [PATCH 40/52] Release/fhi-angular-components/5.0.0 (#692) --- projects/fhi-angular-components/CHANGELOG.md | 6 ++++-- projects/fhi-angular-components/README.md | 2 +- projects/fhi-angular-components/package.json | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index 44ee5cc3..f2be2283 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,6 +1,8 @@ -# Unreleased +# 5.0.0 -* :boom: **Breaking** Update to Angular 18 +> Sep 19, 2024 + +* :boom: **Breaking** Update to Angular 18. [(#689)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/689) ## 4.4.2 diff --git a/projects/fhi-angular-components/README.md b/projects/fhi-angular-components/README.md index 0922af3b..bff6edd8 100644 --- a/projects/fhi-angular-components/README.md +++ b/projects/fhi-angular-components/README.md @@ -15,7 +15,7 @@ _Contains Angular components used by Folkehelseinstituttet, which are based on [ | FHI Angular Components | FHI Style | Bootstrap | NgSelect | NgBootstrap | Angular | Node/NPM | | ---------------------- | --------- | --------- | -------- | ----------- | ------- | -------- | -| Unreleased | 6 | 5.3.2 | 13 | 17 | 18 | 20/10 * | +| 5 | 6 | 5.3.2 | 13 | 17 | 18 | 20/10 * | | 4 | 6 | 5.3.2 | 12 | 16 | 17 | 18/9 * | | 3 | 5.9 | 5.3.2 | 12 | 16 | 17 | 18/9 * | | 2 | 5 | 5 | 11 | 15 | 16 | 18/9 * | diff --git a/projects/fhi-angular-components/package.json b/projects/fhi-angular-components/package.json index 7ef48e44..94a9e9d8 100644 --- a/projects/fhi-angular-components/package.json +++ b/projects/fhi-angular-components/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-components", - "version": "4.4.2", + "version": "5.0.0", "publishConfig": { "tag": "latest" }, From 4fcba6efe24d1914d1e83eb25e58a5c1a6788298 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 13:21:39 +0200 Subject: [PATCH 41/52] Release/fhi-angular-highcharts/5.0.0 (#693) --- projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++++--- projects/fhi-angular-highcharts/README.md | 2 +- projects/fhi-angular-highcharts/package.json | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 1bb266d8..6253d70d 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,7 +1,9 @@ -# Unreleased +# 5.0.0 -* :boom: **Breaking** Update to Angular 18, and remove deprecated properties from `FhiDiagramOptions`. -* :boom: **Breaking** Only populate the the `fhi-diagram-type-nav-default` with diagram type `table` if no diagram types defined options (`navigation.items.chartTypes` or `navigation.items.mapTypes`). +> Sep 20, 2024 + +* :boom: **Breaking** Update to Angular 18, and remove deprecated properties from `FhiDiagramOptions`. [(#691)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/691) +* :boom: **Breaking** Only populate the the `fhi-diagram-type-nav-default` with diagram type `table` if no diagram types defined options (`navigation.items.chartTypes` or `navigation.items.mapTypes`). [(#688)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/688) ## 4.4.0 diff --git a/projects/fhi-angular-highcharts/README.md b/projects/fhi-angular-highcharts/README.md index c9094c02..54a3c5a0 100644 --- a/projects/fhi-angular-highcharts/README.md +++ b/projects/fhi-angular-highcharts/README.md @@ -26,7 +26,7 @@ _An opinionated wrapper to the official minimal [Highcharts wrapper for Angular] | FHI Angular Highcharts | FHI Angular Componets | FHI Style | Bootstrap | NgBootstrap | Highcharts | Highcharts Angular | Angular | Node/NPM | | ---------------------- | --------------------- | --------- | --------- | ----------- | ---------- | ------------------ | ------- | -------- | -| Unreleased | 5 | 6.3 | 5.3.2 | 17 | 11.4 | 4.0 | 18 | 20/10 * | +| 5 | 5 | 6.3 | 5.3.2 | 17 | 11.4 | 4.0 | 18 | 20/10 * | | >4.1 | 4 | 6.3 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | >=3.1 <=4.1 | 4 | 6.2 | 5.3.2 | 16 | 11.4 | 4.0 | 17 | 18/10 * | | 3 | 4.0 | 6 | 5.3.2 | 16 | 11.1 | 4.0 | 17 | 18/10 * | diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 27340548..9dd685e2 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "4.4.0", + "version": "5.0.0", "publishConfig": { "tag": "latest" }, From fad53cae03c251de3dbd74c893c1e5cc070d8446 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 14:51:55 +0200 Subject: [PATCH 42/52] Release/fhi-angular-highcharts/5.0.1 (#695) --- projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++++++- projects/fhi-angular-highcharts/package.json | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index 6253d70d..e1adf314 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,4 +1,10 @@ -# 5.0.0 +# 5.0.1 + +> Sep 20, 2024 + +* :bug: **Bugfix** Bump peerDependency @folkehelseinstituttet/angular-components to v5 + +## 5.0.0 > Sep 20, 2024 diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index 9dd685e2..e1cc8827 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "5.0.0", + "version": "5.0.1", "publishConfig": { "tag": "latest" }, @@ -13,7 +13,7 @@ "@angular/common": "18.2.4", "@angular/core": "18.2.4", "@folkehelseinstituttet/style": "^6.0.0", - "@folkehelseinstituttet/angular-components": "^4.4.1", + "@folkehelseinstituttet/angular-components": "^5.0.0", "@ng-bootstrap/ng-bootstrap": "^17.0.1", "@ng-select/ng-select": "^13.7.1", "highcharts": "~11.4.0", From 9ca6c2a9ae3620309e9d7beb2cedac2c84de1f2c Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 15:40:55 +0200 Subject: [PATCH 43/52] Release/fhi-angular-highcharts/5.0.2 (#697) --- projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++++++- projects/fhi-angular-highcharts/package.json | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index e1adf314..b963d888 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,4 +1,10 @@ -# 5.0.1 +# 5.0.2 + +> Sep 20, 2024 + +* :bug: **Bugfix** Less specific version for @angular + +## 5.0.1 > Sep 20, 2024 diff --git a/projects/fhi-angular-highcharts/package.json b/projects/fhi-angular-highcharts/package.json index e1cc8827..dcf74ee0 100644 --- a/projects/fhi-angular-highcharts/package.json +++ b/projects/fhi-angular-highcharts/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-highcharts", - "version": "5.0.1", + "version": "5.0.2", "publishConfig": { "tag": "latest" }, @@ -10,8 +10,8 @@ "directory": "projects/fhi-angular-highcharts" }, "peerDependencies": { - "@angular/common": "18.2.4", - "@angular/core": "18.2.4", + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", "@folkehelseinstituttet/style": "^6.0.0", "@folkehelseinstituttet/angular-components": "^5.0.0", "@ng-bootstrap/ng-bootstrap": "^17.0.1", From 9837e7c24433d8247a519572416f1a3f785e9299 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 19 Sep 2024 15:53:53 +0200 Subject: [PATCH 44/52] Release/fhi-angular-components/5.0.1 (#696) --- projects/fhi-angular-components/CHANGELOG.md | 8 +++++++- projects/fhi-angular-components/package.json | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/projects/fhi-angular-components/CHANGELOG.md b/projects/fhi-angular-components/CHANGELOG.md index f2be2283..99591c14 100644 --- a/projects/fhi-angular-components/CHANGELOG.md +++ b/projects/fhi-angular-components/CHANGELOG.md @@ -1,4 +1,10 @@ -# 5.0.0 +# 5.0.1 + +> Sep 20, 2024 + +* :bug: **Bugfix** Less specific version for @angular + +## 5.0.0 > Sep 19, 2024 diff --git a/projects/fhi-angular-components/package.json b/projects/fhi-angular-components/package.json index 94a9e9d8..81846336 100644 --- a/projects/fhi-angular-components/package.json +++ b/projects/fhi-angular-components/package.json @@ -1,6 +1,6 @@ { "name": "@folkehelseinstituttet/angular-components", - "version": "5.0.0", + "version": "5.0.1", "publishConfig": { "tag": "latest" }, @@ -10,8 +10,8 @@ "directory": "projects/fhi-angular-components" }, "peerDependencies": { - "@angular/common": "18.2.4", - "@angular/core": "18.2.4", + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", "@folkehelseinstituttet/style": "^6.0.0", "@ng-bootstrap/ng-bootstrap": "^17.0.1", "@ng-select/ng-select": "^13.7.1", From eeb6cae43a54d344665aeb6fc1caaeeda8909777 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Fri, 20 Sep 2024 14:40:46 +0200 Subject: [PATCH 45/52] Update documentation app to angular 18 (#698) Also: * Remove angular-in-memory-web-api, create a simple custom mock-db instead * Refactor the data service and menu service to make the app run again, and remove a lot of redundant old code --- package-lock.json | 6069 ++++++++--------- package.json | 53 +- .../library-items/library-item-ids.ts | 9 - .../library-item-segment-paths.ts | 9 - .../library-items/library-items.data.ts | 3 - src/app/core/core.module.ts | 26 +- src/app/core/mock-db.interceptor.ts | 17 + .../core/{mock-db.service.ts => mock-db.ts} | 100 +- src/app/views/designer/designer.component.ts | 4 +- .../views/developer/developer.component.html | 26 +- .../views/developer/developer.component.ts | 25 +- .../library-item/library-item.component.html | 2 +- .../library-item/library-item.component.ts | 12 +- .../library-items-section.component.html | 78 +- .../library-items-section.component.ts | 75 +- .../dynamic-library-example.component.html | 87 +- .../dynamic-library-example.component.ts | 67 +- .../dynamic-library-examples.module.ts | 24 +- .../7.befolkning-inndeling-pr-2024-andel.ts | 2 +- .../library-item-groups-data.service.ts | 47 - ...library-item-groups-shared-data.service.ts | 33 - .../services/library-items-data.service.ts | 71 + .../library-items-shared-data.service.ts | 34 - .../shared/services/library-menu.service.ts | 58 +- 24 files changed, 3219 insertions(+), 3712 deletions(-) delete mode 100644 src/MOCK_DB_DATA/library-items/library-item-ids.ts delete mode 100644 src/MOCK_DB_DATA/library-items/library-item-segment-paths.ts delete mode 100644 src/MOCK_DB_DATA/library-items/library-items.data.ts create mode 100644 src/app/core/mock-db.interceptor.ts rename src/app/core/{mock-db.service.ts => mock-db.ts} (64%) delete mode 100644 src/app/views/shared/services/library-item-groups-data.service.ts delete mode 100644 src/app/views/shared/services/library-item-groups-shared-data.service.ts create mode 100644 src/app/views/shared/services/library-items-data.service.ts delete mode 100644 src/app/views/shared/services/library-items-shared-data.service.ts diff --git a/package-lock.json b/package-lock.json index 14139c41..b8eae978 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,42 +8,39 @@ "name": "fhi-frontend-library-web-client", "version": "0.11.1", "dependencies": { - "@ali-hm/angular-tree-component": "^12.0.0", - "@angular/animations": "17.3.3", - "@angular/cdk": "17.0.5", - "@angular/common": "17.3.3", - "@angular/core": "17.3.3", - "@angular/forms": "17.3.3", - "@angular/localize": "17.3.3", - "@angular/platform-browser": "17.3.3", - "@angular/platform-browser-dynamic": "17.3.3", - "@angular/router": "17.3.3", + "@angular/animations": "^18.2.0", + "@angular/cdk": "^18.2.0", + "@angular/common": "^18.2.0", + "@angular/compiler": "^18.2.0", + "@angular/core": "^18.2.0", + "@angular/forms": "^18.2.0", + "@angular/platform-browser": "^18.2.0", + "@angular/platform-browser-dynamic": "^18.2.0", + "@angular/router": "^18.2.0", "@folkehelseinstituttet/style": "^6.0.0", - "@ng-bootstrap/ng-bootstrap": "^16.0.0", - "@ng-select/ng-select": "^12.0.6", + "@ng-bootstrap/ng-bootstrap": "^17.0.1", + "@ng-select/ng-select": "^13.7.1", "@popperjs/core": "^2.11.8", "@types/lodash-es": "~4.17.6", - "angular-in-memory-web-api": "^0.17.0", "bootstrap": "5.3.2", "date-fns": ">=3.3.1 <4", "highcharts": "~11.4.0", "highcharts-angular": "~4.0.0", "lodash-es": "~4.17.21", - "ngx-markdown": "^17.1.1", - "rxjs": "~7.5.0", - "tslib": "^2.6.2", - "zone.js": "~0.14.0" + "ngx-markdown": "^18.0.0", + "rxjs": "~7.8.0", + "tslib": "^2.6.0", + "zone.js": "~0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "~17.3.5", - "@angular-eslint/builder": "17.3.0", - "@angular-eslint/eslint-plugin": "17.3.0", - "@angular-eslint/eslint-plugin-template": "17.3.0", - "@angular-eslint/schematics": "17.3.0", - "@angular-eslint/template-parser": "17.3.0", - "@angular/cli": "17.3.3", - "@angular/compiler": "17.3.3", - "@angular/compiler-cli": "17.3.3", + "@angular-devkit/build-angular": "^18.2.4", + "@angular-eslint/builder": "18.3.1", + "@angular-eslint/eslint-plugin": "18.3.1", + "@angular-eslint/eslint-plugin-template": "18.3.1", + "@angular-eslint/schematics": "18.3.1", + "@angular-eslint/template-parser": "18.3.1", + "@angular/cli": "^18.2.4", + "@angular/compiler-cli": "^18.2.0", "@types/jasmine": "^5.1.4", "@types/jasminewd2": "~2.0.3", "@types/node": "^20.11.1", @@ -59,30 +56,16 @@ "karma-coverage": "~2.0.3", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", - "ng-packagr": "^17.0.3", + "ng-packagr": "^18.2.1", "prettier": "^3.0.3", "ts-node": "~8.3.0", - "typescript": "5.2.2", + "typescript": "~5.5.2", "webpack": "^5.88.2" }, "engines": { "node": "18" } }, - "node_modules/@ali-hm/angular-tree-component": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@ali-hm/angular-tree-component/-/angular-tree-component-12.0.5.tgz", - "integrity": "sha512-RDSHESxwsCd29gnxSf4MV6V+Olub7YmaWgs/n6vlLSSlnbODzSqww4EUki1AMgyhpfIYXrJLg5bStd9qY1yWYw==", - "dependencies": { - "mobx": "~4.14.1", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/common": ">=14.0.0", - "@angular/core": ">=14.0.0", - "mobx": "^6.10.2" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -96,121 +79,111 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1703.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.9.tgz", - "integrity": "sha512-kEPfTOVnzrJxPGTvaXy8653HU9Fucxttx9gVfQR1yafs+yIEGx3fKGKe89YPmaEay32bIm7ZUpxDF1FO14nkdQ==", + "version": "0.1802.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.5.tgz", + "integrity": "sha512-c7sVoW85Yqj7IYvNKxtNSGS5I7gWpORorg/xxLZX3OkHWXDrwYbb5LN/2p5/Aytxyb0aXl4o5fFOu6CUwcaLUw==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.3.9", + "@angular-devkit/core": "18.2.5", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { - "version": "17.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.9.tgz", - "integrity": "sha512-EuAPSC4c2DSJLlL4ieviKLx1faTyY+ymWycq6KFwoxu1FgWly/dqBeWyXccYinLhPVZmoh6+A/5S4YWXlOGSnA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.5.tgz", + "integrity": "sha512-dIvb0AHoRIMM6tLuG4t6lDDslSAYP77wqytodsN317UzFOuuCPernXbO8NJs+QHxj09nPsem1T5vnvpO2E/PVQ==", "dev": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1703.9", - "@angular-devkit/build-webpack": "0.1703.9", - "@angular-devkit/core": "17.3.9", - "@babel/core": "7.24.0", - "@babel/generator": "7.23.6", - "@babel/helper-annotate-as-pure": "7.22.5", - "@babel/helper-split-export-declaration": "7.22.6", - "@babel/plugin-transform-async-generator-functions": "7.23.9", - "@babel/plugin-transform-async-to-generator": "7.23.3", - "@babel/plugin-transform-runtime": "7.24.0", - "@babel/preset-env": "7.24.0", - "@babel/runtime": "7.24.0", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.3.9", + "@angular-devkit/architect": "0.1802.5", + "@angular-devkit/build-webpack": "0.1802.5", + "@angular-devkit/core": "18.2.5", + "@angular/build": "18.2.5", + "@babel/core": "7.25.2", + "@babel/generator": "7.25.0", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.25.0", + "@babel/plugin-transform-async-to-generator": "7.24.7", + "@babel/plugin-transform-runtime": "7.24.7", + "@babel/preset-env": "7.25.3", + "@babel/runtime": "7.25.0", + "@discoveryjs/json-ext": "0.6.1", + "@ngtools/webpack": "18.2.5", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.18", + "autoprefixer": "10.4.20", "babel-loader": "9.1.3", - "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.21.5", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.22", - "css-loader": "6.10.0", - "esbuild-wasm": "0.20.1", + "copy-webpack-plugin": "12.0.2", + "critters": "0.0.24", + "css-loader": "7.1.2", + "esbuild-wasm": "0.23.0", "fast-glob": "3.3.2", - "http-proxy-middleware": "2.0.6", - "https-proxy-agent": "7.0.4", - "inquirer": "9.2.15", - "jsonc-parser": "3.2.1", + "http-proxy-middleware": "3.0.0", + "https-proxy-agent": "7.0.5", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", "less": "4.2.0", - "less-loader": "11.1.0", + "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.1", - "magic-string": "0.30.8", - "mini-css-extract-plugin": "2.8.1", + "loader-utils": "3.3.1", + "magic-string": "0.30.11", + "mini-css-extract-plugin": "2.9.0", "mrmime": "2.0.0", - "open": "8.4.2", + "open": "10.1.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "4.0.1", - "piscina": "4.4.0", - "postcss": "8.4.35", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "postcss": "8.4.41", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.71.1", - "sass-loader": "14.1.1", - "semver": "7.6.0", + "sass": "1.77.6", + "sass-loader": "16.0.0", + "semver": "7.6.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.29.1", + "terser": "5.31.6", "tree-kill": "1.2.2", - "tslib": "2.6.2", - "undici": "6.11.1", - "vite": "5.1.7", - "watchpack": "2.4.0", + "tslib": "2.6.3", + "vite": "5.4.6", + "watchpack": "2.4.1", "webpack": "5.94.0", - "webpack-dev-middleware": "6.1.2", - "webpack-dev-server": "4.15.1", - "webpack-merge": "5.10.0", + "webpack-dev-middleware": "7.4.2", + "webpack-dev-server": "5.0.4", + "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.20.1" + "esbuild": "0.23.0" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "@angular/localize": "^17.0.0", - "@angular/platform-server": "^17.0.0", - "@angular/service-worker": "^17.0.0", + "@angular/compiler-cli": "^18.0.0", + "@angular/localize": "^18.0.0", + "@angular/platform-server": "^18.0.0", + "@angular/service-worker": "^18.0.0", "@web/test-runner": "^0.18.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^17.0.0", + "ng-packagr": "^18.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.2 <5.5" + "typescript": ">=5.4 <5.6" }, "peerDependenciesMeta": { "@angular/localize": { @@ -248,64 +221,46 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1703.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.9.tgz", - "integrity": "sha512-3b0LND39Nc+DwCQ0N7Tbsd7RAFWTeIc4VDwk/7RO8EMYTP5Kfgr/TK66nwTBypHsjmD69IMKHZZaZuiDfGfx2A==", + "version": "0.1802.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.5.tgz", + "integrity": "sha512-6qkcrWBdkxojCVHGWcdJaz4G+7QTjFvmc+3g8xvLc9sYvJq1I059gfXhDnC0FxiA0MT4cY/26ECYWUHTD5CJLQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1703.9", + "@angular-devkit/architect": "0.1802.5", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" - } - }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" + "webpack-dev-server": "^5.0.2" } }, "node_modules/@angular-devkit/core": { - "version": "17.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.9.tgz", - "integrity": "sha512-/iKyn5YT7NW5ylrg9yufUydS8byExeQ2HHIwFC4Ebwb/JYYCz+k4tBf2LdP+zXpemDpLznXTQGWia0/yJjG8Vg==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.5.tgz", + "integrity": "sha512-r9TumPlJ8PvA2+yz4sp+bUHgtznaVKzhvXTN5qL1k4YP8LJ7iZWMR2FOP+HjukHZOTsenzmV9pszbogabqwoZQ==", "dev": true, "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", "rxjs": "7.8.1", "source-map": "0.7.4" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, @@ -318,185 +273,203 @@ } } }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/schematics": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.3.tgz", - "integrity": "sha512-SABqTtj2im4PJhQjNaAsSypbNkpZFW8YozJ3P748tlh5a9XoHpgiqXv5JhRbyKElLDAyk5i9fe2++JmSudPG/Q==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.5.tgz", + "integrity": "sha512-NUmz2UQ1Xl4cf4j1AgkwIfsCjBzAPgfeC3IBrD29hSOBE1Y3j6auqjBkvw50v6mbSPxESND995Xy13HpK1Xflw==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.3.3", - "jsonc-parser": "3.2.1", - "magic-string": "0.30.8", + "@angular-devkit/core": "18.2.5", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.11", "ora": "5.4.1", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.3.tgz", - "integrity": "sha512-J22Sh3M7rj8Ar3iEs20ko5wgC3DE7vWfYZNdimt2IJiS4J7BEX8R3Awf+TRt+6AN3NFm3/xe1Sz4yvDh3FvNFg==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" } }, "node_modules/@angular-eslint/builder": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-17.3.0.tgz", - "integrity": "sha512-JXSZE7+KA3UGU6jwc0v9lwOIMptosrvLIOXGlXqrhHWEXfkfu3ENPq1Lm3K8jLndQ57XueEhC+Nab/AuUiWA/Q==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-18.3.1.tgz", + "integrity": "sha512-cPc7Ye9zDs5M4i+feL6vob+mh7yX5vxvOS5KQIhneUrp5e9D+IGuNFMmBLlOPpmklSc9XJBtuvI5Zjuh4z1ETw==", "dev": true, - "dependencies": { - "@nx/devkit": "^17.2.8 || ^18.0.0", - "nx": "^17.2.8 || ^18.0.0" - }, "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.3.0.tgz", - "integrity": "sha512-ejfNzRuBeHUV8m2fkgs+M809rj5STuCuQo4fdfc6ccQpzXDI6Ha7BKpTznWfg5g529q/wrkoGSGgFxU9Yc2/dQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-17.3.0.tgz", - "integrity": "sha512-81cQbOEPoQupFX8WmpqZn+y8VA7JdVRGBtt+uJNKBXcJknTpPWdLBZRFlgVakmC24iEZ0Fint/N3NBBQI3mz2A==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.1.tgz", + "integrity": "sha512-MP4Nm+SHboF8KdnN0KpPEGAaTTzDLPm3+S/4W3Mg8onqWCyadyd4mActh9mK/pvCj8TVlb/SW1zeTtdMYhwonw==", "dev": true, "dependencies": { - "@angular-eslint/utils": "17.3.0", - "@typescript-eslint/utils": "7.2.0" + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/utils": "18.3.1" }, "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.3.0.tgz", - "integrity": "sha512-9l/aRfpE9MCRVDWRb+rSB9Zei0paep1vqV6M/87VUnzBnzqeMRnVuPvQowilh2zweVSGKBF25Vp4HkwOL6ExDQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.3.1.tgz", + "integrity": "sha512-hBJ3+f7VSidvrtYaXH7Vp0sWvblA9jLK2c6uQzhYGWdEDUcTg7g7VI9ThW39WvMbHqkyzNE4PPOynK69cBEDGg==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.3.0", - "@angular-eslint/utils": "17.3.0", - "@typescript-eslint/type-utils": "7.2.0", - "@typescript-eslint/utils": "7.2.0", + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/utils": "18.3.1", "aria-query": "5.3.0", - "axobject-query": "4.0.0" + "axobject-query": "4.1.0" }, "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/schematics": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-17.3.0.tgz", - "integrity": "sha512-5yssd5EOomxlKt9vN/OXXCTCuI3Pmfj16pkjBDoW0wzC8/M2l5zlXIEfoKumHYv2wtF553LhaMXVYVU35e0lTw==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.3.1.tgz", + "integrity": "sha512-BTsQHDu7LjvXannJTb5BqMPCFIHRNN94eRyb60VfjJxB/ZFtsbAQDFFOi5lEZsRsd4mBeUMuL9mW4IMcPtUQ9Q==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "17.3.0", - "@angular-eslint/eslint-plugin-template": "17.3.0", - "@nx/devkit": "^17.2.8 || ^18.0.0", - "ignore": "5.3.1", - "nx": "^17.2.8 || ^18.0.0", - "strip-json-comments": "3.1.1", - "tmp": "0.2.3" + "@angular-eslint/eslint-plugin": "18.3.1", + "@angular-eslint/eslint-plugin-template": "18.3.1", + "ignore": "5.3.2", + "semver": "7.6.3", + "strip-json-comments": "3.1.1" }, "peerDependencies": { - "@angular/cli": ">= 17.0.0 < 18.0.0" + "@angular-devkit/core": ">= 18.0.0 < 19.0.0", + "@angular-devkit/schematics": ">= 18.0.0 < 19.0.0" } }, "node_modules/@angular-eslint/template-parser": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-17.3.0.tgz", - "integrity": "sha512-m+UzAnWgtjeS0x6skSmR0eXltD/p7HZA+c8pPyAkiHQzkxE7ohhfyZc03yWGuYJvWQUqQAKKdO/nQop14TP0bg==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.3.1.tgz", + "integrity": "sha512-JUUkfWH1G+u/Uk85ZYvJSt/qwN/Ko+jlXFtzBEcknJZsTWTwBcp36v77gPZe5FmKSziJZpyPUd+7Kiy6tuSCTw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.3.0", - "eslint-scope": "^8.0.0" + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "eslint-scope": "^8.0.2" }, "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/utils": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-17.3.0.tgz", - "integrity": "sha512-PJT9pxWqpvI9OXO+7L5SIVhvMW+RFjeafC7PYjtvSbNFpz+kF644BiAcfMJ0YqBnkrw3JXt+RAX25CT4mXIoXw==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", + "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "17.3.0", - "@typescript-eslint/utils": "7.2.0" + "@angular-eslint/bundled-angular-compiler": "18.3.1" }, "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", "typescript": "*" } }, "node_modules/@angular/animations": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.3.tgz", - "integrity": "sha512-poLW3FHe5wkxmTIsQ3em2vq4obgQHyZJz6biF+4hCqQSNMbMBS0e5ZycAiJLkUD/WLc88lQZ20muRO7qjVuMLA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.5.tgz", + "integrity": "sha512-IlXtW/Nj48ZzjHUzH1TykZcSR64ScJx39T3IHnjV2z/bVATzZ36JGoadQHdqpJNKBodYJNgtJCGLCbgAvGWY2g==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.2.5" + } + }, + "node_modules/@angular/build": { + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.5.tgz", + "integrity": "sha512-XWkmjzgeUga0SJ0lYSYcTuYOWTyqcln2mNfBp7Ae/GZ+/7+APbedsIZEiZGZwveOIyOpTM5wguNSoe9khDl5Ig==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1802.5", + "@babel/core": "7.25.2", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-syntax-import-attributes": "7.24.7", + "@inquirer/confirm": "3.1.22", + "@vitejs/plugin-basic-ssl": "1.1.0", + "browserslist": "^4.23.0", + "critters": "0.0.24", + "esbuild": "0.23.0", + "fast-glob": "3.3.2", + "https-proxy-agent": "7.0.5", + "listr2": "8.2.4", + "lmdb": "3.0.13", + "magic-string": "0.30.11", + "mrmime": "2.0.0", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "rollup": "4.20.0", + "sass": "1.77.6", + "semver": "7.6.3", + "vite": "5.4.6", + "watchpack": "2.4.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/core": "17.3.3" + "@angular/compiler-cli": "^18.0.0", + "@angular/localize": "^18.0.0", + "@angular/platform-server": "^18.0.0", + "@angular/service-worker": "^18.0.0", + "less": "^4.2.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.4 <5.6" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + } } }, "node_modules/@angular/cdk": { - "version": "17.0.5", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.0.5.tgz", - "integrity": "sha512-O3QQGPlRz0csQ+XWWzivvtsgVY+jbyZPSKa+N5cXRA5onC3vzajKzAwXQabwIAYR/OoLeI/WNEIDW7nLpFoGXQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.4.tgz", + "integrity": "sha512-o+TuxZDqStfkviEkCR05pVyP6R2RIruEs/45Cms76hlsIheMoxRaxir/yrHdh4tZESJJhcO/EVE+aymNIRWAfg==", "dependencies": { "tslib": "^2.3.0" }, @@ -504,33 +477,32 @@ "parse5": "^7.1.2" }, "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/cli": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.3.tgz", - "integrity": "sha512-veIGK2sRm0SfiLHeftx0W0xC3N8uxoqxXiSG57V6W2wIFN/fKm3aRq3sa8phz7vxUzoKGqyZh6hsT7ybkjgkGA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.5.tgz", + "integrity": "sha512-97uNs0HsOdnMaTlNJKFjIBUXw0wz43uYvSSKmIpBt7eq1LaPLju1G/qpDIHx2YwhMClPrXXrW2H/xdvqZiIw+w==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1703.3", - "@angular-devkit/core": "17.3.3", - "@angular-devkit/schematics": "17.3.3", - "@schematics/angular": "17.3.3", + "@angular-devkit/architect": "0.1802.5", + "@angular-devkit/core": "18.2.5", + "@angular-devkit/schematics": "18.2.5", + "@inquirer/prompts": "5.3.8", + "@listr2/prompt-adapter-inquirer": "2.0.15", + "@schematics/angular": "18.2.5", "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "ini": "4.1.2", - "inquirer": "9.2.15", - "jsonc-parser": "3.2.1", - "npm-package-arg": "11.0.1", - "npm-pick-manifest": "9.0.0", - "open": "8.4.2", - "ora": "5.4.1", - "pacote": "17.0.6", + "ini": "4.1.3", + "jsonc-parser": "3.3.1", + "listr2": "8.2.4", + "npm-package-arg": "11.0.3", + "npm-pick-manifest": "9.1.0", + "pacote": "18.0.6", "resolve": "1.22.8", - "semver": "7.6.0", + "semver": "7.6.3", "symbol-observable": "4.0.0", "yargs": "17.7.2" }, @@ -538,89 +510,38 @@ "ng": "bin/ng.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { - "version": "0.1703.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.3.tgz", - "integrity": "sha512-BKbdigCjmspqxOxSIQuWgPZzpyuKqZoTBDh0jDeLcAmvPsuxCgIWbsExI4OQ0CyusnQ+XT0IT39q8B9rvF56cg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.3.3", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.3.tgz", - "integrity": "sha512-J22Sh3M7rj8Ar3iEs20ko5wgC3DE7vWfYZNdimt2IJiS4J7BEX8R3Awf+TRt+6AN3NFm3/xe1Sz4yvDh3FvNFg==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular/cli/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" } }, "node_modules/@angular/common": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.3.tgz", - "integrity": "sha512-GwlKetNpfWKiG2j4S6bYTi6PA2iT4+eln7o8owo44xZWdQnWQjfxnH39vQuCyhi6OOQL1dozmae+fVXgQsV6jQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.5.tgz", + "integrity": "sha512-m+KJrtbFXTE36jP/po6UAMeUR/enQxRHpVGLCRcIcE7VWVH1ZcOvoW1yqh2A6k+KxWXeajlq/Z04nnMhcoxMRw==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "17.3.3", + "@angular/core": "18.2.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.3.tgz", - "integrity": "sha512-ZNMRfagMxMjk1KW5H3ssCg5QL0J6ZW1JAZ1mrTXixqS7gbdwl60bTGE+EfuEwbjvovEYaj4l9cga47eMaxZTbQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.5.tgz", + "integrity": "sha512-vcqe9x4dGGAnMfPhEpcZyiSVgAiqJeK80LqP1vWoAmBR+HeOqAilSv6SflcLAtuTzwgzMMAvD2T+SMCgUvaqww==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "17.3.3" + "@angular/core": "18.2.5" }, "peerDependenciesMeta": { "@angular/core": { @@ -629,11 +550,11 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.3.tgz", - "integrity": "sha512-vM0lqwuXQZ912HbLnIuvUblvIz2WEUsU7a5Z2ieNey6famH4zxPH12vCbVwXgicB6GLHorhOfcWC5443wD2mJw==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.5.tgz", + "integrity": "sha512-CCCtZobUTUfId/RTYtuDCw5R1oK0w65hdAUMRP1MdGmd8bb8DKJA86u1QCWwozL3rbXlIIX4ognQ6urQ43k/Gw==", "dependencies": { - "@babel/core": "7.23.9", + "@babel/core": "7.25.2", "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", @@ -648,93 +569,52 @@ "ngcc": "bundles/ngcc/index.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "17.3.3", - "typescript": ">=5.2 <5.5" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "@angular/compiler": "18.2.5", + "typescript": ">=5.4 <5.6" } }, "node_modules/@angular/core": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.3.tgz", - "integrity": "sha512-O/jr3aFJMCxF6Jmymjx4jIigRHJfqM/ALIi60y2LVznBVFkk9xyMTsAjgWQIEHX+2muEIzgfKuXzpL0y30y+wA==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.5.tgz", + "integrity": "sha512-5BLVc5gXxzanQkADNS9WPsor3vNF5nQcyIHBi5VScErwM5vVZ7ATH1iZwaOg1ykDEVTFVhKDwD0X1aaqGDbhmQ==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.0" + "zone.js": "~0.14.10" } }, "node_modules/@angular/forms": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.3.tgz", - "integrity": "sha512-wqn+eAggbOZY91hr7oDjv5qdflszVOC9SZMcWJUoZTGn+8eoV6v6728GDFuDDwYkKQ9G9eQbX4IZmYoVw3TVjQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.5.tgz", + "integrity": "sha512-ohKeH+EZCCIyGSiFYlraWLzssGAZc13P92cuYpXB62322PkcA5u0IT72mML9JWGKRqF2zteVsw4koWHVxXM5mA==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "17.3.3", - "@angular/core": "17.3.3", - "@angular/platform-browser": "17.3.3", + "@angular/common": "18.2.5", + "@angular/core": "18.2.5", + "@angular/platform-browser": "18.2.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/localize": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-17.3.3.tgz", - "integrity": "sha512-gahGKy0VBZ+KP6MUULGQMoi5SN3REwslaPvtomizzz9fdmqHfR8PPd1vOJSNm2IEVlvm1hv1dDRjPcR4DJwvaQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-18.2.5.tgz", + "integrity": "sha512-kteBBkSmmmpMrHAIlxFK/PB9HemJ8OBo/qAGOqCGbvPHLMHdR7cxaMGL+Lkya/QhwhqlhoxUcE5zFWXl7UslNg==", + "peer": true, "dependencies": { - "@babel/core": "7.23.9", + "@babel/core": "7.25.2", "@types/babel__core": "7.20.5", "fast-glob": "3.3.2", "yargs": "^17.2.1" @@ -745,69 +625,27 @@ "localize-translate": "tools/bundles/src/translate/cli.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "17.3.3", - "@angular/compiler-cli": "17.3.3" - } - }, - "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/localize/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/@angular/localize/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "@angular/compiler": "18.2.5", + "@angular/compiler-cli": "18.2.5" } }, "node_modules/@angular/platform-browser": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.3.tgz", - "integrity": "sha512-XFWjquD+Pr9VszRzrDlT6uaf57TsY9XhL9iHCNok6Op5DpVQpIAuw1vFt2t5ZoQ0gv+lY8mVWnxgqe3CgTdYxw==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.5.tgz", + "integrity": "sha512-PoX9idwnOpTJBlujzZ2nFGOsmCnZzOH7uNSWIR7trdoq0b1AFXfrxlCQ36qWamk7bbhJI4H28L8YTmKew/nXDA==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "17.3.3", - "@angular/common": "17.3.3", - "@angular/core": "17.3.3" + "@angular/animations": "18.2.5", + "@angular/common": "18.2.5", + "@angular/core": "18.2.5" }, "peerDependenciesMeta": { "@angular/animations": { @@ -816,36 +654,36 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.3.tgz", - "integrity": "sha512-jSgSNHRTXCIat20I+4tLm/e8qOvrIE3Zv7S/DtYZEiAth84uoznvo1kXnN+KREse2vP/WoNgSDKQ2JLzkwYXSQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.5.tgz", + "integrity": "sha512-5u0IuAt1r5e2u2vSKhp3phnaf6hH89B/q7GErfPse1sdDfNI6wHVppxai28PAfAj9gwooJun6MjFWhJFLzS44A==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "17.3.3", - "@angular/compiler": "17.3.3", - "@angular/core": "17.3.3", - "@angular/platform-browser": "17.3.3" + "@angular/common": "18.2.5", + "@angular/compiler": "18.2.5", + "@angular/core": "18.2.5", + "@angular/platform-browser": "18.2.5" } }, "node_modules/@angular/router": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.3.tgz", - "integrity": "sha512-kj42+TtwvET7MFqxB3pkKyob0VNmspASlv8Y29vSpzzaOHn8J1fDf6H+8opoIC+Gmvo5NqXUDwq7nxI5aQ0mUQ==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.5.tgz", + "integrity": "sha512-OjZV1PTiSwT0ytmR0ykveLYzs4uQWf0EuIclZmWqM/bb8Q4P+gJl7/sya05nGnZsj6nHGOL0e/LhSZ3N+5p6qg==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "17.3.3", - "@angular/core": "17.3.3", - "@angular/platform-browser": "17.3.3", + "@angular/common": "18.2.5", + "@angular/core": "18.2.5", + "@angular/platform-browser": "18.2.5", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -870,20 +708,20 @@ } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -912,13 +750,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -926,12 +764,12 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -994,18 +832,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1032,18 +858,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -1069,18 +883,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", @@ -1161,18 +963,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-replace-supers": { "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", @@ -1216,12 +1006,12 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1305,6 +1095,37 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", @@ -1444,12 +1265,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1616,15 +1437,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1634,14 +1455,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1733,18 +1554,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", @@ -1807,6 +1616,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", @@ -2196,18 +2021,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", @@ -2255,16 +2068,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", - "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -2423,26 +2236,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2454,59 +2269,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -2546,9 +2362,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2630,18 +2446,18 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz", + "integrity": "sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==", "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", - "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", + "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", "cpu": [ "ppc64" ], @@ -2651,13 +2467,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", - "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", + "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", "cpu": [ "arm" ], @@ -2667,13 +2483,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", - "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", + "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", "cpu": [ "arm64" ], @@ -2683,13 +2499,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", - "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", + "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", "cpu": [ "x64" ], @@ -2699,13 +2515,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", - "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", + "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", "cpu": [ "arm64" ], @@ -2715,13 +2531,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", - "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", + "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", "cpu": [ "x64" ], @@ -2731,13 +2547,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", - "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", + "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", "cpu": [ "arm64" ], @@ -2747,13 +2563,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", - "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", + "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", "cpu": [ "x64" ], @@ -2763,13 +2579,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", - "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", + "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", "cpu": [ "arm" ], @@ -2779,13 +2595,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", - "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", + "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", "cpu": [ "arm64" ], @@ -2795,13 +2611,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", - "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", + "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", "cpu": [ "ia32" ], @@ -2811,13 +2627,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", - "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", + "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", "cpu": [ "loong64" ], @@ -2827,13 +2643,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", - "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", + "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", "cpu": [ "mips64el" ], @@ -2843,13 +2659,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", - "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", + "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", "cpu": [ "ppc64" ], @@ -2859,13 +2675,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", - "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", + "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", "cpu": [ "riscv64" ], @@ -2875,13 +2691,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", - "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", + "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", "cpu": [ "s390x" ], @@ -2891,13 +2707,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", - "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", + "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", "cpu": [ "x64" ], @@ -2907,13 +2723,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", - "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", + "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", "cpu": [ "x64" ], @@ -2923,13 +2739,29 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", + "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", - "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", + "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", "cpu": [ "x64" ], @@ -2939,13 +2771,13 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", - "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", + "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", "cpu": [ "x64" ], @@ -2955,13 +2787,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", - "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", + "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", "cpu": [ "arm64" ], @@ -2971,13 +2803,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", - "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", + "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", "cpu": [ "ia32" ], @@ -2987,13 +2819,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", - "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", + "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", "cpu": [ "x64" ], @@ -3003,7 +2835,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -3069,12 +2901,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3100,18 +2926,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3216,137 +3030,337 @@ "deprecated": "Use @eslint/object-schema instead", "dev": true }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@inquirer/checkbox": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", + "integrity": "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==", "dev": true, "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@inquirer/confirm": { + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", + "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@inquirer/core/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "mute-stream": "^1.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "undici-types": "~6.19.2" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@inquirer/editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.2.0.tgz", + "integrity": "sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "external-editor": "^3.1.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@inquirer/expand": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.3.0.tgz", + "integrity": "sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@inquirer/figures": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz", + "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@inquirer/input": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", + "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + } + }, + "node_modules/@inquirer/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-1.1.0.tgz", + "integrity": "sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/password": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.2.0.tgz", + "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/prompts": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.3.8.tgz", + "integrity": "sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==", + "dev": true, + "dependencies": { + "@inquirer/checkbox": "^2.4.7", + "@inquirer/confirm": "^3.1.22", + "@inquirer/editor": "^2.1.22", + "@inquirer/expand": "^2.1.22", + "@inquirer/input": "^2.2.9", + "@inquirer/number": "^1.0.10", + "@inquirer/password": "^2.1.22", + "@inquirer/rawlist": "^2.2.4", + "@inquirer/search": "^1.0.7", + "@inquirer/select": "^2.4.7" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/rawlist": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.3.0.tgz", + "integrity": "sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-1.1.0.tgz", + "integrity": "sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/select": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", + "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "dev": true, + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "dev": true, + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { @@ -3402,70 +3416,283 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, - "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.15.tgz", + "integrity": "sha512-MZrGem/Ujjd4cPTLYDfCZK2iKKeiO/8OX13S6jqxldLs0Prf2aGqVlJ77nMBqMv7fzqgXEgjrNHLXcKR8l9lOg==", "dev": true, "dependencies": { - "call-bind": "^1.0.7" + "@inquirer/type": "^1.5.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 6" } }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.13.tgz", + "integrity": "sha512-uiKPB0Fv6WEEOZjruu9a6wnW/8jrjzlZbxXscMB8kuCJ1k6kHpcBnuvaAWcqhbI7rqX5GKziwWEdD+wi2gNLfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.13.tgz", + "integrity": "sha512-bEVIIfK5mSQoG1R19qA+fJOvCB+0wVGGnXHT3smchBVahYBdlPn2OsZZKzlHWfb1E+PhLBmYfqB5zQXFP7hJig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.13.tgz", + "integrity": "sha512-Yml1KlMzOnXj/tnW7yX8U78iAzTk39aILYvCPbqeewAq1kSzl+w59k/fiVkTBfvDi/oW/5YRxL+Fq+Y1Fr1r2Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.13.tgz", + "integrity": "sha512-afbVrsMgZ9dUTNUchFpj5VkmJRxvht/u335jUJ7o23YTbNbnpmXif3VKQGCtnjSh+CZaqm6N3CPG8KO3zwyZ1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.13.tgz", + "integrity": "sha512-vOtxu0xC0SLdQ2WRXg8Qgd8T32ak4SPqk5zjItRszrJk2BdeXqfGxBJbP7o4aOvSPSmSSv46Lr1EP4HXU8v7Kg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.13.tgz", + "integrity": "sha512-UCrMJQY/gJnOl3XgbWRZZUvGGBuKy6i0YNSptgMzHBjs+QYDYR1Mt/RLTOPy4fzzves65O1EDmlL//OzEqoLlA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-16.0.0.tgz", - "integrity": "sha512-+FJ3e6cX9DW2t7021Ji3oz433rk3+4jLfqzU+Jyx6/vJz1dIOaML3EAY6lYuW4TLiXgMPOMvs6KzPFALGh4Lag==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-17.0.1.tgz", + "integrity": "sha512-utbm8OXIoqVVYGVzQkOS773ymbjc+UMkXv8lyi7hTqLhCQs0rZ0yA74peqVZRuOGXLHgcSTA7fnJhA80iQOblw==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "@angular/forms": "^17.0.0", - "@angular/localize": "^17.0.0", + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", + "@angular/forms": "^18.0.0", + "@angular/localize": "^18.0.0", "@popperjs/core": "^2.11.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@ng-select/ng-select": { - "version": "12.0.7", - "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-12.0.7.tgz", - "integrity": "sha512-Eht1zlLP0DJxiXcKnq3aY/EJ8odomgU0hM0BJoPY6oX3XFHndtFtdPxlZfhVtQn+FwyDEh7306rRx6digxVssA==", + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-13.7.1.tgz", + "integrity": "sha512-v/GwSBpuHd31DyoYFQECh+rCwn7xmCBpwMQTcwWerKaDQSr1egpGPSnCq2SzvfHqiJ5e1ckx7ZNTuk+swBweag==", "dependencies": { "tslib": "^2.3.1" }, "engines": { - "node": ">= 16", + "node": ">= 18", "npm": ">= 8" }, "peerDependencies": { - "@angular/common": "^17.0.0-rc.0", - "@angular/core": "^17.0.0-rc.0", - "@angular/forms": "^17.0.0-rc.0" + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", + "@angular/forms": "^18.0.0" } }, "node_modules/@ngtools/webpack": { - "version": "17.3.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.9.tgz", - "integrity": "sha512-2+NvEQuYKRWdZaJbRJWEnR48tpW0uYbhwfHBHLDI9Kazb3mb0oAwYBVXdq+TtDLBypXnMsFpCewjRHTvkVx4/A==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.5.tgz", + "integrity": "sha512-L0n4eHObeqEOYRfSP+e4SeF/dmwxOIFy9xYvYCOUwOLrW4b3+a1+kkT30pqyfL72LFtpf0cmUwaWEFIcWl5PCg==", "dev": true, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "typescript": ">=5.2 <5.5", + "@angular/compiler-cli": "^18.0.0", + "typescript": ">=5.4 <5.6", "webpack": "^5.54.0" } }, @@ -3555,15 +3782,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/git/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -3579,15 +3797,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/git/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", @@ -3681,15 +3890,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/promise-spawn": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", @@ -3727,24 +3927,25 @@ } }, "node_modules/@npmcli/redact": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", - "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", "dev": true, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", - "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", "which": "^4.0.0" }, "engines": { @@ -3763,217 +3964,16 @@ "node_modules/@npmcli/run-script/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@nrwl/devkit": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-18.3.5.tgz", - "integrity": "sha512-DIvChKMe4q8CtIsbrumL/aYgf85H5vlT6eF3jnCCWORj6LTwoHtK8Q9ky1+uM82KIM0gaKd32NVDw+w64scHyg==", - "dev": true, - "dependencies": { - "@nx/devkit": "18.3.5" - } - }, - "node_modules/@nrwl/tao": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-18.3.5.tgz", - "integrity": "sha512-gB7Vxa6FReZZEGva03Eh+84W8BSZOjsNyXboglOINu6d8iZZ0eotSXGziKgjpkj3feZ1ofKZMs0PRObVAOROVw==", - "dev": true, - "dependencies": { - "nx": "18.3.5", - "tslib": "^2.3.0" - }, - "bin": { - "tao": "index.js" - } - }, - "node_modules/@nx/devkit": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-18.3.5.tgz", - "integrity": "sha512-9I0L17t0MN87fL4m4MjDiBxJIx7h5RQY/pTYtt5TBjye0ANb165JeE4oh3ibzfjMzXv42Aej2Gm+cOuSPwzT9g==", - "dev": true, - "dependencies": { - "@nrwl/devkit": "18.3.5", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "semver": "^7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" - }, - "peerDependencies": { - "nx": ">= 16 <= 19" - } - }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-18.3.5.tgz", - "integrity": "sha512-4I5UpZ/x2WO9OQyETXKjaYhXiZKUTYcLPewruRMODWu6lgTM9hHci0SqMQB+TWe3f80K8VT8J8x3+uJjvllGlg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-darwin-x64": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-18.3.5.tgz", - "integrity": "sha512-Drn6jOG237AD/s6OWPt06bsMj0coGKA5Ce1y5gfLhptOGk4S4UPE/Ay5YCjq+/yhTo1gDHzCHxH0uW2X9MN9Fg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-18.3.5.tgz", - "integrity": "sha512-8tA8Yw0Iir4liFjffIFS5THTS3TtWY/No2tkVj91gwy/QQ/otvKbOyc5RCIPpbZU6GS3ZWfG92VyCSm06dtMFg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-18.3.5.tgz", - "integrity": "sha512-BrPGAHM9FCGkB9/hbvlJhe+qtjmvpjIjYixGIlUxL3gGc8E/ucTyCnz5pRFFPFQlBM7Z/9XmbHvGPoUi/LYn5A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-18.3.5.tgz", - "integrity": "sha512-/Xd0Q3LBgJeigJqXC/Jck/9l5b+fK+FCM0nRFMXgPXrhZPhoxWouFkoYl2F1Ofr+AQf4jup4DkVTB5r98uxSCA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-18.3.5.tgz", - "integrity": "sha512-r18qd7pUrl1haAZ/e9Q+xaFTsLJnxGARQcf/Y76q+K2psKmiUXoRlqd3HAOw43KTllaUJ5HkzLq2pIwg3p+xBw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-18.3.5.tgz", - "integrity": "sha512-vYrikG6ff4I9cvr3Ysk3y3gjQ9cDcvr3iAr+4qqcQ4qVE+OLL2++JDS6xfPvG/TbS3GTQpyy2STRBwiHgxTeJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-18.3.5.tgz", - "integrity": "sha512-6np86lcYy3+x6kkW/HrBHIdNWbUu/MIsvMuNH5UXgyFs60l5Z7Cocay2f7WOaAbTLVAr0W7p4RxRPamHLRwWFA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-18.3.5.tgz", - "integrity": "sha512-H3p2ZVhHV1WQWTICrQUTplOkNId0y3c23X3A2fXXFDbWSBs0UgW7m55LhMcA9p0XZ7wDHgh+yFtVgu55TXLjug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.3.5.tgz", - "integrity": "sha512-xFwKVTIXSgjdfxkpriqHv5NpmmFILTrWLEkUGSoimuRaAm1u15YWx/VmaUQ+UWuJnmgqvB/so4SMHSfNkq3ijA==", - "cpu": [ - "x64" - ], + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, "engines": { - "node": ">= 10" + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/@pkgjs/parseargs": { @@ -4087,9 +4087,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", - "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", + "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", "cpu": [ "arm" ], @@ -4100,9 +4100,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", - "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", + "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", "cpu": [ "arm64" ], @@ -4113,9 +4113,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", - "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", + "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", "cpu": [ "arm64" ], @@ -4126,9 +4126,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", - "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", + "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", "cpu": [ "x64" ], @@ -4139,9 +4139,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", - "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", + "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", "cpu": [ "arm" ], @@ -4152,9 +4152,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", - "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", + "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", "cpu": [ "arm" ], @@ -4165,9 +4165,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", - "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", + "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", "cpu": [ "arm64" ], @@ -4178,9 +4178,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", - "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", + "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", "cpu": [ "arm64" ], @@ -4191,9 +4191,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", - "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", + "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", "cpu": [ "ppc64" ], @@ -4204,9 +4204,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", - "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", + "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", "cpu": [ "riscv64" ], @@ -4217,9 +4217,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", - "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", + "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", "cpu": [ "s390x" ], @@ -4230,9 +4230,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", - "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", + "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", "cpu": [ "x64" ], @@ -4243,9 +4243,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", - "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", + "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", "cpu": [ "x64" ], @@ -4256,9 +4256,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", - "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", + "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", "cpu": [ "arm64" ], @@ -4269,9 +4269,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", - "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", + "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", "cpu": [ "ia32" ], @@ -4282,9 +4282,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", - "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", + "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", "cpu": [ "x64" ], @@ -4295,9 +4295,9 @@ ] }, "node_modules/@rollup/wasm-node": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.21.3.tgz", - "integrity": "sha512-uZFl4GXMgyllfuKjY/zlXxTxDs+G/LB7snVENskpJt7IIXw6cD1yqi3eBeGM8NxE9kuxrNB0Qr1QLNtDYTlqeQ==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.22.0.tgz", + "integrity": "sha512-uVU0o0CWcjKAWHpBSezLaFWOXF7xJbk1H3qFFEQ+ntRATHvJWKNJUP4q9/CGqC5qz1NBnc84RBiHbw0l6o+2Gg==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -4313,56 +4313,26 @@ "fsevents": "~2.3.2" } }, - "node_modules/@schematics/angular": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.3.tgz", - "integrity": "sha512-kNlyjIKTBhfi8Jab3MCkxNRbbpErbzdu0lZNSL8Nidmqs6Tk23Dc1bZe4t/gPNOCkCvQlwYa6X88SjC/ntyVng==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.3.3", - "@angular-devkit/schematics": "17.3.3", - "jsonc-parser": "3.2.1" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } + "node_modules/@rollup/wasm-node/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, - "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "17.3.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.3.tgz", - "integrity": "sha512-J22Sh3M7rj8Ar3iEs20ko5wgC3DE7vWfYZNdimt2IJiS4J7BEX8R3Awf+TRt+6AN3NFm3/xe1Sz4yvDh3FvNFg==", + "node_modules/@schematics/angular": { + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.5.tgz", + "integrity": "sha512-tBXhk9OGT4U6VsBNbuCNl2ITDOF3NYdGrEieIHU+lHSkpJNGZUIGxCgXCETXkmXDq1pe4wFZSKelWjeqYDfX0g==", "dev": true, "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" + "@angular-devkit/core": "18.2.5", + "@angular-devkit/schematics": "18.2.5", + "jsonc-parser": "3.3.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@schematics/angular/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" } }, "node_modules/@sigstore/bundle": { @@ -4412,15 +4382,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@sigstore/tuf": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", @@ -4448,11 +4409,17 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", @@ -4501,6 +4468,7 @@ "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -4513,6 +4481,7 @@ "version": "7.6.8", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "peer": true, "dependencies": { "@babel/types": "^7.0.0" } @@ -4521,6 +4490,7 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "peer": true, "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -4530,6 +4500,7 @@ "version": "7.20.6", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "peer": true, "dependencies": { "@babel/types": "^7.20.7" } @@ -4618,9 +4589,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, "node_modules/@types/express": { @@ -4717,6 +4688,15 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "optional": true }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { "version": "20.16.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", @@ -4754,9 +4734,9 @@ "dev": true }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "node_modules/@types/semver": { @@ -4810,6 +4790,12 @@ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "optional": true }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "dev": true + }, "node_modules/@types/ws": { "version": "8.5.12", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", @@ -4854,33 +4840,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", @@ -4952,13 +4911,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.2.0.tgz", - "integrity": "sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/utils": "7.2.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -4970,7 +4929,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4978,33 +4937,19 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", - "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -5013,27 +4958,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/types": { @@ -5078,41 +5004,40 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.2.0.tgz", - "integrity": "sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", + "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "8.6.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/typescript-estree": "8.6.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", - "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", + "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", "dev": true, + "peer": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0" + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -5120,12 +5045,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", + "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", "dev": true, + "peer": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -5133,22 +5059,23 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.2.0.tgz", - "integrity": "sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", + "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", "dev": true, + "peer": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", + "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/visitor-keys": "8.6.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -5161,22 +5088,39 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", + "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", "dev": true, + "peer": true, "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "8.6.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", @@ -5376,37 +5320,6 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", - "dev": true, - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.15.0" - } - }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@zkochan/js-yaml/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", @@ -5512,15 +5425,15 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -5528,9 +5441,9 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "dependencies": { "ajv": "^8.0.0" @@ -5556,19 +5469,6 @@ "ajv": "^8.8.2" } }, - "node_modules/angular-in-memory-web-api": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.17.0.tgz", - "integrity": "sha512-q1VPfyg8B0dBKjjURitxFnUBqEiR4JyATxgHuAVTLfgcMJwJIBqfEYrejCPRE2GslzqMjf2PdLklxoYs/HDd7Q==", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -5654,13 +5554,10 @@ "dev": true }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/aria-query": { "version": "5.3.0", @@ -5686,22 +5583,10 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -5718,11 +5603,11 @@ } ], "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -5731,28 +5616,17 @@ "engines": { "node": "^10 || ^12 || >=14" }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-loader": { @@ -5772,22 +5646,6 @@ "webpack": ">=5" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.11", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", @@ -5812,57 +5670,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6106,6 +5932,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -6207,19 +6048,10 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "version": "1.0.30001662", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz", + "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==", "funding": [ { "type": "opencollective", @@ -6315,21 +6147,24 @@ } }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "engines": { "node": ">=6" @@ -6338,6 +6173,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", @@ -6401,6 +6252,32 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -6468,18 +6345,6 @@ "node": ">=0.1.90" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", @@ -6660,20 +6525,20 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, "dependencies": { - "fast-glob": "^3.2.11", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^13.1.1", + "globby": "^14.0.0", "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -6696,28 +6561,29 @@ } }, "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/copy-webpack-plugin/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, "engines": { "node": ">=12" @@ -6726,6 +6592,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/core-js-compat": { "version": "3.38.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", @@ -6793,28 +6671,10 @@ } } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/critters": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", - "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", + "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -6911,22 +6771,22 @@ } }, "node_modules/css-loader": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", - "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.4", - "postcss-modules-scope": "^3.1.1", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -6934,7 +6794,7 @@ }, "peerDependencies": { "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" + "webpack": "^5.27.0" }, "peerDependenciesMeta": { "@rspack/core": { @@ -7552,6 +7412,34 @@ "node": ">=0.10.0" } }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", @@ -7594,12 +7482,15 @@ } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/delaunator": { @@ -7611,15 +7502,6 @@ "robust-predicates": "^3.0.2" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", @@ -7663,6 +7545,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -7684,15 +7575,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7802,33 +7684,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dotenv": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", - "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -7841,21 +7696,6 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.25", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz", @@ -7868,9 +7708,10 @@ "optional": true }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true }, "node_modules/emoji-toolkit": { "version": "8.0.0", @@ -7919,15 +7760,6 @@ "node": ">=0.10.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/engine.io": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", @@ -7971,18 +7803,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/ent": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", @@ -8016,6 +7836,18 @@ "node": ">=6" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", @@ -8072,54 +7904,54 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", - "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", + "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", "dev": true, "hasInstallScript": true, - "optional": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.1", - "@esbuild/android-arm": "0.20.1", - "@esbuild/android-arm64": "0.20.1", - "@esbuild/android-x64": "0.20.1", - "@esbuild/darwin-arm64": "0.20.1", - "@esbuild/darwin-x64": "0.20.1", - "@esbuild/freebsd-arm64": "0.20.1", - "@esbuild/freebsd-x64": "0.20.1", - "@esbuild/linux-arm": "0.20.1", - "@esbuild/linux-arm64": "0.20.1", - "@esbuild/linux-ia32": "0.20.1", - "@esbuild/linux-loong64": "0.20.1", - "@esbuild/linux-mips64el": "0.20.1", - "@esbuild/linux-ppc64": "0.20.1", - "@esbuild/linux-riscv64": "0.20.1", - "@esbuild/linux-s390x": "0.20.1", - "@esbuild/linux-x64": "0.20.1", - "@esbuild/netbsd-x64": "0.20.1", - "@esbuild/openbsd-x64": "0.20.1", - "@esbuild/sunos-x64": "0.20.1", - "@esbuild/win32-arm64": "0.20.1", - "@esbuild/win32-ia32": "0.20.1", - "@esbuild/win32-x64": "0.20.1" + "@esbuild/aix-ppc64": "0.23.0", + "@esbuild/android-arm": "0.23.0", + "@esbuild/android-arm64": "0.23.0", + "@esbuild/android-x64": "0.23.0", + "@esbuild/darwin-arm64": "0.23.0", + "@esbuild/darwin-x64": "0.23.0", + "@esbuild/freebsd-arm64": "0.23.0", + "@esbuild/freebsd-x64": "0.23.0", + "@esbuild/linux-arm": "0.23.0", + "@esbuild/linux-arm64": "0.23.0", + "@esbuild/linux-ia32": "0.23.0", + "@esbuild/linux-loong64": "0.23.0", + "@esbuild/linux-mips64el": "0.23.0", + "@esbuild/linux-ppc64": "0.23.0", + "@esbuild/linux-riscv64": "0.23.0", + "@esbuild/linux-s390x": "0.23.0", + "@esbuild/linux-x64": "0.23.0", + "@esbuild/netbsd-x64": "0.23.0", + "@esbuild/openbsd-arm64": "0.23.0", + "@esbuild/openbsd-x64": "0.23.0", + "@esbuild/sunos-x64": "0.23.0", + "@esbuild/win32-arm64": "0.23.0", + "@esbuild/win32-ia32": "0.23.0", + "@esbuild/win32-x64": "0.23.0" } }, "node_modules/esbuild-wasm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", - "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz", + "integrity": "sha512-6jP8UmWy6R6TUUV8bMuC3ZyZ6lZKI56x0tkxyCIqWwRRJ/DgeQKneh/Oid5EoGoPFLrGNkz47ZEtWAYuiY/u9g==", "dev": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/escalade": { @@ -8300,12 +8132,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -8378,22 +8204,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -8430,39 +8240,12 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -8475,36 +8258,6 @@ "node": "*" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8546,19 +8299,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -8654,6 +8394,27 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -8782,18 +8543,6 @@ "node": ">=4" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -8833,6 +8582,12 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -8853,21 +8608,6 @@ "node": ">=0.8.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -8880,27 +8620,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -8974,16 +8693,19 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { @@ -9051,32 +8773,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9108,24 +8804,18 @@ "node": ">= 0.6" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=14.14" + "node": ">=6 <7 || >=8" } }, "node_modules/fs-minipass": { @@ -9140,12 +8830,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -9190,6 +8874,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -9209,15 +8905,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -9603,33 +9290,26 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.8", + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "micromatch": "^4.0.5" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -9648,6 +9328,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -9693,9 +9382,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -9748,15 +9437,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -9790,71 +9470,24 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", - "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/injection-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.4.0.tgz", - "integrity": "sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==", - "dev": true, - "dependencies": { - "tslib": "^2.0.0" - } - }, - "node_modules/inquirer": { - "version": "9.2.15", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", - "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", - "dev": true, - "dependencies": { - "@ljharb/through": "^2.3.12", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^3.2.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=18" - } + "dev": true }, - "node_modules/inquirer/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/injection-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.4.0.tgz", + "integrity": "sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==", "dev": true, "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.0.0" } }, "node_modules/internmap": { @@ -9879,12 +9512,6 @@ "node": ">= 12" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, "node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", @@ -9942,15 +9569,15 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9965,11 +9592,15 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-glob": { @@ -9983,6 +9614,24 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -10004,6 +9653,18 @@ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -10076,15 +9737,18 @@ "dev": true }, "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isarray": { @@ -10130,28 +9794,19 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/istanbul-lib-report": { @@ -10240,116 +9895,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jasmine-core": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.3.0.tgz", @@ -10365,100 +9910,6 @@ "colors": "1.4.0" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -10512,13 +9963,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -10580,19 +10030,16 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -10823,6 +10270,21 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/karma/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/karma/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/karma/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -10844,6 +10306,29 @@ "node": ">=0.10.0" } }, + "node_modules/karma/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, "node_modules/karma/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -10946,15 +10431,6 @@ "node": ">=6" } }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/launch-editor": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", @@ -10998,23 +10474,29 @@ } }, "node_modules/less-loader": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", - "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", + "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", "dev": true, - "dependencies": { - "klona": "^2.0.4" - }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/less/node_modules/make-dir": { @@ -11095,12 +10577,113 @@ } }, "node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/listr2": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dev": true, + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lmdb": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.0.13.tgz", + "integrity": "sha512-UGe+BbaSUQtAMZobTb4nHvFMrmvuAQKSeaqAX2meTEQjfsbpl5sxdHD8T72OnwD4GU9uwNhYXIVe4QGs8N9Zyw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "msgpackr": "^1.10.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.0.13", + "@lmdb/lmdb-darwin-x64": "3.0.13", + "@lmdb/lmdb-linux-arm": "3.0.13", + "@lmdb/lmdb-linux-arm64": "3.0.13", + "@lmdb/lmdb-linux-x64": "3.0.13", + "@lmdb/lmdb-win32-x64": "3.0.13" } }, "node_modules/loader-runner": { @@ -11113,24 +10696,27 @@ } }, "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, "engines": { "node": ">= 12.13.0" } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -11242,6 +10828,127 @@ "node": ">=8" } }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", @@ -11267,15 +10974,12 @@ } }, "node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { @@ -11322,15 +11026,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/marked": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", @@ -11390,15 +11085,22 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.12.0.tgz", + "integrity": "sha512-74wDsex5tQDSClVkeK1vtxqYCAgCoXxx+K4NSHzgU/muYVYByFqa+0RnrPO9NM6naWm1+G9JmZ0p6QHhXmeYfA==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" }, "engines": { "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/merge-descriptors": { @@ -11968,10 +11670,22 @@ "node": ">=6" } }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mini-css-extract-plugin": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", - "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", "dev": true, "dependencies": { "schema-utils": "^4.0.0", @@ -12086,34 +11800,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/minipass-json-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", - "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -12217,11 +11903,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/mobx": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-4.14.1.tgz", - "integrity": "sha512-Oyg7Sr7r78b+QPYLufJyUmxTWcqeQ96S1nmtyur3QL8SeI6e0TqcKKcxbG+sVJLWANhHQkBW/mDmgG5DDC4fdw==" - }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -12245,6 +11926,37 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/msgpackr": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", + "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "dev": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", @@ -12337,14 +12049,14 @@ "dev": true }, "node_modules/ng-packagr": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-17.3.0.tgz", - "integrity": "sha512-kMSqxeDgv88SWCoapWNRRN1UdBgwu9/Pw/j7u2WFGmzrIWUFivNWBBSSL94kMxr2La+Z9wMwiL8EwKNvmCpg2A==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-18.2.1.tgz", + "integrity": "sha512-dy9ZDpZb3QpAz+Y/m8VAu7ctr2VrnRU3gmQwJagnNybVJtCsKn3lZA3IW7Z7GTLoG5IALSPouiCgiB/C8ozv7w==", "dev": true, "dependencies": { - "@rollup/plugin-json": "^6.0.1", + "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/wasm-node": "^4.5.0", + "@rollup/wasm-node": "^4.18.0", "ajv": "^8.12.0", "ansi-colors": "^4.1.3", "browserslist": "^4.22.1", @@ -12353,7 +12065,7 @@ "commander": "^12.0.0", "convert-source-map": "^2.0.0", "dependency-graph": "^1.0.0", - "esbuild-wasm": "^0.20.0", + "esbuild": "^0.23.0", "fast-glob": "^3.3.1", "find-cache-dir": "^3.3.2", "injection-js": "^2.4.0", @@ -12369,17 +12081,16 @@ "ng-packagr": "cli/main.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || >=20.11.1" }, "optionalDependencies": { - "esbuild": "^0.20.0", - "rollup": "^4.5.0" + "rollup": "^4.18.0" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0 || ^17.2.0-next.0 || ^17.3.0-next.0", + "@angular/compiler-cli": "^18.0.0 || ^18.2.0-next.0", "tailwindcss": "^2.0.0 || ^3.0.0", "tslib": "^2.3.0", - "typescript": ">=5.2 <5.5" + "typescript": ">=5.4 <5.6" }, "peerDependenciesMeta": { "tailwindcss": { @@ -12410,6 +12121,31 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/ng-packagr/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ng-packagr/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ng-packagr/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -12425,6 +12161,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ng-packagr/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ng-packagr/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ng-packagr/node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -12437,15 +12200,6 @@ "node": ">=8" } }, - "node_modules/ng-packagr/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/ng-packagr/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -12456,9 +12210,9 @@ } }, "node_modules/ngx-markdown": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-17.2.1.tgz", - "integrity": "sha512-TKzxP2R2uTGpVFx0OZDFC/BpNJYUabG2z59/9/PXrTP3R7xTNFuvGQZSNitAQFD7nI3Uko87Ra3GJrbaHdjeBA==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-18.0.0.tgz", + "integrity": "sha512-sFR9dIOKobdhNKZTlCrX3RmpoAhZ7k3T9h7oWJP676Oe9BsoxuAYZKJmFDT20vrY6xmFD3WtLJDZR7rNRLf6Uw==", "dependencies": { "tslib": "^2.3.0" }, @@ -12470,9 +12224,9 @@ "prismjs": "^1.28.0" }, "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "@angular/platform-browser": "^17.0.0", + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", + "@angular/platform-browser": "^18.0.0", "marked": ">= 9.0.0 < 13.0.0", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.14.0" @@ -12493,13 +12247,19 @@ "node-gyp-build": "^4.2.2" } }, - "node_modules/node-addon-api": { + "node_modules/nice-napi/node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true, "optional": true }, + "node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -12545,6 +12305,20 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/node-gyp/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -12589,15 +12363,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-gyp/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/node-gyp/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", @@ -12613,12 +12378,6 @@ "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/node-machine-id": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", - "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", - "dev": true - }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -12710,284 +12469,88 @@ } }, "node_modules/npm-package-arg": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", - "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } - }, - "node_modules/npm-packlist": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", - "dev": true, - "dependencies": { - "ignore-walk": "^6.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-pick-manifest": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", - "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", - "dev": true, - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", - "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", - "dev": true, - "dependencies": { - "@npmcli/redact": "^1.1.0", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nx": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/nx/-/nx-18.3.5.tgz", - "integrity": "sha512-wWcvwoTgiT5okdrG0RIWm1tepC17bDmSpw+MrOxnjfBjARQNTURkiq4U6cxjCVsCxNHxCrlAaBSQLZeBgJZTzQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nrwl/tao": "18.3.5", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.6.0", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.3.1", - "dotenv-expand": "~10.0.0", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^11.1.0", - "ignore": "^5.0.4", - "jest-diff": "^29.4.1", - "js-yaml": "4.1.0", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "9.0.3", - "node-machine-id": "1.1.12", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "ora": "5.3.0", - "semver": "^7.5.3", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "18.3.5", - "@nx/nx-darwin-x64": "18.3.5", - "@nx/nx-freebsd-x64": "18.3.5", - "@nx/nx-linux-arm-gnueabihf": "18.3.5", - "@nx/nx-linux-arm64-gnu": "18.3.5", - "@nx/nx-linux-arm64-musl": "18.3.5", - "@nx/nx-linux-x64-gnu": "18.3.5", - "@nx/nx-linux-x64-musl": "18.3.5", - "@nx/nx-win32-arm64-msvc": "18.3.5", - "@nx/nx-win32-x64-msvc": "18.3.5" - }, - "peerDependencies": { - "@swc-node/register": "^1.8.0", - "@swc/core": "^1.3.85" - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/nx/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/nx/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/nx/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/nx/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + }, + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "ignore-walk": "^6.0.4" }, "engines": { - "node": ">=7.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/nx/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/npm-pick-manifest": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", + "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/npm-registry-fetch": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/nx/node_modules/ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "path-key": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/nx/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "boolbase": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, "node_modules/object-assign": { @@ -13048,32 +12611,33 @@ } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13150,6 +12714,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ora/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -13177,6 +12753,40 @@ "node": ">=8" } }, + "node_modules/ora/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/ora/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13189,6 +12799,12 @@ "node": ">=8" } }, + "node_modules/ordered-binary": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.1.tgz", + "integrity": "sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==", + "dev": true + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -13199,30 +12815,33 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -13241,16 +12860,20 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry/node_modules/retry": { @@ -13278,32 +12901,31 @@ "dev": true }, "node_modules/pacote": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", - "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", "dev": true, "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", + "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -13345,12 +12967,6 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/parse-json/node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", @@ -13483,9 +13099,9 @@ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", - "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "engines": { "node": ">=12" @@ -13505,9 +13121,9 @@ } }, "node_modules/piscina": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", - "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz", + "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==", "dev": true, "optionalDependencies": { "nice-napi": "^1.0.2" @@ -13611,9 +13227,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -13631,8 +13247,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -13789,32 +13405,6 @@ "node": ">=6.0.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", @@ -13825,9 +13415,9 @@ } }, "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -13880,12 +13470,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -13958,91 +13542,21 @@ "dev": true, "engines": { "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/read-package-json": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.1.tgz", - "integrity": "sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q==", - "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", - "dev": true, - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.8" } }, "node_modules/readable-stream": { @@ -14204,12 +13718,12 @@ } }, "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/resolve-url-loader": { @@ -14252,16 +13766,19 @@ } }, "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { @@ -14311,9 +13828,9 @@ "optional": true }, "node_modules/rollup": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", - "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", + "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -14326,32 +13843,41 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.3", - "@rollup/rollup-android-arm64": "4.21.3", - "@rollup/rollup-darwin-arm64": "4.21.3", - "@rollup/rollup-darwin-x64": "4.21.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", - "@rollup/rollup-linux-arm-musleabihf": "4.21.3", - "@rollup/rollup-linux-arm64-gnu": "4.21.3", - "@rollup/rollup-linux-arm64-musl": "4.21.3", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", - "@rollup/rollup-linux-riscv64-gnu": "4.21.3", - "@rollup/rollup-linux-s390x-gnu": "4.21.3", - "@rollup/rollup-linux-x64-gnu": "4.21.3", - "@rollup/rollup-linux-x64-musl": "4.21.3", - "@rollup/rollup-win32-arm64-msvc": "4.21.3", - "@rollup/rollup-win32-ia32-msvc": "4.21.3", - "@rollup/rollup-win32-x64-msvc": "4.21.3", + "@rollup/rollup-android-arm-eabi": "4.20.0", + "@rollup/rollup-android-arm64": "4.20.0", + "@rollup/rollup-darwin-arm64": "4.20.0", + "@rollup/rollup-darwin-x64": "4.20.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", + "@rollup/rollup-linux-arm-musleabihf": "4.20.0", + "@rollup/rollup-linux-arm64-gnu": "4.20.0", + "@rollup/rollup-linux-arm64-musl": "4.20.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", + "@rollup/rollup-linux-riscv64-gnu": "4.20.0", + "@rollup/rollup-linux-s390x-gnu": "4.20.0", + "@rollup/rollup-linux-x64-gnu": "4.20.0", + "@rollup/rollup-linux-x64-musl": "4.20.0", + "@rollup/rollup-win32-arm64-msvc": "4.20.0", + "@rollup/rollup-win32-ia32-msvc": "4.20.0", + "@rollup/rollup-win32-x64-msvc": "4.20.0", "fsevents": "~2.3.2" } }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/run-parallel": { @@ -14383,9 +13909,9 @@ "optional": true }, "node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } @@ -14429,9 +13955,9 @@ "devOptional": true }, "node_modules/sass": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", - "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -14446,9 +13972,9 @@ } }, "node_modules/sass-loader": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", - "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.0.tgz", + "integrity": "sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -14511,6 +14037,23 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -14537,12 +14080,9 @@ } }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -14550,22 +14090,6 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -14812,10 +14336,16 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sigstore": { "version": "2.3.1", @@ -14843,6 +14373,34 @@ "node": ">=8" } }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -15074,9 +14632,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, "node_modules/ssri": { @@ -15114,38 +14672,6 @@ "node": ">=8.0" } }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/streamroller/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/streamroller/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -15156,16 +14682,20 @@ } }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -15183,6 +14713,48 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -15207,15 +14779,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -15237,23 +14800,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/stylis": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", @@ -15334,22 +14880,6 @@ "node": ">=10" } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -15402,9 +14932,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.29.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", - "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -15502,47 +15032,11 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/text-table": { "version": "0.2.0", @@ -15550,11 +15044,17 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } }, "node_modules/thunky": { "version": "1.1.0", @@ -15569,12 +15069,15 @@ "optional": true }, "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, "engines": { - "node": ">=14.14" + "node": ">=0.6.0" } }, "node_modules/to-fast-properties": { @@ -15605,6 +15108,22 @@ "node": ">=0.6" } }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -15657,20 +15176,6 @@ "typescript": ">=2.0" } }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", @@ -15734,9 +15239,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15771,15 +15276,6 @@ "node": "*" } }, - "node_modules/undici": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", - "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", - "dev": true, - "engines": { - "node": ">=18.0" - } - }, "node_modules/undici-types": { "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", @@ -15826,6 +15322,18 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -15864,12 +15372,12 @@ } }, "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/unpipe": { @@ -16012,14 +15520,14 @@ } }, "node_modules/vite": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", - "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", + "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -16038,6 +15546,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -16055,6 +15564,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -16067,9 +15579,9 @@ } }, "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -16083,9 +15595,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -16099,9 +15611,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -16115,9 +15627,9 @@ } }, "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -16131,9 +15643,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -16147,9 +15659,9 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -16163,9 +15675,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -16179,9 +15691,9 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -16195,9 +15707,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -16211,9 +15723,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -16227,9 +15739,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -16243,9 +15755,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -16259,9 +15771,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -16275,9 +15787,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -16291,9 +15803,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -16307,9 +15819,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -16323,9 +15835,9 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -16339,9 +15851,9 @@ } }, "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -16355,9 +15867,9 @@ } }, "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -16371,9 +15883,9 @@ } }, "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -16387,9 +15899,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -16403,9 +15915,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -16419,9 +15931,9 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -16435,9 +15947,9 @@ } }, "node_modules/vite/node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "bin": { @@ -16447,29 +15959,57 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, "node_modules/void-elements": { @@ -16482,9 +16022,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -16512,6 +16052,12 @@ "defaults": "^1.0.3" } }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true + }, "node_modules/web-worker": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", @@ -16565,19 +16111,20 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", - "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.12", + "memfs": "^4.6.0", "mime-types": "^2.1.31", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -16593,54 +16140,54 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", - "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", "express": "^4.17.3", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", + "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -16651,41 +16198,92 @@ } } }, - "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">= 12.13.0" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/webpack-sources": { @@ -16795,19 +16393,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -16926,6 +16511,35 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16959,6 +16573,35 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -17024,6 +16667,32 @@ "node": ">=12" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -17045,6 +16714,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zone.js": { "version": "0.14.10", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", diff --git a/package.json b/package.json index a4c1b78b..402f760e 100644 --- a/package.json +++ b/package.json @@ -23,42 +23,39 @@ }, "private": true, "dependencies": { - "@ali-hm/angular-tree-component": "^12.0.0", - "@angular/animations": "17.3.3", - "@angular/cdk": "17.0.5", - "@angular/common": "17.3.3", - "@angular/core": "17.3.3", - "@angular/forms": "17.3.3", - "@angular/localize": "17.3.3", - "@angular/platform-browser": "17.3.3", - "@angular/platform-browser-dynamic": "17.3.3", - "@angular/router": "17.3.3", + "@angular/animations": "^18.2.0", + "@angular/cdk": "^18.2.0", + "@angular/common": "^18.2.0", + "@angular/compiler": "^18.2.0", + "@angular/core": "^18.2.0", + "@angular/forms": "^18.2.0", + "@angular/platform-browser": "^18.2.0", + "@angular/platform-browser-dynamic": "^18.2.0", + "@angular/router": "^18.2.0", "@folkehelseinstituttet/style": "^6.0.0", - "@ng-bootstrap/ng-bootstrap": "^16.0.0", - "@ng-select/ng-select": "^12.0.6", + "@ng-bootstrap/ng-bootstrap": "^17.0.1", + "@ng-select/ng-select": "^13.7.1", "@popperjs/core": "^2.11.8", "@types/lodash-es": "~4.17.6", - "angular-in-memory-web-api": "^0.17.0", "bootstrap": "5.3.2", "date-fns": ">=3.3.1 <4", "highcharts": "~11.4.0", "highcharts-angular": "~4.0.0", "lodash-es": "~4.17.21", - "ngx-markdown": "^17.1.1", - "rxjs": "~7.5.0", - "tslib": "^2.6.2", - "zone.js": "~0.14.0" + "ngx-markdown": "^18.0.0", + "rxjs": "~7.8.0", + "tslib": "^2.6.0", + "zone.js": "~0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "~17.3.5", - "@angular-eslint/builder": "17.3.0", - "@angular-eslint/eslint-plugin": "17.3.0", - "@angular-eslint/eslint-plugin-template": "17.3.0", - "@angular-eslint/schematics": "17.3.0", - "@angular-eslint/template-parser": "17.3.0", - "@angular/cli": "17.3.3", - "@angular/compiler": "17.3.3", - "@angular/compiler-cli": "17.3.3", + "@angular-devkit/build-angular": "^18.2.4", + "@angular-eslint/builder": "18.3.1", + "@angular-eslint/eslint-plugin": "18.3.1", + "@angular-eslint/eslint-plugin-template": "18.3.1", + "@angular-eslint/schematics": "18.3.1", + "@angular-eslint/template-parser": "18.3.1", + "@angular/cli": "^18.2.4", + "@angular/compiler-cli": "^18.2.0", "@types/jasmine": "^5.1.4", "@types/jasminewd2": "~2.0.3", "@types/node": "^20.11.1", @@ -74,10 +71,10 @@ "karma-coverage": "~2.0.3", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", - "ng-packagr": "^17.0.3", + "ng-packagr": "^18.2.1", "prettier": "^3.0.3", "ts-node": "~8.3.0", - "typescript": "5.2.2", + "typescript": "~5.5.2", "webpack": "^5.88.2" } } diff --git a/src/MOCK_DB_DATA/library-items/library-item-ids.ts b/src/MOCK_DB_DATA/library-items/library-item-ids.ts deleted file mode 100644 index f86cf062..00000000 --- a/src/MOCK_DB_DATA/library-items/library-item-ids.ts +++ /dev/null @@ -1,9 +0,0 @@ -const libraryItemIds = {}; - -export const LibraryItemIds = (() => { - let n = 0; - Object.keys(libraryItemIds).forEach((key) => { - libraryItemIds[key] = 'library-item-' + ++n; - }); - return libraryItemIds; -})(); diff --git a/src/MOCK_DB_DATA/library-items/library-item-segment-paths.ts b/src/MOCK_DB_DATA/library-items/library-item-segment-paths.ts deleted file mode 100644 index 1291ce82..00000000 --- a/src/MOCK_DB_DATA/library-items/library-item-segment-paths.ts +++ /dev/null @@ -1,9 +0,0 @@ -function stringTransform(objectNameAsString: string) { - return objectNameAsString.slice(0, -4); -} - -/* - * LibraryItemSegmentPaths - * - corresponds to library second level menus - */ -export class LibraryItemSegmentPaths {} diff --git a/src/MOCK_DB_DATA/library-items/library-items.data.ts b/src/MOCK_DB_DATA/library-items/library-items.data.ts deleted file mode 100644 index 1fed0c26..00000000 --- a/src/MOCK_DB_DATA/library-items/library-items.data.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; - -export const AllData: LibraryItem[] = []; diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 52b98fcc..b6b595a4 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -1,5 +1,5 @@ import { NgModule, Optional, SkipSelf } from '@angular/core'; -import { HttpClientModule } from '@angular/common/http'; +import { provideHttpClient, withInterceptors } from '@angular/common/http'; import { LOCALE_ID } from '@angular/core'; import { registerLocaleData } from '@angular/common'; @@ -7,28 +7,18 @@ import localeNb from '@angular/common/locales/nb'; import localeNbExtra from '@angular/common/locales/extra/nb'; registerLocaleData(localeNb, 'nb', localeNbExtra); -import { HttpClientInMemoryWebApiModule } from 'angular-in-memory-web-api'; -import { MockDbService } from './mock-db.service'; - import { SharedModule } from '../shared/shared.module'; -import { MainMenuComponent } from '../core/main-menu/main-menu.component'; +import { MainMenuComponent } from './main-menu/main-menu.component'; +import { mockDbInterceptor } from './mock-db.interceptor'; @NgModule({ declarations: [MainMenuComponent], - imports: [ - SharedModule, - HttpClientModule, - - // The HttpClientInMemoryWebApiModule module intercepts HTTP requests and returns simulated server responses. - // Remove it when a real server is ready to receive requests. - HttpClientInMemoryWebApiModule.forRoot(MockDbService, { - apiBase: 'api/', - delay: 0, - passThruUnknownUrl: true, - }), - ], exports: [MainMenuComponent], - providers: [{ provide: LOCALE_ID, useValue: 'nb' }], + imports: [SharedModule], + providers: [ + { provide: LOCALE_ID, useValue: 'nb' }, + provideHttpClient(withInterceptors([mockDbInterceptor])), + ], }) export class CoreModule { constructor(@Optional() @SkipSelf() parentModule: CoreModule) { diff --git a/src/app/core/mock-db.interceptor.ts b/src/app/core/mock-db.interceptor.ts new file mode 100644 index 00000000..d395c057 --- /dev/null +++ b/src/app/core/mock-db.interceptor.ts @@ -0,0 +1,17 @@ +import { HttpEvent, HttpHandlerFn, HttpRequest, HttpResponse } from '@angular/common/http'; +import { Observable, of } from 'rxjs'; + +import { getMockDbBody } from './mock-db'; + +export function mockDbInterceptor( + req: HttpRequest, + next: HttpHandlerFn, +): Observable> { + const { url, method } = req; + + if (url.startsWith('api/') && method === 'GET') { + return of(new HttpResponse({ status: 200, body: getMockDbBody(url) })); + } + + return next(req); +} diff --git a/src/app/core/mock-db.service.ts b/src/app/core/mock-db.ts similarity index 64% rename from src/app/core/mock-db.service.ts rename to src/app/core/mock-db.ts index 9c0390d2..4ff073c3 100644 --- a/src/app/core/mock-db.service.ts +++ b/src/app/core/mock-db.ts @@ -1,20 +1,3 @@ -import { Injectable } from '@angular/core'; -import { InMemoryDbService } from 'angular-in-memory-web-api'; - -// All item ids -import { LibraryItemIds } from 'src/MOCK_DB_DATA/library-items/library-item-ids'; - -// All items for debuggings page -import { AllData } from 'src/MOCK_DB_DATA/library-items/library-items.data'; - -// Items - -// ----------------------------------------- -// -// New id and title implementation! -// -// ----------------------------------------- - import { LibraryItemsSharedData } from 'src/MOCK_DB_DATA/library-items/library-items-shared-data'; import { LibraryItemGroupsSharedData } from 'src/MOCK_DB_DATA/library-items/library-item-groups-shared-data'; @@ -48,53 +31,42 @@ import { TooltipPopoverData } from 'src/MOCK_DB_DATA/library-items/tooltip-popov import { TreeViewsData } from 'src/MOCK_DB_DATA/library-items/tree-views/_tree-views.data'; import { TypographyData } from 'src/MOCK_DB_DATA/library-items/typography/_typography.data'; -// TODO: make logic for reading developer/debug/all in LibraryItemGroupsDataService -// const AllLibraryItemsData: LibraryItem[] = [ -// ...HighchartsData.libraryItems, -// ]; - -@Injectable({ - providedIn: 'root', -}) -export class MockDbService implements InMemoryDbService { - createDb(): object { - return { - LibraryItemsSharedData, - LibraryItemGroupsSharedData, +export function getMockDbBody(url: string): unknown { + const urlSegment = url.slice(4); - // Items - AccordionsData, - AlertsData, - BadgesData, - BreadcrumbsData, - ButtonsData, - CardsData, - ColorsData, - DrawersData, - ErrorPagesData, - FormControlsData, - GlobalFootersData, - GlobalHeadersData, - HighchartsData, - IconsData, - LayoutTemplatesData, - ModalsData, - NavsData, - PaginationsData, - ProgressIndicatorsData, - PrototypeFormsData, - PrototypeTablesData, - SearchData, - TablesData, - TagsData, - TimeSelectorsData, - ToastsData, - TooltipPopoverData, - TreeViewsData, - TypographyData, + const dataMapping = { + LibraryItemsSharedData: LibraryItemsSharedData, + LibraryItemGroupsSharedData: LibraryItemGroupsSharedData, + AccordionsData: AccordionsData, + AlertsData: AlertsData, + BadgesData: BadgesData, + BreadcrumbsData: BreadcrumbsData, + ButtonsData: ButtonsData, + CardsData: CardsData, + ColorsData: ColorsData, + DrawersData: DrawersData, + ErrorPagesData: ErrorPagesData, + FormControlsData: FormControlsData, + GlobalFootersData: GlobalFootersData, + GlobalHeadersData: GlobalHeadersData, + HighchartsData: HighchartsData, + IconsData: IconsData, + LayoutTemplatesData: LayoutTemplatesData, + ModalsData: ModalsData, + NavsData: NavsData, + PaginationsData: PaginationsData, + ProgressIndicatorsData: ProgressIndicatorsData, + PrototypeFormsData: PrototypeFormsData, + PrototypeTablesData: PrototypeTablesData, + SearchData: SearchData, + TablesData: TablesData, + TagsData: TagsData, + TimeSelectorsData: TimeSelectorsData, + ToastsData: ToastsData, + TooltipPopoverData: TooltipPopoverData, + TreeViewsData: TreeViewsData, + TypographyData: TypographyData, + }; - LibraryItemIds, // TODO: deprecate when all items use new system - AllData, // TODO: deprecate when all items use new system - }; - } + return dataMapping[urlSegment] || null; } diff --git a/src/app/views/designer/designer.component.ts b/src/app/views/designer/designer.component.ts index b9e7dc0f..5cfa28be 100644 --- a/src/app/views/designer/designer.component.ts +++ b/src/app/views/designer/designer.component.ts @@ -10,11 +10,11 @@ import { MenuItem } from '../../models/menu-item.model'; templateUrl: './designer.component.html', }) export class DesignerComponent implements OnInit, OnDestroy { + private subscription: Subscription = new Subscription(); + topLevelMenuItems!: MenuItem[]; secondLevelMenuItems!: MenuItem[]; - private subscription: Subscription = new Subscription(); - constructor( private urlService: UrlService, private libraryMenuService: LibraryMenuService, diff --git a/src/app/views/developer/developer.component.html b/src/app/views/developer/developer.component.html index 21ca6a17..2a8293c1 100644 --- a/src/app/views/developer/developer.component.html +++ b/src/app/views/developer/developer.component.html @@ -1,17 +1,17 @@ -
    - -
    -
    - -
    -
    - +@if (dataIsLoaded && !isDebugging) { +
    + +
    +
    + +
    +
    + +
    -
    - - -
    +} @else if (dataIsLoaded) { +
    - +} diff --git a/src/app/views/developer/developer.component.ts b/src/app/views/developer/developer.component.ts index 7547acec..90022d8c 100644 --- a/src/app/views/developer/developer.component.ts +++ b/src/app/views/developer/developer.component.ts @@ -1,13 +1,14 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { Subscription } from 'rxjs'; -import { mergeMap } from 'rxjs/operators'; +import { mergeMap, tap } from 'rxjs/operators'; + +import { FhiTreeViewNavigationItem } from '@folkehelseinstituttet/angular-components'; import { UrlService } from '../../services/url.service'; -import { LibraryMenuService } from '../shared/services/library-menu.service'; import { MenuItem } from '../../models/menu-item.model'; -import { FhiTreeViewNavigationItem } from '@folkehelseinstituttet/angular-components'; -import { LibraryItemGroupsSharedDataService } from '../shared/services/library-item-groups-shared-data.service'; +import { LibraryMenuService } from '../shared/services/library-menu.service'; import { LibraryItemGroupsShared } from '../shared/models/library-item.model'; +import { LibraryItemsDataService } from '../shared/services/library-items-data.service'; @Component({ selector: 'app-developer', @@ -20,28 +21,28 @@ export class DeveloperComponent implements OnInit, OnDestroy { secondLevelMenuItems!: Array; isDebugging = false; libraryItemGroupsShared!: LibraryItemGroupsShared; + dataIsLoaded = false; constructor( private urlService: UrlService, private libraryMenuService: LibraryMenuService, - private libraryItemGroupsSharedDataService: LibraryItemGroupsSharedDataService, + private libraryItemsDataService: LibraryItemsDataService, ) {} ngOnInit() { this.subscription.add( this.urlService.URL$.pipe( - mergeMap(() => this.libraryItemGroupsSharedDataService.getLibraryItemGroupsShared()), + tap(() => (this.dataIsLoaded = false)), + mergeMap(() => this.libraryItemsDataService.getLibraryItemGroupsShared()), ).subscribe({ next: (libraryItemGroupsShared) => { this.topLevelMenuItems = this.libraryMenuService.getTopLevelMenuItems(); - this.isDebugging = this.urlService.getSegmentPath(1) === 'debug' ? true : false; + this.isDebugging = this.urlService.getSegmentPath(1) === 'debug'; if (!this.isDebugging && this.libraryMenuService.updateSecondLevelMenu()) { - this.secondLevelMenuItems = this.libraryMenuService - .getSecondLevelMenuItems(libraryItemGroupsShared) - - // TODO: remove this when all items are using new system - .concat(this.libraryMenuService.getSecondLevelMenuItems_OLD()); + this.secondLevelMenuItems = + this.libraryMenuService.getSecondLevelMenuItems(libraryItemGroupsShared); } + this.dataIsLoaded = true; }, error: (error) => console.log(error), }), diff --git a/src/app/views/developer/library-item/library-item.component.html b/src/app/views/developer/library-item/library-item.component.html index 637222a0..a59ed13e 100644 --- a/src/app/views/developer/library-item/library-item.component.html +++ b/src/app/views/developer/library-item/library-item.component.html @@ -44,7 +44,7 @@

    {{ title }}< - + diff --git a/src/app/views/developer/library-item/library-item.component.ts b/src/app/views/developer/library-item/library-item.component.ts index dd7532d9..8a0bd9aa 100644 --- a/src/app/views/developer/library-item/library-item.component.ts +++ b/src/app/views/developer/library-item/library-item.component.ts @@ -1,8 +1,12 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { AfterViewInit, Component, Input, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { ViewportScroller } from '@angular/common'; -import { LibraryItem, LibraryItemType } from '../../shared/models/library-item.model'; +import { + LibraryItem, + LibraryItemGroup, + LibraryItemType, +} from '../../shared/models/library-item.model'; import { MenuItem } from 'src/app/models/menu-item.model'; import { SharedConstants as CONST } from '../../shared/shared.constants'; @@ -15,8 +19,8 @@ const MenuItemName = { selector: 'app-library-item', templateUrl: './library-item.component.html', }) -export class LibraryItemComponent implements OnInit { - @Input() groupId: string; +export class LibraryItemComponent implements OnInit, AfterViewInit { + @Input() group: LibraryItemGroup; @Input() isDebugging: boolean; @Input() libraryItem: LibraryItem; diff --git a/src/app/views/developer/library-items-section/library-items-section.component.html b/src/app/views/developer/library-items-section/library-items-section.component.html index 9ae11642..6a4e21fc 100644 --- a/src/app/views/developer/library-items-section/library-items-section.component.html +++ b/src/app/views/developer/library-items-section/library-items-section.component.html @@ -1,43 +1,45 @@ -
    -
    -
    -
    -

    {{ sectionTitle }}

    -
    -
    -
    +@if (dataIsLoaded) { +
    +
    +
    +
    +

    {{ sectionTitle }}

    +
    +
    +
    - - -
    -
    + + +
    +
    -
    -
    - -
    +} diff --git a/src/app/views/developer/library-items-section/library-items-section.component.ts b/src/app/views/developer/library-items-section/library-items-section.component.ts index 268363d5..a2f790e2 100644 --- a/src/app/views/developer/library-items-section/library-items-section.component.ts +++ b/src/app/views/developer/library-items-section/library-items-section.component.ts @@ -1,15 +1,18 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { ViewportScroller } from '@angular/common'; -import { Subscription } from 'rxjs'; +import { mergeMap, Subscription, tap } from 'rxjs'; import { UrlService } from 'src/app/services/url.service'; -import { LibraryItemGroupsDataService } from '../../shared/services/library-item-groups-data.service'; -import { LibraryItem } from '../../shared/models/library-item.model'; +import { + LibraryItem, + LibraryItemGroup, + LibraryItemGroupsShared, +} from '../../shared/models/library-item.model'; import { SharedConstants as CONST } from '../../shared/shared.constants'; +import { LibraryItemsDataService } from '../../shared/services/library-items-data.service'; @Component({ selector: 'app-library-items-section', - templateUrl: './library-items-section.component.html', }) export class LibraryItemsSectionComponent implements OnInit, OnDestroy { @@ -19,16 +22,16 @@ export class LibraryItemsSectionComponent implements OnInit, OnDestroy { lang_NO: string = CONST.languageLocaleId_NO; lang_EN: string = CONST.languageLocaleId_EN; libraryItems!: LibraryItem[]; - libraryItemsLoaded = false; - groupId!: string; + group!: LibraryItemGroup; sectionTitle!: string; sectionTitleLang!: string; sectionIntro!: string; currentAnchor: string; + dataIsLoaded = false; constructor( private urlService: UrlService, - private itemsDataService: LibraryItemGroupsDataService, + private libraryItemsDataService: LibraryItemsDataService, private viewportScroller: ViewportScroller, ) {} @@ -36,11 +39,13 @@ export class LibraryItemsSectionComponent implements OnInit, OnDestroy { this.currentAnchor = window.location.hash.substring(1); this.subscription.add( - this.urlService.URL$.subscribe(() => { + this.urlService.URL$.pipe( + tap(() => (this.dataIsLoaded = false)), + mergeMap(() => this.libraryItemsDataService.getLibraryItemGroupsShared()), + ).subscribe((libraryItemGroupsShared) => { const lastSegmentPath = this.urlService.getLastSegmentPath(); - this.isDebugging = this.urlService.getSegmentPath(1) === 'debug' ? true : false; - this.libraryItemsLoaded = false; - this.getLibraryItems(lastSegmentPath); + this.isDebugging = this.urlService.getSegmentPath(1) === 'debug'; + this.getLibraryItems(lastSegmentPath, libraryItemGroupsShared); }), ); } @@ -55,36 +60,22 @@ export class LibraryItemsSectionComponent implements OnInit, OnDestroy { window.location.hash = itemId; } - private getLibraryItems(lastSegmentPath: string) { - this.itemsDataService.getLibraryItemGroup(lastSegmentPath).subscribe({ - next: (libraryItemGroup) => { - this.groupId = libraryItemGroup.id; - this.sectionTitle = libraryItemGroup.title; - this.sectionTitleLang = libraryItemGroup.titleLang; - this.sectionIntro = libraryItemGroup.intro; - this.libraryItems = libraryItemGroup.libraryItems; - this.libraryItemsLoaded = true; - }, - error: (error) => this.getLibraryItems_OLD(lastSegmentPath, error), - }); - } - - // TODO: - // Remove if test when all segmentPaths use getLibraryItemGroup() - // and getLibraryItems() can be deprecated. - private getLibraryItems_OLD(lastSegmentPath: string, error: any) { - // console.log('getLibraryItems_OLD -> error', error); - this.sectionTitle = undefined; - this.itemsDataService.getLibraryItems(lastSegmentPath).subscribe( - (libraryItems) => { - this.libraryItems = libraryItems; - this.libraryItemsLoaded = true; - }, - (error) => this.getErrorMessage(error), - ); - } - - private getErrorMessage(error: object) { - console.log(error); + private getLibraryItems( + lastSegmentPath: string, + libraryItemGroupsShared: LibraryItemGroupsShared, + ) { + this.libraryItemsDataService + .getLibraryItemGroup(lastSegmentPath, libraryItemGroupsShared) + .subscribe({ + next: (libraryItemGroup) => { + this.group = libraryItemGroup; + this.sectionTitle = libraryItemGroup.title; + this.sectionTitleLang = libraryItemGroup.titleLang; + this.sectionIntro = libraryItemGroup.intro; + this.libraryItems = libraryItemGroup.libraryItems; + this.dataIsLoaded = true; + }, + error: (error) => error, + }); } } diff --git a/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html b/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html index 422ae6ab..5b854bd4 100644 --- a/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html +++ b/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html @@ -1,45 +1,42 @@ -
    - - - - - - - - - - - - - - - - - - - - - - - -
    +@if (dataIsLoaded) { +
    + + + + + + + + + + + + + + + + + + + + + +
    No item group matches given id...
    +
    +} diff --git a/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.ts b/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.ts index 5f3593ed..6c4d95d3 100644 --- a/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.ts +++ b/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.ts @@ -1,58 +1,47 @@ -import { Component, Input } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit } from '@angular/core'; +import { mergeMap, Subscription, tap } from 'rxjs'; -import { LibraryItemGroupsDataService } from '../services/library-item-groups-data.service'; -import { LibraryItemGroupsSharedDataService } from '../services/library-item-groups-shared-data.service'; -import { LibraryItemGroupsShared, LibraryItemsShared } from '../models/library-item.model'; -import { LibraryItemsSharedDataService } from '../services/library-items-shared-data.service'; +import { + LibraryItemGroup, + LibraryItemGroupsShared, + LibraryItemsShared, +} from '../models/library-item.model'; +import { LibraryItemsDataService } from '../services/library-items-data.service'; +import { UrlService } from 'src/app/services/url.service'; @Component({ selector: 'app-dynamic-library-example', templateUrl: './dynamic-library-example.component.html', }) -export class DynamicLibraryExampleComponent { - @Input() groupId: string; +export class DynamicLibraryExampleComponent implements OnInit, OnDestroy { + private subscription: Subscription = new Subscription(); + + @Input() group: LibraryItemGroup; @Input() itemId: string; groups!: LibraryItemGroupsShared; - itemIds: any; - itemIdsLoaded = false; - items!: LibraryItemsShared; + items: LibraryItemsShared; + dataIsLoaded = false; constructor( - private itemsDataService: LibraryItemGroupsDataService, - private libraryItemGroupsSharedDataService: LibraryItemGroupsSharedDataService, - private libraryItemsSharedDataService: LibraryItemsSharedDataService, + private libraryItemsDataService: LibraryItemsDataService, + private urlService: UrlService, ) {} ngOnInit() { - this.groups = this.libraryItemGroupsSharedDataService.libraryItemGroupsShared; - this.getLibraryItemIds(); - - // Testing new id and titel implementation! - this.getLibraryItemsShared(); - } - - private getLibraryItemIds() { - this.itemIdsLoaded = false; - this.itemsDataService.getLibraryItemIds().subscribe( - (libraryItemIds) => { - this.itemIds = libraryItemIds; - this.itemIdsLoaded = true; - }, - (error) => this.getErrorMessage(error), - ); - } - - private getLibraryItemsShared() { - this.libraryItemsSharedDataService.getLibraryItemsShared().subscribe({ - next: (libraryItemsShared) => { + this.groups = this.libraryItemsDataService.libraryItemGroupsShared; + this.subscription.add( + this.urlService.URL$.pipe( + tap(() => (this.dataIsLoaded = false)), + mergeMap(() => this.libraryItemsDataService.getLibraryItemsShared()), + ).subscribe((libraryItemsShared) => { this.items = libraryItemsShared; - }, - error: (error) => this.getErrorMessage(error), - }); + this.dataIsLoaded = true; + }), + ); } - private getErrorMessage(error: object) { - console.log(error); + ngOnDestroy() { + this.subscription.unsubscribe(); } } diff --git a/src/app/views/shared/dynamic-library-examples/dynamic-library-examples.module.ts b/src/app/views/shared/dynamic-library-examples/dynamic-library-examples.module.ts index 9467e45a..d98233a0 100644 --- a/src/app/views/shared/dynamic-library-examples/dynamic-library-examples.module.ts +++ b/src/app/views/shared/dynamic-library-examples/dynamic-library-examples.module.ts @@ -55,33 +55,17 @@ const EXAMPLE_COMPONENTS = [ TreeViewsComponent, ]; -const NGB_EXAMPLES = []; +const EXAMPLE_COMPONENTS_STANDALONE = [ButtonsComponent, FormControlsComponent]; @NgModule({ - declarations: [ - DynamicLibraryExampleComponent, - ...EXAMPLE_COMPONENTS, - - // TODO: remove - ...NGB_EXAMPLES, - ], + declarations: [DynamicLibraryExampleComponent, ...EXAMPLE_COMPONENTS], imports: [ NgbAccordionModule, NgbTooltipModule, NgSelectModule, SharedModule, - - // Standalone components - ButtonsComponent, - FormControlsComponent, - ], - exports: [ - NgSelectModule, - DynamicLibraryExampleComponent, - ...EXAMPLE_COMPONENTS, - - // TODO: remove - ...NGB_EXAMPLES, + ...EXAMPLE_COMPONENTS_STANDALONE, ], + exports: [NgSelectModule, DynamicLibraryExampleComponent, ...EXAMPLE_COMPONENTS], }) export class DynamicLibraryExamplesModule {} diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/7.befolkning-inndeling-pr-2024-andel.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/7.befolkning-inndeling-pr-2024-andel.ts index 07aac64a..3d04f152 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/7.befolkning-inndeling-pr-2024-andel.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/mock-data/7.befolkning-inndeling-pr-2024-andel.ts @@ -2,7 +2,7 @@ export const BefolkningInndelingPr2024_andel = [ { name: 'Andel positive', data: [ - { name: '2023-51', y: 12.85337000000001 }, // TODO: max 14 decimalplaces (add to API-doc v4) + { name: '2023-51', y: 12.85337000000001 }, { name: '2023-52', y: 14.91331 }, { name: '2024-1', y: 15.14092 }, { name: '2024-2', y: 14.7158 }, diff --git a/src/app/views/shared/services/library-item-groups-data.service.ts b/src/app/views/shared/services/library-item-groups-data.service.ts deleted file mode 100644 index 1b4ea9a6..00000000 --- a/src/app/views/shared/services/library-item-groups-data.service.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; - -import { environment } from 'src/environments/environment'; -import { LibraryItem, LibraryItemGroup } from 'src/app/views/shared/models/library-item.model'; -import { LibraryItemGroupsSharedDataService } from './library-item-groups-shared-data.service'; - -@Injectable({ - providedIn: 'root', -}) -export class LibraryItemGroupsDataService { - constructor( - private http: HttpClient, - private libraryItemGroupsSharedDataService: LibraryItemGroupsSharedDataService, - ) {} - - getLibraryItemGroup(lastSegmentPath: string): Observable { - const libraryItemGroupsShared = this.libraryItemGroupsSharedDataService.libraryItemGroupsShared; - let mockDataSetName: string; - - Object.keys(libraryItemGroupsShared).forEach((key) => { - if (libraryItemGroupsShared[key].id === lastSegmentPath) { - mockDataSetName = libraryItemGroupsShared[key].apiEndPoint; - } - }); - const serverUrl = `${environment.apiBaseUrl}/${mockDataSetName}`; - return this.http.get(serverUrl); - } - - // TODO: remove these 3 metods when all lib-items use getLibraryItemGroup() - - getLibraryItems(lastSegmentPath: string): Observable { - const mockDataSetName = this.capitalizeFirstLetter(lastSegmentPath) + 'Data'; - const serverUrl = `${environment.apiBaseUrl}/${mockDataSetName}`; - return this.http.get(serverUrl); - } - - getLibraryItemIds(): Observable { - const serverUrl = `${environment.apiBaseUrl}/LibraryItemIds`; - return this.http.get(serverUrl); - } - - private capitalizeFirstLetter(string: string) { - return string.charAt(0).toUpperCase() + string.slice(1); - } -} diff --git a/src/app/views/shared/services/library-item-groups-shared-data.service.ts b/src/app/views/shared/services/library-item-groups-shared-data.service.ts deleted file mode 100644 index 4aa5a02d..00000000 --- a/src/app/views/shared/services/library-item-groups-shared-data.service.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Observable, of } from 'rxjs'; - -import { environment } from 'src/environments/environment'; -import { LibraryItemGroupsShared } from 'src/app/views/shared/models/library-item.model'; -import { catchError, tap } from 'rxjs/operators'; - -@Injectable({ - providedIn: 'root', -}) -export class LibraryItemGroupsSharedDataService { - private url = `${environment.apiBaseUrl}/LibraryItemGroupsSharedData`; - private _libraryItemGroupsShared!: LibraryItemGroupsShared; - - constructor(private http: HttpClient) {} - - get libraryItemGroupsShared(): LibraryItemGroupsShared { - return this._libraryItemGroupsShared; - } - - getLibraryItemGroupsShared(): Observable { - if (this._libraryItemGroupsShared !== undefined) { - return of(this._libraryItemGroupsShared); - } - return this.http.get(this.url).pipe( - tap((libraryItemsShared) => (this._libraryItemGroupsShared = libraryItemsShared)), - catchError((error) => { - throw 'Error details: ' + error; - }), - ); - } -} diff --git a/src/app/views/shared/services/library-items-data.service.ts b/src/app/views/shared/services/library-items-data.service.ts new file mode 100644 index 00000000..0c2c5d7b --- /dev/null +++ b/src/app/views/shared/services/library-items-data.service.ts @@ -0,0 +1,71 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable, of } from 'rxjs'; + +import { environment } from 'src/environments/environment'; +import { + LibraryItemGroup, + LibraryItemGroupsShared, + LibraryItemsShared, +} from 'src/app/views/shared/models/library-item.model'; +import { catchError, tap } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root', +}) +export class LibraryItemsDataService { + private LibraryItemGroupsSharedData_URL = `${environment.apiBaseUrl}/LibraryItemGroupsSharedData`; + private LibraryItemsSharedData__URL = `${environment.apiBaseUrl}/LibraryItemsSharedData`; + + private _libraryItemGroupsShared!: LibraryItemGroupsShared; + private _libraryItemsShared!: LibraryItemsShared; + + constructor(private http: HttpClient) {} + + get libraryItemGroupsShared(): LibraryItemGroupsShared { + return this._libraryItemGroupsShared; + } + get libraryItemsShared(): LibraryItemsShared { + return this._libraryItemsShared; + } + + getLibraryItemGroupsShared(): Observable { + if (this._libraryItemGroupsShared !== undefined) { + return of(this._libraryItemGroupsShared); + } + + return this.http.get(this.LibraryItemGroupsSharedData_URL).pipe( + tap((libraryItemsShared) => (this._libraryItemGroupsShared = libraryItemsShared)), + catchError((error) => { + throw error; + }), + ); + } + + getLibraryItemsShared(): Observable { + if (this._libraryItemsShared !== undefined) { + return of(this._libraryItemsShared); + } + return this.http.get(this.LibraryItemsSharedData__URL).pipe( + tap((libraryItemsShared) => (this._libraryItemsShared = libraryItemsShared)), + catchError((error) => { + throw error; + }), + ); + } + + getLibraryItemGroup( + lastSegmentPath: string, + libraryItemGroupsShared: LibraryItemGroupsShared, + ): Observable { + let mockDataSetName: string; + + Object.keys(libraryItemGroupsShared).forEach((key) => { + if (libraryItemGroupsShared[key].id === lastSegmentPath) { + mockDataSetName = libraryItemGroupsShared[key].apiEndPoint; + } + }); + const serverUrl = `${environment.apiBaseUrl}/${mockDataSetName}`; + return this.http.get(serverUrl); + } +} diff --git a/src/app/views/shared/services/library-items-shared-data.service.ts b/src/app/views/shared/services/library-items-shared-data.service.ts deleted file mode 100644 index 021d116a..00000000 --- a/src/app/views/shared/services/library-items-shared-data.service.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Observable, of } from 'rxjs'; - -import { environment } from 'src/environments/environment'; -import { LibraryItemsShared } from 'src/app/views/shared/models/library-item.model'; -import { catchError, tap } from 'rxjs/operators'; - -@Injectable({ - providedIn: 'root', -}) -export class LibraryItemsSharedDataService { - url = `${environment.apiBaseUrl}/LibraryItemsSharedData`; - - private _libraryItemsShared!: LibraryItemsShared; - - constructor(private http: HttpClient) {} - - get libraryItemsShared(): LibraryItemsShared { - return this._libraryItemsShared; - } - - getLibraryItemsShared(): Observable { - if (this._libraryItemsShared !== undefined) { - return of(this._libraryItemsShared); - } - return this.http.get(this.url).pipe( - tap((libraryItemsShared) => (this._libraryItemsShared = libraryItemsShared)), - catchError((error) => { - throw 'Error details: ' + error; - }), - ); - } -} diff --git a/src/app/views/shared/services/library-menu.service.ts b/src/app/views/shared/services/library-menu.service.ts index 7d56165f..2e759aa9 100644 --- a/src/app/views/shared/services/library-menu.service.ts +++ b/src/app/views/shared/services/library-menu.service.ts @@ -1,12 +1,11 @@ import { Injectable } from '@angular/core'; -import { LibraryItemSegmentPaths } from 'src/MOCK_DB_DATA/library-items/library-item-segment-paths'; +import { FhiTreeViewNavigationItem } from '@folkehelseinstituttet/angular-components'; import { UrlService } from 'src/app/services/url.service'; import { UrlSegment } from 'src/app/url-segment.constants'; import { MenuItem } from 'src/app/models/menu-item.model'; import { LibraryItemGroupsShared } from '../models/library-item.model'; -import { FhiTreeViewNavigationItem } from '@folkehelseinstituttet/angular-components'; const TopLevelMenuItemNames = { visualIdentity: 'Visuell identitet', @@ -19,15 +18,11 @@ const TopLevelMenuItemNames = { providedIn: 'root', }) export class LibraryMenuService { - // TODO: try to remove this two properties when all item groups uses the new getSecondLevelMenuItems() - private currentTopLevelMenuItem!: MenuItem; - topLevelMenuItems!: MenuItem[]; - constructor(private urlService: UrlService) {} getTopLevelMenuItems(): MenuItem[] { const currentSegmentPath0 = this.urlService.getSegmentPath(0); - this.topLevelMenuItems = [ + return [ { name: TopLevelMenuItemNames.visualIdentity, link: `/${currentSegmentPath0}/${UrlSegment.visualIdentity}`, @@ -45,7 +40,6 @@ export class LibraryMenuService { link: `/${currentSegmentPath0}/${UrlSegment.prototypes}`, }, ]; - return this.topLevelMenuItems; } updateSecondLevelMenu(): boolean { @@ -58,7 +52,6 @@ export class LibraryMenuService { previousSegmentPath0 !== currentSegmentPath0 || previousSegmentPath1 !== currentSegmentPath1 ) { - this.currentTopLevelMenuItem = this.getCurrentTopLevelMenuItem(); return true; } return false; @@ -77,51 +70,4 @@ export class LibraryMenuService { }); return menu; } - - // TODO: all methods below can be removed when all item groups uses the new getSecondLevelMenuItems() - - getSecondLevelMenuItems_OLD(): MenuItem[] { - if (this.currentTopLevelMenuItem === undefined) { - return; - } - switch (this.currentTopLevelMenuItem.name) { - case TopLevelMenuItemNames.visualIdentity: - return this.getVisualIdentityMenu(); - - case TopLevelMenuItemNames.components: - return this.getComponentsMenu(); - - case TopLevelMenuItemNames.layoutAndPageTemplates: - return this.getLayoutAndPageTemplatesMenu(); - - case TopLevelMenuItemNames.prototypes: - return this.getPrototypesMenu(); - } - } - - private getCurrentTopLevelMenuItem(): MenuItem { - const topLevelMenuItem = this.topLevelMenuItems.find((item) => { - return item.link.split('/')[2] === this.urlService.getSegmentPath(1); - }); - if (topLevelMenuItem !== undefined) { - return topLevelMenuItem; - } - console.error('Current path is not matching any menu items.'); - } - - private getVisualIdentityMenu(): MenuItem[] { - return []; - } - - private getComponentsMenu(): MenuItem[] { - return []; - } - - private getLayoutAndPageTemplatesMenu(): MenuItem[] { - return []; - } - - private getPrototypesMenu(): MenuItem[] { - return []; - } } From aa94273c17f10ab5ad3ef5c2b50151a72c9da24f Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 24 Sep 2024 12:16:18 +0200 Subject: [PATCH 46/52] Internal/update footer (#699) * Fix broken scrollToTop * Update info in footer * Remove NavsIntro-warning * Update code example for toast --- .../library-items/navs/_navs.intro.ts | 17 +---------------- .../library-items/toasts/toast.ts | 2 +- src/app/app.component.html | 19 +++++++++++-------- src/app/app.component.ts | 5 +++++ 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/MOCK_DB_DATA/library-items/navs/_navs.intro.ts b/src/MOCK_DB_DATA/library-items/navs/_navs.intro.ts index f6b1da6f..b6fbaff1 100644 --- a/src/MOCK_DB_DATA/library-items/navs/_navs.intro.ts +++ b/src/MOCK_DB_DATA/library-items/navs/_navs.intro.ts @@ -1,16 +1 @@ -export const NavsIntro = ` -
    - -
    -

    - Vi jobber med en ny og systematisk tilnærming til navigasjon. - Frem til systemet er klart, er mange komponenter som har - med navigasjon å gjøre blitt samlet på denne siden. -
    - - Komponentene på denne siden vil derfor bli revidert - som en del av prosessen med å lage det nye navigasjonssytemet. - -

    -
    -
    `; +export const NavsIntro = ``; diff --git a/src/MOCK_DB_DATA/library-items/toasts/toast.ts b/src/MOCK_DB_DATA/library-items/toasts/toast.ts index dd96d327..6c2df29e 100644 --- a/src/MOCK_DB_DATA/library-items/toasts/toast.ts +++ b/src/MOCK_DB_DATA/library-items/toasts/toast.ts @@ -26,7 +26,7 @@ function getExampleHtml(): string { */ function getCodeHtml(): string | null { return ` -
    +
    Standard toast. diff --git a/src/app/app.component.html b/src/app/app.component.html index 2e834fe7..8908d73b 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -42,7 +42,9 @@ @@ -52,18 +54,19 @@

    Har du spørsmål eller savner du noe i FHI Designsystem?
    - Ta kontakt med - Anne-Lise Rabben. + Opprett et "issue" på Github i vårt + repo for CSS + eller vårt + repo for Angular, + avhengig av hva det gjelder.

    diff --git a/src/app/app.component.ts b/src/app/app.component.ts index d7748caa..69c756e8 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -54,4 +54,9 @@ export class AppComponent implements OnInit { this.adminView = !this.adminView; localStorage.setItem('adminView', this.adminView.toString()); } + + scrollToTop(fragment: string) { + this.viewportScroller.scrollToAnchor(fragment); + window.location.hash = fragment; + } } From 996335257746d7427b0870d6d0cdc6aa17a0cf33 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 24 Sep 2024 13:58:55 +0200 Subject: [PATCH 47/52] Internal/update top menu (#705) * Update text about repos in footer (should have been part of #699) * Update main menu, and - Comment out library-top-level-menu - Remove utility section (aka. button for admin view), - Clean up DynamicLibraryExamplesModule --- package-lock.json | 148 +++++++----------- src/app/app.component.html | 20 +-- src/app/app.component.ts | 10 -- src/app/core/main-menu/main-menu.component.ts | 11 +- .../views/developer/developer.component.html | 2 +- 5 files changed, 70 insertions(+), 121 deletions(-) diff --git a/package-lock.json b/package-lock.json index b8eae978..9034bf9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -467,9 +467,9 @@ } }, "node_modules/@angular/cdk": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.4.tgz", - "integrity": "sha512-o+TuxZDqStfkviEkCR05pVyP6R2RIruEs/45Cms76hlsIheMoxRaxir/yrHdh4tZESJJhcO/EVE+aymNIRWAfg==", + "version": "18.2.5", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.5.tgz", + "integrity": "sha512-HLg5cfrIrgNIJJ+0v3kLieHeLPJLFNOBO359holXOrKUPRG+XQ3CT8EzSvREFm1XkaSEsDC0+dnG0ouNhOPFpQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -3095,9 +3095,9 @@ } }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.5.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", - "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "version": "22.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.6.1.tgz", + "integrity": "sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==", "dev": true, "dependencies": { "undici-types": "~6.19.2" @@ -3664,9 +3664,9 @@ } }, "node_modules/@ng-select/ng-select": { - "version": "13.7.1", - "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-13.7.1.tgz", - "integrity": "sha512-v/GwSBpuHd31DyoYFQECh+rCwn7xmCBpwMQTcwWerKaDQSr1egpGPSnCq2SzvfHqiJ5e1ckx7ZNTuk+swBweag==", + "version": "13.8.1", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-13.8.1.tgz", + "integrity": "sha512-zN+uYkTOZliRxEm9zS7M08g21YXaNsBLp9/zJgjC5TzNrrfB6vxgOzbDjYzNUqSbZsbod70HoPgzmi81pJhMyg==", "dependencies": { "tslib": "^2.3.1" }, @@ -4028,15 +4028,14 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz", + "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", "resolve": "^1.22.1" }, @@ -4053,9 +4052,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -4295,9 +4294,9 @@ ] }, "node_modules/@rollup/wasm-node": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.22.0.tgz", - "integrity": "sha512-uVU0o0CWcjKAWHpBSezLaFWOXF7xJbk1H3qFFEQ+ntRATHvJWKNJUP4q9/CGqC5qz1NBnc84RBiHbw0l6o+2Gg==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.22.4.tgz", + "integrity": "sha512-2AXpNT2gtSyGangSWTwmspOnu0wVMBLC6U/wJ8fs58JhtlAy+B3jNOuaN+7x9blilAoiwBk9187ybhrs7kaCpg==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -4655,9 +4654,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", - "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==" + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.9.tgz", + "integrity": "sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==" }, "node_modules/@types/lodash-es": { "version": "4.17.12", @@ -4698,9 +4697,9 @@ } }, "node_modules/@types/node": { - "version": "20.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz", - "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==", + "version": "20.16.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.6.tgz", + "integrity": "sha512-T7PpxM/6yeDE+AdlVysT62BX6/bECZOmQAgiFg5NoBd5MQheZ3tzal7f1wvzfiEcmrcJNRi2zRr2nY2zF+0uqw==", "dev": true, "dependencies": { "undici-types": "~6.19.2" @@ -5004,16 +5003,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.6.0.tgz", - "integrity": "sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz", + "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.6.0", - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/typescript-estree": "8.6.0" + "@typescript-eslint/scope-manager": "8.7.0", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/typescript-estree": "8.7.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5027,14 +5026,14 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.6.0.tgz", - "integrity": "sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz", + "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0" + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5045,9 +5044,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.6.0.tgz", - "integrity": "sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz", + "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==", "dev": true, "peer": true, "engines": { @@ -5059,14 +5058,14 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.6.0.tgz", - "integrity": "sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz", + "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "8.6.0", - "@typescript-eslint/visitor-keys": "8.6.0", + "@typescript-eslint/types": "8.7.0", + "@typescript-eslint/visitor-keys": "8.7.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5088,13 +5087,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.6.0.tgz", - "integrity": "sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz", + "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "8.6.0", + "@typescript-eslint/types": "8.7.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -5920,18 +5919,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -6049,9 +6036,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001662", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz", - "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==", + "version": "1.0.30001663", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz", + "integrity": "sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==", "funding": [ { "type": "opencollective", @@ -7697,9 +7684,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.25", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz", - "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==" + "version": "1.5.28", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.28.tgz", + "integrity": "sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==" }, "node_modules/elkjs": { "version": "0.9.3", @@ -7761,9 +7748,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.1.tgz", + "integrity": "sha512-NEpDCw9hrvBW+hVEOK4T7v0jFJ++KgtPl4jKFwsZVfG1XhS0dCrSb3VMb9gPAd7VAdW52VT1EnaNiU2vM8C0og==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -9538,21 +9525,6 @@ "node": ">=8" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-core-module": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", @@ -14412,16 +14384,16 @@ } }, "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", + "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, diff --git a/src/app/app.component.html b/src/app/app.component.html index 8908d73b..31aa4327 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,4 +1,4 @@ -
    +
    @@ -13,19 +13,6 @@
    - -
    -

    - -

    -
    @@ -53,10 +40,9 @@

    - Har du spørsmål eller savner du noe i FHI Designsystem?
    - Opprett et "issue" på Github i vårt + Spørsmål og nye ønsker opprettes i Github, i enten repo for CSS - eller vårt + eller repo for Angular, avhengig av hva det gjelder.

    diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 69c756e8..5dd48fee 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -12,7 +12,6 @@ import { UrlService } from './services/url.service'; templateUrl: './app.component.html', }) export class AppComponent implements OnInit { - adminView = false; projectName = 'Designsystem'; projectDescription = null; @@ -44,15 +43,6 @@ export class AppComponent implements OnInit { .subscribe(() => { this.browserViewportService.updateResponsiveProperties(); }); - - if (localStorage.getItem('adminView') === 'true') { - this.adminView = true; - } - } - - toggleAdminView() { - this.adminView = !this.adminView; - localStorage.setItem('adminView', this.adminView.toString()); } scrollToTop(fragment: string) { diff --git a/src/app/core/main-menu/main-menu.component.ts b/src/app/core/main-menu/main-menu.component.ts index 8c297d04..9f2c0bca 100644 --- a/src/app/core/main-menu/main-menu.component.ts +++ b/src/app/core/main-menu/main-menu.component.ts @@ -14,11 +14,12 @@ export class MainMenuComponent { mainMenuItems: MenuItem[] = [ { - name: 'For utviklere', - link: `/${UrlSegment.developer}`, - // }, { - // name: 'For designere', - // link: `/${UrlSegment.designer}` + name: 'Komponenter', + link: `/${UrlSegment.developer}/${UrlSegment.components}`, + }, + { + name: 'Visuell identitet', + link: `/${UrlSegment.developer}/${UrlSegment.visualIdentity}`, }, ]; diff --git a/src/app/views/developer/developer.component.html b/src/app/views/developer/developer.component.html index 2a8293c1..7cfe826f 100644 --- a/src/app/views/developer/developer.component.html +++ b/src/app/views/developer/developer.component.html @@ -1,6 +1,6 @@ @if (dataIsLoaded && !isDebugging) {
    - +
    From 1183a14f49c6e4226a8005e3077ab0987e09e4cc Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Thu, 26 Sep 2024 10:41:05 +0200 Subject: [PATCH 48/52] Internal/Add and info box on the "Komponenter"-landing page, (#708) And also improve the implementation of the article page. --- .../shared/article/article.component.html | 66 ++++++++++++++-- .../views/shared/article/article.component.ts | 76 ++++--------------- 2 files changed, 74 insertions(+), 68 deletions(-) diff --git a/src/app/views/shared/article/article.component.html b/src/app/views/shared/article/article.component.html index 476a4a21..9aa30871 100644 --- a/src/app/views/shared/article/article.component.html +++ b/src/app/views/shared/article/article.component.html @@ -1,6 +1,60 @@ -
    -
    -

    {{ title }}

    -
    -
    -
    +
    +

    {{ title }}

    + + @if (currentSegment === urlSegment.visualIdentity) { + + } + @if (currentSegment === urlSegment.components) { + + + } +
    + + +

    + For at alle våre produkter skal ha en tydelig og gjenkjennbar profil må farger, ikonbruk, typografi, logo og + illustrasjoner henge sammen og brukes konsistent. +

    +
    + + +

    + Komponentbiblioteket i FHI Designsystem baserer seg på + Bootstrap 5. Interaktive komponenter benytter + ng-bootstrap + og andre tredjepartskomponenter der disse finnes. I tillegg er noen skreddersydde Angularkomponenter produsert av + FHI. +

    +

    + Alle løsninger kan konsumere stilsettet uavhengig av hvilket rammeverk som er benyttet. Legg til CSS fra FHI + Designsystem: + @folkehelseinstituttet/style. +

    +

    + FHI Designsystem bygges i Angular og løsninger som benytter annet frontendrammeverk er ansvarlige for å generere + riktig markup slik at utseendet blir korrekt. +

    +

    + Se changelog for stilsettet her. +

    +
    + + +
    + +
    +
    diff --git a/src/app/views/shared/article/article.component.ts b/src/app/views/shared/article/article.component.ts index 031c401f..164a7a4f 100644 --- a/src/app/views/shared/article/article.component.ts +++ b/src/app/views/shared/article/article.component.ts @@ -3,7 +3,7 @@ import { Subscription } from 'rxjs'; import { UrlService } from 'src/app/services/url.service'; import { UrlSegment } from 'src/app/url-segment.constants'; -import { LibraryItemConstants as CONST } from 'src/MOCK_DB_DATA/library-items/library-item-constants'; +import { LibraryItem } from '../models/library-item.model'; @Component({ selector: 'app-article', @@ -14,13 +14,20 @@ export class ArticleComponent implements OnInit, OnDestroy { title: string; articleHtml: string; + currentSegment: string; + urlSegment = UrlSegment; + items: LibraryItem[] = []; + itemsFiltered: LibraryItem[] = []; + rootLink!: string; constructor(private urlService: UrlService) {} ngOnInit() { this.subscription.add( this.urlService.URL$.subscribe(() => { - this.findTopLevel(); + this.currentSegment = this.urlService.getSegmentPath(1); + this.rootLink = `/developer/${this.currentSegment}/`; + this.getCurrentArticleTitle(); }), ); } @@ -29,66 +36,11 @@ export class ArticleComponent implements OnInit, OnDestroy { this.subscription.unsubscribe(); } - private findTopLevel() { - switch (this.urlService.getSegmentPath(0)) { - case UrlSegment.developer: - this.findSecondLevelDeveloper(); - break; - - case UrlSegment.designer: - this.findSecondLevelDesigner(); + private getCurrentArticleTitle() { + if (this.urlService.getSegmentPath(1) === UrlSegment.visualIdentity) { + this.title = 'Visuell identitet i FHI'; + } else { + this.title = 'Komponenter'; } } - private findSecondLevelDeveloper() { - switch (this.urlService.getSegmentPath(1)) { - case UrlSegment.visualIdentity: - this.title = 'Visuell identitet i FHI'; - this.articleHtml = this.getArticleHtmlForDeveloperVisualIdentity(); - break; - - case UrlSegment.components: - this.title = 'Komponenter'; - this.articleHtml = this.getArticleHtmlForDeveloperComponents(); - break; - - case UrlSegment.layoutAndPageTemplates: - this.title = 'Layout og sidemaler'; - this.articleHtml = this.getArticleHtmlForDeveloperLayoutAndPageTemplates(); - break; - - case UrlSegment.prototypes: - this.title = 'Eksempler på bruk'; - this.articleHtml = this.getArticleHtmlForDeveloperPrototypes(); - break; - } - } - private findSecondLevelDesigner() { - console.log('findSecondLevelDesigner() not implemented...'); - } - - private getArticleHtmlForDeveloperVisualIdentity(): string { - return ` -

    For at alle våre produkter skal ha en tydelig og gjenkjennbar profil må farger, ikonbruk, typografi, logo og illustrasjoner henge sammen og brukes konsistent.

    `; - } - - private getArticleHtmlForDeveloperComponents(): string { - return ` -

    Komponentbiblioteket i FHI Designsystem baserer seg på Bootstrap 5. Interaktive komponenter benytter ng-bootstrap og andre tredjepartskomponenter der disse finnes. I tillegg er noen skreddersydde Angularkomponenter produsert av FHI.

    - -

    Alle løsninger kan konsumere stilsettet uavhengig av hvilket rammeverk som er benyttet. Legg til CSS fra FHI Designsystem: @folkehelseinstituttet/style.

    - -

    FHI Designsystem bygges i Angular og løsninger som benytter annet frontendrammeverk er ansvarlige for å generere riktig markup slik at utseendet blir korrekt.

    - -

    Se changelog for stilsettet her.

    `; - } - - private getArticleHtmlForDeveloperLayoutAndPageTemplates(): string { - return ` -

    Her finner du eksempler på hvordan man plasserer innholdet på en side.

    `; - } - - private getArticleHtmlForDeveloperPrototypes(): string { - return ` -

    Her finner du eksempler på større enheter og klikkbare prototyper ofte produsert for spesifikke prosjekter.

    `; - } } From e6c0eb8ba9839c9ee9bd208baa0703cb75de761b Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Mon, 30 Sep 2024 13:00:51 +0200 Subject: [PATCH 49/52] Bugfix/remove deprecated prop (#706) Remove deprecated property DiagramTypeIds.map, should have been removed in #678 --- projects/fhi-angular-highcharts/CHANGELOG.md | 8 +++++++- .../src/lib/constants-and-enums/diagram-type-ids.ts | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/fhi-angular-highcharts/CHANGELOG.md b/projects/fhi-angular-highcharts/CHANGELOG.md index b963d888..35512abb 100644 --- a/projects/fhi-angular-highcharts/CHANGELOG.md +++ b/projects/fhi-angular-highcharts/CHANGELOG.md @@ -1,4 +1,10 @@ -# 5.0.2 +# Unreleased + +> Sep 24, 2024 + +* :bug: **Bugfix** Remove deprecated property DiagramTypeIds.map which should have been removed in [(#693)](https://github.com/folkehelseinstituttet/Fhi.Frontend.Demo/pull/693) + +## 5.0.2 > Sep 20, 2024 diff --git a/projects/fhi-angular-highcharts/src/lib/constants-and-enums/diagram-type-ids.ts b/projects/fhi-angular-highcharts/src/lib/constants-and-enums/diagram-type-ids.ts index 458fad12..4c7c8575 100644 --- a/projects/fhi-angular-highcharts/src/lib/constants-and-enums/diagram-type-ids.ts +++ b/projects/fhi-angular-highcharts/src/lib/constants-and-enums/diagram-type-ids.ts @@ -5,7 +5,6 @@ export enum DiagramTypeIds { columnAndLine, columnStacked, line, - map, // TODO: remove in v5 mapFylker, mapFylker2019, mapFylker2023, From dec5b01be44837e3487daec421d15ad762ae5edd Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 2 Oct 2024 12:54:27 +0200 Subject: [PATCH 50/52] Internal/table of components (#712) Add a component table and component filter on the landing page for components in the demo app. --- .../drawers/_drawers.data.ts | 0 .../drawers/_drawers.intro.ts | 0 .../{ => __DEPRECATED}/drawers/drawer.ts | 0 .../error-pages/_error-pages.data.ts | 0 .../error-pages/_error-pages.intro.ts | 0 .../error-pages/error-page-400.ts | 0 .../error-pages/error-page-500.ts | 0 .../_layout-templates.data.ts | 0 .../_layout-templates.intro.ts | 0 .../layout-templates/layout-template-basic.ts | 0 .../layout-template-expandable-first-col.ts | 0 .../layout-template-two-cols-1.ts | 0 .../prototype-forms/_prototype-forms.data.ts | 0 .../prototype-forms/_prototype-forms.intro.ts | 0 .../prototype-forms/prototype-form.ts | 0 .../_prototype-tables.data.ts | 0 .../_prototype-tables.intro.ts | 0 ...prototype-table-with-expandable-content.ts | 0 .../accordions/accordion-flush-dark.ts | 8 +- .../accordions/accordion-flush.ts | 8 +- .../library-items/accordions/accordion.ts | 8 +- .../library-items/alerts/alert-basic.ts | 8 +- .../library-items/alerts/alert-closable.ts | 8 +- .../library-items/badges/badge-circular.ts | 8 +- .../library-items/badges/badge-rounded.ts | 8 +- .../library-items/breadcrumbs/breadcrumb.ts | 8 +- .../library-items/buttons/button-group.ts | 8 +- .../library-items/buttons/button-icon.ts | 8 +- .../library-items/buttons/button-link.ts | 8 +- .../library-items/buttons/button-primary.ts | 8 +- .../library-items/buttons/button-secondary.ts | 8 +- .../library-items/cards/card-deactive.ts | 8 +- .../library-items/cards/card-shadow.ts | 8 +- src/MOCK_DB_DATA/library-items/cards/card.ts | 8 +- .../library-items/colors/color-system.ts | 8 +- .../library-items/colors/colors-bootstrap.ts | 8 +- .../library-items/colors/font-colors.ts | 8 +- .../form-controls/_form-controls.data.ts | 2 + .../form-controls/form-control-autosuggest.ts | 8 +- .../form-control-checkbox-tile.ts | 8 +- .../form-controls/form-control-checkbox.ts | 8 +- .../form-controls/form-control-input.ts | 25 ++-- .../form-control-label-with-tooltip.ts | 55 ++++++++ .../form-controls/form-control-multiselect.ts | 8 +- .../form-controls/form-control-radio-tile.ts | 8 +- .../form-controls/form-control-radio.ts | 8 +- .../form-controls/form-control-select.ts | 8 +- .../form-controls/form-control-switch.ts | 8 +- .../form-controls/form-control-textarea.ts | 8 +- .../form-controls/form-control-validation.ts | 8 +- .../global-footers/global-footer-arch.ts | 9 +- .../global-footers/global-footer.ts | 9 +- .../global-header-with-menu-and-utils.ts | 9 +- .../global-headers/global-header-with-menu.ts | 9 +- .../global-headers/global-header.ts | 9 +- .../highcharts/highcharts-all-inclusive.ts | 8 +- .../highcharts/highcharts-with-menu.ts | 8 +- .../highcharts/highcharts-without-menu.ts | 8 +- .../library-items/icons/icon-set.ts | 8 +- .../library-items/icons/icon-sizes.ts | 8 +- .../library-items/library-item-constants.ts | 1 + .../library-item-groups-shared-data.ts | 87 ++++-------- .../library-items-shared-data.ts | 70 +++------- .../library-items/modals/modal.ts | 8 +- .../library-items/navs/nav-buttons.ts | 8 +- .../library-items/navs/nav-popover-menu.ts | 8 +- .../navs/nav-shortcut-buttons.ts | 8 +- .../library-items/navs/nav-shortcuts.ts | 8 +- .../library-items/navs/nav-tabs.ts | 8 +- .../library-items/navs/nav-tiles.ts | 8 +- .../pagination-collection-counter.ts | 8 +- .../library-items/paginations/pagination.ts | 8 +- .../progress-indicators/progress-bar.ts | 8 +- .../progress-indicators/spinner-button.ts | 8 +- .../progress-indicators/spinner-flex.ts | 8 +- .../progress-indicators/spinner-margin.ts | 8 +- .../progress-indicators/spinner-small.ts | 8 +- .../progress-indicators/spinner.ts | 8 +- .../library-items/search/_search.data.ts | 15 -- .../library-items/search/_search.intro.ts | 1 - .../library-items/searches/_searches.data.ts | 16 +++ .../library-items/searches/_searches.intro.ts | 1 + .../search-autocomplete.ts} | 16 ++- .../library-items/searches/search.ts | 87 ++++++++++++ .../library-items/tables/_angular-info.ts | 20 +++ .../library-items/tables/table-compact.ts | 9 +- .../library-items/tables/table-editable.ts | 18 ++- .../tables/table-selectable-row.ts | 18 ++- .../library-items/tables/table-sortable.ts | 18 ++- .../library-items/tables/table-striped.ts | 9 +- .../library-items/tables/table.ts | 9 +- .../library-items/tags/tag-filter-option.ts | 9 +- .../tags/tag-multiple-selection.ts | 9 +- .../tags/tag-single-selection.ts | 9 +- .../library-items/tags/tag-state-dot.ts | 9 +- .../library-items/tags/tag-state.ts | 9 +- src/MOCK_DB_DATA/library-items/tags/tag.ts | 9 +- .../time-selectors/_time-selectors.data.ts | 6 +- .../time-selector-date-range.ts | 8 +- .../time-selectors/time-selector-date-time.ts | 8 +- .../time-selector-datepicker.ts | 8 +- .../time-selector-week-range.ts | 8 +- .../time-selector-weekpicker.ts | 8 +- .../time-selector-year-month-range.ts | 8 +- .../time-selector-year-month.ts | 8 +- .../time-selector-year-range.ts | 8 +- .../time-selectors/time-selector-years.ts | 8 +- .../library-items/toasts/toast.ts | 8 +- .../library-items/tooltip-popover/popover.ts | 8 +- .../library-items/tooltip-popover/tooltip.ts | 8 +- .../tree-views/tree-view-checkbox.ts | 8 +- .../tree-views/tree-view-navigation.ts | 67 +++++++-- .../tree-views/tree-view-radio.ts | 8 +- .../typography/heading-levels.ts | 8 +- .../typography/typographic-hierarchy.ts | 8 +- src/app/core/mock-db.ts | 76 +++++++--- .../views/developer/developer.component.html | 4 +- .../library-items-section.component.ts | 28 ++-- .../shared/article/article.component.html | 131 ++++++++++++++---- .../views/shared/article/article.component.ts | 112 ++++++++++++++- .../dynamic-library-example.component.html | 31 +++-- .../form-controls.component.html | 6 +- .../search/search.component.html | 23 +-- .../search/search.component.ts | 11 -- .../tree-views/tree-views.component.html | 2 +- src/app/views/shared/item-type.enums.ts | 10 ++ .../views/shared/models/library-item.model.ts | 19 ++- .../services/library-items-data.service.ts | 18 +++ 128 files changed, 1157 insertions(+), 483 deletions(-) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/drawers/_drawers.data.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/drawers/_drawers.intro.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/drawers/drawer.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/error-pages/_error-pages.data.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/error-pages/_error-pages.intro.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/error-pages/error-page-400.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/error-pages/error-page-500.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/layout-templates/_layout-templates.data.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/layout-templates/_layout-templates.intro.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/layout-templates/layout-template-basic.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/layout-templates/layout-template-expandable-first-col.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/layout-templates/layout-template-two-cols-1.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/prototype-forms/_prototype-forms.data.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/prototype-forms/_prototype-forms.intro.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/prototype-forms/prototype-form.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/prototype-tables/_prototype-tables.data.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/prototype-tables/_prototype-tables.intro.ts (100%) rename src/MOCK_DB_DATA/library-items/{ => __DEPRECATED}/prototype-tables/prototype-table-with-expandable-content.ts (100%) create mode 100644 src/MOCK_DB_DATA/library-items/form-controls/form-control-label-with-tooltip.ts delete mode 100644 src/MOCK_DB_DATA/library-items/search/_search.data.ts delete mode 100644 src/MOCK_DB_DATA/library-items/search/_search.intro.ts create mode 100644 src/MOCK_DB_DATA/library-items/searches/_searches.data.ts create mode 100644 src/MOCK_DB_DATA/library-items/searches/_searches.intro.ts rename src/MOCK_DB_DATA/library-items/{search/search.ts => searches/search-autocomplete.ts} (75%) create mode 100644 src/MOCK_DB_DATA/library-items/searches/search.ts create mode 100644 src/MOCK_DB_DATA/library-items/tables/_angular-info.ts create mode 100644 src/app/views/shared/item-type.enums.ts diff --git a/src/MOCK_DB_DATA/library-items/drawers/_drawers.data.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/drawers/_drawers.data.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/drawers/_drawers.data.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/drawers/_drawers.data.ts diff --git a/src/MOCK_DB_DATA/library-items/drawers/_drawers.intro.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/drawers/_drawers.intro.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/drawers/_drawers.intro.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/drawers/_drawers.intro.ts diff --git a/src/MOCK_DB_DATA/library-items/drawers/drawer.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/drawers/drawer.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/drawers/drawer.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/drawers/drawer.ts diff --git a/src/MOCK_DB_DATA/library-items/error-pages/_error-pages.data.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/_error-pages.data.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/error-pages/_error-pages.data.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/_error-pages.data.ts diff --git a/src/MOCK_DB_DATA/library-items/error-pages/_error-pages.intro.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/_error-pages.intro.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/error-pages/_error-pages.intro.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/_error-pages.intro.ts diff --git a/src/MOCK_DB_DATA/library-items/error-pages/error-page-400.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/error-page-400.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/error-pages/error-page-400.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/error-page-400.ts diff --git a/src/MOCK_DB_DATA/library-items/error-pages/error-page-500.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/error-page-500.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/error-pages/error-page-500.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/error-pages/error-page-500.ts diff --git a/src/MOCK_DB_DATA/library-items/layout-templates/_layout-templates.data.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/_layout-templates.data.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/layout-templates/_layout-templates.data.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/_layout-templates.data.ts diff --git a/src/MOCK_DB_DATA/library-items/layout-templates/_layout-templates.intro.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/_layout-templates.intro.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/layout-templates/_layout-templates.intro.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/_layout-templates.intro.ts diff --git a/src/MOCK_DB_DATA/library-items/layout-templates/layout-template-basic.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/layout-template-basic.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/layout-templates/layout-template-basic.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/layout-template-basic.ts diff --git a/src/MOCK_DB_DATA/library-items/layout-templates/layout-template-expandable-first-col.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/layout-template-expandable-first-col.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/layout-templates/layout-template-expandable-first-col.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/layout-template-expandable-first-col.ts diff --git a/src/MOCK_DB_DATA/library-items/layout-templates/layout-template-two-cols-1.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/layout-template-two-cols-1.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/layout-templates/layout-template-two-cols-1.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/layout-templates/layout-template-two-cols-1.ts diff --git a/src/MOCK_DB_DATA/library-items/prototype-forms/_prototype-forms.data.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-forms/_prototype-forms.data.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/prototype-forms/_prototype-forms.data.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-forms/_prototype-forms.data.ts diff --git a/src/MOCK_DB_DATA/library-items/prototype-forms/_prototype-forms.intro.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-forms/_prototype-forms.intro.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/prototype-forms/_prototype-forms.intro.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-forms/_prototype-forms.intro.ts diff --git a/src/MOCK_DB_DATA/library-items/prototype-forms/prototype-form.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-forms/prototype-form.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/prototype-forms/prototype-form.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-forms/prototype-form.ts diff --git a/src/MOCK_DB_DATA/library-items/prototype-tables/_prototype-tables.data.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-tables/_prototype-tables.data.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/prototype-tables/_prototype-tables.data.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-tables/_prototype-tables.data.ts diff --git a/src/MOCK_DB_DATA/library-items/prototype-tables/_prototype-tables.intro.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-tables/_prototype-tables.intro.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/prototype-tables/_prototype-tables.intro.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-tables/_prototype-tables.intro.ts diff --git a/src/MOCK_DB_DATA/library-items/prototype-tables/prototype-table-with-expandable-content.ts b/src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-tables/prototype-table-with-expandable-content.ts similarity index 100% rename from src/MOCK_DB_DATA/library-items/prototype-tables/prototype-table-with-expandable-content.ts rename to src/MOCK_DB_DATA/library-items/__DEPRECATED/prototype-tables/prototype-table-with-expandable-content.ts diff --git a/src/MOCK_DB_DATA/library-items/accordions/accordion-flush-dark.ts b/src/MOCK_DB_DATA/library-items/accordions/accordion-flush-dark.ts index 8ba4ce38..dbc8420d 100644 --- a/src/MOCK_DB_DATA/library-items/accordions/accordion-flush-dark.ts +++ b/src/MOCK_DB_DATA/library-items/accordions/accordion-flush-dark.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const AccordionFlushDark: LibraryItem[] = [ { id: ITEMS.AccordionFlushDark.id, title: ITEMS.AccordionFlushDark.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Accordions, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/accordions/accordion-flush.ts b/src/MOCK_DB_DATA/library-items/accordions/accordion-flush.ts index 0ccc927f..1e8db062 100644 --- a/src/MOCK_DB_DATA/library-items/accordions/accordion-flush.ts +++ b/src/MOCK_DB_DATA/library-items/accordions/accordion-flush.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const AccordionFlush: LibraryItem[] = [ { id: ITEMS.AccordionFlush.id, title: ITEMS.AccordionFlush.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Accordions, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/accordions/accordion.ts b/src/MOCK_DB_DATA/library-items/accordions/accordion.ts index f8b912fb..1ce68a86 100644 --- a/src/MOCK_DB_DATA/library-items/accordions/accordion.ts +++ b/src/MOCK_DB_DATA/library-items/accordions/accordion.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Accordion: LibraryItem[] = [ { id: ITEMS.Accordion.id, title: ITEMS.Accordion.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Accordions, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/alerts/alert-basic.ts b/src/MOCK_DB_DATA/library-items/alerts/alert-basic.ts index 98a52176..981718d2 100644 --- a/src/MOCK_DB_DATA/library-items/alerts/alert-basic.ts +++ b/src/MOCK_DB_DATA/library-items/alerts/alert-basic.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const AlertBasic: LibraryItem[] = [ { id: ITEMS.AlertBasic.id, title: ITEMS.AlertBasic.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Alerts, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/alerts/alert-closable.ts b/src/MOCK_DB_DATA/library-items/alerts/alert-closable.ts index 3ba06a0a..8655f90a 100644 --- a/src/MOCK_DB_DATA/library-items/alerts/alert-closable.ts +++ b/src/MOCK_DB_DATA/library-items/alerts/alert-closable.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const AlertClosable: LibraryItem[] = [ { id: ITEMS.AlertClosable.id, title: ITEMS.AlertClosable.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Alerts, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/badges/badge-circular.ts b/src/MOCK_DB_DATA/library-items/badges/badge-circular.ts index d771fe90..23febc6a 100644 --- a/src/MOCK_DB_DATA/library-items/badges/badge-circular.ts +++ b/src/MOCK_DB_DATA/library-items/badges/badge-circular.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const BadgeCircular: LibraryItem[] = [ { id: ITEMS.BadgeCircular.id, title: ITEMS.BadgeCircular.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Badges, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/badges/badge-rounded.ts b/src/MOCK_DB_DATA/library-items/badges/badge-rounded.ts index 959ad012..181bbcbd 100644 --- a/src/MOCK_DB_DATA/library-items/badges/badge-rounded.ts +++ b/src/MOCK_DB_DATA/library-items/badges/badge-rounded.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const BadgeRounded: LibraryItem[] = [ { id: ITEMS.BadgeRounded.id, title: ITEMS.BadgeRounded.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Badges, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/breadcrumbs/breadcrumb.ts b/src/MOCK_DB_DATA/library-items/breadcrumbs/breadcrumb.ts index 02aa80a6..48427c01 100644 --- a/src/MOCK_DB_DATA/library-items/breadcrumbs/breadcrumb.ts +++ b/src/MOCK_DB_DATA/library-items/breadcrumbs/breadcrumb.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Breadcrumb: LibraryItem[] = [ { id: ITEMS.Breadcrumb.id, title: ITEMS.Breadcrumb.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Breadcrumbs, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/buttons/button-group.ts b/src/MOCK_DB_DATA/library-items/buttons/button-group.ts index 91f3b293..0989b21a 100644 --- a/src/MOCK_DB_DATA/library-items/buttons/button-group.ts +++ b/src/MOCK_DB_DATA/library-items/buttons/button-group.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ButtonGroup: LibraryItem[] = [ { id: ITEMS.ButtonGroup.id, title: ITEMS.ButtonGroup.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Buttons, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/buttons/button-icon.ts b/src/MOCK_DB_DATA/library-items/buttons/button-icon.ts index 5f12fe35..4ae90a39 100644 --- a/src/MOCK_DB_DATA/library-items/buttons/button-icon.ts +++ b/src/MOCK_DB_DATA/library-items/buttons/button-icon.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ButtonIcon: LibraryItem[] = [ { id: ITEMS.ButtonIcon.id, title: ITEMS.ButtonIcon.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Buttons, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/buttons/button-link.ts b/src/MOCK_DB_DATA/library-items/buttons/button-link.ts index 40438ca0..9709fb6e 100644 --- a/src/MOCK_DB_DATA/library-items/buttons/button-link.ts +++ b/src/MOCK_DB_DATA/library-items/buttons/button-link.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ButtonLink: LibraryItem[] = [ { id: ITEMS.ButtonLink.id, title: ITEMS.ButtonLink.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Buttons, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/buttons/button-primary.ts b/src/MOCK_DB_DATA/library-items/buttons/button-primary.ts index 9bf12eb9..ca7456b5 100644 --- a/src/MOCK_DB_DATA/library-items/buttons/button-primary.ts +++ b/src/MOCK_DB_DATA/library-items/buttons/button-primary.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ButtonPrimary: LibraryItem[] = [ { id: ITEMS.ButtonPrimary.id, title: ITEMS.ButtonPrimary.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Buttons, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/buttons/button-secondary.ts b/src/MOCK_DB_DATA/library-items/buttons/button-secondary.ts index b15e7185..13fd30f5 100644 --- a/src/MOCK_DB_DATA/library-items/buttons/button-secondary.ts +++ b/src/MOCK_DB_DATA/library-items/buttons/button-secondary.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ButtonSecondary: LibraryItem[] = [ { id: ITEMS.ButtonSecondary.id, title: ITEMS.ButtonSecondary.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Buttons, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/cards/card-deactive.ts b/src/MOCK_DB_DATA/library-items/cards/card-deactive.ts index ea5d771f..e1600959 100644 --- a/src/MOCK_DB_DATA/library-items/cards/card-deactive.ts +++ b/src/MOCK_DB_DATA/library-items/cards/card-deactive.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const CardDeactive: LibraryItem[] = [ { id: ITEMS.CardDeactive.id, title: ITEMS.CardDeactive.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Cards, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/cards/card-shadow.ts b/src/MOCK_DB_DATA/library-items/cards/card-shadow.ts index b7bbe757..7baaf5e4 100644 --- a/src/MOCK_DB_DATA/library-items/cards/card-shadow.ts +++ b/src/MOCK_DB_DATA/library-items/cards/card-shadow.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const CardShadow: LibraryItem[] = [ { id: ITEMS.CardShadow.id, title: ITEMS.CardShadow.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Cards, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/cards/card.ts b/src/MOCK_DB_DATA/library-items/cards/card.ts index bc222a0a..a02cde4e 100644 --- a/src/MOCK_DB_DATA/library-items/cards/card.ts +++ b/src/MOCK_DB_DATA/library-items/cards/card.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Card: LibraryItem[] = [ { id: ITEMS.Card.id, title: ITEMS.Card.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Cards, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/colors/color-system.ts b/src/MOCK_DB_DATA/library-items/colors/color-system.ts index d5f9c806..1344e0fd 100644 --- a/src/MOCK_DB_DATA/library-items/colors/color-system.ts +++ b/src/MOCK_DB_DATA/library-items/colors/color-system.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ColorSystem: LibraryItem[] = [ { id: ITEMS.VisualIdentityColors.id, title: ITEMS.VisualIdentityColors.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Colors, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/colors/colors-bootstrap.ts b/src/MOCK_DB_DATA/library-items/colors/colors-bootstrap.ts index 2d386c03..5dce64a5 100644 --- a/src/MOCK_DB_DATA/library-items/colors/colors-bootstrap.ts +++ b/src/MOCK_DB_DATA/library-items/colors/colors-bootstrap.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ColorsBootstrap: LibraryItem[] = [ { id: ITEMS.VisualIdentityColorsBootstrap.id, title: ITEMS.VisualIdentityColorsBootstrap.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Colors, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/colors/font-colors.ts b/src/MOCK_DB_DATA/library-items/colors/font-colors.ts index d4a5cfcf..dd03aee4 100644 --- a/src/MOCK_DB_DATA/library-items/colors/font-colors.ts +++ b/src/MOCK_DB_DATA/library-items/colors/font-colors.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FontColors: LibraryItem[] = [ { id: ITEMS.VisualIdentityFontColors.id, title: ITEMS.VisualIdentityFontColors.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Colors, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/_form-controls.data.ts b/src/MOCK_DB_DATA/library-items/form-controls/_form-controls.data.ts index d70d6bc0..e26a7981 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/_form-controls.data.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/_form-controls.data.ts @@ -14,6 +14,7 @@ import { FormControlSelect } from './form-control-select'; import { FormControlMultiselect } from './form-control-multiselect'; import { FormControlAutosuggest } from './form-control-autosuggest'; import { FormControlSwitch } from './form-control-switch'; +import { FormControlInputWithTooltip } from './form-control-label-with-tooltip'; const FormControls: LibraryItem[] = [ ...FormControlInput, @@ -27,6 +28,7 @@ const FormControls: LibraryItem[] = [ ...FormControlAutosuggest, ...FormControlSwitch, ...FormControlValidation, + ...FormControlInputWithTooltip, ]; export const FormControlsData: LibraryItemGroup = { diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-autosuggest.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-autosuggest.ts index 9271f37b..ae23c2c7 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-autosuggest.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-autosuggest.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlAutosuggest: LibraryItem[] = [ { id: ITEMS.FormControlAutosuggest.id, title: ITEMS.FormControlAutosuggest.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox-tile.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox-tile.ts index a0c66660..216009dd 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox-tile.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox-tile.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlCheckboxTile: LibraryItem[] = [ { id: ITEMS.FormControlCheckboxTile.id, title: ITEMS.FormControlCheckboxTile.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox.ts index 6561f29b..fbf4635c 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-checkbox.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlCheckbox: LibraryItem[] = [ { id: ITEMS.FormControlCheckbox.id, title: ITEMS.FormControlCheckbox.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-input.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-input.ts index 15df8f29..86686b6b 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-input.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-input.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlInput: LibraryItem[] = [ { id: ITEMS.FormControlInput.id, title: ITEMS.FormControlInput.title, - type: LibraryItemType.angular, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; @@ -18,10 +21,7 @@ export const FormControlInput: LibraryItem[] = [ */ function getExampleHtml(): string { return ` - +

    Hjelpetekst, f.eks "Valgfritt felt"

    `; } @@ -38,14 +38,5 @@ function getCodeHtml(): string | null { * Return null to remove Documentation from library-item. */ function getDocumentationHtml(): string | null { - return ` -
    Nyttige lenker
    -`; + return null; } diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-label-with-tooltip.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-label-with-tooltip.ts new file mode 100644 index 00000000..0d618eea --- /dev/null +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-label-with-tooltip.ts @@ -0,0 +1,55 @@ +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; + +export const FormControlInputWithTooltip: LibraryItem[] = [ + { + id: ITEMS.FormControlInputWithTooltip.id, + title: ITEMS.FormControlInputWithTooltip.title, + type: ItemType.angular, + exampleHtml: getExampleHtml(), + codeHtml: getCodeHtml(), + documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.ngBootstrap, + }, +]; + +/* + * Return value is ignored if LibraryItemType is not html + */ +function getExampleHtml(): string { + return ` + +

    Hjelpetekst, f.eks "Valgfritt felt"

    +`; +} + +/* + * Return empty string to use a copy of exampleHtml as codeHtml. + * Return null to remove Code from library-item. + */ +function getCodeHtml(): string | null { + return ``; +} + +/* + * Return null to remove Documentation from library-item. + */ +function getDocumentationHtml(): string | null { + return ` +
    Nyttige lenker
    +`; +} diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-multiselect.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-multiselect.ts index 60d1f9b8..1739abf2 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-multiselect.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-multiselect.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlMultiselect: LibraryItem[] = [ { id: ITEMS.FormControlMultiselect.id, title: ITEMS.FormControlMultiselect.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio-tile.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio-tile.ts index c737540a..7cfb4fdb 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio-tile.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio-tile.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlRadioTile: LibraryItem[] = [ { id: ITEMS.FormControlRadioTile.id, title: ITEMS.FormControlRadioTile.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio.ts index 6158c817..762d4a7c 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-radio.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlRadio: LibraryItem[] = [ { id: ITEMS.FormControlRadio.id, title: ITEMS.FormControlRadio.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-select.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-select.ts index 14401427..5e664ddf 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-select.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-select.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlSelect: LibraryItem[] = [ { id: ITEMS.FormControlSelect.id, title: ITEMS.FormControlSelect.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-switch.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-switch.ts index 1f0ef161..63bddd01 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-switch.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-switch.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlSwitch: LibraryItem[] = [ { id: ITEMS.FormControlSwitch.id, title: ITEMS.FormControlSwitch.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-textarea.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-textarea.ts index 11b49e90..503e4a06 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-textarea.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-textarea.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlTextarea: LibraryItem[] = [ { id: ITEMS.FormControlTextarea.id, title: ITEMS.FormControlTextarea.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/form-controls/form-control-validation.ts b/src/MOCK_DB_DATA/library-items/form-controls/form-control-validation.ts index b93f5821..8a16a4a7 100644 --- a/src/MOCK_DB_DATA/library-items/form-controls/form-control-validation.ts +++ b/src/MOCK_DB_DATA/library-items/form-controls/form-control-validation.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const FormControlValidation: LibraryItem[] = [ { id: ITEMS.FormControlValidation.id, title: ITEMS.FormControlValidation.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.FormControls, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/global-footers/global-footer-arch.ts b/src/MOCK_DB_DATA/library-items/global-footers/global-footer-arch.ts index 03c3b905..3c80ec66 100644 --- a/src/MOCK_DB_DATA/library-items/global-footers/global-footer-arch.ts +++ b/src/MOCK_DB_DATA/library-items/global-footers/global-footer-arch.ts @@ -1,16 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const GlobalFooterArch: LibraryItem[] = [ { id: ITEMS.GlobalFooterArch.id, title: ITEMS.GlobalFooterArch.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), fullScreenEnabled: true, + parent: GROUPS.GlobalFooters, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/global-footers/global-footer.ts b/src/MOCK_DB_DATA/library-items/global-footers/global-footer.ts index 7a2aa817..0719bbe7 100644 --- a/src/MOCK_DB_DATA/library-items/global-footers/global-footer.ts +++ b/src/MOCK_DB_DATA/library-items/global-footers/global-footer.ts @@ -1,16 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const GlobalFooter: LibraryItem[] = [ { id: ITEMS.GlobalFooter.id, title: ITEMS.GlobalFooter.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), fullScreenEnabled: true, + parent: GROUPS.GlobalFooters, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu-and-utils.ts b/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu-and-utils.ts index 146705ab..0a26d1df 100644 --- a/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu-and-utils.ts +++ b/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu-and-utils.ts @@ -1,16 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const GlobalHeaderWithMenuAndUtils: LibraryItem[] = [ { id: ITEMS.GlobalHeaderWithMenuAndUtils.id, title: ITEMS.GlobalHeaderWithMenuAndUtils.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), fullScreenEnabled: true, + parent: GROUPS.GlobalHeaders, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu.ts b/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu.ts index 65d49a27..1a8fd795 100644 --- a/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu.ts +++ b/src/MOCK_DB_DATA/library-items/global-headers/global-header-with-menu.ts @@ -1,16 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const GlobalHeaderWithMenu: LibraryItem[] = [ { id: ITEMS.GlobalHeaderWithMenu.id, title: ITEMS.GlobalHeaderWithMenu.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), fullScreenEnabled: true, + parent: GROUPS.GlobalHeaders, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/global-headers/global-header.ts b/src/MOCK_DB_DATA/library-items/global-headers/global-header.ts index b714f220..d24b7c45 100644 --- a/src/MOCK_DB_DATA/library-items/global-headers/global-header.ts +++ b/src/MOCK_DB_DATA/library-items/global-headers/global-header.ts @@ -1,16 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const GlobalHeader: LibraryItem[] = [ { id: ITEMS.GlobalHeader.id, title: ITEMS.GlobalHeader.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), fullScreenEnabled: true, + parent: GROUPS.GlobalHeaders, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/highcharts/highcharts-all-inclusive.ts b/src/MOCK_DB_DATA/library-items/highcharts/highcharts-all-inclusive.ts index faba93f5..99525931 100644 --- a/src/MOCK_DB_DATA/library-items/highcharts/highcharts-all-inclusive.ts +++ b/src/MOCK_DB_DATA/library-items/highcharts/highcharts-all-inclusive.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const HighchartsAllInclusive: LibraryItem[] = [ { id: ITEMS.HighchartsAllInclusive.id, title: ITEMS.HighchartsAllInclusive.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Highcharts, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/highcharts/highcharts-with-menu.ts b/src/MOCK_DB_DATA/library-items/highcharts/highcharts-with-menu.ts index 8e3e8c60..68c15c3a 100644 --- a/src/MOCK_DB_DATA/library-items/highcharts/highcharts-with-menu.ts +++ b/src/MOCK_DB_DATA/library-items/highcharts/highcharts-with-menu.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const HighchartsWithMenu: LibraryItem[] = [ { id: ITEMS.HighchartsWithMenu.id, title: ITEMS.HighchartsWithMenu.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Highcharts, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/highcharts/highcharts-without-menu.ts b/src/MOCK_DB_DATA/library-items/highcharts/highcharts-without-menu.ts index b4c58626..3ef9c9e7 100644 --- a/src/MOCK_DB_DATA/library-items/highcharts/highcharts-without-menu.ts +++ b/src/MOCK_DB_DATA/library-items/highcharts/highcharts-without-menu.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const HighchartsWithoutMenu: LibraryItem[] = [ { id: ITEMS.HighchartsWithoutMenu.id, title: ITEMS.HighchartsWithoutMenu.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Highcharts, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/icons/icon-set.ts b/src/MOCK_DB_DATA/library-items/icons/icon-set.ts index bc240687..3d68c296 100644 --- a/src/MOCK_DB_DATA/library-items/icons/icon-set.ts +++ b/src/MOCK_DB_DATA/library-items/icons/icon-set.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const IconSet: LibraryItem[] = [ { id: ITEMS.VisualIdentityIcons.id, title: ITEMS.VisualIdentityIcons.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Icons, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/icons/icon-sizes.ts b/src/MOCK_DB_DATA/library-items/icons/icon-sizes.ts index b9952cd2..cf691ed8 100644 --- a/src/MOCK_DB_DATA/library-items/icons/icon-sizes.ts +++ b/src/MOCK_DB_DATA/library-items/icons/icon-sizes.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const IconSizes: LibraryItem[] = [ { id: ITEMS.VisualIdentityIconSizes.id, title: ITEMS.VisualIdentityIconSizes.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Icons, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/library-item-constants.ts b/src/MOCK_DB_DATA/library-items/library-item-constants.ts index dec0480c..76c84481 100644 --- a/src/MOCK_DB_DATA/library-items/library-item-constants.ts +++ b/src/MOCK_DB_DATA/library-items/library-item-constants.ts @@ -13,6 +13,7 @@ export class LibraryItemConstants { static BootstrapFormsBaseUrl = `${bootstrapDocBaseUrl}/forms`; static BootstrapUtilitiesBaseUrl = `${bootstrapDocBaseUrl}/utilities`; + static FhiStyleNpmUrl = `${npmBaseUrl}/style`; static FhiAngularComponentsNpmUrl = `${npmBaseUrl}/angular-components`; static FhiAngularComponentsGithubUrl = `${githubFrontendDemoUrl}/projects/fhi-angular-components`; static FhiAngularComponentsGithubLibUrl = `${this.FhiAngularComponentsGithubUrl}/src/lib`; diff --git a/src/MOCK_DB_DATA/library-items/library-item-groups-shared-data.ts b/src/MOCK_DB_DATA/library-items/library-item-groups-shared-data.ts index d6102e12..4610b8ad 100644 --- a/src/MOCK_DB_DATA/library-items/library-item-groups-shared-data.ts +++ b/src/MOCK_DB_DATA/library-items/library-item-groups-shared-data.ts @@ -15,30 +15,6 @@ import { LibraryItemConstants } from './library-item-constants'; * }, */ export const LibraryItemGroupsSharedData: LibraryItemGroupsShared = { - // Visuell identitet - - Colors: { - id: 'colors', - title: 'Farger', - titleLang: LibraryItemConstants.languageLocaleId_NO, - apiEndPoint: 'ColorsData', - parentUrlSegment: UrlSegment.visualIdentity, - }, - Icons: { - id: 'icons', - title: 'Ikoner', - titleLang: LibraryItemConstants.languageLocaleId_NO, - apiEndPoint: 'IconsData', - parentUrlSegment: UrlSegment.visualIdentity, - }, - Typography: { - id: 'typography', - title: 'Typografi', - titleLang: LibraryItemConstants.languageLocaleId_NO, - apiEndPoint: 'TypographyData', - parentUrlSegment: UrlSegment.visualIdentity, - }, - // Components Accordions: { @@ -61,7 +37,7 @@ export const LibraryItemGroupsSharedData: LibraryItemGroupsShared = { }, Breadcrumbs: { id: 'breadcrumbs', - title: 'Breadcrumb', + title: 'Breadcrumbs', apiEndPoint: 'BreadcrumbsData', parentUrlSegment: UrlSegment.components, }, @@ -77,12 +53,7 @@ export const LibraryItemGroupsSharedData: LibraryItemGroupsShared = { apiEndPoint: 'CardsData', parentUrlSegment: UrlSegment.components, }, - Drawers: { - id: 'drawers', - title: 'Drawers', - apiEndPoint: 'DrawersData', - parentUrlSegment: null, - }, + FormControls: { id: 'form-controls', title: 'Form controls', @@ -131,10 +102,10 @@ export const LibraryItemGroupsSharedData: LibraryItemGroupsShared = { apiEndPoint: 'ProgressIndicatorsData', parentUrlSegment: UrlSegment.components, }, - Search: { - id: 'search', - title: 'Search', - apiEndPoint: 'SearchData', + SearchFields: { + id: 'search-fields', + title: 'Search fields', + apiEndPoint: 'SearchFieldsData', parentUrlSegment: UrlSegment.components, }, Tables: { @@ -174,33 +145,27 @@ export const LibraryItemGroupsSharedData: LibraryItemGroupsShared = { parentUrlSegment: UrlSegment.components, }, - // Layout og sidemaler + // Visuell identitet - ErrorPages: { - id: 'error-pages', - title: 'Error pages', - apiEndPoint: 'ErrorPagesData', - parentUrlSegment: UrlSegment.layoutAndPageTemplates, - }, - LayoutTemplates: { - id: 'layout-templates', - title: 'Layout og sidemaler', - apiEndPoint: 'LayoutTemplatesData', - parentUrlSegment: UrlSegment.layoutAndPageTemplates, + Colors: { + id: 'colors', + title: 'Farger', + titleLang: LibraryItemConstants.languageLocaleId_NO, + apiEndPoint: 'ColorsData', + parentUrlSegment: UrlSegment.visualIdentity, }, - - // Prototypes (Eksempler på bruk) - - PrototypeForms: { - id: 'prototype-forms', - title: 'Forms', - apiEndPoint: 'PrototypeFormsData', - parentUrlSegment: UrlSegment.prototypes, - }, - PrototypeTables: { - id: 'prototype-tables', - title: 'Tables', - apiEndPoint: 'PrototypeTablesData', - parentUrlSegment: UrlSegment.prototypes, + Icons: { + id: 'icons', + title: 'Ikoner', + titleLang: LibraryItemConstants.languageLocaleId_NO, + apiEndPoint: 'IconsData', + parentUrlSegment: UrlSegment.visualIdentity, + }, + Typography: { + id: 'typography', + title: 'Typografi', + titleLang: LibraryItemConstants.languageLocaleId_NO, + apiEndPoint: 'TypographyData', + parentUrlSegment: UrlSegment.visualIdentity, }, }; diff --git a/src/MOCK_DB_DATA/library-items/library-items-shared-data.ts b/src/MOCK_DB_DATA/library-items/library-items-shared-data.ts index c75a8f6a..dba4f36a 100644 --- a/src/MOCK_DB_DATA/library-items/library-items-shared-data.ts +++ b/src/MOCK_DB_DATA/library-items/library-items-shared-data.ts @@ -50,7 +50,7 @@ export const LibraryItemsSharedData: LibraryItemsShared = { Breadcrumb: { id: 'breadcrumb', - title: '', // Only one item, so we use group title is enough + title: 'Breadcrumb', }, ButtonPrimary: { @@ -87,23 +87,9 @@ export const LibraryItemsSharedData: LibraryItemsShared = { title: 'Card deactive', }, - Drawer: { - id: 'drawer', - title: 'Drawer', - }, - - ErrorPage404: { - id: 'error-page-404', - title: 'Error page - 404', - }, - ErrorPage500: { - id: 'error-page-500', - title: 'Error page - 500', - }, - FormControlInput: { id: 'form-control-input', - title: 'Text input', + title: 'Textfield', }, FormControlTextarea: { id: 'form-control-textarea', @@ -145,6 +131,10 @@ export const LibraryItemsSharedData: LibraryItemsShared = { id: 'form-control-validation', title: 'Validation', }, + FormControlInputWithTooltip: { + id: 'form-control-input-with-tooltip', + title: 'Textfield with tooltip', + }, GlobalFooter: { id: 'global-footer', @@ -161,11 +151,11 @@ export const LibraryItemsSharedData: LibraryItemsShared = { }, GlobalHeaderWithMenu: { id: 'global-header-with-menu', - title: 'Global header with menu', + title: 'Global header (menu)', }, GlobalHeaderWithMenuAndUtils: { id: 'global-header-with-menu-and-utils', - title: 'Global header with menu and utilities section', + title: 'Global header (utilities)', }, HighchartsWithoutMenu: { @@ -181,22 +171,9 @@ export const LibraryItemsSharedData: LibraryItemsShared = { title: 'Highcharts all inclusive', }, - LayoutTemplateBasic: { - id: 'layout-template-basic', - title: 'Basic layout', - }, - LayoutTemplateExpandableFirstCol: { - id: 'layout-template-expandable-first-col', - title: 'Layout med ekspanderbart innhold i første kolonne', - }, - LayoutTemplateTwoCols1: { - id: 'layout-template-two-cols-1', - title: 'Layout med venstrekolonne', - }, - Modal: { id: 'modal', - title: '', // Only one item, so we use group title is enough + title: 'Modal', }, NavTiles: { @@ -258,19 +235,13 @@ export const LibraryItemsSharedData: LibraryItemsShared = { title: 'Spinner - small', }, - PrototypeForm: { - id: 'prototype-form', - title: 'Form - left aligned labels', - }, - - PrototypeTableWithExpandableContent: { - id: 'prototype-table-with-expandable-content', - title: 'Table with expandable content', - }, - Search: { - id: 'search', - title: '', // Only one item, so we use group title is enough + id: 'search-default', + title: 'Search', + }, + SearchAutocomplete: { + id: 'search-autocomplete', + title: 'Search with autocomplete', }, Table: { @@ -282,8 +253,8 @@ export const LibraryItemsSharedData: LibraryItemsShared = { title: 'Table - compact', }, TableEditable: { - id: 'table-editable', - title: 'Table - inline editable', + id: 'table-edit', + title: 'Table - inline edit', }, TableSelectableRow: { id: 'table-selectable-row', @@ -362,7 +333,7 @@ export const LibraryItemsSharedData: LibraryItemsShared = { Toast: { id: 'toast', - title: '', // Only one item, so we use group title is enough + title: 'Toast', }, Tooltip: { @@ -373,6 +344,7 @@ export const LibraryItemsSharedData: LibraryItemsShared = { id: 'popover', title: 'Popover', }, + TreeViewCheckbox: { id: 'tree-view-checkbox', title: 'Tree view checkbox', @@ -385,10 +357,6 @@ export const LibraryItemsSharedData: LibraryItemsShared = { id: 'tree-view-radio', title: 'Tree view radio', }, - TreeViewSelectionSwitch: { - id: 'tree-view-selection-switch', - title: 'Tree view selection type switch', - }, VisualIdentityColors: { id: 'colors', diff --git a/src/MOCK_DB_DATA/library-items/modals/modal.ts b/src/MOCK_DB_DATA/library-items/modals/modal.ts index fe92d091..50ff31d3 100644 --- a/src/MOCK_DB_DATA/library-items/modals/modal.ts +++ b/src/MOCK_DB_DATA/library-items/modals/modal.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Modal: LibraryItem[] = [ { id: ITEMS.Modal.id, title: ITEMS.Modal.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Modals, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/navs/nav-buttons.ts b/src/MOCK_DB_DATA/library-items/navs/nav-buttons.ts index 04d20ba7..c2fc546a 100644 --- a/src/MOCK_DB_DATA/library-items/navs/nav-buttons.ts +++ b/src/MOCK_DB_DATA/library-items/navs/nav-buttons.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const NavButtons: LibraryItem[] = [ { id: ITEMS.NavButtons.id, title: ITEMS.NavButtons.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Navs, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/navs/nav-popover-menu.ts b/src/MOCK_DB_DATA/library-items/navs/nav-popover-menu.ts index 164aec95..2fc7ed58 100644 --- a/src/MOCK_DB_DATA/library-items/navs/nav-popover-menu.ts +++ b/src/MOCK_DB_DATA/library-items/navs/nav-popover-menu.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const NavPopoverMenu: LibraryItem[] = [ { id: ITEMS.NavPopoverMenu.id, title: ITEMS.NavPopoverMenu.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Navs, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/navs/nav-shortcut-buttons.ts b/src/MOCK_DB_DATA/library-items/navs/nav-shortcut-buttons.ts index a18f7afb..8cd79d26 100644 --- a/src/MOCK_DB_DATA/library-items/navs/nav-shortcut-buttons.ts +++ b/src/MOCK_DB_DATA/library-items/navs/nav-shortcut-buttons.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const NavShortcutButtons: LibraryItem[] = [ { id: ITEMS.NavShortcutButtons.id, title: ITEMS.NavShortcutButtons.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Navs, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/navs/nav-shortcuts.ts b/src/MOCK_DB_DATA/library-items/navs/nav-shortcuts.ts index 95e7d370..b411686f 100644 --- a/src/MOCK_DB_DATA/library-items/navs/nav-shortcuts.ts +++ b/src/MOCK_DB_DATA/library-items/navs/nav-shortcuts.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const NavShortcuts: LibraryItem[] = [ { id: ITEMS.NavShortcuts.id, title: ITEMS.NavShortcuts.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Navs, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/navs/nav-tabs.ts b/src/MOCK_DB_DATA/library-items/navs/nav-tabs.ts index 8fabf849..adfea76b 100644 --- a/src/MOCK_DB_DATA/library-items/navs/nav-tabs.ts +++ b/src/MOCK_DB_DATA/library-items/navs/nav-tabs.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const NavTabs: LibraryItem[] = [ { id: ITEMS.NavTabs.id, title: ITEMS.NavTabs.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Navs, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/navs/nav-tiles.ts b/src/MOCK_DB_DATA/library-items/navs/nav-tiles.ts index 92f8035b..244196ad 100644 --- a/src/MOCK_DB_DATA/library-items/navs/nav-tiles.ts +++ b/src/MOCK_DB_DATA/library-items/navs/nav-tiles.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const NavTiles: LibraryItem[] = [ { id: ITEMS.NavTiles.id, title: ITEMS.NavTiles.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Navs, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/paginations/pagination-collection-counter.ts b/src/MOCK_DB_DATA/library-items/paginations/pagination-collection-counter.ts index 05f288c4..b9106195 100644 --- a/src/MOCK_DB_DATA/library-items/paginations/pagination-collection-counter.ts +++ b/src/MOCK_DB_DATA/library-items/paginations/pagination-collection-counter.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const PaginationCollectionCounter: LibraryItem[] = [ { id: ITEMS.PaginationCollectionCounter.id, title: ITEMS.PaginationCollectionCounter.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Paginations, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/paginations/pagination.ts b/src/MOCK_DB_DATA/library-items/paginations/pagination.ts index 219c7d3c..6a41254d 100644 --- a/src/MOCK_DB_DATA/library-items/paginations/pagination.ts +++ b/src/MOCK_DB_DATA/library-items/paginations/pagination.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Pagination: LibraryItem[] = [ { id: ITEMS.Pagination.id, title: ITEMS.Pagination.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Paginations, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/progress-indicators/progress-bar.ts b/src/MOCK_DB_DATA/library-items/progress-indicators/progress-bar.ts index e397d4e6..4bbda752 100644 --- a/src/MOCK_DB_DATA/library-items/progress-indicators/progress-bar.ts +++ b/src/MOCK_DB_DATA/library-items/progress-indicators/progress-bar.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ProgressBar: LibraryItem[] = [ { id: ITEMS.ProgressBar.id, title: ITEMS.ProgressBar.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.ProgressIndicators, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-button.ts b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-button.ts index 20336fed..c54836da 100644 --- a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-button.ts +++ b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-button.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ProgressSpinnerButton: LibraryItem[] = [ { id: ITEMS.ProgressSpinnerButton.id, title: ITEMS.ProgressSpinnerButton.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.ProgressIndicators, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-flex.ts b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-flex.ts index 8647c138..d1d9b61b 100644 --- a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-flex.ts +++ b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-flex.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ProgressSpinnerFlex: LibraryItem[] = [ { id: ITEMS.ProgressSpinnerFlex.id, title: ITEMS.ProgressSpinnerFlex.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.ProgressIndicators, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-margin.ts b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-margin.ts index ac69f979..db24e41e 100644 --- a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-margin.ts +++ b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-margin.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ProgressSpinnerMargin: LibraryItem[] = [ { id: ITEMS.ProgressSpinnerMargin.id, title: ITEMS.ProgressSpinnerMargin.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.ProgressIndicators, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-small.ts b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-small.ts index 561e2f0c..0880782c 100644 --- a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-small.ts +++ b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner-small.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ProgressSpinnerSmall: LibraryItem[] = [ { id: ITEMS.ProgressSpinnerSmall.id, title: ITEMS.ProgressSpinnerSmall.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.ProgressIndicators, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner.ts b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner.ts index 6a74adbb..07b3e0bd 100644 --- a/src/MOCK_DB_DATA/library-items/progress-indicators/spinner.ts +++ b/src/MOCK_DB_DATA/library-items/progress-indicators/spinner.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const ProgressSpinner: LibraryItem[] = [ { id: ITEMS.ProgressSpinner.id, title: ITEMS.ProgressSpinner.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.ProgressIndicators, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/search/_search.data.ts b/src/MOCK_DB_DATA/library-items/search/_search.data.ts deleted file mode 100644 index 22ef67d8..00000000 --- a/src/MOCK_DB_DATA/library-items/search/_search.data.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { LibraryItem, LibraryItemGroup } from 'src/app/views/shared/models/library-item.model'; -import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; - -import { SearchIntro } from './_search.intro'; - -import { Search } from './search'; - -export const Searches: LibraryItem[] = [...Search]; - -export const SearchData: LibraryItemGroup = { - id: GROUPS.Search.id, - title: GROUPS.Search.title, - intro: SearchIntro, - libraryItems: Searches, -}; diff --git a/src/MOCK_DB_DATA/library-items/search/_search.intro.ts b/src/MOCK_DB_DATA/library-items/search/_search.intro.ts deleted file mode 100644 index ab142cf0..00000000 --- a/src/MOCK_DB_DATA/library-items/search/_search.intro.ts +++ /dev/null @@ -1 +0,0 @@ -export const SearchIntro = ``; diff --git a/src/MOCK_DB_DATA/library-items/searches/_searches.data.ts b/src/MOCK_DB_DATA/library-items/searches/_searches.data.ts new file mode 100644 index 00000000..ad253057 --- /dev/null +++ b/src/MOCK_DB_DATA/library-items/searches/_searches.data.ts @@ -0,0 +1,16 @@ +import { LibraryItem, LibraryItemGroup } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; + +import { SearchFieldsIntro } from './_searches.intro'; + +import { Search } from './search'; +import { SearchAutocomplete } from './search-autocomplete'; + +export const SearchFields: LibraryItem[] = [...Search, ...SearchAutocomplete]; + +export const SearchFieldsData: LibraryItemGroup = { + id: GROUPS.SearchFields.id, + title: GROUPS.SearchFields.title, + intro: SearchFieldsIntro, + libraryItems: SearchFields, +}; diff --git a/src/MOCK_DB_DATA/library-items/searches/_searches.intro.ts b/src/MOCK_DB_DATA/library-items/searches/_searches.intro.ts new file mode 100644 index 00000000..146c1694 --- /dev/null +++ b/src/MOCK_DB_DATA/library-items/searches/_searches.intro.ts @@ -0,0 +1 @@ +export const SearchFieldsIntro = ``; diff --git a/src/MOCK_DB_DATA/library-items/search/search.ts b/src/MOCK_DB_DATA/library-items/searches/search-autocomplete.ts similarity index 75% rename from src/MOCK_DB_DATA/library-items/search/search.ts rename to src/MOCK_DB_DATA/library-items/searches/search-autocomplete.ts index 21c6e2c8..3eb429bb 100644 --- a/src/MOCK_DB_DATA/library-items/search/search.ts +++ b/src/MOCK_DB_DATA/library-items/searches/search-autocomplete.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; -export const Search: LibraryItem[] = [ +export const SearchAutocomplete: LibraryItem[] = [ { - id: ITEMS.Search.id, - title: ITEMS.Search.title, - type: LibraryItemType.angular, + id: ITEMS.SearchAutocomplete.id, + title: ITEMS.SearchAutocomplete.title, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.SearchFields, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; @@ -34,7 +38,7 @@ function getCodeHtml(): string | null { id="typeahead-basic" type="search" class="form-control fhi-search__form-control" - placeholder="Søk her..." + placeholder="Søk" [ngbTypeahead]="search"/>
    +
    +
    +`; +} + +/* + * Return empty string to use a copy of exampleHtml as codeHtml. + * Return null to remove Code from library-item. + */ +function getCodeHtml(): string | null { + return ` +`; +} + +/* + * Return null to remove Code from library-item. + */ +function getDocumentationHtml(): string | null { + return null; +} diff --git a/src/MOCK_DB_DATA/library-items/tables/_angular-info.ts b/src/MOCK_DB_DATA/library-items/tables/_angular-info.ts new file mode 100644 index 00000000..188e3b34 --- /dev/null +++ b/src/MOCK_DB_DATA/library-items/tables/_angular-info.ts @@ -0,0 +1,20 @@ +import { LibraryItemConstants as CONST } from '../library-item-constants'; + +export function getAngularInfo(itemTitle: string): string { + return ` +`; +} diff --git a/src/MOCK_DB_DATA/library-items/tables/table-compact.ts b/src/MOCK_DB_DATA/library-items/tables/table-compact.ts index 31d854bb..bdae8e09 100644 --- a/src/MOCK_DB_DATA/library-items/tables/table-compact.ts +++ b/src/MOCK_DB_DATA/library-items/tables/table-compact.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TableCompact: LibraryItem[] = [ { id: ITEMS.TableCompact.id, title: ITEMS.TableCompact.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tables, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tables/table-editable.ts b/src/MOCK_DB_DATA/library-items/tables/table-editable.ts index f9c7116a..f6ffe3e3 100644 --- a/src/MOCK_DB_DATA/library-items/tables/table-editable.ts +++ b/src/MOCK_DB_DATA/library-items/tables/table-editable.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; +import { getAngularInfo } from './_angular-info'; export const TableEditable: LibraryItem[] = [ { id: ITEMS.TableEditable.id, title: ITEMS.TableEditable.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tables, + dependencyType: ItemDependencyType.css, }, ]; @@ -32,11 +36,5 @@ function getCodeHtml(): string | null { * Return null to remove Documentation from library-item. */ function getDocumentationHtml(): string | null { - return ` - - -

    Se kode på Github for disse eksemplene.

    `; + return getAngularInfo(ITEMS.TableEditable.title); } diff --git a/src/MOCK_DB_DATA/library-items/tables/table-selectable-row.ts b/src/MOCK_DB_DATA/library-items/tables/table-selectable-row.ts index 8cdc24da..e40cab18 100644 --- a/src/MOCK_DB_DATA/library-items/tables/table-selectable-row.ts +++ b/src/MOCK_DB_DATA/library-items/tables/table-selectable-row.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; +import { getAngularInfo } from './_angular-info'; export const TableSelectableRow: LibraryItem[] = [ { id: ITEMS.TableSelectableRow.id, title: ITEMS.TableSelectableRow.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tables, + dependencyType: ItemDependencyType.css, }, ]; @@ -32,11 +36,5 @@ function getCodeHtml(): string | null { * Return null to remove Documentation from library-item. */ function getDocumentationHtml(): string | null { - return ` - - -

    Se kode på Github for disse eksemplene.

    `; + return getAngularInfo(ITEMS.TableSelectableRow.title); } diff --git a/src/MOCK_DB_DATA/library-items/tables/table-sortable.ts b/src/MOCK_DB_DATA/library-items/tables/table-sortable.ts index 0cc55d9e..18f11f63 100644 --- a/src/MOCK_DB_DATA/library-items/tables/table-sortable.ts +++ b/src/MOCK_DB_DATA/library-items/tables/table-sortable.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; +import { getAngularInfo } from './_angular-info'; export const TableSortable: LibraryItem[] = [ { id: ITEMS.TableSortable.id, title: ITEMS.TableSortable.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tables, + dependencyType: ItemDependencyType.css, }, ]; @@ -32,11 +36,5 @@ function getCodeHtml(): string | null { * Return null to remove Documentation from library-item. */ function getDocumentationHtml(): string | null { - return ` - - -

    Se kode på Github for disse eksemplene.

    `; + return getAngularInfo(ITEMS.TableEditable.title); } diff --git a/src/MOCK_DB_DATA/library-items/tables/table-striped.ts b/src/MOCK_DB_DATA/library-items/tables/table-striped.ts index 340c885e..2b8f53a6 100644 --- a/src/MOCK_DB_DATA/library-items/tables/table-striped.ts +++ b/src/MOCK_DB_DATA/library-items/tables/table-striped.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TableStriped: LibraryItem[] = [ { id: ITEMS.TableStriped.id, title: ITEMS.TableStriped.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tables, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tables/table.ts b/src/MOCK_DB_DATA/library-items/tables/table.ts index 89bd096c..4137b2ed 100644 --- a/src/MOCK_DB_DATA/library-items/tables/table.ts +++ b/src/MOCK_DB_DATA/library-items/tables/table.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Table: LibraryItem[] = [ { id: ITEMS.Table.id, title: ITEMS.Table.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tables, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tags/tag-filter-option.ts b/src/MOCK_DB_DATA/library-items/tags/tag-filter-option.ts index 3b8ea090..0bc34b80 100644 --- a/src/MOCK_DB_DATA/library-items/tags/tag-filter-option.ts +++ b/src/MOCK_DB_DATA/library-items/tags/tag-filter-option.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TagFilterOption: LibraryItem[] = [ { id: ITEMS.TagFilterOption.id, title: ITEMS.TagFilterOption.title, - type: LibraryItemType.fhiAngular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tags, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tags/tag-multiple-selection.ts b/src/MOCK_DB_DATA/library-items/tags/tag-multiple-selection.ts index e7d5c8e1..6134d324 100644 --- a/src/MOCK_DB_DATA/library-items/tags/tag-multiple-selection.ts +++ b/src/MOCK_DB_DATA/library-items/tags/tag-multiple-selection.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TagMultipleSelection: LibraryItem[] = [ { id: ITEMS.TagMultipleSelection.id, title: ITEMS.TagMultipleSelection.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tags, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tags/tag-single-selection.ts b/src/MOCK_DB_DATA/library-items/tags/tag-single-selection.ts index 4d2b6912..312908f1 100644 --- a/src/MOCK_DB_DATA/library-items/tags/tag-single-selection.ts +++ b/src/MOCK_DB_DATA/library-items/tags/tag-single-selection.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TagSingleSelection: LibraryItem[] = [ { id: ITEMS.TagSingleSelection.id, title: ITEMS.TagSingleSelection.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tags, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tags/tag-state-dot.ts b/src/MOCK_DB_DATA/library-items/tags/tag-state-dot.ts index 7c4d7373..839e1ac5 100644 --- a/src/MOCK_DB_DATA/library-items/tags/tag-state-dot.ts +++ b/src/MOCK_DB_DATA/library-items/tags/tag-state-dot.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TagStateDot: LibraryItem[] = [ { id: ITEMS.TagStateDot.id, title: ITEMS.TagStateDot.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tags, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tags/tag-state.ts b/src/MOCK_DB_DATA/library-items/tags/tag-state.ts index 9071c739..8b1bcd11 100644 --- a/src/MOCK_DB_DATA/library-items/tags/tag-state.ts +++ b/src/MOCK_DB_DATA/library-items/tags/tag-state.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TagState: LibraryItem[] = [ { id: ITEMS.TagState.id, title: ITEMS.TagState.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tags, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tags/tag.ts b/src/MOCK_DB_DATA/library-items/tags/tag.ts index 4942b141..a1e851e6 100644 --- a/src/MOCK_DB_DATA/library-items/tags/tag.ts +++ b/src/MOCK_DB_DATA/library-items/tags/tag.ts @@ -1,15 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; -import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Tag: LibraryItem[] = [ { id: ITEMS.Tag.id, title: ITEMS.Tag.title, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Tags, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/_time-selectors.data.ts b/src/MOCK_DB_DATA/library-items/time-selectors/_time-selectors.data.ts index aa6581ab..34e04368 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/_time-selectors.data.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/_time-selectors.data.ts @@ -4,21 +4,19 @@ import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-sh import { TimeSelectorsIntro } from './_time-selectors.intro'; import { TimeSelectorDatepicker } from './time-selector-datepicker'; -import { TimeSelectorDateRange } from './time-selector-date-range'; import { TimeSelectorDateTime } from './time-selector-date-time'; import { TimeSelectorWeekpicker } from './time-selector-weekpicker'; -import { TimeSelectorWeekRange } from './time-selector-week-range'; import { TimeSelectorYearMonth } from './time-selector-year-month'; import { TimeSelectorYearMonthRange } from './time-selector-year-month-range'; import { TimeSelectorYears } from './time-selector-years'; import { TimeSelectorYearRange } from './time-selector-year-range'; +// import { TimeSelectorDateRange } from './time-selector-date-range'; +// import { TimeSelectorWeekRange } from './time-selector-week-range'; const TimeSelectors: LibraryItem[] = [ ...TimeSelectorDatepicker, - // ...TimeSelectorDateRange, ...TimeSelectorDateTime, ...TimeSelectorWeekpicker, - // ...TimeSelectorWeekRange, ...TimeSelectorYearMonth, ...TimeSelectorYearMonthRange, ...TimeSelectorYears, diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-range.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-range.ts index e3bec1b7..e5396ec0 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-range.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-range.ts @@ -1,14 +1,18 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorDateRange: LibraryItem[] = [ { id: ITEMS.TimeSelectorDateRange.id, title: ITEMS.TimeSelectorDateRange.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-time.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-time.ts index 6835939d..9ee64cf4 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-time.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-date-time.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorDateTime: LibraryItem[] = [ { id: ITEMS.TimeSelectorDateAndTime.id, title: ITEMS.TimeSelectorDateAndTime.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-datepicker.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-datepicker.ts index f02545fd..55a60fe5 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-datepicker.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-datepicker.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorDatepicker: LibraryItem[] = [ { id: ITEMS.TimeSelectorDatepicker.id, title: ITEMS.TimeSelectorDatepicker.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-week-range.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-week-range.ts index 7fd69712..6755489e 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-week-range.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-week-range.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorWeekRange: LibraryItem[] = [ { id: ITEMS.TimeSelectorWeekRange.id, title: ITEMS.TimeSelectorWeekRange.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-weekpicker.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-weekpicker.ts index cd4a9a9c..72403545 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-weekpicker.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-weekpicker.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorWeekpicker: LibraryItem[] = [ { id: ITEMS.TimeSelectorWeekpicker.id, title: ITEMS.TimeSelectorWeekpicker.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month-range.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month-range.ts index 0aa27237..643bddba 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month-range.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month-range.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorYearMonthRange: LibraryItem[] = [ { id: ITEMS.TimeSelectorYearMonthRange.id, title: ITEMS.TimeSelectorYearMonthRange.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month.ts index 4d3eed70..ae6fcdc5 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-month.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorYearMonth: LibraryItem[] = [ { id: ITEMS.TimeSelectorYearMonth.id, title: ITEMS.TimeSelectorYearMonth.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-range.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-range.ts index 0a86dc2d..afaf71f9 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-range.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-year-range.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorYearRange: LibraryItem[] = [ { id: ITEMS.TimeSelectorYearRange.id, title: ITEMS.TimeSelectorYearRange.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-years.ts b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-years.ts index 0a7f75ef..90f9b66b 100644 --- a/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-years.ts +++ b/src/MOCK_DB_DATA/library-items/time-selectors/time-selector-years.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TimeSelectorYears: LibraryItem[] = [ { id: ITEMS.TimeSelectorYears.id, title: ITEMS.TimeSelectorYears.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TimeSelectors, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/toasts/toast.ts b/src/MOCK_DB_DATA/library-items/toasts/toast.ts index 6c2df29e..55c678fa 100644 --- a/src/MOCK_DB_DATA/library-items/toasts/toast.ts +++ b/src/MOCK_DB_DATA/library-items/toasts/toast.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Toast: LibraryItem[] = [ { id: ITEMS.Toast.id, title: ITEMS.Toast.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Toasts, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tooltip-popover/popover.ts b/src/MOCK_DB_DATA/library-items/tooltip-popover/popover.ts index 41a921bb..6b37bbe3 100644 --- a/src/MOCK_DB_DATA/library-items/tooltip-popover/popover.ts +++ b/src/MOCK_DB_DATA/library-items/tooltip-popover/popover.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TooltipPopover: LibraryItem[] = [ { id: ITEMS.TooltipPopover.id, title: ITEMS.TooltipPopover.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TooltipPopovers, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tooltip-popover/tooltip.ts b/src/MOCK_DB_DATA/library-items/tooltip-popover/tooltip.ts index 3bf1c557..a203564a 100644 --- a/src/MOCK_DB_DATA/library-items/tooltip-popover/tooltip.ts +++ b/src/MOCK_DB_DATA/library-items/tooltip-popover/tooltip.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const Tooltip: LibraryItem[] = [ { id: ITEMS.Tooltip.id, title: ITEMS.Tooltip.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TooltipPopovers, + dependencyType: ItemDependencyType.ngBootstrap, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tree-views/tree-view-checkbox.ts b/src/MOCK_DB_DATA/library-items/tree-views/tree-view-checkbox.ts index 45c80388..696e5af2 100644 --- a/src/MOCK_DB_DATA/library-items/tree-views/tree-view-checkbox.ts +++ b/src/MOCK_DB_DATA/library-items/tree-views/tree-view-checkbox.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TreeViewCheckbox: LibraryItem[] = [ { id: ITEMS.TreeViewCheckbox.id, title: ITEMS.TreeViewCheckbox.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TreeViews, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/tree-views/tree-view-navigation.ts b/src/MOCK_DB_DATA/library-items/tree-views/tree-view-navigation.ts index f6bb4ad7..09367512 100644 --- a/src/MOCK_DB_DATA/library-items/tree-views/tree-view-navigation.ts +++ b/src/MOCK_DB_DATA/library-items/tree-views/tree-view-navigation.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TreeViewNavigation: LibraryItem[] = [ { id: ITEMS.TreeViewNavigation.id, title: ITEMS.TreeViewNavigation.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TreeViews, + dependencyType: ItemDependencyType.fhiAngular, }, ]; @@ -32,6 +36,49 @@ function getCodeHtml(): string | null { * Return null to remove Documentation from library-item. */ function getDocumentationHtml(): string | null { + return ` +

    + For å ta i bruk denne komponenten i en Angular-applikasjon må NPM-pakken + @folkehelseinstituttet/angular-components + være lagt til som en "dependency". +

    + +

    API

    +
    + + + + + + + + + + + + +
    Input + Type + Default + Required + Description +
    [items]Array<FhiTreeViewNavigationItem>[]yesAll items in your navigation tree.
    +
    + +

    Nyttige lenker

    +`; + return `

    Tree view navigation er en komponent som finnes i @@ -42,18 +89,16 @@ function getDocumentationHtml(): string | null {

    - + - - - - - + - - - + diff --git a/src/MOCK_DB_DATA/library-items/tree-views/tree-view-radio.ts b/src/MOCK_DB_DATA/library-items/tree-views/tree-view-radio.ts index 79769d0d..4f2d3666 100644 --- a/src/MOCK_DB_DATA/library-items/tree-views/tree-view-radio.ts +++ b/src/MOCK_DB_DATA/library-items/tree-views/tree-view-radio.ts @@ -1,15 +1,19 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TreeViewRadio: LibraryItem[] = [ { id: ITEMS.TreeViewRadio.id, title: ITEMS.TreeViewRadio.title, - type: LibraryItemType.angular, + type: ItemType.angular, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.TreeViews, + dependencyType: ItemDependencyType.fhiAngular, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/typography/heading-levels.ts b/src/MOCK_DB_DATA/library-items/typography/heading-levels.ts index b38cd4e6..68b09de4 100644 --- a/src/MOCK_DB_DATA/library-items/typography/heading-levels.ts +++ b/src/MOCK_DB_DATA/library-items/typography/heading-levels.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const HeadingLevels: LibraryItem[] = [ { id: ITEMS.VisualIdentityHeadingLevels.id, title: ITEMS.VisualIdentityHeadingLevels.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Typography, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/MOCK_DB_DATA/library-items/typography/typographic-hierarchy.ts b/src/MOCK_DB_DATA/library-items/typography/typographic-hierarchy.ts index e2c968d1..0f6995e6 100644 --- a/src/MOCK_DB_DATA/library-items/typography/typographic-hierarchy.ts +++ b/src/MOCK_DB_DATA/library-items/typography/typographic-hierarchy.ts @@ -1,16 +1,20 @@ -import { LibraryItem, LibraryItemType } from 'src/app/views/shared/models/library-item.model'; +import { LibraryItem } from 'src/app/views/shared/models/library-item.model'; import { LibraryItemsSharedData as ITEMS } from '../library-items-shared-data'; +import { LibraryItemGroupsSharedData as GROUPS } from '../library-item-groups-shared-data'; import { LibraryItemConstants as CONST } from '../library-item-constants'; +import { ItemDependencyType, ItemType } from 'src/app/views/shared/item-type.enums'; export const TypographicHierarchy: LibraryItem[] = [ { id: ITEMS.VisualIdentityTypographyHierarchy.id, title: ITEMS.VisualIdentityTypographyHierarchy.title, titleLang: CONST.languageLocaleId_NO, - type: LibraryItemType.html, + type: ItemType.html, exampleHtml: getExampleHtml(), codeHtml: getCodeHtml(), documentationHtml: getDocumentationHtml(), + parent: GROUPS.Typography, + dependencyType: ItemDependencyType.css, }, ]; diff --git a/src/app/core/mock-db.ts b/src/app/core/mock-db.ts index 4ff073c3..676fe049 100644 --- a/src/app/core/mock-db.ts +++ b/src/app/core/mock-db.ts @@ -1,71 +1,111 @@ +import { LibraryItem } from '../views/shared/models/library-item.model'; + +// Meta data import { LibraryItemsSharedData } from 'src/MOCK_DB_DATA/library-items/library-items-shared-data'; import { LibraryItemGroupsSharedData } from 'src/MOCK_DB_DATA/library-items/library-item-groups-shared-data'; +// Visuell identitet +import { ColorsData } from 'src/MOCK_DB_DATA/library-items/colors/_colors.data'; +import { IconsData } from 'src/MOCK_DB_DATA/library-items/icons/_icons.data'; +import { TypographyData } from 'src/MOCK_DB_DATA/library-items/typography/_typography.data'; + +// Komponenter import { AccordionsData } from 'src/MOCK_DB_DATA/library-items/accordions/_accordions.data'; import { AlertsData } from 'src/MOCK_DB_DATA/library-items/alerts/_alerts.data'; import { BadgesData } from 'src/MOCK_DB_DATA/library-items/badges/_badges.data'; import { BreadcrumbsData } from 'src/MOCK_DB_DATA/library-items/breadcrumbs/_breadcrumbs.data'; import { ButtonsData } from 'src/MOCK_DB_DATA/library-items/buttons/_buttons.data'; import { CardsData } from 'src/MOCK_DB_DATA/library-items/cards/_cards.data'; -import { ColorsData } from 'src/MOCK_DB_DATA/library-items/colors/_colors.data'; -import { DrawersData } from 'src/MOCK_DB_DATA/library-items/drawers/_drawers.data'; -import { ErrorPagesData } from 'src/MOCK_DB_DATA/library-items/error-pages/_error-pages.data'; import { FormControlsData } from 'src/MOCK_DB_DATA/library-items/form-controls/_form-controls.data'; import { GlobalFootersData } from 'src/MOCK_DB_DATA/library-items/global-footers/_global-footers.data'; import { GlobalHeadersData } from 'src/MOCK_DB_DATA/library-items/global-headers/_global-headers.data'; import { HighchartsData } from 'src/MOCK_DB_DATA/library-items/highcharts/_highcharts.data'; -import { IconsData } from 'src/MOCK_DB_DATA/library-items/icons/_icons.data'; -import { LayoutTemplatesData } from 'src/MOCK_DB_DATA/library-items/layout-templates/_layout-templates.data'; import { ModalsData } from 'src/MOCK_DB_DATA/library-items/modals/_modals.data'; import { NavsData } from 'src/MOCK_DB_DATA/library-items/navs/_navs.data'; import { PaginationsData } from 'src/MOCK_DB_DATA/library-items/paginations/_paginations.data'; import { ProgressIndicatorsData } from 'src/MOCK_DB_DATA/library-items/progress-indicators/_progress-indicators.data'; -import { PrototypeFormsData } from 'src/MOCK_DB_DATA/library-items/prototype-forms/_prototype-forms.data'; -import { PrototypeTablesData } from 'src/MOCK_DB_DATA/library-items/prototype-tables/_prototype-tables.data'; -import { SearchData } from 'src/MOCK_DB_DATA/library-items/search/_search.data'; +import { SearchFieldsData } from 'src/MOCK_DB_DATA/library-items/searches/_searches.data'; import { TablesData } from 'src/MOCK_DB_DATA/library-items/tables/_tables.data'; import { TagsData } from 'src/MOCK_DB_DATA/library-items/tags/_tags.data'; import { TimeSelectorsData } from 'src/MOCK_DB_DATA/library-items/time-selectors/_time-selectors.data'; import { ToastsData } from 'src/MOCK_DB_DATA/library-items/toasts/_toasts.data'; import { TooltipPopoverData } from 'src/MOCK_DB_DATA/library-items/tooltip-popover/_tooltip-popover.data'; import { TreeViewsData } from 'src/MOCK_DB_DATA/library-items/tree-views/_tree-views.data'; -import { TypographyData } from 'src/MOCK_DB_DATA/library-items/typography/_typography.data'; + +// Alle komponenter +const AllComponentsData: LibraryItem[] = [ + ...AccordionsData.libraryItems, + ...AlertsData.libraryItems, + ...BadgesData.libraryItems, + ...BreadcrumbsData.libraryItems, + ...ButtonsData.libraryItems, + ...CardsData.libraryItems, + ...FormControlsData.libraryItems, + ...GlobalFootersData.libraryItems, + ...GlobalHeadersData.libraryItems, + ...HighchartsData.libraryItems, + ...ModalsData.libraryItems, + ...NavsData.libraryItems, + ...PaginationsData.libraryItems, + ...ProgressIndicatorsData.libraryItems, + ...SearchFieldsData.libraryItems, + ...TablesData.libraryItems, + ...TagsData.libraryItems, + ...TimeSelectorsData.libraryItems, + ...ToastsData.libraryItems, + ...TooltipPopoverData.libraryItems, + ...TreeViewsData.libraryItems, +]; + +// Deprecated: + +// Layout og sidemaler +// import { DrawersData } from 'src/MOCK_DB_DATA/library-items/drawers/_drawers.data'; +// import { ErrorPagesData } from 'src/MOCK_DB_DATA/library-items/error-pages/_error-pages.data'; +// import { LayoutTemplatesData } from 'src/MOCK_DB_DATA/library-items/layout-templates/_layout-templates.data'; + +// Eksempler på bruk +// import { PrototypeFormsData } from 'src/MOCK_DB_DATA/library-items/prototype-forms/_prototype-forms.data'; +// import { PrototypeTablesData } from 'src/MOCK_DB_DATA/library-items/prototype-tables/_prototype-tables.data'; export function getMockDbBody(url: string): unknown { const urlSegment = url.slice(4); const dataMapping = { + // Meta data LibraryItemsSharedData: LibraryItemsSharedData, LibraryItemGroupsSharedData: LibraryItemGroupsSharedData, + + // Visuell identitet + ColorsData: ColorsData, + IconsData: IconsData, + TypographyData: TypographyData, + + // Komponenter AccordionsData: AccordionsData, AlertsData: AlertsData, BadgesData: BadgesData, BreadcrumbsData: BreadcrumbsData, ButtonsData: ButtonsData, CardsData: CardsData, - ColorsData: ColorsData, - DrawersData: DrawersData, - ErrorPagesData: ErrorPagesData, FormControlsData: FormControlsData, GlobalFootersData: GlobalFootersData, GlobalHeadersData: GlobalHeadersData, HighchartsData: HighchartsData, - IconsData: IconsData, - LayoutTemplatesData: LayoutTemplatesData, ModalsData: ModalsData, NavsData: NavsData, PaginationsData: PaginationsData, ProgressIndicatorsData: ProgressIndicatorsData, - PrototypeFormsData: PrototypeFormsData, - PrototypeTablesData: PrototypeTablesData, - SearchData: SearchData, + SearchFieldsData: SearchFieldsData, TablesData: TablesData, TagsData: TagsData, TimeSelectorsData: TimeSelectorsData, ToastsData: ToastsData, TooltipPopoverData: TooltipPopoverData, TreeViewsData: TreeViewsData, - TypographyData: TypographyData, + + // Alle komponenter + AllComponentsData: AllComponentsData, }; return dataMapping[urlSegment] || null; diff --git a/src/app/views/developer/developer.component.html b/src/app/views/developer/developer.component.html index 7cfe826f..ea4e2bb1 100644 --- a/src/app/views/developer/developer.component.html +++ b/src/app/views/developer/developer.component.html @@ -2,10 +2,10 @@
    -
    +
    -
    +
    diff --git a/src/app/views/developer/library-items-section/library-items-section.component.ts b/src/app/views/developer/library-items-section/library-items-section.component.ts index a2f790e2..3457bfda 100644 --- a/src/app/views/developer/library-items-section/library-items-section.component.ts +++ b/src/app/views/developer/library-items-section/library-items-section.component.ts @@ -64,18 +64,20 @@ export class LibraryItemsSectionComponent implements OnInit, OnDestroy { lastSegmentPath: string, libraryItemGroupsShared: LibraryItemGroupsShared, ) { - this.libraryItemsDataService - .getLibraryItemGroup(lastSegmentPath, libraryItemGroupsShared) - .subscribe({ - next: (libraryItemGroup) => { - this.group = libraryItemGroup; - this.sectionTitle = libraryItemGroup.title; - this.sectionTitleLang = libraryItemGroup.titleLang; - this.sectionIntro = libraryItemGroup.intro; - this.libraryItems = libraryItemGroup.libraryItems; - this.dataIsLoaded = true; - }, - error: (error) => error, - }); + this.subscription.add( + this.libraryItemsDataService + .getLibraryItemGroup(lastSegmentPath, libraryItemGroupsShared) + .subscribe({ + next: (libraryItemGroup) => { + this.group = libraryItemGroup; + this.sectionTitle = libraryItemGroup.title; + this.sectionTitleLang = libraryItemGroup.titleLang; + this.sectionIntro = libraryItemGroup.intro; + this.libraryItems = libraryItemGroup.libraryItems; + this.dataIsLoaded = true; + }, + error: (error) => error, + }), + ); } } diff --git a/src/app/views/shared/article/article.component.html b/src/app/views/shared/article/article.component.html index 9aa30871..50dde389 100644 --- a/src/app/views/shared/article/article.component.html +++ b/src/app/views/shared/article/article.component.html @@ -2,11 +2,23 @@

    {{ title }}

    @if (currentSegment === urlSegment.visualIdentity) { - +
    +
    + +
    +
    } @if (currentSegment === urlSegment.components) { - - +
    +
    + + +
    +
    + + +
    +
    } @@ -18,27 +30,29 @@

    {{ title }}

    -

    - Komponentbiblioteket i FHI Designsystem baserer seg på - Bootstrap 5. Interaktive komponenter benytter - ng-bootstrap - og andre tredjepartskomponenter der disse finnes. I tillegg er noen skreddersydde Angularkomponenter produsert av - FHI. -

    -

    - Alle løsninger kan konsumere stilsettet uavhengig av hvilket rammeverk som er benyttet. Legg til CSS fra FHI - Designsystem: - @folkehelseinstituttet/style. -

    -

    - FHI Designsystem bygges i Angular og løsninger som benytter annet frontendrammeverk er ansvarlige for å generere - riktig markup slik at utseendet blir korrekt. -

    -

    - Se changelog for stilsettet her. -

    +
    +

    + Komponentbiblioteket i FHI Designsystem baserer seg på + Bootstrap 5. Interaktive komponenter benytter + ng-bootstrap + og andre tredjepartskomponenter der disse finnes. I tillegg er noen skreddersydde Angularkomponenter produsert av + FHI. +

    +

    + Alle løsninger kan konsumere stilsettet uavhengig av hvilket rammeverk som er benyttet. Legg til CSS fra FHI + Designsystem: + @folkehelseinstituttet/style. +

    +

    + FHI Designsystem bygges i Angular og løsninger som benytter annet frontendrammeverk er ansvarlige for å generere + riktig markup slik at utseendet blir korrekt. +

    +

    + Se changelog for stilsettet her. +

    +
    @@ -58,3 +72,72 @@

    {{ title }}

    + + +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + @for (control of form.controls['types']['controls']; track $index) { +
    + + +
    + } +
    +
    + +
    + + +
    +
    InputTypeDefaultRequiredDescriptionInput + Type + Default + Required + Description
    [items][items] Array<FhiTreeViewNavigationItem> [] yes
    + + + + + + + + + @for (item of itemsFiltered; track $index) { + + + + + + } + +
    KategoriKomponentBasert på
    + {{ item.parent?.title }} + + + {{ item.title }} + + + {{ getLibraryItemType(item.dependencyType) }} +
    +
    + diff --git a/src/app/views/shared/article/article.component.ts b/src/app/views/shared/article/article.component.ts index 164a7a4f..3edebfa5 100644 --- a/src/app/views/shared/article/article.component.ts +++ b/src/app/views/shared/article/article.component.ts @@ -3,7 +3,13 @@ import { Subscription } from 'rxjs'; import { UrlService } from 'src/app/services/url.service'; import { UrlSegment } from 'src/app/url-segment.constants'; -import { LibraryItem } from '../models/library-item.model'; +import { LibraryItemsDataService } from '../services/library-items-data.service'; +import { + LibraryItem, + LibraryItemDependencyType, + LibraryItemType, +} from '../models/library-item.model'; +import { FormBuilder, FormGroup } from '@angular/forms'; @Component({ selector: 'app-article', @@ -11,31 +17,96 @@ import { LibraryItem } from '../models/library-item.model'; }) export class ArticleComponent implements OnInit, OnDestroy { private subscription: Subscription = new Subscription(); + private items: LibraryItem[] = []; title: string; articleHtml: string; currentSegment: string; urlSegment = UrlSegment; - items: LibraryItem[] = []; itemsFiltered: LibraryItem[] = []; rootLink!: string; + LibraryItemType = LibraryItemType; + dependencyTypes = [ + { + id: LibraryItemDependencyType.css, + name: 'CSS', + selected: true, + }, + { + id: LibraryItemDependencyType.ngBootstrap, + name: 'NgBootstrap', + selected: true, + }, + { + id: LibraryItemDependencyType.fhiAngular, + name: 'FhiAngular', + selected: true, + }, + ]; + form: FormGroup; - constructor(private urlService: UrlService) {} + constructor( + private urlService: UrlService, + private libraryItemsDataService: LibraryItemsDataService, + private fb: FormBuilder, + ) { + this.form = this.fb.group({ + search: this.fb.control(''), + types: this.buildTypes(), + }); + } ngOnInit() { this.subscription.add( this.urlService.URL$.subscribe(() => { this.currentSegment = this.urlService.getSegmentPath(1); - this.rootLink = `/developer/${this.currentSegment}/`; + this.rootLink = `/${UrlSegment.developer}/${this.currentSegment}/`; this.getCurrentArticleTitle(); }), ); + this.subscription.add( + this.libraryItemsDataService.getAllComponents().subscribe({ + next: (items) => { + this.items = this.itemsFiltered = items; + }, + error: (error) => error, + }), + ); } ngOnDestroy() { this.subscription.unsubscribe(); } + getLibraryItemType(itemType: number) { + return this.dependencyTypes[itemType].name; + } + + filterItems() { + const searchValue = this.form.get('search').value; + const typesSelected = this.form.get('types').value; + let filtered: LibraryItem[] = []; + filtered = this.items; + + if (!typesSelected[LibraryItemDependencyType.css]) { + filtered = filtered.filter((item) => item.dependencyType !== LibraryItemDependencyType.css); + } + if (!typesSelected[LibraryItemDependencyType.ngBootstrap]) { + filtered = filtered.filter( + (item) => item.dependencyType !== LibraryItemDependencyType.ngBootstrap, + ); + } + if (!typesSelected[LibraryItemDependencyType.fhiAngular]) { + filtered = filtered.filter( + (item) => item.dependencyType !== LibraryItemDependencyType.fhiAngular, + ); + } + filtered = filtered.filter((item) => { + return this.fuzzySearch(searchValue, item.title); + }); + this.itemsFiltered = filtered; + } + private getCurrentArticleTitle() { if (this.urlService.getSegmentPath(1) === UrlSegment.visualIdentity) { this.title = 'Visuell identitet i FHI'; @@ -43,4 +114,37 @@ export class ArticleComponent implements OnInit, OnDestroy { this.title = 'Komponenter'; } } + + private buildTypes() { + const array = this.dependencyTypes.map((type) => { + return this.fb.control(type.selected); + }); + return this.fb.array(array); + } + + private fuzzySearch(needle: string, haystack: string) { + const haystackLC = haystack.toLowerCase(); + const needleLC = needle.toLowerCase(); + + const hlen = haystack.length; + const nlen = needleLC.length; + + if (nlen > hlen) { + return false; + } + if (nlen === hlen) { + return needleLC === haystackLC; + } + outer: for (let i = 0, j = 0; i < nlen; i++) { + const nch = needleLC.charCodeAt(i); + + while (j < hlen) { + if (haystackLC.charCodeAt(j++) === nch) { + continue outer; + } + } + return false; + } + return true; + } } diff --git a/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html b/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html index 5b854bd4..f8949ecf 100644 --- a/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html +++ b/src/app/views/shared/dynamic-library-examples/dynamic-library-example.component.html @@ -1,42 +1,49 @@ @if (dataIsLoaded) {
    + + + + + + - + + + + - - - + + + + + + + + +
    No item group matches given id...
    } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/form-controls/form-controls.component.html b/src/app/views/shared/dynamic-library-examples/example-components/form-controls/form-controls.component.html index ab9bb9c1..bb700a6a 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/form-controls/form-controls.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/form-controls/form-controls.component.html @@ -56,11 +56,11 @@
    - -
    @@ -18,24 +18,3 @@
    - - diff --git a/src/app/views/shared/dynamic-library-examples/example-components/search/search.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/search/search.component.ts index 731dd288..451de7d2 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/search/search.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/search/search.component.ts @@ -264,15 +264,4 @@ export class SearchComponent { : countries.filter((v) => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 7), ), ); - - search2: OperatorFunction = (text$: Observable) => - text$.pipe( - debounceTime(200), - distinctUntilChanged(), - map((term) => - term.length < 2 - ? [] - : countries.filter((v) => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 7), - ), - ); } diff --git a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html index 438a0f07..e70ef4f0 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html +++ b/src/app/views/shared/dynamic-library-examples/example-components/tree-views/tree-views.component.html @@ -21,7 +21,7 @@ > - +
    { if (this._libraryItemGroupsShared !== undefined) { @@ -68,4 +74,16 @@ export class LibraryItemsDataService { const serverUrl = `${environment.apiBaseUrl}/${mockDataSetName}`; return this.http.get(serverUrl); } + + getAllComponents(): Observable { + if (this._allComponents !== undefined) { + return of(this._allComponents); + } + return this.http.get(this.AllComponentsData__URL).pipe( + tap((allComponents) => (this._allComponents = allComponents)), + catchError((error) => { + throw error; + }), + ); + } } From 1b195302e5c71bddb35c6f4713b7fe200b2b3a57 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Wed, 2 Oct 2024 13:45:10 +0200 Subject: [PATCH 51/52] Internal/update contributing (#707) * Update procedure for creating release branch for @folkehelseinstituttet/style and update title "Release branches for the Fhi.Frontend.Demo app" * Update procedure for creating release branches for library projects * Update procedure for releasing a patch to older version in a library project * Update procedure for creating deploy branches for the documentation site --- CONTRIBUTING.md | 113 +++++++++++++++++++++++++++++++----------------- 1 file changed, 74 insertions(+), 39 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d73acb19..e97c8c16 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,8 @@ So you're thinking about contributing to **Fhi.Frontend.Demo**, and or its submo - [Feature branches](#feature-branches-1) - [Release branches for library projects](#release-branches-for-library-projects) - [Release a patch to older version in a library project](#release-a-patch-to-older-version-in-a-library-project) - - [Release branches for the Fhi.Frontend.Demo app](#release-branches-for-the-fhifrontenddemo-app) + - [After release is done](#after-release-is-done) + - [Deploy branches for the documentation site](#deploy-branches-for-the-documentation-site) - [Coding conventions](#coding-conventions) - [CSS/SASS](#csssass) - [CSS architecture](#css-architecture) @@ -73,8 +74,8 @@ It is also a good idea to add a comment to an issue that you are working on to l ### Workflows -_These are just examples. Feel free to find workflows that suites you._ -_For more info about git submodules see: [https://git-scm.com/book/en/v2/Git-Tools-Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)_ +*These are just examples. Feel free to find workflows that suites you.* +*For more info about git submodules see: [https://git-scm.com/book/en/v2/Git-Tools-Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)* #### How to work on Fhi.Frontend.Style and Fhi.Frontend.Demo @@ -122,16 +123,29 @@ You can also use `ng generate directive|pipe|service|class|guard|interface|enum ##### Release branches +>**Before creating a release branch** +> +>- Check that the CHANGELOG.md is updated, and has "Unreleased" as latest version. +> +> If not; create a branch, fix, and create a new pull request. +> +>**If everything is OK; create a release branch** +> +>- When creating a release branch, follow the instructions below to the letter! + 1. Create a new branch from `main`. 2. Name it `release/x.x.x`, where `x.x.x` is the version you're releasing. -3. Change text `# Unreleased` to `# x.x.x` i `CHANGELOG.md` +3. Update CHANGELOG + 1. Change text `# Unreleased` to `# x.x.x` i CHANGELOG.md. + 2. Change the date below the version number to today. + 3. Check that all descriptions have a link to the PR at the end of the line. 4. Run `npm version [patch, minor, major]` to upgrade `package.json` and automatically create a new commit. -5. Push release branch and create pull request from release branch into `main` -6. After approved review, squash and merge to `main` (deploy), delete the release branch for the previous release, but keep the latest release branch. +5. Push release branch and create pull request from release branch into main. +6. After approved review, squash and merge to main (deploy), delete the release branch for the previous release, but keep the latest release branch. #### Fhi.Frontend.Demo, including library projects -_A library project is an Angular concept for organising code that are going to be made into a npm package. A library project is defined in `./angular.json`, and the files are located in `./projects/fhi-[project]`_ +*A library project is an Angular concept for organising code that are going to be made into a npm package. A library project is defined in `./angular.json`, and the files are located in `./projects/fhi-[project]`* ##### Feature branches @@ -145,7 +159,7 @@ _A library project is an Angular concept for organising code that are going to b > >- Check that all peerDependencies are updated >- Check that `@folkehelseinstituttet/*` is already released if listed in peerDependencies ->- Check that the dependency matrix is updated, and has "Unreleased" as latest version. +>- Check that the dependency matrix still is correct, and if it's updated since last release, that it has "Unreleased" as latest version. >- Check that the CHANGELOG.md is updated, and has "Unreleased" as latest version. > > If one or more of the checks above is not OK; create a branch, fix, and create a new pull request. @@ -156,42 +170,63 @@ _A library project is an Angular concept for organising code that are going to b 1. Create a new branch from `dev`. 2. Name it `release/fhi-[project]/x.x.x`, where `x.x.x` is the version you're releasing. -3. Update the following and commit: - 1. text `# Unreleased` to `# x.x.x` in the CHANGELOG for the project: `./projects/fhi-[project]/CHANGELOG.md` - 2. text `Unreleased` to `x.x.x` in the dependency matrix for the project: `./projects/fhi-[project]/README.md` (if a new line was added). - 3. version in `./projects/fhi-[project]/package.json` to `x.x.x` manually. - >_It's cumbersome to use `npm version` since `package.json` is in another directory than the git directory. And since there is no `package-lock.json`, and no need for a tag in the current workflow, doing it manually is faster. A better, and more automated, solution may come in the future._ -4. Create PR into `dev` from `release/fhi-[project]/x.x.x`, and when approved, make sure commit message is _Release/fhi-[project]/x.x.x_, and then merge (ie. deploy). - >_NB! Automated release job only runs if `Release/fhi-[project]/` is present in commit message since this isn't a release for everything in the repo, just a particular library._ +3. Update CHANGELOG + 1. Change text `# Unreleased` to `# x.x.x` i CHANGELOG.md. + 2. Change the date below the version number to today. + 3. Check that all descriptions have a link to the PR at the end of the line. +4. Update text `Unreleased` to `x.x.x` in the dependency matrix for the project: `./projects/fhi-[project]/README.md` (if a new line was added). +5. Update version in `./projects/fhi-[project]/package.json` to `x.x.x` manually. + >*It's cumbersome to use `npm version` since `package.json` is in another directory than the git directory. And since there is no `package-lock.json`, and no need for a tag in the current workflow, doing it manually is faster. A better, and more automated, solution may come in the future.* +6. Create PR into `dev` from `release/fhi-[project]/x.x.x`, and when approved, make sure commit message is *Release/fhi-[project]/x.x.x*, and then merge (ie. deploy). + +>*NB! Automated release job only runs if `Release/fhi-[project]/` is present in commit message since this isn't a release for everything in the repo, just a particular library.* ##### Release a patch to older version in a library project Almost same procedure as described under [Release branches for library projects](#release-branches-for-library-projects), but there are some minor differences: -1. Create a new branch from `fhi-[project]/vx`, where `X` is the major version you're patching (remember ref. to correct git submodule). -2. Name it `release/fhi-[project]/x.x.x`, where `x.x.x` is the version you're releasing. -3. Update the following and commit: - 1. Add `# x.x.x` in beginning of the CHANGELOG for the project: `./projects/fhi-[project]/CHANGELOG.md` - 2. Add and extra `#` to the previous version number. - 3. **NB!** when updating version in `./projects/fhi-[project]/package.json` to `x.x.x`, ALSO update `publishConfig.tag` to `v[x]` where `[x]` is the major version you're patching. -4. Create PR into `fhi-[project]/vx` from `release/fhi-[project]/x.x.x`, and when approved, make sure commit message is _Release/fhi-[project]/x.x.x_, and then merge (ie. deploy). -5. Create PR into `dev` from `release/fhi-[project]/x.x.x` to merge relevant changes from the patch back into `dev`, and when approved, make sure commit message is _Release/fhi-[project]/x.x.x_, and then merge AND delte branch `release`. - >_NB! This PR will probably have conflicts, so just merge `dev` into `release` before creating PR, and fix conflicts. Ask someone if in doubt about any conflicts, but here are a few things to remember when merging:_ - >1. **ALWAYS** merge changes to CHANGELOG (in chronological order based on date, not version) - >2. Sometimes merge changes to the code - >3. **NEVER** merge any changes to `publishConfig.tag` in `./projects/fhi-[project]/package.json` - >4. Remember correct git submodule ref. - -##### Release branches for the Fhi.Frontend.Demo app - -There is no need for a release branch, since the branch `dev` represents the "truth". Therefore we do not create a pull request with main as base either, we just: - -1. Check that `package.json` is up to date with the latest versions of `@folkehelseinstituttet/style` - - If not: create a feature branch named `enhancement/update-dependencies`, and fix it. - - Create PR, and merge `enhancement/update-dependencies` to `dev` when approved. -2. Merge `main` into `dev` and fix merge conflicts if any. -3. Merge `dev` into `main` -4. Push to origin (which will trigger the release) +1. If it doesn't already exist, create a branch from `dev` called `fhi-[project]/vx`, where `X` is the major version you're patching. +2. Create a new branch from `fhi-[project]/vx`, and fix bug (remember ref. to correct git submodule). +3. Merge bugfix back to `fhi-[project]/vx` +4. Create a new branch from `fhi-[project]/vx`. +5. Name it `release/fhi-[project]/x.x.x`, where `x.x.x` is the version you're releasing. +6. Update CHANGELOG + 1. Change text `# Unreleased` to `# x.x.x` i CHANGELOG.md. + 2. Change the date below the version number to today. + 3. Check that all descriptions have a link to the PR at the end of the line. +7. Update text `Unreleased` to `x.x.x` in the dependency matrix for the project: `./projects/fhi-[project]/README.md` (if a new line was added). +8. Update version in `./projects/fhi-[project]/package.json` to `x.x.x` manually. +9. **NB! Also update `publishConfig.tag` to `v[x]` where `[x]` is the major version you're patching.** +10. Create PR into `fhi-[project]/vx` from `release/fhi-[project]/x.x.x`, and when approved, make sure commit message is *Release/fhi-[project]/x.x.x*, and then merge (ie. deploy). + +###### After release is done + +Create PR into `dev` from `release/fhi-[project]/x.x.x` to merge relevant changes from the patch back into `dev`, and when approved, make sure commit message is *Changes from patch @folkehelseinstituttet/angular-[project]/v/x.x.x*, and then merge and delete branch `release`. + +>*NB! This PR will probably have conflicts, so just merge `dev` into `release` before creating PR, and fix conflicts. Ask someone if in doubt about any conflicts, but here are a few things to remember when merging:* +> +>1. **ALWAYS** merge changes to CHANGELOG (in chronological order based on date, not version), but change `# x.x.x` to `Unreleased`. +>2. Merge relevant changes to the code. +>3. **NEVER** merge any changes to `./projects/fhi-[project]/package.json`. +>4. Remember correct git submodule ref. + +##### Deploy branches for the documentation site + +>**Before creating a deploy branch** +> +>- Check that `package.json` is up to date with the latest versions of `@folkehelseinstituttet/style`. +> +> *PS. The angular-packages are not listet in `package.json` since they are always latest, buildt from source, not downloaded from npm registry unless you run script `build-prod`* +> +> If not; create a branch, fix, and create a new pull request. +> +> **If everything is OK; create a release branch** +> +>- When creating a release branch, follow the instructions below to the letter! + +1. Create a new branch from `main`, and call it `deploy/documentation-[yyy-mm-dd]`. +2. Merge `dev` into `deploy/documentation-[yyy-mm-dd]` and fix merge conflicts if any. +3. Create PR into `main` from `deploy/documentation-[yyy-mm-dd]`, and when approved, merge (ie. deploy). ## Coding conventions From bfa4965dd47b6a66b6d324049c4b3fc780b81541 Mon Sep 17 00:00:00 2001 From: Bernt Andersen Date: Tue, 8 Oct 2024 12:39:38 +0200 Subject: [PATCH 52/52] Enhancement/higcharts Add description also in full screen view (#710) --- .../src/lib/fhi-angular-highcharts.component.html | 3 +++ .../example-components/highcharts/highcharts.component.ts | 1 + 2 files changed, 4 insertions(+) diff --git a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html index 1ed41798..f7ce9cad 100644 --- a/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html +++ b/projects/fhi-angular-highcharts/src/lib/fhi-angular-highcharts.component.html @@ -86,6 +86,9 @@

    {{ diagramOptions.title }}

    Fullskjerm + @if (diagramOptions.description) { +

    {{ diagramOptions.description }}

    + }
    diff --git a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts index 08149c10..9421b099 100644 --- a/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts +++ b/src/app/views/shared/dynamic-library-examples/example-components/highcharts/highcharts.component.ts @@ -273,6 +273,7 @@ export class HighchartsComponent implements OnInit { this.getData(MockData.PrikkedeDataMedToSerier, { ...this.diagramOptions, activeDiagramType: 'line', + description: 'Her kan en legge til en beskrivelse av dataene.', title: this.titles.title_3e, units: undefined, footer: {