diff --git a/package.json b/package.json index fc99bb316..7826a9e0e 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@angular/core": "~17.2.2", "@angular/elements": "^17.2.2", "@angular/forms": "~17.2.2", + "@angular/material": "^17", "@angular/platform-browser": "~17.2.2", "@angular/platform-browser-dynamic": "~17.2.2", "@angular/router": "~17.2.2", @@ -122,6 +123,7 @@ "@angular-eslint/eslint-plugin-template": "17.2.1", "@angular-eslint/schematics": "17.2.1", "@angular-eslint/template-parser": "17.2.1", + "@angular/cdk": "^17", "@angular/cli": "~17.2.1", "@angular/compiler": "~17.2.2", "@angular/compiler-cli": "~17.2.2", diff --git a/src/app/shared/components/template/components/index.ts b/src/app/shared/components/template/components/index.ts index 8773b3cc4..858ff0a73 100644 --- a/src/app/shared/components/template/components/index.ts +++ b/src/app/shared/components/template/components/index.ts @@ -49,6 +49,7 @@ import { TmplRadioGroupComponent } from "./radio-group/radio-group.component"; import { TmplSimpleCheckboxComponent } from "./simple-checkbox/simple-checkbox.component"; import { TmplSliderComponent } from "./slider/slider.component"; import { TmplSubtitleComponent } from "./subtitle"; +import { TmplTableComponent } from "./table/table.component"; import { TmplTaskCardComponent } from "./task-card/task-card.component"; import { TmplTaskProgressBarComponent } from "./task-progress-bar/task-progress-bar.component"; import { TmplTextAreaComponent } from "./text-area/text-area.component"; @@ -113,6 +114,7 @@ export const TEMPLATE_COMPONENTS = [ TmplSimpleCheckboxComponent, TmplSliderComponent, TmplSubtitleComponent, + TmplTableComponent, TmplTaskCardComponent, TmplTaskProgressBarComponent, TmplTextAreaComponent, @@ -186,6 +188,7 @@ const COMMON_COMPONENT_MAPPING = { slider: TmplSliderComponent, square_button: SquareIconButtonComponent, subtitle: TmplSubtitleComponent, + table: TmplTableComponent, task_card: TmplTaskCardComponent, task_progress_bar: TmplTaskProgressBarComponent, text_area: TmplTextAreaComponent, diff --git a/src/app/shared/components/template/components/table/table.component.html b/src/app/shared/components/template/components/table/table.component.html new file mode 100644 index 000000000..10ab997e1 --- /dev/null +++ b/src/app/shared/components/template/components/table/table.component.html @@ -0,0 +1,11 @@ +
+ + + + + + + + +
{{ column }}{{ element[column] }}
+
diff --git a/src/app/shared/components/template/components/table/table.component.scss b/src/app/shared/components/template/components/table/table.component.scss new file mode 100644 index 000000000..d61e023fa --- /dev/null +++ b/src/app/shared/components/template/components/table/table.component.scss @@ -0,0 +1,9 @@ +.table-container { + width: 100%; + max-height: 80vh; + overflow: auto; + + tr[mat-header-row] { + background-color: var(--ion-background-color); + } +} diff --git a/src/app/shared/components/template/components/table/table.component.ts b/src/app/shared/components/template/components/table/table.component.ts new file mode 100644 index 000000000..58fee8258 --- /dev/null +++ b/src/app/shared/components/template/components/table/table.component.ts @@ -0,0 +1,82 @@ +import { + AfterViewInit, + ChangeDetectorRef, + Component, + computed, + effect, + OnInit, + ViewChild, +} from "@angular/core"; +import { TemplateBaseComponent } from "../base"; +import { FlowTypes } from "packages/data-models"; +import { getBooleanParamFromTemplateRow } from "src/app/shared/utils"; +import { AppDataService } from "src/app/shared/services/data/app-data.service"; +import { MatTableDataSource } from "@angular/material/table"; +import { MatSort } from "@angular/material/sort"; + +interface ITableParams { + /** TEMPLATE PARAMETER: show_id. Display the data lists's ID column in the table. Default false */ + showId: boolean; +} + +@Component({ + selector: "plh-table", + templateUrl: "./table.component.html", + styleUrls: ["./table.component.scss"], +}) +export class TmplTableComponent extends TemplateBaseComponent implements AfterViewInit { + params = computed(() => this.getParams(this.parameterList())); + dataRows = computed(() => this.getDataRowsFromValue(this.value())); + + columnsToDisplay = []; + dataSource: MatTableDataSource; + + @ViewChild(MatSort) sort: MatSort; + + constructor( + private appDataService: AppDataService, + private cdr: ChangeDetectorRef + ) { + super(); + effect(async () => { + const data = (await this.dataRows()) || []; + this.dataSource = new MatTableDataSource(data); + this.columnsToDisplay = this.getColumnsToDisplayFromData(data); + if (this.sort) { + this.dataSource.sort = this.sort; + } + this.cdr.detectChanges(); + }); + } + + ngAfterViewInit() { + if (this.dataSource) { + this.dataSource.sort = this.sort; + } + } + + private getParams(authorParams: FlowTypes.TemplateRow["parameter_list"]): ITableParams { + return { + showId: getBooleanParamFromTemplateRow(this._row, "show_id", false), + }; + } + + private async getDataRowsFromValue(dataListName: string) { + // TODO: handle data passed as @data format, and query dynamic data to return live data (see data-items handling) + if (typeof dataListName !== "string") { + console.log("[TABLE COMPONENT] Value must be a data list name string"); + return []; + } + const dataList = await this.appDataService.getSheet("data_list", dataListName); + return dataList?.rows; + } + + private getColumnsToDisplayFromData(data: FlowTypes.Data_listRow[]): string[] { + if (!data || !data.length) return []; + // Infer columns from first data row + const columnNames = Object.keys(data[0]); + return this.params().showId + ? columnNames + : columnNames.filter((columnName) => columnName !== "id"); + } +} diff --git a/src/app/shared/components/template/template.module.ts b/src/app/shared/components/template/template.module.ts index 918a499ec..c11a6a07d 100644 --- a/src/app/shared/components/template/template.module.ts +++ b/src/app/shared/components/template/template.module.ts @@ -7,6 +7,8 @@ import { NouisliderModule } from "ng2-nouislider"; import { RouterModule } from "@angular/router"; import { SwiperModule } from "swiper/angular"; import { NgxExtendedPdfViewerModule } from "ngx-extended-pdf-viewer"; +import { MatTableModule } from "@angular/material/table"; +import { MatSortModule } from "@angular/material/sort"; import { SharedPipesModule } from "../../pipes"; import { TooltipDirective } from "../common/directives/tooltip.directive"; @@ -26,14 +28,16 @@ import { DEMO_COMPONENTS } from "packages/components/demo"; imports: [ CommonModule, FormsModule, - ReactiveFormsModule, IonicModule, - SharedPipesModule, - NouisliderModule, LottieModule, + MatSortModule, + MatTableModule, + NgxExtendedPdfViewerModule, + NouisliderModule, + ReactiveFormsModule, RouterModule, + SharedPipesModule, SwiperModule, - NgxExtendedPdfViewerModule, TemplatePipesModule, ], exports: [ diff --git a/yarn.lock b/yarn.lock index 8da2a4c35..4806927b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -442,6 +442,23 @@ __metadata: languageName: node linkType: hard +"@angular/cdk@npm:^17": + version: 17.3.10 + resolution: "@angular/cdk@npm:17.3.10" + dependencies: + parse5: ^7.1.2 + tslib: ^2.3.0 + peerDependencies: + "@angular/common": ^17.0.0 || ^18.0.0 + "@angular/core": ^17.0.0 || ^18.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependenciesMeta: + parse5: + optional: true + checksum: 6296f816e2f0f8e160bc8a624ff16449a6e509315703bd6463ede2028eb6f3b7b2150b1f9c09ea9d74402d4f156b433f9e120147f0f2bc0e18f8524addcc3581 + languageName: node + linkType: hard + "@angular/cli@npm:~17.2.1": version: 17.2.1 resolution: "@angular/cli@npm:17.2.1" @@ -584,6 +601,70 @@ __metadata: languageName: node linkType: hard +"@angular/material@npm:^17": + version: 17.3.10 + resolution: "@angular/material@npm:17.3.10" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/auto-init": 15.0.0-canary.7f224ddd4.0 + "@material/banner": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/button": 15.0.0-canary.7f224ddd4.0 + "@material/card": 15.0.0-canary.7f224ddd4.0 + "@material/checkbox": 15.0.0-canary.7f224ddd4.0 + "@material/chips": 15.0.0-canary.7f224ddd4.0 + "@material/circular-progress": 15.0.0-canary.7f224ddd4.0 + "@material/data-table": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dialog": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/drawer": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/fab": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/floating-label": 15.0.0-canary.7f224ddd4.0 + "@material/form-field": 15.0.0-canary.7f224ddd4.0 + "@material/icon-button": 15.0.0-canary.7f224ddd4.0 + "@material/image-list": 15.0.0-canary.7f224ddd4.0 + "@material/layout-grid": 15.0.0-canary.7f224ddd4.0 + "@material/line-ripple": 15.0.0-canary.7f224ddd4.0 + "@material/linear-progress": 15.0.0-canary.7f224ddd4.0 + "@material/list": 15.0.0-canary.7f224ddd4.0 + "@material/menu": 15.0.0-canary.7f224ddd4.0 + "@material/menu-surface": 15.0.0-canary.7f224ddd4.0 + "@material/notched-outline": 15.0.0-canary.7f224ddd4.0 + "@material/radio": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/segmented-button": 15.0.0-canary.7f224ddd4.0 + "@material/select": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/slider": 15.0.0-canary.7f224ddd4.0 + "@material/snackbar": 15.0.0-canary.7f224ddd4.0 + "@material/switch": 15.0.0-canary.7f224ddd4.0 + "@material/tab": 15.0.0-canary.7f224ddd4.0 + "@material/tab-bar": 15.0.0-canary.7f224ddd4.0 + "@material/tab-indicator": 15.0.0-canary.7f224ddd4.0 + "@material/tab-scroller": 15.0.0-canary.7f224ddd4.0 + "@material/textfield": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tooltip": 15.0.0-canary.7f224ddd4.0 + "@material/top-app-bar": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.3.0 + peerDependencies: + "@angular/animations": ^17.0.0 || ^18.0.0 + "@angular/cdk": 17.3.10 + "@angular/common": ^17.0.0 || ^18.0.0 + "@angular/core": ^17.0.0 || ^18.0.0 + "@angular/forms": ^17.0.0 || ^18.0.0 + "@angular/platform-browser": ^17.0.0 || ^18.0.0 + rxjs: ^6.5.3 || ^7.4.0 + checksum: 27e32028ad4789b601057ead989b245a51cb2c62dd9d588a77d73786095b7ca13271867d092f2ab9646c570e9c6a583629c91fe9a593e21a7c8804acab56a8e4 + languageName: node + linkType: hard + "@angular/platform-browser-dynamic@npm:~17.2.2": version: 17.2.2 resolution: "@angular/platform-browser-dynamic@npm:17.2.2" @@ -5667,6 +5748,808 @@ __metadata: languageName: node linkType: hard +"@material/animation@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/animation@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + tslib: ^2.1.0 + checksum: 6a609b6a061ddb7129654ee04385fe58436d3739c8b45f135b70d07774333e4e9189dd7f966387559ef91f2cbc50ef78fa9ae77c1c40804c4654125e2ea4cd56 + languageName: node + linkType: hard + +"@material/auto-init@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/auto-init@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: f5170a79e04b1dfcfca0eb0793f92a2dd273bd6f1137fa846bf59ee7649f1718e54095813f199cc58205c2146f84075ed2f5e410e9d058c8b3d16a58fcb34629 + languageName: node + linkType: hard + +"@material/banner@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/banner@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/button": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 685ea4af918868aafeb391914f3a24248e1d4dba50ecc686a79ff442ab07e17b8c6a35837ce821973aa1ad37f0eb7e03fa7e96eef8e2f2a56326dab083413484 + languageName: node + linkType: hard + +"@material/base@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/base@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + tslib: ^2.1.0 + checksum: d7c63f5aa3e009a49a9a7aa9316fd2b9ec00261804d8ee6a4b9ab1970d5a0cf263d5cbd8f145c76d491a498077e5873d73d0dad95281ce1f258d2147a411ba04 + languageName: node + linkType: hard + +"@material/button@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/button@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 5da2485e72cb25b824ccd89c919f2c0c73aa2e6699f75e07dd5383f8f9d45cce1ac3f4a88e6265027881ff2bc3c358bc8cdd921e0f9f62d4964cdd5f8c3f0d2d + languageName: node + linkType: hard + +"@material/card@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/card@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: e2298ad9871e409f84d3ef8be896067e6bc74c12128b93de3ebb6955e34a688232a4cf2d19f42994e4e186b4405656cd5bdb2666a98c1e80265a55dc0e4a78de + languageName: node + linkType: hard + +"@material/checkbox@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/checkbox@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 9f22b4e1acadb7c259d45d5aa8b4e1030e8f5f019bf33e7a8dac4da11d1a0199cba8643774fec9fc159d4a5969635c760f60b12ca503e41ada51324f0a018785 + languageName: node + linkType: hard + +"@material/chips@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/chips@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/checkbox": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + safevalues: ^0.3.4 + tslib: ^2.1.0 + checksum: 8b93a16d573cb21f8faa9e9a7df5cf19286885f27052cf15fe470f0357e5f27a650a5932cb500a7ff508a25d0cd32284ded391c676a2efa43e4bb6d9f6ff2a56 + languageName: node + linkType: hard + +"@material/circular-progress@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/circular-progress@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/progress-indicator": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 9ef8b8d054fc1bbebe83fad8257f5b9451c5c766d9381c1de4f2f97063853826d456867b59738cdc24566109893c6c791673c99a7523a14e3a442252e4bd1364 + languageName: node + linkType: hard + +"@material/data-table@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/data-table@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/checkbox": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/icon-button": 15.0.0-canary.7f224ddd4.0 + "@material/linear-progress": 15.0.0-canary.7f224ddd4.0 + "@material/list": 15.0.0-canary.7f224ddd4.0 + "@material/menu": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/select": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: f52ab3b7277df13d83456a7989ead1adbb75fb5cf20794d4a32d5c9c1ecd855bad7966cae8e015bd3aa17d0d9feb092e860ecd80a58c0d2c30ffaeb2aaf27780 + languageName: node + linkType: hard + +"@material/density@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/density@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + tslib: ^2.1.0 + checksum: 786737d13c06ea117750bb69b080c98503a55fc1eedc01bb66a4ef743f2b19a64a649ee97d3c39578657dfa2a440363c107723e4ce886e0fe1714d51a7d86581 + languageName: node + linkType: hard + +"@material/dialog@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/dialog@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/button": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/icon-button": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 5673ca46926a56dc2c7ca78db785fb3e8c34ce661d8d159cebbf568c9eeaffac3572b73f1cdcf65a200c8d19a77a8f4041e16fe93d5ff4679e8280ac50d6105b + languageName: node + linkType: hard + +"@material/dom@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/dom@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 17e7bf5d10b7da70e4c37d9ab03ed3fec65a9c24489623cd84a3cfdfe7aea746c81eb8364e4fc76fcca559a154cf50e886298534bc217e71a044ff530c8823ca + languageName: node + linkType: hard + +"@material/drawer@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/drawer@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/list": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 9804e8ea6cce7a9e02b9a4b70c308381305885a0234a798c21e96ca3010314c768ed0793598427eadee3d6e0a49f23808d1aeeb1a4ef999da4f801cb3672516f + languageName: node + linkType: hard + +"@material/elevation@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/elevation@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: bd7be7a3001b9f7eaf181749a174d0c4fa2a0edc47cfa5c41b9464ed9684aca81f91c12321a9c2016d2b026815e5db8fbe3e35a4f86c9c36314ab0e26b2c51d5 + languageName: node + linkType: hard + +"@material/fab@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/fab@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 2f0bb32b8692d1ec019cb2eb303188d6ac4db8e8e18c56805bc05ff3ea702586e41ca3d90d2be6304caa42bdfca92bb32a52439dcad46b74a1dc4890a245aa8e + languageName: node + linkType: hard + +"@material/feature-targeting@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/feature-targeting@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + tslib: ^2.1.0 + checksum: 35b5af45da287f09692e3e9a773a7fa56b833bf6826b87fea057d5db1f881b1429d0b2590f3ed4906f40a26c7fa7a8e85694b01fec428b1f6753751be9372f43 + languageName: node + linkType: hard + +"@material/floating-label@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/floating-label@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 6972844eff67082aee543e4f62ffe5de316cdc7e1cdecb4a463112fc8f29c7cb1d536edad0f75ed0bbf43bc04c10b40a7b2a175f881441c685d0236ff8dadcba + languageName: node + linkType: hard + +"@material/focus-ring@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/focus-ring@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + checksum: f6504817ed0dc4018a21d7ab2b634f5c3f9709e69fa7db0ed65a0dcf7886b79446aee3b645f5c37babe74db7df6ba78b679140580c9ef4ae37a23f9a0ff62f36 + languageName: node + linkType: hard + +"@material/form-field@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/form-field@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 4a5d1c9ba68f3e910d610dc33786ee4665875ca69b34f8ba9ec4e4fbd51dec64b61c84f42b61ecd4dcfa3d806c0481d8c680e89642954ff7c423fb277da7618b + languageName: node + linkType: hard + +"@material/icon-button@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/icon-button@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: ac25cd491f3b088e0d8a39d4e9f0eb3f7d6c0322525b9c46771c8570864b2748a88f07e9a7b0aa2c3523c15eeadf02c1e04ca43ef19f010f7581488cd8592ec9 + languageName: node + linkType: hard + +"@material/image-list@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/image-list@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: de59f39589397158c1b0838a88ebb39deeeef6f6fab8484e5040cb1a1770568fccc033ea54068beeafa527bfe746d1ec3e159226ddaa48d3fd4a70f38ddb042c + languageName: node + linkType: hard + +"@material/layout-grid@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/layout-grid@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + tslib: ^2.1.0 + checksum: 50f4f73db972765694560fca756b21e1c259f1af42d1e62b166c0d851e768a0275ade2a1c49eec7c9c5ff502b60afe70ed828d8aff209b1c7b4492b615745ea8 + languageName: node + linkType: hard + +"@material/line-ripple@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/line-ripple@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: fb644db4649766e58969c6e70a9cbe60758060b71f1b620fa520e251f7cc326d4d0921e2f4e4edc2adcc41de3045657f8c62e3b9806776afad9126acc8d92a29 + languageName: node + linkType: hard + +"@material/linear-progress@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/linear-progress@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/progress-indicator": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 839b8334f04e8592e19c712b97787e124f4a9f6a9fc98a833a97e38b7a2fb152deeafcb0ea4df4eea5cc4e3b482fd0f40078c026b4f28a67a61f52d44ef8991b + languageName: node + linkType: hard + +"@material/list@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/list@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: c9a2014049f2cf8da122fc5f6c94f7aa9201a6afc27bf3efcd354deb01d0c0283679782c8425710a836ad30a44f17f3f2c65ff4948b9ad5025773670fb2705ef + languageName: node + linkType: hard + +"@material/menu-surface@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/menu-surface@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: abaf9a36b7989a91c317fb40ca34365c14714a09fd106d5d1993814b51a671d8919b359814265859b8e3fe44eccabda136c0814040468ea0c513219c1c454409 + languageName: node + linkType: hard + +"@material/menu@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/menu@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/list": 15.0.0-canary.7f224ddd4.0 + "@material/menu-surface": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: b67d9e0f90982e888b53587172a4cef6f7cfc168f32892d2e934be2f37f864682174ae22f15d72c6671dd00907f1d7c883a3596f8e6800be2b55747320f5d9c6 + languageName: node + linkType: hard + +"@material/notched-outline@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/notched-outline@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/floating-label": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 9be004c2ed5d5d406a176a4798ee78382966950f7c55b0dd01b3be0bd8ef9b09ddf49c79a5073e408dacf3bdfc606e599af05301a6d2b2f97ba9c3d8da7bea62 + languageName: node + linkType: hard + +"@material/progress-indicator@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/progress-indicator@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + tslib: ^2.1.0 + checksum: 9a3e24bc9874b62d3a15392f81ea77f9ed0920f243eaa584bb1cea3a239df8894aca75fc2af8dd7b64610a1567b49f3c85902f66b346d483ac13ddac83ff7af5 + languageName: node + linkType: hard + +"@material/radio@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/radio@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: a9c13a1d67d750812e05d795dc09e57a3a17872e882b09839c9fa4ef485cda751734d051748170349d3435aec39a3b785cff05f2952ac2d0f0ec49ba835815e5 + languageName: node + linkType: hard + +"@material/ripple@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/ripple@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 6e6d32cfd13562a9361825865662c26a0907c0bda2998ccfbc87308001342f430085a8a0e32c136b74b4a96d23721874ca41941d146515dae60f449ed24eaa1b + languageName: node + linkType: hard + +"@material/rtl@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/rtl@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: e52961257872ed7b54eae6c8abf64b95d39738ae41b5fe806b0c4589c0e0974afcbecf08b9b0fe32bb0c45e5ca5a552ab7b9141c95a5eab9f5673ab0fd17d6a4 + languageName: node + linkType: hard + +"@material/segmented-button@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/segmented-button@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/touch-target": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 6bffd887d9b262e8beb6ae7b38cb8987243d1044909a181f9e556f07cc8d4d596d1a52f53b3f837d6b887983d0cb2c42c6ad1eacf04b6dee5ad4bee5a905ac52 + languageName: node + linkType: hard + +"@material/select@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/select@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/floating-label": 15.0.0-canary.7f224ddd4.0 + "@material/line-ripple": 15.0.0-canary.7f224ddd4.0 + "@material/list": 15.0.0-canary.7f224ddd4.0 + "@material/menu": 15.0.0-canary.7f224ddd4.0 + "@material/menu-surface": 15.0.0-canary.7f224ddd4.0 + "@material/notched-outline": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: df25879c400a1a3fcfda74e4c609394f37cdcdfc8255908bcd69a655eabfe45c7ed0abb024f27ecda478b9a5bddef0f20c1fba88269f536fa48bb5a5b584c8fa + languageName: node + linkType: hard + +"@material/shape@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/shape@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: e1847ab1251e530895878ec0bea5758c0f6af46d7f2f02df70137f14f1d45cb95432790e1113e5d559d8c7e7355bfc81a332f516e5b044a39e83555e52421b88 + languageName: node + linkType: hard + +"@material/slider@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/slider@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 4898f1a7462569ddc7459bfec7cfb405f8e095ff5c9cc584a105be2458130a8665f7cf9f082907b25b04ea91f5214458ff4265ae9bb87cace27fe78505771d86 + languageName: node + linkType: hard + +"@material/snackbar@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/snackbar@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/button": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/icon-button": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 8e1775fe094badccf87342d5a8d10ee87e7831d98c15b85d0737b68ff07211cf43dda421e4f51b5358e9892e4a5a5c6b08f9001c6459bf5823e05fb9a91c7a55 + languageName: node + linkType: hard + +"@material/switch@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/switch@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + safevalues: ^0.3.4 + tslib: ^2.1.0 + checksum: 3194cb1b94b6de5eaece5e963a062f73731e2ee68aea2f617e493452e9dd8a68867d5fac9922184f25d178063c109bc0d9a6fc239f6f1d5e45e35c223647cef1 + languageName: node + linkType: hard + +"@material/tab-bar@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/tab-bar@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/tab": 15.0.0-canary.7f224ddd4.0 + "@material/tab-indicator": 15.0.0-canary.7f224ddd4.0 + "@material/tab-scroller": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: b9e34b4344b65734f76c40dcffc231b9b562138d2937c4eceefb3810899728c717305557b61d67ff59abdab51e7352c8028f0201f292ca6f208ba5e6e437d1c8 + languageName: node + linkType: hard + +"@material/tab-indicator@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/tab-indicator@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 7ac4826699f20ea4ee99d1a803469597421b4dd83699ac883f6f9b9ef233617b614e1663c141f20ea7408e7dc131ac1ad6d0df3c7369f271d334d1b89b69b63c + languageName: node + linkType: hard + +"@material/tab-scroller@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/tab-scroller@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/tab": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: b5faf3525102d8e2c226a8b822e5b7910877ed6ca614ab4594b76b7cb3c6a9497e351d42d635d3f8c9490c3219f52e3ce672b058f7ad41b955d36137f7c32090 + languageName: node + linkType: hard + +"@material/tab@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/tab@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/focus-ring": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/tab-indicator": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: d200cb4ace1fc77c3153d843bfd727ddf1866fba870bafd8d063193253b3db238d9d857c127082a9bc95af2c104910359878e4d94a2459e03d6bfd8a6b9d2734 + languageName: node + linkType: hard + +"@material/textfield@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/textfield@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/density": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/floating-label": 15.0.0-canary.7f224ddd4.0 + "@material/line-ripple": 15.0.0-canary.7f224ddd4.0 + "@material/notched-outline": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: 3c3c71c2f49649b4ceff2f90795f5c4995e2d257142c037583144f79c0dc7f809f5d06054a49fae45a5692885b6ec63d6e381d0290aa95d3153b41df2c4cc08e + languageName: node + linkType: hard + +"@material/theme@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/theme@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: f24a74db1e2d21d3dcd271d0c909a38b873ca1c9d9daa26d55089e7b5fd4faa9a561d9079fd48a9a3758e53c8c6508d3f94b00cf06ef7141892f0226fba9654c + languageName: node + linkType: hard + +"@material/tokens@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/tokens@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + checksum: b99f8f02173fe35d57f84907afdd7027cd28b5aa19da82b635f4cd28749429858fa668a2b87edfe5b99a5ba7fae77472b77234181f15770bbd5f6c598c69f9f7 + languageName: node + linkType: hard + +"@material/tooltip@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/tooltip@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/button": 15.0.0-canary.7f224ddd4.0 + "@material/dom": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/tokens": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + safevalues: ^0.3.4 + tslib: ^2.1.0 + checksum: bee7df6a10cf3d48f0c063ac934c23b2774d1acf8cf0a6f866988ee18d59303ccfa43058dbeae892ddf89a39d5759a2d8d722613ba7b1f25abb05d83e0af3824 + languageName: node + linkType: hard + +"@material/top-app-bar@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/top-app-bar@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/animation": 15.0.0-canary.7f224ddd4.0 + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/elevation": 15.0.0-canary.7f224ddd4.0 + "@material/ripple": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/shape": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + "@material/typography": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: ec253ba16be06662b33c83966a99428b2919abd518f63ac6558e1999c4e27f0c4ea5d0be8411aa02a031722b473c4ce94d814ae9cca88d245264d9ac87b434d3 + languageName: node + linkType: hard + +"@material/touch-target@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/touch-target@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/base": 15.0.0-canary.7f224ddd4.0 + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/rtl": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: faa1770c70d1463cfb1b7dbf4e3f3f932334331dfaf2016355407d4e760d7568431d69b177f2ef9200e891fcd7d00c5272fd1a71bd5689e8a66449bc1482630a + languageName: node + linkType: hard + +"@material/typography@npm:15.0.0-canary.7f224ddd4.0": + version: 15.0.0-canary.7f224ddd4.0 + resolution: "@material/typography@npm:15.0.0-canary.7f224ddd4.0" + dependencies: + "@material/feature-targeting": 15.0.0-canary.7f224ddd4.0 + "@material/theme": 15.0.0-canary.7f224ddd4.0 + tslib: ^2.1.0 + checksum: c5c8bee1f898211288b14f4b24846192ce508c77f4f5921c7f596192e8cb984ab8b3e8038cc49dbc4c646fd859d99b9484eaa6e064bd6a0d02a0cc40ec28b8e6 + languageName: node + linkType: hard + "@mongodb-js/saslprep@npm:^1.1.0": version: 1.1.4 resolution: "@mongodb-js/saslprep@npm:1.1.4" @@ -13486,7 +14369,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": +"entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 @@ -15624,6 +16507,7 @@ __metadata: "@angular-eslint/schematics": 17.2.1 "@angular-eslint/template-parser": 17.2.1 "@angular/animations": ^17.2.2 + "@angular/cdk": ^17 "@angular/cli": ~17.2.1 "@angular/common": ~17.2.2 "@angular/compiler": ~17.2.2 @@ -15632,6 +16516,7 @@ __metadata: "@angular/elements": ^17.2.2 "@angular/forms": ~17.2.2 "@angular/language-service": ~17.2.2 + "@angular/material": ^17 "@angular/platform-browser": ~17.2.2 "@angular/platform-browser-dynamic": ~17.2.2 "@angular/router": ~17.2.2 @@ -22375,6 +23260,15 @@ __metadata: languageName: node linkType: hard +"parse5@npm:^7.1.2": + version: 7.2.1 + resolution: "parse5@npm:7.2.1" + dependencies: + entities: ^4.5.0 + checksum: 11253cf8aa2e7fc41c004c64cba6f2c255f809663365db65bd7ad0e8cf7b89e436a563c20059346371cc543a6c1b567032088883ca6a2cbc88276c666b68236d + languageName: node + linkType: hard + "parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -24428,6 +25322,13 @@ __metadata: languageName: node linkType: hard +"safevalues@npm:^0.3.4": + version: 0.3.4 + resolution: "safevalues@npm:0.3.4" + checksum: 45f30fbbca4ce17157876e429857a28479a48898c92d7f97924623a32cf5996def99f40ba5e32b244b668576f7e3f908004d21f9ed9d47558aaad4003f51e85c + languageName: node + linkType: hard + "sass-loader@npm:14.1.0": version: 14.1.0 resolution: "sass-loader@npm:14.1.0"