@mxtommy/kip 3.9.0-beta.2 → 3.9.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +1 -1
- package/.github/instructions/angular.instructions.md +46 -0
- package/README.md +49 -12
- package/package.json +2 -4
- package/public/3rdpartylicenses.txt +77 -77
- package/public/app-help.component.css.map +7 -0
- package/public/app.component.css.map +7 -0
- package/public/assets/help-docs/configuration.md +4 -4
- package/public/assets/help-docs/dashboards.md +4 -2
- package/public/assets/svg/icons.svg +1 -1
- package/public/boolean-control-config.component.css.map +7 -0
- package/public/boolean-multicontrol-options.component.css.map +7 -0
- package/public/chunk-3EWIS24B.js +5237 -0
- package/public/chunk-3EWIS24B.js.map +1 -0
- package/public/chunk-3VR3EA35.js +1022 -0
- package/public/chunk-3VR3EA35.js.map +1 -0
- package/public/chunk-63ILPRXC.js +2091 -0
- package/public/chunk-63ILPRXC.js.map +1 -0
- package/public/chunk-65ZWQBS6.js +3102 -0
- package/public/chunk-65ZWQBS6.js.map +1 -0
- package/public/chunk-B3LKEWZP.js +4950 -0
- package/public/chunk-B3LKEWZP.js.map +1 -0
- package/public/chunk-BIBIW64D.js +16773 -0
- package/public/chunk-BIBIW64D.js.map +1 -0
- package/public/chunk-BM53SC5N.js +77 -0
- package/public/chunk-BM53SC5N.js.map +7 -0
- package/public/chunk-D7ILNFDM.js +3059 -0
- package/public/chunk-D7ILNFDM.js.map +1 -0
- package/public/chunk-E24UNLSJ.js +2228 -0
- package/public/chunk-E24UNLSJ.js.map +1 -0
- package/public/chunk-J42S2ELC.js +5927 -0
- package/public/chunk-J42S2ELC.js.map +1 -0
- package/public/chunk-KC22A6VH.js +17 -0
- package/public/chunk-KC22A6VH.js.map +7 -0
- package/public/chunk-MCEJWZB2.js +116 -0
- package/public/chunk-MCEJWZB2.js.map +1 -0
- package/public/chunk-NBF6SE6O.js +89 -0
- package/public/chunk-NBF6SE6O.js.map +7 -0
- package/public/chunk-QC7VGVAR.js +343 -0
- package/public/chunk-QC7VGVAR.js.map +7 -0
- package/public/chunk-SDOP6T56.js +42377 -0
- package/public/chunk-SDOP6T56.js.map +1 -0
- package/public/chunk-U2DCSTRY.js +159 -0
- package/public/chunk-U2DCSTRY.js.map +7 -0
- package/public/chunk-UHVNAEXC.js +4752 -0
- package/public/chunk-UHVNAEXC.js.map +1 -0
- package/public/chunk-UQYTD5AC.js +2723 -0
- package/public/chunk-UQYTD5AC.js.map +1 -0
- package/public/chunk-XSABJ5NZ.js +272 -0
- package/public/chunk-XSABJ5NZ.js.map +7 -0
- package/public/chunk-Y6N6O2IP.js +19852 -0
- package/public/chunk-Y6N6O2IP.js.map +1 -0
- package/public/chunk-YGJLBLOX.js +2708 -0
- package/public/chunk-YGJLBLOX.js.map +1 -0
- package/public/chunk-YT33DHC3.js +591 -0
- package/public/chunk-YT33DHC3.js.map +7 -0
- package/public/chunk-YZXYVP72.js +4934 -0
- package/public/chunk-YZXYVP72.js.map +1 -0
- package/public/chunk-ZEHRDSTB.js +13727 -0
- package/public/chunk-ZEHRDSTB.js.map +1 -0
- package/public/config.component.css.map +7 -0
- package/public/dashboard-scroller.component.css.map +7 -0
- package/public/dashboard.component.css.map +7 -0
- package/public/dashboards-editor.component.css.map +7 -0
- package/public/data-inspector-row.component.css.map +7 -0
- package/public/data-inspector.component.css.map +7 -0
- package/public/dataset-chart-options.component.css.map +7 -0
- package/public/datasets.component.css.map +7 -0
- package/public/dialog-confirmation.component.css.map +7 -0
- package/public/dialog-dashboard-page-editor.component.css.map +7 -0
- package/public/dialog-frame.component.css.map +7 -0
- package/public/dialog-name.component.css.map +7 -0
- package/public/display-chart-options.component.css.map +7 -0
- package/public/display.component.css.map +7 -0
- package/public/gauge-steel.component.css.map +7 -0
- package/public/home.component.css.map +7 -0
- package/public/index.html +19 -17
- package/public/main.js +36423 -0
- package/public/main.js.map +1 -0
- package/public/menu-actions.component.css.map +7 -0
- package/public/menu-notifications.component.css.map +7 -0
- package/public/minichart.component.css.map +7 -0
- package/public/modal-user-credential.component.css.map +7 -0
- package/public/modal-widget-config.component.css.map +7 -0
- package/public/notification-badge.component.css.map +7 -0
- package/public/page-header.component.css.map +7 -0
- package/public/path-control-config.component.css.map +7 -0
- package/public/paths-options.component.css.map +7 -0
- package/public/polyfills.js +4422 -0
- package/public/polyfills.js.map +1 -0
- package/public/select-autopilot.component.css.map +7 -0
- package/public/select-icon.component.css.map +7 -0
- package/public/settings.component.css.map +7 -0
- package/public/signalk.component.css.map +7 -0
- package/public/styles.css +1651 -0
- package/public/styles.css.map +7 -0
- package/public/svg-autopilot.component.css.map +7 -0
- package/public/svg-racesteer.component.css.map +7 -0
- package/public/svg-simple-linear-gauge.component.css.map +7 -0
- package/public/svg-windsteer.component.css.map +7 -0
- package/public/tile-large-icon.component.css.map +7 -0
- package/public/units.component.css.map +7 -0
- package/public/upgrade-config.component.css.map +7 -0
- package/public/widget-autopilot.component.css.map +7 -0
- package/public/widget-boolean-switch.component.css.map +7 -0
- package/public/widget-datetime.component.css.map +7 -0
- package/public/widget-freeboardsk.component.css.map +7 -0
- package/public/widget-gauge-ng-compass.component.css.map +7 -0
- package/public/widget-gauge-ng-linear.component.css.map +7 -0
- package/public/widget-gauge-ng-radial.component.css.map +7 -0
- package/public/widget-gauge-steel.component.css.map +7 -0
- package/public/widget-horizon.component.css.map +7 -0
- package/public/widget-host.component.css.map +7 -0
- package/public/widget-iframe.component.css.map +7 -0
- package/public/widget-label.component.css.map +7 -0
- package/public/widget-list-card.component.css.map +7 -0
- package/public/widget-numeric.component.css.map +7 -0
- package/public/widget-position.component.css.map +7 -0
- package/public/widget-race-timer.component.css.map +7 -0
- package/public/widget-racer-line.component.css.map +7 -0
- package/public/widget-racer-timer.component.css.map +7 -0
- package/public/widget-simple-linear.component.css.map +7 -0
- package/public/widget-slider.component.css.map +7 -0
- package/public/widget-text.component.css.map +7 -0
- package/public/widget-title.component.css.map +7 -0
- package/public/widget-tutorial.component.css.map +7 -0
- package/public/widgets-list.component.css.map +7 -0
- package/public/assets/hammer.min.js +0 -7
- package/public/chunk-2YVW3TBK.js +0 -2
- package/public/chunk-35L7BBBD.js +0 -15
- package/public/chunk-3LEMFOCV.js +0 -3
- package/public/chunk-3LJAKLLW.js +0 -1
- package/public/chunk-4JJLPUET.js +0 -60
- package/public/chunk-CBUY7NMR.js +0 -2
- package/public/chunk-CQXWGD3T.js +0 -2
- package/public/chunk-EUFDL4TJ.js +0 -6
- package/public/chunk-FBFTGVZ6.js +0 -1
- package/public/chunk-HCXH72CD.js +0 -5
- package/public/chunk-JY3WVS7C.js +0 -2
- package/public/chunk-KTDDP73O.js +0 -2
- package/public/chunk-NMEZOCU2.js +0 -1
- package/public/chunk-NS2FPVWM.js +0 -4
- package/public/chunk-OSYHJB4F.js +0 -11
- package/public/chunk-PKNLASTF.js +0 -4
- package/public/chunk-Q2Y75POI.js +0 -1
- package/public/chunk-RRTCHHRC.js +0 -3
- package/public/chunk-TA4GACKT.js +0 -4
- package/public/chunk-TXPLRBW5.js +0 -2
- package/public/chunk-VHFBF47T.js +0 -1
- package/public/chunk-VYUMZVH2.js +0 -2
- package/public/chunk-XRGAX4LS.js +0 -2
- package/public/chunk-YNJRIFUM.js +0 -1
- package/public/chunk-ZBCOJLI4.js +0 -6
- package/public/main-XM5EHMUE.js +0 -50
- package/public/polyfills-KH22MU6U.js +0 -2
- package/public/styles-RECKN66R.css +0 -1
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP-ILKS6RVC.woff2 → KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ-MJ3CERJ6.woff2 → KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP-UW3XWY7P.woff2 → KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP-U3JTBV4H.woff2 → KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP-36ULTGLY.woff2 → KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP-5NJLO2HW.woff2 → KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP-2EL65J2O.woff2 → KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP-XWLWMQVU.woff2 → KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ-PWGJWDFE.woff2 → KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP-ITB7NUJC.woff2 → KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP-32PLHKPQ.woff2 → KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP-QPSNQEDD.woff2 → KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP-JKBSJZY3.woff2 → KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP-OG5AHRIX.woff2 → KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz-PPTELUJT.woff2 → KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4mxKKTU1Kg-SNGEW7FX.woff2 → KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz-DRL4U32S.woff2 → KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu72xKKTU1Kvnz-PRJ7OQMU.woff2 → KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz-HW6RMPJ3.woff2 → KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz-KZD6JQRT.woff2 → KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz-Z72STTMG.woff2 → KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-CN2J7AYH.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/app/core/components/settings/units/units.component.ts","src/app/core/components/settings/units/units.component.html","node_modules/@angular/cdk/fesm2022/accordion.mjs","node_modules/@angular/material/fesm2022/expansion.mjs","node_modules/@angular/material/fesm2022/slide-toggle.mjs","src/app/core/components/settings/notifications/notifications.component.ts","src/app/core/components/settings/notifications/notifications.component.html","node_modules/chart.js/auto/auto.js","src/app/core/components/settings/signalk/signalk.component.ts","src/app/core/components/settings/signalk/signalk.component.html","node_modules/@angular/material/fesm2022/slider.mjs","src/app/core/components/settings/display/display.component.ts","src/app/core/components/settings/display/display.component.html","src/app/core/components/settings/configuration/config.component.ts","src/app/core/components/settings/configuration/config.component.html","src/app/core/components/settings/settings/settings.component.ts","src/app/core/components/settings/settings/settings.component.html"],"sourcesContent":["import { Component, OnInit, inject } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AppSettingsService } from '../../../services/app-settings.service';\nimport { AppService } from '../../../services/app-service';\nimport { IUnitDefaults, UnitsService, IUnit } from '../../../services/units.service';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { KeyValuePipe } from '@angular/common';\n\n@Component({\n selector: 'settings-units',\n templateUrl: './units.component.html',\n styleUrls: ['./units.component.scss'],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatSelect, MatOption, MatDivider, MatButton, KeyValuePipe]\n})\nexport class SettingsUnitsComponent implements OnInit {\n private units = inject(UnitsService);\n private appSettingsService = inject(AppSettingsService);\n private appService = inject(AppService);\n\n public unitsFormGroup = new UntypedFormGroup({});\n protected groupUnits: Record<string, IUnit>[] = [];\n\n ngOnInit() {\n const unitsSettings: IUnitDefaults = this.appSettingsService.getDefaultUnits();\n // Format unit group data a bit better for consumption in template\n const unitGroupsRaw = this.units.getConversions();\n\n for (const groupRaw of unitGroupsRaw) {\n if (groupRaw.group === \"Position\") continue; // Skip the iteration when key is \"Position\" as it's not a valid unit group as-is. We need to use position Objects instead. Then we can set format properly.\n const units = [];\n\n for (const unit of groupRaw.units) {\n units.push(unit);\n }\n this.groupUnits[groupRaw.group] = units;\n // Generate formGroup\n this.unitsFormGroup.addControl(groupRaw.group, new UntypedFormControl(unitsSettings[groupRaw.group]));\n }\n this.unitsFormGroup.updateValueAndValidity();\n }\n\n submitConfig() {\n this.appSettingsService.setDefaultUnits(this.unitsFormGroup.value);\n this.appService.sendSnackbarNotification(\"Configuration saved\", 3000, false);\n }\n}\n","<form (ngSubmit)=\"submitConfig()\" [formGroup]=\"unitsFormGroup\" style=\"height: 100%;\">\n <p>Configure your preferred default unit types. These defaults can be overridden\n within individual widget settings.</p>\n <div class=\"unit-grid\">\n @for(control of unitsFormGroup.controls | keyvalue; track control.key) {\n <mat-form-field>\n <mat-label>{{control.key}}</mat-label>\n <mat-select\n [placeholder] = \"control.key\"\n [formControlName] = \"control.key\"\n required>\n @for(unit of groupUnits[control.key]; track unit.measure) {\n <mat-option [value]=\"unit.measure\" >{{ unit.description }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n </div>\n <div class=\"formActionFooter\">\n <mat-divider class=\"formActionDivider\"></mat-divider>\n <button mat-flat-button class=\"formActionButton\" type=\"submit\" [disabled]=\"!unitsFormGroup.valid\">Save</button>\n </div>\n</form>\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, booleanAttribute, Directive, Input, ChangeDetectorRef, EventEmitter, signal, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { _ as _IdGenerator } from './id-generator-LuoRZSid.mjs';\nimport { U as UniqueSelectionDispatcher } from './unique-selection-dispatcher-Cewa_Eg3.mjs';\n\n/**\n * Injection token that can be used to reference instances of `CdkAccordion`. It serves\n * as alternative token to the actual `CdkAccordion` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_ACCORDION = new InjectionToken('CdkAccordion');\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nclass CdkAccordion {\n /** Emits when the state of the accordion changes */\n _stateChanges = new Subject();\n /** Stream that emits true/false when openAll/closeAll is triggered. */\n _openCloseAllActions = new Subject();\n /** A readonly id value to use for unique selection coordination. */\n id = inject(_IdGenerator).getId('cdk-accordion-');\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n multi = false;\n /** Opens all enabled accordion items in an accordion where multi is enabled. */\n openAll() {\n if (this.multi) {\n this._openCloseAllActions.next(true);\n }\n }\n /** Closes all enabled accordion items. */\n closeAll() {\n this._openCloseAllActions.next(false);\n }\n ngOnChanges(changes) {\n this._stateChanges.next(changes);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n this._openCloseAllActions.complete();\n }\n static ɵfac = function CdkAccordion_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkAccordion)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkAccordion,\n selectors: [[\"cdk-accordion\"], [\"\", \"cdkAccordion\", \"\"]],\n inputs: {\n multi: [2, \"multi\", \"multi\", booleanAttribute]\n },\n exportAs: [\"cdkAccordion\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: CDK_ACCORDION,\n useExisting: CdkAccordion\n }]), i0.ɵɵNgOnChangesFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAccordion, [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n providers: [{\n provide: CDK_ACCORDION,\n useExisting: CdkAccordion\n }]\n }]\n }], null, {\n multi: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\n\n/**\n * A basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nclass CdkAccordionItem {\n accordion = inject(CDK_ACCORDION, {\n optional: true,\n skipSelf: true\n });\n _changeDetectorRef = inject(ChangeDetectorRef);\n _expansionDispatcher = inject(UniqueSelectionDispatcher);\n /** Subscription to openAll/closeAll events. */\n _openCloseAllSubscription = Subscription.EMPTY;\n /** Event emitted every time the AccordionItem is closed. */\n closed = new EventEmitter();\n /** Event emitted every time the AccordionItem is opened. */\n opened = new EventEmitter();\n /** Event emitted when the AccordionItem is destroyed. */\n destroyed = new EventEmitter();\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n expandedChange = new EventEmitter();\n /** The unique AccordionItem id. */\n id = inject(_IdGenerator).getId('cdk-accordion-child-');\n /** Whether the AccordionItem is expanded. */\n get expanded() {\n return this._expanded;\n }\n set expanded(expanded) {\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n } else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n _expanded = false;\n /** Whether the AccordionItem is disabled. */\n get disabled() {\n return this._disabled();\n }\n set disabled(value) {\n this._disabled.set(value);\n }\n _disabled = signal(false);\n /** Unregister function for _expansionDispatcher. */\n _removeUniqueSelectionListener = () => {};\n constructor() {}\n ngOnInit() {\n this._removeUniqueSelectionListener = this._expansionDispatcher.listen((id, accordionId) => {\n if (this.accordion && !this.accordion.multi && this.accordion.id === accordionId && this.id !== id) {\n this.expanded = false;\n }\n });\n // When an accordion item is hosted in an accordion, subscribe to open/close events.\n if (this.accordion) {\n this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();\n }\n }\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.opened.complete();\n this.closed.complete();\n this.destroyed.emit();\n this.destroyed.complete();\n this._removeUniqueSelectionListener();\n this._openCloseAllSubscription.unsubscribe();\n }\n /** Toggles the expanded state of the accordion item. */\n toggle() {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n /** Sets the expanded state of the accordion item to false. */\n close() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n /** Sets the expanded state of the accordion item to true. */\n open() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n _subscribeToOpenCloseAllActions() {\n return this.accordion._openCloseAllActions.subscribe(expanded => {\n // Only change expanded state if item is enabled\n if (!this.disabled) {\n this.expanded = expanded;\n }\n });\n }\n static ɵfac = function CdkAccordionItem_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkAccordionItem)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CdkAccordionItem,\n selectors: [[\"cdk-accordion-item\"], [\"\", \"cdkAccordionItem\", \"\"]],\n inputs: {\n expanded: [2, \"expanded\", \"expanded\", booleanAttribute],\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute]\n },\n outputs: {\n closed: \"closed\",\n opened: \"opened\",\n destroyed: \"destroyed\",\n expandedChange: \"expandedChange\"\n },\n exportAs: [\"cdkAccordionItem\"],\n features: [i0.ɵɵProvidersFeature([\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n {\n provide: CDK_ACCORDION,\n useValue: undefined\n }])]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAccordionItem, [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion-item, [cdkAccordionItem]',\n exportAs: 'cdkAccordionItem',\n providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n {\n provide: CDK_ACCORDION,\n useValue: undefined\n }]\n }]\n }], () => [], {\n closed: [{\n type: Output\n }],\n opened: [{\n type: Output\n }],\n destroyed: [{\n type: Output\n }],\n expandedChange: [{\n type: Output\n }],\n expanded: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\nclass CdkAccordionModule {\n static ɵfac = function CdkAccordionModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkAccordionModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CdkAccordionModule,\n imports: [CdkAccordion, CdkAccordionItem],\n exports: [CdkAccordion, CdkAccordionItem]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAccordionModule, [{\n type: NgModule,\n args: [{\n imports: [CdkAccordion, CdkAccordionItem],\n exports: [CdkAccordion, CdkAccordionItem]\n }]\n }], null, null);\n})();\nexport { CDK_ACCORDION, CdkAccordion, CdkAccordionItem, CdkAccordionModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, TemplateRef, Directive, ViewContainerRef, DOCUMENT, NgZone, ElementRef, Renderer2, EventEmitter, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ContentChild, ViewChild, ChangeDetectorRef, HostAttributeToken, numberAttribute, QueryList, ContentChildren, NgModule } from '@angular/core';\nimport { CdkAccordionItem, CdkAccordion, CdkAccordionModule } from '@angular/cdk/accordion';\nimport { TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { _IdGenerator, FocusMonitor, FocusKeyManager } from '@angular/cdk/a11y';\nimport { startWith, filter, take } from 'rxjs/operators';\nimport { ENTER, hasModifierKey, SPACE } from '@angular/cdk/keycodes';\nimport { Subject, Subscription, EMPTY, merge } from 'rxjs';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { _ as _animationsDisabled } from './animation-ChQ1vjiF.mjs';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { _ as _StructuralStylesLoader } from './structural-styles-CObeNzjn.mjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nimport '@angular/cdk/layout';\nimport '@angular/cdk/bidi';\n\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nconst _c0 = [\"body\"];\nconst _c1 = [\"bodyWrapper\"];\nconst _c2 = [[[\"mat-expansion-panel-header\"]], \"*\", [[\"mat-action-row\"]]];\nconst _c3 = [\"mat-expansion-panel-header\", \"*\", \"mat-action-row\"];\nfunction MatExpansionPanel_ng_template_7_Template(rf, ctx) {}\nconst _c4 = [[[\"mat-panel-title\"]], [[\"mat-panel-description\"]], \"*\"];\nconst _c5 = [\"mat-panel-title\", \"mat-panel-description\", \"*\"];\nfunction MatExpansionPanelHeader_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵdomElementStart(0, \"span\", 1);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵdomElementStart(1, \"svg\", 2);\n i0.ɵɵdomElement(2, \"path\", 3);\n i0.ɵɵdomElementEnd()();\n }\n}\nconst MAT_ACCORDION = new InjectionToken('MAT_ACCORDION');\n\n/**\n * Token used to provide a `MatExpansionPanel` to `MatExpansionPanelContent`.\n * Used to avoid circular imports between `MatExpansionPanel` and `MatExpansionPanelContent`.\n */\nconst MAT_EXPANSION_PANEL = new InjectionToken('MAT_EXPANSION_PANEL');\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\nclass MatExpansionPanelContent {\n _template = inject(TemplateRef);\n _expansionPanel = inject(MAT_EXPANSION_PANEL, {\n optional: true\n });\n constructor() {}\n static ɵfac = function MatExpansionPanelContent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionPanelContent)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatExpansionPanelContent,\n selectors: [[\"ng-template\", \"matExpansionPanelContent\", \"\"]]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionPanelContent, [{\n type: Directive,\n args: [{\n selector: 'ng-template[matExpansionPanelContent]'\n }]\n }], () => [], null);\n})();\n\n/**\n * Injection token that can be used to configure the default\n * options for the expansion panel component.\n */\nconst MAT_EXPANSION_PANEL_DEFAULT_OPTIONS = new InjectionToken('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n/**\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\nclass MatExpansionPanel extends CdkAccordionItem {\n _viewContainerRef = inject(ViewContainerRef);\n _animationsDisabled = _animationsDisabled();\n _document = inject(DOCUMENT);\n _ngZone = inject(NgZone);\n _elementRef = inject(ElementRef);\n _renderer = inject(Renderer2);\n _cleanupTransitionEnd;\n /** Whether the toggle indicator should be hidden. */\n get hideToggle() {\n return this._hideToggle || this.accordion && this.accordion.hideToggle;\n }\n set hideToggle(value) {\n this._hideToggle = value;\n }\n _hideToggle = false;\n /** The position of the expansion indicator. */\n get togglePosition() {\n return this._togglePosition || this.accordion && this.accordion.togglePosition;\n }\n set togglePosition(value) {\n this._togglePosition = value;\n }\n _togglePosition;\n /** An event emitted after the body's expansion animation happens. */\n afterExpand = new EventEmitter();\n /** An event emitted after the body's collapse animation happens. */\n afterCollapse = new EventEmitter();\n /** Stream that emits for changes in `@Input` properties. */\n _inputChanges = new Subject();\n /** Optionally defined accordion the expansion panel belongs to. */\n accordion = inject(MAT_ACCORDION, {\n optional: true,\n skipSelf: true\n });\n /** Content that will be rendered lazily. */\n _lazyContent;\n /** Element containing the panel's user-provided content. */\n _body;\n /** Element wrapping the panel body. */\n _bodyWrapper;\n /** Portal holding the user's content. */\n _portal;\n /** ID for the associated header element. Used for a11y labelling. */\n _headerId = inject(_IdGenerator).getId('mat-expansion-panel-header-');\n constructor() {\n super();\n const defaultOptions = inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, {\n optional: true\n });\n this._expansionDispatcher = inject(UniqueSelectionDispatcher);\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing() {\n if (this.accordion) {\n return this.expanded && this.accordion.displayMode === 'default';\n }\n return false;\n }\n /** Gets the expanded state string. */\n _getExpandedState() {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n /** Toggles the expanded state of the expansion panel. */\n toggle() {\n this.expanded = !this.expanded;\n }\n /** Sets the expanded state of the expansion panel to false. */\n close() {\n this.expanded = false;\n }\n /** Sets the expanded state of the expansion panel to true. */\n open() {\n this.expanded = true;\n }\n ngAfterContentInit() {\n if (this._lazyContent && this._lazyContent._expansionPanel === this) {\n // Render the content as soon as the panel becomes open.\n this.opened.pipe(startWith(null), filter(() => this.expanded && !this._portal), take(1)).subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n this._setupAnimationEvents();\n }\n ngOnChanges(changes) {\n this._inputChanges.next(changes);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._cleanupTransitionEnd?.();\n this._inputChanges.complete();\n }\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus() {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n return false;\n }\n _transitionEndListener = ({\n target,\n propertyName\n }) => {\n if (target === this._bodyWrapper?.nativeElement && propertyName === 'grid-template-rows') {\n this._ngZone.run(() => {\n if (this.expanded) {\n this.afterExpand.emit();\n } else {\n this.afterCollapse.emit();\n }\n });\n }\n };\n _setupAnimationEvents() {\n // This method is defined separately, because we need to\n // disable this logic in some internal components.\n this._ngZone.runOutsideAngular(() => {\n if (this._animationsDisabled) {\n this.opened.subscribe(() => this._ngZone.run(() => this.afterExpand.emit()));\n this.closed.subscribe(() => this._ngZone.run(() => this.afterCollapse.emit()));\n } else {\n setTimeout(() => {\n const element = this._elementRef.nativeElement;\n this._cleanupTransitionEnd = this._renderer.listen(element, 'transitionend', this._transitionEndListener);\n element.classList.add('mat-expansion-panel-animations-enabled');\n }, 200);\n }\n });\n }\n static ɵfac = function MatExpansionPanel_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionPanel)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatExpansionPanel,\n selectors: [[\"mat-expansion-panel\"]],\n contentQueries: function MatExpansionPanel_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatExpansionPanelContent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._lazyContent = _t.first);\n }\n },\n viewQuery: function MatExpansionPanel_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._body = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._bodyWrapper = _t.first);\n }\n },\n hostAttrs: [1, \"mat-expansion-panel\"],\n hostVars: 4,\n hostBindings: function MatExpansionPanel_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-expanded\", ctx.expanded)(\"mat-expansion-panel-spacing\", ctx._hasSpacing());\n }\n },\n inputs: {\n hideToggle: [2, \"hideToggle\", \"hideToggle\", booleanAttribute],\n togglePosition: \"togglePosition\"\n },\n outputs: {\n afterExpand: \"afterExpand\",\n afterCollapse: \"afterCollapse\"\n },\n exportAs: [\"matExpansionPanel\"],\n features: [i0.ɵɵProvidersFeature([\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n {\n provide: MAT_ACCORDION,\n useValue: undefined\n }, {\n provide: MAT_EXPANSION_PANEL,\n useExisting: MatExpansionPanel\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 4,\n consts: [[\"bodyWrapper\", \"\"], [\"body\", \"\"], [1, \"mat-expansion-panel-content-wrapper\"], [\"role\", \"region\", 1, \"mat-expansion-panel-content\", 3, \"id\"], [1, \"mat-expansion-panel-body\"], [3, \"cdkPortalOutlet\"]],\n template: function MatExpansionPanel_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"div\", 2, 0)(3, \"div\", 3, 1)(5, \"div\", 4);\n i0.ɵɵprojection(6, 1);\n i0.ɵɵtemplate(7, MatExpansionPanel_ng_template_7_Template, 0, 0, \"ng-template\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(8, 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"inert\", ctx.expanded ? null : \"\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"id\", ctx.id);\n i0.ɵɵattribute(\"aria-labelledby\", ctx._headerId);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"cdkPortalOutlet\", ctx._portal);\n }\n },\n dependencies: [CdkPortalOutlet],\n styles: [\".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden;position:relative;background:var(--mat-expansion-container-background-color, var(--mat-sys-surface));color:var(--mat-expansion-container-text-color, var(--mat-sys-on-surface));border-radius:var(--mat-expansion-container-shape, 12px)}.mat-expansion-panel.mat-expansion-panel-animations-enabled{transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:var(--mat-expansion-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape, 12px);border-top-left-radius:var(--mat-expansion-container-shape, 12px)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape, 12px);border-bottom-left-radius:var(--mat-expansion-container-shape, 12px)}@media(forced-colors: active){.mat-expansion-panel{outline:solid 1px}}.mat-expansion-panel-content-wrapper{display:grid;grid-template-rows:0fr;grid-template-columns:100%}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content-wrapper{transition:grid-template-rows 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{grid-template-rows:1fr}@supports not (grid-template-rows: 0fr){.mat-expansion-panel-content-wrapper{height:0}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{height:auto}}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;min-height:0;visibility:hidden;font-family:var(--mat-expansion-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-expansion-container-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-expansion-container-text-weight, var(--mat-sys-body-large-weight));line-height:var(--mat-expansion-container-text-line-height, var(--mat-sys-body-large-line-height));letter-spacing:var(--mat-expansion-container-text-tracking, var(--mat-sys-body-large-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content{transition:visibility 190ms linear}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper>.mat-expansion-panel-content{visibility:visible}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color, var(--mat-sys-outline))}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionPanel, [{\n type: Component,\n args: [{\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n {\n provide: MAT_ACCORDION,\n useValue: undefined\n }, {\n provide: MAT_EXPANSION_PANEL,\n useExisting: MatExpansionPanel\n }],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()'\n },\n imports: [CdkPortalOutlet],\n template: \"<ng-content select=\\\"mat-expansion-panel-header\\\"></ng-content>\\n<div class=\\\"mat-expansion-panel-content-wrapper\\\" [attr.inert]=\\\"expanded ? null : ''\\\" #bodyWrapper>\\n <div class=\\\"mat-expansion-panel-content\\\"\\n role=\\\"region\\\"\\n [attr.aria-labelledby]=\\\"_headerId\\\"\\n [id]=\\\"id\\\"\\n #body>\\n <div class=\\\"mat-expansion-panel-body\\\">\\n <ng-content></ng-content>\\n <ng-template [cdkPortalOutlet]=\\\"_portal\\\"></ng-template>\\n </div>\\n <ng-content select=\\\"mat-action-row\\\"></ng-content>\\n </div>\\n</div>\\n\",\n styles: [\".mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden;position:relative;background:var(--mat-expansion-container-background-color, var(--mat-sys-surface));color:var(--mat-expansion-container-text-color, var(--mat-sys-on-surface));border-radius:var(--mat-expansion-container-shape, 12px)}.mat-expansion-panel.mat-expansion-panel-animations-enabled{transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:var(--mat-expansion-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12))}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape, 12px);border-top-left-radius:var(--mat-expansion-container-shape, 12px)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape, 12px);border-bottom-left-radius:var(--mat-expansion-container-shape, 12px)}@media(forced-colors: active){.mat-expansion-panel{outline:solid 1px}}.mat-expansion-panel-content-wrapper{display:grid;grid-template-rows:0fr;grid-template-columns:100%}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content-wrapper{transition:grid-template-rows 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{grid-template-rows:1fr}@supports not (grid-template-rows: 0fr){.mat-expansion-panel-content-wrapper{height:0}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper{height:auto}}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;min-height:0;visibility:hidden;font-family:var(--mat-expansion-container-text-font, var(--mat-sys-body-large-font));font-size:var(--mat-expansion-container-text-size, var(--mat-sys-body-large-size));font-weight:var(--mat-expansion-container-text-weight, var(--mat-sys-body-large-weight));line-height:var(--mat-expansion-container-text-line-height, var(--mat-sys-body-large-line-height));letter-spacing:var(--mat-expansion-container-text-tracking, var(--mat-sys-body-large-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-content{transition:visibility 190ms linear}.mat-expansion-panel.mat-expanded>.mat-expansion-panel-content-wrapper>.mat-expansion-panel-content{visibility:visible}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color, var(--mat-sys-outline))}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"]\n }]\n }], () => [], {\n hideToggle: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n togglePosition: [{\n type: Input\n }],\n afterExpand: [{\n type: Output\n }],\n afterCollapse: [{\n type: Output\n }],\n _lazyContent: [{\n type: ContentChild,\n args: [MatExpansionPanelContent]\n }],\n _body: [{\n type: ViewChild,\n args: ['body']\n }],\n _bodyWrapper: [{\n type: ViewChild,\n args: ['bodyWrapper']\n }]\n });\n})();\n/**\n * Actions of a `<mat-expansion-panel>`.\n */\nclass MatExpansionPanelActionRow {\n static ɵfac = function MatExpansionPanelActionRow_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionPanelActionRow)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatExpansionPanelActionRow,\n selectors: [[\"mat-action-row\"]],\n hostAttrs: [1, \"mat-action-row\"]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionPanelActionRow, [{\n type: Directive,\n args: [{\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row'\n }\n }]\n }], null, null);\n})();\n\n/**\n * Header element of a `<mat-expansion-panel>`.\n */\nclass MatExpansionPanelHeader {\n panel = inject(MatExpansionPanel, {\n host: true\n });\n _element = inject(ElementRef);\n _focusMonitor = inject(FocusMonitor);\n _changeDetectorRef = inject(ChangeDetectorRef);\n _parentChangeSubscription = Subscription.EMPTY;\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const panel = this.panel;\n const defaultOptions = inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, {\n optional: true\n });\n const tabIndex = inject(new HostAttributeToken('tabindex'), {\n optional: true\n });\n const accordionHideToggleChange = panel.accordion ? panel.accordion._stateChanges.pipe(filter(changes => !!(changes['hideToggle'] || changes['togglePosition']))) : EMPTY;\n this.tabIndex = parseInt(tabIndex || '') || 0;\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription = merge(panel.opened, panel.closed, accordionHideToggleChange, panel._inputChanges.pipe(filter(changes => {\n return !!(changes['hideToggle'] || changes['disabled'] || changes['togglePosition']);\n }))).subscribe(() => this._changeDetectorRef.markForCheck());\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed.pipe(filter(() => panel._containsFocus())).subscribe(() => this._focusMonitor.focusVia(this._element, 'program'));\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n /** Height of the header while the panel is expanded. */\n expandedHeight;\n /** Height of the header while the panel is collapsed. */\n collapsedHeight;\n /** Tab index of the header. */\n tabIndex = 0;\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled() {\n return this.panel.disabled;\n }\n /** Toggles the expanded state of the panel. */\n _toggle() {\n if (!this.disabled) {\n this.panel.toggle();\n }\n }\n /** Gets whether the panel is expanded. */\n _isExpanded() {\n return this.panel.expanded;\n }\n /** Gets the expanded state string of the panel. */\n _getExpandedState() {\n return this.panel._getExpandedState();\n }\n /** Gets the panel id. */\n _getPanelId() {\n return this.panel.id;\n }\n /** Gets the toggle position for the header. */\n _getTogglePosition() {\n return this.panel.togglePosition;\n }\n /** Gets whether the expand indicator should be shown. */\n _showToggle() {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n /**\n * Gets the current height of the header. Null if no custom height has been\n * specified, and if the default height from the stylesheet should be used.\n */\n _getHeaderHeight() {\n const isExpanded = this._isExpanded();\n if (isExpanded && this.expandedHeight) {\n return this.expandedHeight;\n } else if (!isExpanded && this.collapsedHeight) {\n return this.collapsedHeight;\n }\n return null;\n }\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n return;\n }\n }\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin, options) {\n if (origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._element).subscribe(origin => {\n if (origin && this.panel.accordion) {\n this.panel.accordion._handleHeaderFocus(this);\n }\n });\n }\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n static ɵfac = function MatExpansionPanelHeader_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionPanelHeader)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatExpansionPanelHeader,\n selectors: [[\"mat-expansion-panel-header\"]],\n hostAttrs: [\"role\", \"button\", 1, \"mat-expansion-panel-header\", \"mat-focus-indicator\"],\n hostVars: 13,\n hostBindings: function MatExpansionPanelHeader_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatExpansionPanelHeader_click_HostBindingHandler() {\n return ctx._toggle();\n })(\"keydown\", function MatExpansionPanelHeader_keydown_HostBindingHandler($event) {\n return ctx._keydown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.panel._headerId)(\"tabindex\", ctx.disabled ? -1 : ctx.tabIndex)(\"aria-controls\", ctx._getPanelId())(\"aria-expanded\", ctx._isExpanded())(\"aria-disabled\", ctx.panel.disabled);\n i0.ɵɵstyleProp(\"height\", ctx._getHeaderHeight());\n i0.ɵɵclassProp(\"mat-expanded\", ctx._isExpanded())(\"mat-expansion-toggle-indicator-after\", ctx._getTogglePosition() === \"after\")(\"mat-expansion-toggle-indicator-before\", ctx._getTogglePosition() === \"before\");\n }\n },\n inputs: {\n expandedHeight: \"expandedHeight\",\n collapsedHeight: \"collapsedHeight\",\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)]\n },\n ngContentSelectors: _c5,\n decls: 5,\n vars: 3,\n consts: [[1, \"mat-content\"], [1, \"mat-expansion-indicator\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", \"viewBox\", \"0 -960 960 960\", \"aria-hidden\", \"true\", \"focusable\", \"false\"], [\"d\", \"M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z\"]],\n template: function MatExpansionPanelHeader_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c4);\n i0.ɵɵdomElementStart(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵprojection(3, 2);\n i0.ɵɵdomElementEnd();\n i0.ɵɵconditionalCreate(4, MatExpansionPanelHeader_Conditional_4_Template, 3, 0, \"span\", 1);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-content-hide-toggle\", !ctx._showToggle());\n i0.ɵɵadvance(4);\n i0.ɵɵconditional(ctx._showToggle() ? 4 : -1);\n }\n },\n styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;height:var(--mat-expansion-header-collapsed-state-height, 48px);font-family:var(--mat-expansion-header-text-font, var(--mat-sys-title-medium-font));font-size:var(--mat-expansion-header-text-size, var(--mat-sys-title-medium-size));font-weight:var(--mat-expansion-header-text-weight, var(--mat-sys-title-medium-weight));line-height:var(--mat-expansion-header-text-line-height, var(--mat-sys-title-medium-line-height));letter-spacing:var(--mat-expansion-header-text-tracking, var(--mat-sys-title-medium-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-header{transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header::before{border-radius:inherit}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height, 64px)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color, var(--mat-sys-surface))}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color, var(--mat-sys-on-surface))}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color, var(--mat-sys-on-surface-variant))}.mat-expansion-panel-animations-enabled .mat-expansion-indicator{transition:transform 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header.mat-expanded .mat-expansion-indicator{transform:rotate(180deg)}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\\\"\\\";padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-legacy-header-indicator-display, none)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-header-indicator-display, inline-block)}@media(forced-colors: active){.mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionPanelHeader, [{\n type: Component,\n args: [{\n selector: 'mat-expansion-panel-header',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-expansion-panel-header mat-focus-indicator',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '[style.height]': '_getHeaderHeight()',\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)'\n },\n template: \"<span class=\\\"mat-content\\\" [class.mat-content-hide-toggle]=\\\"!_showToggle()\\\">\\n <ng-content select=\\\"mat-panel-title\\\"></ng-content>\\n <ng-content select=\\\"mat-panel-description\\\"></ng-content>\\n <ng-content></ng-content>\\n</span>\\n\\n@if (_showToggle()) {\\n <span class=\\\"mat-expansion-indicator\\\">\\n <svg\\n xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n viewBox=\\\"0 -960 960 960\\\"\\n aria-hidden=\\\"true\\\"\\n focusable=\\\"false\\\">\\n <path d=\\\"M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z\\\"/>\\n </svg>\\n </span>\\n}\\n\",\n styles: [\".mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;height:var(--mat-expansion-header-collapsed-state-height, 48px);font-family:var(--mat-expansion-header-text-font, var(--mat-sys-title-medium-font));font-size:var(--mat-expansion-header-text-size, var(--mat-sys-title-medium-size));font-weight:var(--mat-expansion-header-text-weight, var(--mat-sys-title-medium-weight));line-height:var(--mat-expansion-header-text-line-height, var(--mat-sys-title-medium-line-height));letter-spacing:var(--mat-expansion-header-text-tracking, var(--mat-sys-title-medium-tracking))}.mat-expansion-panel-animations-enabled .mat-expansion-panel-header{transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header::before{border-radius:inherit}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height, 64px)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color, var(--mat-sys-surface))}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color, var(--mat-sys-on-surface))}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color, var(--mat-sys-on-surface-variant))}.mat-expansion-panel-animations-enabled .mat-expansion-indicator{transition:transform 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header.mat-expanded .mat-expansion-indicator{transform:rotate(180deg)}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:\\\"\\\";padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-legacy-header-indicator-display, none)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color, var(--mat-sys-on-surface-variant));display:var(--mat-expansion-header-indicator-display, inline-block)}@media(forced-colors: active){.mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}}\\n\"]\n }]\n }], () => [], {\n expandedHeight: [{\n type: Input\n }],\n collapsedHeight: [{\n type: Input\n }],\n tabIndex: [{\n type: Input,\n args: [{\n transform: value => value == null ? 0 : numberAttribute(value)\n }]\n }]\n });\n})();\n/**\n * Description element of a `<mat-expansion-panel-header>`.\n */\nclass MatExpansionPanelDescription {\n static ɵfac = function MatExpansionPanelDescription_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionPanelDescription)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatExpansionPanelDescription,\n selectors: [[\"mat-panel-description\"]],\n hostAttrs: [1, \"mat-expansion-panel-header-description\"]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionPanelDescription, [{\n type: Directive,\n args: [{\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description'\n }\n }]\n }], null, null);\n})();\n/**\n * Title element of a `<mat-expansion-panel-header>`.\n */\nclass MatExpansionPanelTitle {\n static ɵfac = function MatExpansionPanelTitle_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionPanelTitle)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatExpansionPanelTitle,\n selectors: [[\"mat-panel-title\"]],\n hostAttrs: [1, \"mat-expansion-panel-header-title\"]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionPanelTitle, [{\n type: Directive,\n args: [{\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title'\n }\n }]\n }], null, null);\n})();\n\n/**\n * Directive for a Material Design Accordion.\n */\nclass MatAccordion extends CdkAccordion {\n _keyManager;\n /** Headers belonging to this accordion. */\n _ownHeaders = new QueryList();\n /** All headers inside the accordion. Includes headers inside nested accordions. */\n _headers;\n /** Whether the expansion indicator should be hidden. */\n hideToggle = false;\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n displayMode = 'default';\n /** The position of the expansion indicator. */\n togglePosition = 'after';\n ngAfterContentInit() {\n this._headers.changes.pipe(startWith(this._headers)).subscribe(headers => {\n this._ownHeaders.reset(headers.filter(header => header.panel.accordion === this));\n this._ownHeaders.notifyOnChanges();\n });\n this._keyManager = new FocusKeyManager(this._ownHeaders).withWrap().withHomeAndEnd();\n }\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event) {\n this._keyManager.onKeydown(event);\n }\n _handleHeaderFocus(header) {\n this._keyManager.updateActiveItem(header);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._keyManager?.destroy();\n this._ownHeaders.destroy();\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatAccordion_BaseFactory;\n return function MatAccordion_Factory(__ngFactoryType__) {\n return (ɵMatAccordion_BaseFactory || (ɵMatAccordion_BaseFactory = i0.ɵɵgetInheritedFactory(MatAccordion)))(__ngFactoryType__ || MatAccordion);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAccordion,\n selectors: [[\"mat-accordion\"]],\n contentQueries: function MatAccordion_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatExpansionPanelHeader, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._headers = _t);\n }\n },\n hostAttrs: [1, \"mat-accordion\"],\n hostVars: 2,\n hostBindings: function MatAccordion_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-accordion-multi\", ctx.multi);\n }\n },\n inputs: {\n hideToggle: [2, \"hideToggle\", \"hideToggle\", booleanAttribute],\n displayMode: \"displayMode\",\n togglePosition: \"togglePosition\"\n },\n exportAs: [\"matAccordion\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_ACCORDION,\n useExisting: MatAccordion\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatAccordion, [{\n type: Directive,\n args: [{\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n providers: [{\n provide: MAT_ACCORDION,\n useExisting: MatAccordion\n }],\n host: {\n class: 'mat-accordion',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if multiple panel support is enabled.\n '[class.mat-accordion-multi]': 'this.multi'\n }\n }]\n }], null, {\n _headers: [{\n type: ContentChildren,\n args: [MatExpansionPanelHeader, {\n descendants: true\n }]\n }],\n hideToggle: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n displayMode: [{\n type: Input\n }],\n togglePosition: [{\n type: Input\n }]\n });\n})();\nclass MatExpansionModule {\n static ɵfac = function MatExpansionModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatExpansionModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatExpansionModule,\n imports: [MatCommonModule, CdkAccordionModule, PortalModule, MatAccordion, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelDescription, MatExpansionPanelContent],\n exports: [MatAccordion, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelDescription, MatExpansionPanelContent]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, CdkAccordionModule, PortalModule]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatExpansionModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CdkAccordionModule, PortalModule, MatAccordion, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelDescription, MatExpansionPanelContent],\n exports: [MatAccordion, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelHeader, MatExpansionPanelTitle, MatExpansionPanelDescription, MatExpansionPanelContent]\n }]\n }], null, null);\n})();\n\n/**\n * Time and timing curve for expansion panel animations.\n * @deprecated No longer used. Will be removed.\n * @breaking-change 21.0.0\n */\nconst EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n/**\n * Animations used by the Material expansion panel.\n *\n * A bug in angular animation's `state` when ViewContainers are moved using ViewContainerRef.move()\n * causes the animation state of moved components to become `void` upon exit, and not update again\n * upon reentry into the DOM. This can lead a to situation for the expansion panel where the state\n * of the panel is `expanded` or `collapsed` but the animation state is `void`.\n *\n * To correctly handle animating to the next state, we animate between `void` and `collapsed` which\n * are defined to have the same styles. Since angular animates from the current styles to the\n * destination state's style definition, in situations where we are moving from `void`'s styles to\n * `collapsed` this acts a noop since no style values change.\n *\n * In the case where angular's animation state is out of sync with the expansion panel's state, the\n * expansion panel being `expanded` and angular animations being `void`, the animation from the\n * `expanded`'s effective styles (though in a `void` animation state) to the collapsed state will\n * occur as expected.\n *\n * Angular Bug: https://github.com/angular/angular/issues/18847\n *\n * @docs-private\n * @deprecated No longer being used, to be removed.\n * @breaking-change 21.0.0\n */\nconst matExpansionAnimations = {\n // Represents:\n // trigger('indicatorRotate', [\n // state('collapsed, void', style({transform: 'rotate(0deg)'})),\n // state('expanded', style({transform: 'rotate(180deg)'})),\n // transition(\n // 'expanded <=> collapsed, void => collapsed',\n // animate(EXPANSION_PANEL_ANIMATION_TIMING),\n // ),\n // ])\n /** Animation that rotates the indicator arrow. */\n indicatorRotate: {\n type: 7,\n name: 'indicatorRotate',\n definitions: [{\n type: 0,\n name: 'collapsed, void',\n styles: {\n type: 6,\n styles: {\n transform: 'rotate(0deg)'\n },\n offset: null\n }\n }, {\n type: 0,\n name: 'expanded',\n styles: {\n type: 6,\n styles: {\n transform: 'rotate(180deg)'\n },\n offset: null\n }\n }, {\n type: 1,\n expr: 'expanded <=> collapsed, void => collapsed',\n animation: {\n type: 4,\n styles: null,\n timings: '225ms cubic-bezier(0.4,0.0,0.2,1)'\n },\n options: null\n }],\n options: {}\n },\n // Represents:\n // trigger('bodyExpansion', [\n // state('collapsed, void', style({height: '0px', visibility: 'hidden'})),\n // // Clear the `visibility` while open, otherwise the content will be visible when placed in\n // // a parent that's `visibility: hidden`, because `visibility` doesn't apply to descendants\n // // that have a `visibility` of their own (see #27436).\n // state('expanded', style({height: '*', visibility: ''})),\n // transition(\n // 'expanded <=> collapsed, void => collapsed',\n // animate(EXPANSION_PANEL_ANIMATION_TIMING),\n // ),\n // ])\n /** Animation that expands and collapses the panel content. */\n bodyExpansion: {\n type: 7,\n name: 'bodyExpansion',\n definitions: [{\n type: 0,\n name: 'collapsed, void',\n styles: {\n type: 6,\n styles: {\n 'height': '0px',\n 'visibility': 'hidden'\n },\n offset: null\n }\n }, {\n type: 0,\n name: 'expanded',\n styles: {\n type: 6,\n styles: {\n 'height': '*',\n 'visibility': ''\n },\n offset: null\n }\n }, {\n type: 1,\n expr: 'expanded <=> collapsed, void => collapsed',\n animation: {\n type: 4,\n styles: null,\n timings: '225ms cubic-bezier(0.4,0.0,0.2,1)'\n },\n options: null\n }],\n options: {}\n }\n};\nexport { EXPANSION_PANEL_ANIMATION_TIMING, MAT_ACCORDION, MAT_EXPANSION_PANEL, MAT_EXPANSION_PANEL_DEFAULT_OPTIONS, MatAccordion, MatExpansionModule, MatExpansionPanel, MatExpansionPanelActionRow, MatExpansionPanelContent, MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle, matExpansionAnimations };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, ElementRef, ChangeDetectorRef, EventEmitter, HostAttributeToken, booleanAttribute, numberAttribute, forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, Input, Output, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { FocusMonitor, _IdGenerator } from '@angular/cdk/a11y';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { _ as _animationsDisabled } from './animation-ChQ1vjiF.mjs';\nimport { _ as _StructuralStylesLoader } from './structural-styles-CObeNzjn.mjs';\nimport { M as MatRipple } from './ripple-BMyyyLz2.mjs';\nimport { _ as _MatInternalFormField } from './internal-form-field-D5iFxU6d.mjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nimport '@angular/cdk/layout';\nimport '@angular/cdk/platform';\nimport '@angular/cdk/coercion';\nimport '@angular/cdk/bidi';\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nconst _c0 = [\"switch\"];\nconst _c1 = [\"*\"];\nfunction MatSlideToggle_Conditional_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 10);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(1, \"svg\", 12);\n i0.ɵɵelement(2, \"path\", 13);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"svg\", 14);\n i0.ɵɵelement(4, \"path\", 15);\n i0.ɵɵelementEnd()();\n }\n}\nconst MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = new InjectionToken('mat-slide-toggle-default-options', {\n providedIn: 'root',\n factory: () => ({\n disableToggleValue: false,\n hideIcon: false,\n disabledInteractive: false\n })\n});\n\n/** Change event object emitted by a slide toggle. */\nclass MatSlideToggleChange {\n source;\n checked;\n constructor(/** The source slide toggle of the event. */\n source, /** The new `checked` value of the slide toggle. */\n checked) {\n this.source = source;\n this.checked = checked;\n }\n}\nclass MatSlideToggle {\n _elementRef = inject(ElementRef);\n _focusMonitor = inject(FocusMonitor);\n _changeDetectorRef = inject(ChangeDetectorRef);\n defaults = inject(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS);\n _onChange = _ => {};\n _onTouched = () => {};\n _validatorOnChange = () => {};\n _uniqueId;\n _checked = false;\n _createChangeEvent(isChecked) {\n return new MatSlideToggleChange(this, isChecked);\n }\n /** Unique ID for the label element. */\n _labelId;\n /** Returns the unique id for the visual hidden button. */\n get buttonId() {\n return `${this.id || this._uniqueId}-button`;\n }\n /** Reference to the MDC switch element. */\n _switchElement;\n /** Focuses the slide-toggle. */\n focus() {\n this._switchElement.nativeElement.focus();\n }\n /** Whether noop animations are enabled. */\n _noopAnimations = _animationsDisabled();\n /** Whether the slide toggle is currently focused. */\n _focused;\n /** Name value will be applied to the input element if present. */\n name = null;\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n id;\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n labelPosition = 'after';\n /** Used to set the aria-label attribute on the underlying input element. */\n ariaLabel = null;\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n ariaLabelledby = null;\n /** Used to set the aria-describedby attribute on the underlying input element. */\n ariaDescribedby;\n /** Whether the slide-toggle is required. */\n required;\n // TODO(crisbeto): this should be a ThemePalette, but some internal apps were abusing\n // the lack of type checking previously and assigning random strings.\n /**\n * Theme color of the slide toggle. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/slide-toggle/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\n /** Whether the slide toggle is disabled. */\n disabled = false;\n /** Whether the slide toggle has a ripple. */\n disableRipple = false;\n /** Tabindex of slide toggle. */\n tabIndex = 0;\n /** Whether the slide-toggle element is checked or not. */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n /** Whether to hide the icon inside of the slide toggle. */\n hideIcon;\n /** Whether the slide toggle should remain interactive when it is disabled. */\n disabledInteractive;\n /** An event will be dispatched each time the slide-toggle changes its value. */\n change = new EventEmitter();\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed.\n */\n toggleChange = new EventEmitter();\n /** Returns the unique id for the visual hidden input. */\n get inputId() {\n return `${this.id || this._uniqueId}-input`;\n }\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const tabIndex = inject(new HostAttributeToken('tabindex'), {\n optional: true\n });\n const defaults = this.defaults;\n this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex) || 0;\n this.color = defaults.color || 'accent';\n this.id = this._uniqueId = inject(_IdGenerator).getId('mat-mdc-slide-toggle-');\n this.hideIcon = defaults.hideIcon ?? false;\n this.disabledInteractive = defaults.disabledInteractive ?? false;\n this._labelId = this._uniqueId + '-label';\n }\n ngAfterContentInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._focused = true;\n this._changeDetectorRef.markForCheck();\n } else if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's ng-touched) will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._focused = false;\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n ngOnChanges(changes) {\n if (changes['required']) {\n this._validatorOnChange();\n }\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value) {\n this.checked = !!value;\n }\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /** Implemented as a part of Validator. */\n validate(control) {\n return this.required && control.value !== true ? {\n 'required': true\n } : null;\n }\n /** Implemented as a part of Validator. */\n registerOnValidatorChange(fn) {\n this._validatorOnChange = fn;\n }\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n /** Toggles the checked state of the slide-toggle. */\n toggle() {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n }\n /** Method being called whenever the underlying button is clicked. */\n _handleClick() {\n if (!this.disabled) {\n this.toggleChange.emit();\n if (!this.defaults.disableToggleValue) {\n this.checked = !this.checked;\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n }\n }\n _getAriaLabelledBy() {\n if (this.ariaLabelledby) {\n return this.ariaLabelledby;\n }\n // Even though we have a `label` element with a `for` pointing to the button, we need the\n // `aria-labelledby`, because the button gets flagged as not having a label by tools like axe.\n return this.ariaLabel ? null : this._labelId;\n }\n static ɵfac = function MatSlideToggle_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSlideToggle)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSlideToggle,\n selectors: [[\"mat-slide-toggle\"]],\n viewQuery: function MatSlideToggle_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._switchElement = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-slide-toggle\"],\n hostVars: 13,\n hostBindings: function MatSlideToggle_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵdomProperty(\"id\", ctx.id);\n i0.ɵɵattribute(\"tabindex\", null)(\"aria-label\", null)(\"name\", null)(\"aria-labelledby\", null);\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-slide-toggle-focused\", ctx._focused)(\"mat-mdc-slide-toggle-checked\", ctx.checked)(\"_mat-animation-noopable\", ctx._noopAnimations);\n }\n },\n inputs: {\n name: \"name\",\n id: \"id\",\n labelPosition: \"labelPosition\",\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [0, \"aria-labelledby\", \"ariaLabelledby\"],\n ariaDescribedby: [0, \"aria-describedby\", \"ariaDescribedby\"],\n required: [2, \"required\", \"required\", booleanAttribute],\n color: \"color\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n checked: [2, \"checked\", \"checked\", booleanAttribute],\n hideIcon: [2, \"hideIcon\", \"hideIcon\", booleanAttribute],\n disabledInteractive: [2, \"disabledInteractive\", \"disabledInteractive\", booleanAttribute]\n },\n outputs: {\n change: \"change\",\n toggleChange: \"toggleChange\"\n },\n exportAs: [\"matSlideToggle\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true\n }, {\n provide: NG_VALIDATORS,\n useExisting: MatSlideToggle,\n multi: true\n }]), i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c1,\n decls: 13,\n vars: 27,\n consts: [[\"switch\", \"\"], [\"mat-internal-form-field\", \"\", 3, \"labelPosition\"], [\"role\", \"switch\", \"type\", \"button\", 1, \"mdc-switch\", 3, \"click\", \"tabIndex\", \"disabled\"], [1, \"mdc-switch__track\"], [1, \"mdc-switch__handle-track\"], [1, \"mdc-switch__handle\"], [1, \"mdc-switch__shadow\"], [1, \"mdc-elevation-overlay\"], [1, \"mdc-switch__ripple\"], [\"mat-ripple\", \"\", 1, \"mat-mdc-slide-toggle-ripple\", \"mat-focus-indicator\", 3, \"matRippleTrigger\", \"matRippleDisabled\", \"matRippleCentered\"], [1, \"mdc-switch__icons\"], [1, \"mdc-label\", 3, \"click\", \"for\"], [\"viewBox\", \"0 0 24 24\", \"aria-hidden\", \"true\", 1, \"mdc-switch__icon\", \"mdc-switch__icon--on\"], [\"d\", \"M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z\"], [\"viewBox\", \"0 0 24 24\", \"aria-hidden\", \"true\", 1, \"mdc-switch__icon\", \"mdc-switch__icon--off\"], [\"d\", \"M20 13H4v-2h16v2z\"]],\n template: function MatSlideToggle_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"button\", 2, 0);\n i0.ɵɵlistener(\"click\", function MatSlideToggle_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._handleClick());\n });\n i0.ɵɵelement(3, \"span\", 3);\n i0.ɵɵelementStart(4, \"span\", 4)(5, \"span\", 5)(6, \"span\", 6);\n i0.ɵɵelement(7, \"span\", 7);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"span\", 8);\n i0.ɵɵelement(9, \"span\", 9);\n i0.ɵɵelementEnd();\n i0.ɵɵconditionalCreate(10, MatSlideToggle_Conditional_10_Template, 5, 0, \"span\", 10);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(11, \"label\", 11);\n i0.ɵɵlistener(\"click\", function MatSlideToggle_Template_label_click_11_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopPropagation());\n });\n i0.ɵɵprojection(12);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const switch_r2 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"labelPosition\", ctx.labelPosition);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"mdc-switch--selected\", ctx.checked)(\"mdc-switch--unselected\", !ctx.checked)(\"mdc-switch--checked\", ctx.checked)(\"mdc-switch--disabled\", ctx.disabled)(\"mat-mdc-slide-toggle-disabled-interactive\", ctx.disabledInteractive);\n i0.ɵɵproperty(\"tabIndex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"disabled\", ctx.disabled && !ctx.disabledInteractive);\n i0.ɵɵattribute(\"id\", ctx.buttonId)(\"name\", ctx.name)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx._getAriaLabelledBy())(\"aria-describedby\", ctx.ariaDescribedby)(\"aria-required\", ctx.required || null)(\"aria-checked\", ctx.checked)(\"aria-disabled\", ctx.disabled && ctx.disabledInteractive ? \"true\" : null);\n i0.ɵɵadvance(8);\n i0.ɵɵproperty(\"matRippleTrigger\", switch_r2)(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleCentered\", true);\n i0.ɵɵadvance();\n i0.ɵɵconditional(!ctx.hideIcon ? 10 : -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"for\", ctx.buttonId);\n i0.ɵɵattribute(\"id\", ctx._labelId);\n }\n },\n dependencies: [MatRipple, _MatInternalFormField],\n styles: [\".mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:\\\"\\\";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:\\\"\\\";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:\\\"\\\"}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSlideToggle, [{\n type: Component,\n args: [{\n selector: 'mat-slide-toggle',\n host: {\n 'class': 'mat-mdc-slide-toggle',\n '[id]': 'id',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.name]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-mdc-slide-toggle-focused]': '_focused',\n '[class.mat-mdc-slide-toggle-checked]': 'checked',\n '[class._mat-animation-noopable]': '_noopAnimations',\n '[class]': 'color ? \"mat-\" + color : \"\"'\n },\n exportAs: 'matSlideToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true\n }, {\n provide: NG_VALIDATORS,\n useExisting: MatSlideToggle,\n multi: true\n }],\n imports: [MatRipple, _MatInternalFormField],\n template: \"<div mat-internal-form-field [labelPosition]=\\\"labelPosition\\\">\\n <button\\n class=\\\"mdc-switch\\\"\\n role=\\\"switch\\\"\\n type=\\\"button\\\"\\n [class.mdc-switch--selected]=\\\"checked\\\"\\n [class.mdc-switch--unselected]=\\\"!checked\\\"\\n [class.mdc-switch--checked]=\\\"checked\\\"\\n [class.mdc-switch--disabled]=\\\"disabled\\\"\\n [class.mat-mdc-slide-toggle-disabled-interactive]=\\\"disabledInteractive\\\"\\n [tabIndex]=\\\"disabled && !disabledInteractive ? -1 : tabIndex\\\"\\n [disabled]=\\\"disabled && !disabledInteractive\\\"\\n [attr.id]=\\\"buttonId\\\"\\n [attr.name]=\\\"name\\\"\\n [attr.aria-label]=\\\"ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"_getAriaLabelledBy()\\\"\\n [attr.aria-describedby]=\\\"ariaDescribedby\\\"\\n [attr.aria-required]=\\\"required || null\\\"\\n [attr.aria-checked]=\\\"checked\\\"\\n [attr.aria-disabled]=\\\"disabled && disabledInteractive ? 'true' : null\\\"\\n (click)=\\\"_handleClick()\\\"\\n #switch>\\n <span class=\\\"mdc-switch__track\\\"></span>\\n <span class=\\\"mdc-switch__handle-track\\\">\\n <span class=\\\"mdc-switch__handle\\\">\\n <span class=\\\"mdc-switch__shadow\\\">\\n <span class=\\\"mdc-elevation-overlay\\\"></span>\\n </span>\\n <span class=\\\"mdc-switch__ripple\\\">\\n <span class=\\\"mat-mdc-slide-toggle-ripple mat-focus-indicator\\\" mat-ripple\\n [matRippleTrigger]=\\\"switch\\\"\\n [matRippleDisabled]=\\\"disableRipple || disabled\\\"\\n [matRippleCentered]=\\\"true\\\"></span>\\n </span>\\n @if (!hideIcon) {\\n <span class=\\\"mdc-switch__icons\\\">\\n <svg\\n class=\\\"mdc-switch__icon mdc-switch__icon--on\\\"\\n viewBox=\\\"0 0 24 24\\\"\\n aria-hidden=\\\"true\\\">\\n <path d=\\\"M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z\\\" />\\n </svg>\\n <svg\\n class=\\\"mdc-switch__icon mdc-switch__icon--off\\\"\\n viewBox=\\\"0 0 24 24\\\"\\n aria-hidden=\\\"true\\\">\\n <path d=\\\"M20 13H4v-2h16v2z\\\" />\\n </svg>\\n </span>\\n }\\n </span>\\n </span>\\n </button>\\n\\n <!--\\n Clicking on the label will trigger another click event from the button.\\n Stop propagation here so other listeners further up in the DOM don't execute twice.\\n -->\\n <label class=\\\"mdc-label\\\" [for]=\\\"buttonId\\\" [attr.id]=\\\"_labelId\\\" (click)=\\\"$event.stopPropagation()\\\">\\n <ng-content></ng-content>\\n </label>\\n</div>\\n\",\n styles: [\".mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative;width:var(--mat-slide-toggle-track-width, 52px)}.mdc-switch.mdc-switch--disabled{cursor:default;pointer-events:none}.mdc-switch.mat-mdc-slide-toggle-disabled-interactive{pointer-events:auto}.mdc-switch__track{overflow:hidden;position:relative;width:100%;height:var(--mat-slide-toggle-track-height, 32px);border-radius:var(--mat-slide-toggle-track-shape, var(--mat-sys-corner-full))}.mdc-switch--disabled.mdc-switch .mdc-switch__track{opacity:var(--mat-slide-toggle-disabled-track-opacity, 0.12)}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;width:100%;border-width:var(--mat-slide-toggle-track-outline-width, 2px);border-color:var(--mat-slide-toggle-track-outline-color, var(--mat-sys-outline))}.mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track::after{border-width:var(--mat-slide-toggle-selected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-selected-track-outline-color, transparent)}.mdc-switch--disabled .mdc-switch__track::before,.mdc-switch--disabled .mdc-switch__track::after{border-width:var(--mat-slide-toggle-disabled-unselected-track-outline-width, 2px);border-color:var(--mat-slide-toggle-disabled-unselected-track-outline-color, var(--mat-sys-on-surface))}@media(forced-colors: active){.mdc-switch__track{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0);background:var(--mat-slide-toggle-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch--selected .mdc-switch__track::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-hover-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-focus-track-color, var(--mat-sys-surface-variant))}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mat-slide-toggle-unselected-pressed-track-color, var(--mat-sys-surface-variant))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::before,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::before,.mdc-switch.mdc-switch--disabled .mdc-switch__track::before{background:var(--mat-slide-toggle-disabled-unselected-track-color, var(--mat-sys-surface-variant))}.mdc-switch__track::after{transform:translateX(-100%);background:var(--mat-slide-toggle-selected-track-color, var(--mat-sys-primary))}[dir=rtl] .mdc-switch__track::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::after{transform:translateX(0)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-visible-track-opacity, 1);transition:var(--mat-slide-toggle-visible-track-transition, opacity 75ms)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-slide-toggle-hidden-track-opacity, 0);transition:var(--mat-slide-toggle-hidden-track-transition, opacity 75ms)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-hover-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-focus-track-color, var(--mat-sys-primary))}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mat-slide-toggle-selected-pressed-track-color, var(--mat-sys-primary))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__track::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__track::after,.mdc-switch.mdc-switch--disabled .mdc-switch__track::after{background:var(--mat-slide-toggle-disabled-selected-track-color, var(--mat-sys-on-surface))}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0);width:calc(100% - var(--mat-slide-toggle-handle-width))}[dir=rtl] .mdc-switch__handle-track{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto;transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1);width:var(--mat-slide-toggle-handle-width);height:var(--mat-slide-toggle-handle-height);border-radius:var(--mat-slide-toggle-handle-shape, var(--mat-sys-corner-full))}[dir=rtl] .mdc-switch__handle{left:auto;right:0}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-slide-toggle-unselected-handle-size, 16px);height:var(--mat-slide-toggle-unselected-handle-size, 16px);margin:var(--mat-slide-toggle-unselected-handle-horizontal-margin, 0 8px)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-unselected-with-icon-handle-horizontal-margin, 0 4px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-slide-toggle-selected-handle-size, 24px);height:var(--mat-slide-toggle-selected-handle-size, 24px);margin:var(--mat-slide-toggle-selected-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-slide-toggle-selected-with-icon-handle-horizontal-margin, 0 24px)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-slide-toggle-with-icon-handle-size, 24px);height:var(--mat-slide-toggle-with-icon-handle-size, 24px)}.mat-mdc-slide-toggle .mdc-switch:active:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-slide-toggle-pressed-handle-size, 28px);height:var(--mat-slide-toggle-pressed-handle-size, 28px)}.mat-mdc-slide-toggle .mdc-switch--selected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-selected-pressed-handle-horizontal-margin, 0 22px)}.mat-mdc-slide-toggle .mdc-switch--unselected:active:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-slide-toggle-unselected-pressed-handle-horizontal-margin, 0 2px)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-selected-handle-opacity, 1)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-slide-toggle-disabled-unselected-handle-opacity, 0.38)}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:\\\"\\\";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media(forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-handle-color, var(--mat-sys-on-primary))}.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-hover-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-focus-handle-color, var(--mat-sys-primary-container))}.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-selected-pressed-handle-color, var(--mat-sys-primary-container))}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:hover:not(:focus):not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:focus:not(:active) .mdc-switch__handle::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled.mdc-switch--selected:active .mdc-switch__handle::after,.mdc-switch--selected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-selected-handle-color, var(--mat-sys-surface))}.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-handle-color, var(--mat-sys-outline))}.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-hover-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-focus-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mat-slide-toggle-unselected-pressed-handle-color, var(--mat-sys-on-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__handle::after{background:var(--mat-slide-toggle-disabled-unselected-handle-color, var(--mat-sys-on-surface))}.mdc-switch__handle::before{background:var(--mat-slide-toggle-handle-surface-color)}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-handle-elevation-shadow)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:hover:not(:focus):not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:focus:not(:active) .mdc-switch__shadow,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:active .mdc-switch__shadow,.mdc-switch.mdc-switch--disabled .mdc-switch__shadow{box-shadow:var(--mat-slide-toggle-disabled-handle-elevation-shadow)}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1;width:var(--mat-slide-toggle-state-layer-size, 40px);height:var(--mat-slide-toggle-state-layer-size, 40px)}.mdc-switch__ripple::after{content:\\\"\\\";opacity:0}.mdc-switch--disabled .mdc-switch__ripple::after{display:none}.mat-mdc-slide-toggle-disabled-interactive .mdc-switch__ripple::after{display:block}.mdc-switch:hover .mdc-switch__ripple::after{transition:75ms opacity cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:focus .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:active .mdc-switch__ripple::after,.mat-mdc-slide-toggle-disabled-interactive.mdc-switch--disabled:enabled:hover:not(:focus) .mdc-switch__ripple::after,.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-hover-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-focus-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-unselected-pressed-state-layer-color, var(--mat-sys-on-surface));opacity:var(--mat-slide-toggle-unselected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-hover-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-focus-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background:var(--mat-slide-toggle-selected-pressed-state-layer-color, var(--mat-sys-primary));opacity:var(--mat-slide-toggle-selected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity));transition:opacity 75ms linear}.mdc-switch__icons{position:relative;height:100%;width:100%;z-index:1;transform:translateZ(0)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-unselected-icon-opacity, 0.38)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__icons{opacity:var(--mat-slide-toggle-disabled-selected-icon-opacity, 0.38)}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--unselected .mdc-switch__icon{width:var(--mat-slide-toggle-unselected-icon-size, 16px);height:var(--mat-slide-toggle-unselected-icon-size, 16px);fill:var(--mat-slide-toggle-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--unselected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-unselected-icon-color, var(--mat-sys-surface-variant))}.mdc-switch--selected .mdc-switch__icon{width:var(--mat-slide-toggle-selected-icon-size, 16px);height:var(--mat-slide-toggle-selected-icon-size, 16px);fill:var(--mat-slide-toggle-selected-icon-color, var(--mat-sys-on-primary-container))}.mdc-switch--selected.mdc-switch--disabled .mdc-switch__icon{fill:var(--mat-slide-toggle-disabled-selected-icon-color, var(--mat-sys-on-surface))}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{-webkit-user-select:none;user-select:none;display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-focus-indicator::before{content:\\\"\\\"}.mat-mdc-slide-toggle .mat-internal-form-field{color:var(--mat-slide-toggle-label-text-color, var(--mat-sys-on-surface));font-family:var(--mat-slide-toggle-label-text-font, var(--mat-sys-body-medium-font));line-height:var(--mat-slide-toggle-label-text-line-height, var(--mat-sys-body-medium-line-height));font-size:var(--mat-slide-toggle-label-text-size, var(--mat-sys-body-medium-size));letter-spacing:var(--mat-slide-toggle-label-text-tracking, var(--mat-sys-body-medium-tracking));font-weight:var(--mat-slide-toggle-label-text-weight, var(--mat-sys-body-medium-weight))}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mat-slide-toggle-disabled-label-text-color, var(--mat-sys-on-surface))}\\n\"]\n }]\n }], () => [], {\n _switchElement: [{\n type: ViewChild,\n args: ['switch']\n }],\n name: [{\n type: Input\n }],\n id: [{\n type: Input\n }],\n labelPosition: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }],\n required: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n color: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n disableRipple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n tabIndex: [{\n type: Input,\n args: [{\n transform: value => value == null ? 0 : numberAttribute(value)\n }]\n }],\n checked: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n hideIcon: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n disabledInteractive: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n change: [{\n type: Output\n }],\n toggleChange: [{\n type: Output\n }]\n });\n})();\nclass MatSlideToggleModule {\n static ɵfac = function MatSlideToggleModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSlideToggleModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSlideToggleModule,\n imports: [MatSlideToggle, MatCommonModule],\n exports: [MatSlideToggle, MatCommonModule]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatSlideToggle, MatCommonModule, MatCommonModule]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSlideToggleModule, [{\n type: NgModule,\n args: [{\n imports: [MatSlideToggle, MatCommonModule],\n exports: [MatSlideToggle, MatCommonModule]\n }]\n }], null, null);\n})();\nexport { MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS, MatSlideToggle, MatSlideToggleChange, MatSlideToggleModule };\n","import { Component, viewChild, inject, Signal } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { INotificationConfig } from '../../../interfaces/app-settings.interfaces';\nimport { AppService } from '../../../services/app-service';\nimport { AppSettingsService } from '../../../services/app-settings.service';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatSlideToggleModule, MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n\n@Component({\n selector: 'settings-notifications',\n templateUrl: './notifications.component.html',\n styleUrls: ['./notifications.component.scss'],\n\n imports: [\n FormsModule,\n MatCheckbox,\n MatSlideToggleModule,\n MatExpansionModule,\n MatDivider,\n MatButton,\n ],\n})\nexport class SettingsNotificationsComponent {\n private app = inject(AppService);\n private settings = inject(AppSettingsService);\n private _responsive = inject(BreakpointObserver);\n protected isPhonePortrait: Signal<BreakpointState>;\n readonly notificationsForm = viewChild<NgForm>('notificationsForm');\n readonly statePanel = viewChild<MatExpansionPanel>('statePanel');\n readonly soundPanel = viewChild<MatExpansionPanel>('soundPanel');\n public notificationConfig: INotificationConfig;\n public notificationDisabledExpandPanel = false;\n\n constructor() {\n this.isPhonePortrait = toSignal(this._responsive.observe(Breakpoints.HandsetPortrait));\n this.notificationConfig = cloneDeep(this.settings.getNotificationConfig());\n }\n\n public saveAllSettings():void {\n this.settings.setNotificationConfig(cloneDeep(this.notificationConfig));\n this.notificationsForm().form.markAsPristine();\n this.app.sendSnackbarNotification(\"Configuration saved\", 3000, false);\n }\n\n public togglePanel(e: MatSlideToggleChange): void {\n if(e.checked) {\n this.notificationDisabledExpandPanel = false;\n this.statePanel().close();\n this.soundPanel().close();\n }\n }\n}\n","<form (ngSubmit)=\"saveAllSettings()\" #notificationsForm=\"ngForm\" id=\"notificationSetting\">\n <p>Manage notification settings, ensuring operators\n stay informed about critical events.</p>\n <mat-slide-toggle\n name=\"disableNotifications\"\n [(ngModel)]=\"notificationConfig.disableNotifications\"\n (change)=\"togglePanel($event)\"\n color=\"primary\">\n Disable Notifications\n </mat-slide-toggle>\n <br/><br/>\n <mat-accordion>\n <mat-expansion-panel #statePanel\n [disabled]=\"notificationConfig.disableNotifications\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n Notifications\n </mat-panel-title>\n @if (!isPhonePortrait().matches) {\n <mat-panel-description>\n Show or hide menu items based on their state\n </mat-panel-description>\n }\n </mat-expansion-panel-header>\n <mat-checkbox\n name=\"showNormalState\"\n [(ngModel)]=\"notificationConfig.devices.showNormalState\">\n Show <b>Normal</b> state\n </mat-checkbox>\n <br/>\n <mat-checkbox\n name=\"showNominalState\"\n [(ngModel)]=\"notificationConfig.devices.showNominalState\">\n Show <b>Nominal</b> state\n </mat-checkbox>\n </mat-expansion-panel>\n <mat-expansion-panel #soundPanel\n [disabled]=\"notificationConfig.disableNotifications\">\n <mat-expansion-panel-header>\n <mat-panel-title>\n Audio Prompts\n </mat-panel-title>\n @if (!isPhonePortrait().matches) {\n <mat-panel-description>\n Mute and unmute data state audio prompts\n </mat-panel-description>\n }\n </mat-expansion-panel-header>\n <mat-checkbox\n name=\"=disableSound\"\n [(ngModel)]=\"notificationConfig.sound.disableSound\">\n Mute <b>all Notifications</b>\n </mat-checkbox>\n <br/>\n <mat-checkbox\n name=\"muteAlert\"\n [(ngModel)]=\"notificationConfig.sound.muteAlert\"\n [disabled]=\"notificationConfig.sound.disableSound\">\n Mute <b>all Alert</b> state\n </mat-checkbox>\n <br/>\n <mat-checkbox\n name=\"muteWarn\"\n [(ngModel)]=\"notificationConfig.sound.muteWarn\"\n [disabled]=\"notificationConfig.sound.disableSound\">\n Mute <b>all Warn</b> state\n </mat-checkbox>\n <br/>\n <mat-checkbox\n name=\"muteAlarm\"\n [(ngModel)]=\"notificationConfig.sound.muteAlarm\"\n [disabled]=\"notificationConfig.sound.disableSound\">\n Mute <b>all Alarm</b> state\n </mat-checkbox>\n <br/>\n <mat-checkbox\n name=\"muteEmergency\"\n [(ngModel)]=\"notificationConfig.sound.muteEmergency\"\n [disabled]=\"notificationConfig.sound.disableSound\">\n Mute <b>all Emergency</b> state\n </mat-checkbox>\n </mat-expansion-panel>\n </mat-accordion>\n <div class=\"formActionFooter\">\n <mat-divider class=\"formActionDivider\"></mat-divider>\n <button mat-flat-button type=\"submit\" class=\"formActionButton\" [disabled]=\"!notificationsForm.form.dirty\">Save</button>\n </div>\n</form>\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","import { ElementRef, Component, OnInit, OnDestroy, AfterViewInit, viewChild, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AppService } from '../../../services/app-service';\nimport { AppSettingsService } from '../../../services/app-settings.service';\nimport { IConnectionConfig } from \"../../../interfaces/app-settings.interfaces\";\nimport { SignalKConnectionService, IEndpointStatus } from '../../../services/signalk-connection.service';\nimport { IDeltaUpdate, DataService } from '../../../services/data.service';\nimport { SignalKDeltaService, IStreamStatus } from '../../../services/signalk-delta.service';\nimport { AuthenticationService, IAuthorizationToken } from '../../../services/authentication.service';\nimport { ConnectionStateMachine } from '../../../services/connection-state-machine.service';\nimport { ModalUserCredentialComponent } from '../../../components/modal-user-credential/modal-user-credential.component';\nimport { compare } from 'compare-versions';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatButton } from '@angular/material/button';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatSlideToggle, MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormField, MatLabel, MatError } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport Chart from 'chart.js/auto';\nimport 'chartjs-adapter-date-fns';\nimport { CanvasService } from '../../../services/canvas.service';\n\n\n\n/**\n * Signal K settings component for managing server connection configuration.\n * Handles URL validation, authentication, connection establishment, and\n * real-time monitoring of connection status and data stream statistics.\n */\n@Component({\n selector: 'settings-signalk',\n templateUrl: './signalk.component.html',\n styleUrls: ['./signalk.component.scss'],\n imports: [\n FormsModule,\n MatFormField,\n MatLabel,\n MatInput,\n MatError,\n MatCheckbox,\n MatSlideToggle,\n MatTooltip,\n MatButton\n ]\n})\n\nexport class SettingsSignalkComponent implements OnInit, AfterViewInit, OnDestroy {\n private readonly dialog = inject(MatDialog);\n private readonly appSettingsService = inject(AppSettingsService);\n protected readonly app = inject(AppService);\n private readonly DataService = inject(DataService);\n private readonly signalKConnectionService = inject(SignalKConnectionService);\n private readonly deltaService = inject(SignalKDeltaService);\n private readonly connectionStateMachine = inject(ConnectionStateMachine);\n protected readonly auth = inject(AuthenticationService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly canvasService = inject(CanvasService);\n\n\n protected readonly activityGraph = viewChild<ElementRef<HTMLCanvasElement>>('activityGraph');\n\n public connectionConfig: IConnectionConfig;\n public isConnecting = false; // Loading state for connect button\n\n public authToken: IAuthorizationToken;\n\n public endpointServiceStatus: IEndpointStatus;\n public streamStatus: IStreamStatus;\n\n\n private _chart: Chart = null;\n private textColor: string; // Store the computed text color for chart styling\n\n ngOnInit() {\n // get Signal K connection configuration\n this.connectionConfig = this.appSettingsService.getConnectionConfig();\n\n // get authentication token status\n this.auth.authToken$.pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((token: IAuthorizationToken) => {\n if (token) {\n this.authToken = token;\n } else {\n this.authToken = null;\n }\n });\n\n // get Signal K connection status\n this.signalKConnectionService.getServiceEndpointStatusAsO().pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((status: IEndpointStatus) => {\n this.endpointServiceStatus = status;\n });\n\n // get Delta Service WebSocket stream status\n this.deltaService.getDataStreamStatusAsO().pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((status: IStreamStatus): void => {\n this.streamStatus = status;\n });\n }\n\n ngAfterViewInit(): void {\n this.textColor = window.getComputedStyle(this.activityGraph().nativeElement).color;\n this._chart?.destroy();\n this.startChart();\n\n // Get real-time WebSocket Delta update statistics for chart\n this.DataService.getSignalkDeltaUpdateStatistics().pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((update: IDeltaUpdate) => {\n this._chart.data.datasets[0].data.push({ x: update.timestamp, y: update.value });\n if (this._chart.data.datasets[0].data.length > 10) {\n this._chart.data.datasets[0].data.shift();\n }\n this._chart?.update(\"none\");\n });\n }\n\n /**\n * Opens the user credential modal dialog for authentication.\n * @param errorMsg Optional error message to display in the modal\n */\n public openUserCredentialModal(errorMsg: string) {\n const dialogRef = this.dialog.open(ModalUserCredentialComponent, {\n data: {\n user: this.connectionConfig.loginName,\n password: this.connectionConfig.loginPassword,\n error: errorMsg\n }\n });\n\n dialogRef.afterClosed().pipe(\n takeUntilDestroyed(this.destroyRef)\n ).subscribe(data => {\n if (!data) { return } // User clicked cancel\n this.connectionConfig.loginName = data.user;\n this.connectionConfig.loginPassword = data.password;\n this.connectToServer();\n });\n }\n\n /**\n * Validates the Signal K server URL and establishes connection.\n * Handles the complete connection workflow including validation,\n * configuration saving, connection cleanup, and app reload.\n */\n public async connectToServer() {\n if (this.connectionConfig.useSharedConfig && (!this.connectionConfig.loginName || !this.connectionConfig.loginPassword)) {\n this.openUserCredentialModal(\"Credentials required\");\n return;\n }\n\n // Start loading state\n this.isConnecting = true;\n\n try {\n console.log('[Settings-SignalK] Validating Signal K server before connecting...');\n\n // Step 1: Validate the URL before proceeding\n await this.signalKConnectionService.validateSignalKUrl(this.connectionConfig.signalKUrl);\n\n console.log('[Settings-SignalK] Validation successful - proceeding with connection');\n\n // Step 2: Save the new configuration to localStorage\n this.appSettingsService.setConnectionConfig(this.connectionConfig);\n\n // Step 3: Properly close WebSocket and HTTP connections\n this.connectionStateMachine.shutdown('Configuration changed - restarting app');\n\n // Step 4: Clean up authentication token if switching from shared to individual config\n if (this.authToken && !this.connectionConfig.useSharedConfig && !this.authToken.isDeviceAccessToken) {\n this.auth.deleteToken();\n }\n\n // Step 5: Reload immediately - APP_INITIALIZER will handle connection and authentication with new URL\n // Skip during unit tests to avoid breaking Karma connection\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!(window as any).__KIP_TEST__) {\n location.reload();\n }\n\n } catch (error: unknown) {\n // Validation failed - show error and stay on current page\n this.isConnecting = false;\n const errorMessage = (error as Error)?.message || 'Unknown validation error';\n console.error('[Settings-SignalK] Server validation failed:', errorMessage);\n this.app.sendSnackbarNotification(`Connection failed: ${errorMessage}`, 8000, false);\n }\n }\n\n /**\n * Initializes the Chart.js line chart for displaying WebSocket delta statistics.\n * Creates a time-series chart showing data update frequency over time.\n */\n private startChart() {\n this._chart = new Chart(this.activityGraph().nativeElement.getContext('2d'), {\n type: 'line',\n data: {\n datasets: [\n {\n data: [],\n fill: true,\n borderColor: this.textColor\n },\n ]\n },\n options: {\n maintainAspectRatio: false,\n animation: false,\n parsing: false,\n scales: {\n x: {\n type: \"time\",\n display: true,\n time: {\n unit: \"minute\",\n minUnit: \"second\",\n round: \"second\",\n displayFormats: {\n // eslint-disable-next-line no-useless-escape\n hour: `k:mm\\''`,\n // eslint-disable-next-line no-useless-escape\n minute: `mm\\''`,\n second: `mm ss\"`,\n millisecond: \"SSS\"\n }\n },\n position: 'bottom',\n ticks: {\n display: false,\n },\n grid: {\n display: true\n }\n },\n y: {\n beginAtZero: true,\n type: 'linear',\n position: 'right',\n title: {\n text: \"Delta / Sec\",\n display: true\n }\n }\n },\n plugins: {\n legend: {\n display: false,\n labels: {\n color: this.textColor,\n }\n }\n }\n }\n });\n }\n\n /**\n * Handles the shared configuration toggle change event.\n * Validates Signal K server version compatibility and opens credential modal.\n */\n public useSharedConfigToggleClick(e: MatSlideToggleChange): void {\n if (e.checked) {\n const version: string = this.signalKConnectionService.serverVersion$.getValue();\n if (!compare(version, '1.46.2', \">=\")) {\n this.app.sendSnackbarNotification(\"Configuration sharing requires Signal K version 1.46.2 or better\", 0);\n this.connectionConfig.useSharedConfig = false;\n return;\n }\n this.openUserCredentialModal(null);\n }\n };\n\n ngOnDestroy() {\n this._chart?.destroy();\n const canvas = this.activityGraph?.()?.nativeElement as HTMLCanvasElement | undefined;\n this.canvasService.releaseCanvas(canvas, { clear: true, removeFromDom: true });\n }\n}\n","<form name=\"connectionForm\" (ngSubmit)=\"connectToServer()\" #connectionForm=\"ngForm\">\n <br />\n <table class=\"connect-table\">\n <tr class=\"connect-table\">\n <td class=\"url-cell\">\n <mat-form-field class=\"connectUrlInput\">\n <mat-label>Signal K URL</mat-label>\n <input type=url matInput placeholder=\"Ex. http://192.168.0.1:3000\" name=\"signalKURL\" [(ngModel)]=\"connectionConfig.signalKUrl\" [ngModelOptions]=\"{standalone: false}\" required pattern=\"https?://.+\">\n <mat-error>\n Valid URL is required. Ex. \"https://demo.signalK.org\" or \"http://my.server.com:3000\"\n </mat-error>\n </mat-form-field>\n </td>\n <td class=\"connect-cell\">\n <button mat-flat-button class=\"connect-btn\" type=\"submit\" [disabled]=\"!connectionForm.form.valid || isConnecting\">\n {{ isConnecting ? 'Validating...' : 'Connect' }}\n </button>\n </td>\n </tr>\n <tr class=\"connect-table\">\n <td colspan=\"2\">\n <mat-slide-toggle #useSharedConfigToggle\n name=\"useSharedConfigToggle\"\n matTooltip=\"Activating authentication enables Signal K's user storage feature to save KIP configuration on the server. When authentication is not activated, KIP stores it's configuration locally in the Browser.\"\n [(ngModel)]=\"connectionConfig.useSharedConfig\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"!connectionConfig.signalKUrl\"\n (change)=\"useSharedConfigToggleClick($event)\">\n Login to server\n </mat-slide-toggle>\n <button mat-flat-button type=\"button\" class=\"credentials-btn\" matTooltip=\"Configure Signal K user authentication credentials. The user must be a valid pre existing Signal K server user. It is strongly recommended not to use the default Signal K Admin user.\" [disabled]=\"!connectionConfig.useSharedConfig\" (click)=\"openUserCredentialModal(null)\">\n Set Credential\n </button>\n <br />\n <mat-checkbox [(ngModel)]=\"connectionConfig.signalKSubscribeAll\" [ngModelOptions]=\"{standalone: false}\" name=\"signalKSubscribeAll\">Subscribe to remote sources messages such as AIS and DSC targets. <i>Warning: this maybe generate heavy traffic.</i></mat-checkbox>\n </td>\n </tr>\n <tr class=\"connect-table\">\n <td colspan=\"2\">\n <mat-checkbox [(ngModel)]=\"connectionConfig.proxyEnabled\" [ngModelOptions]=\"{standalone: false}\" name=\"isProxyEnabled\">Signal K server is behind a Proxy</mat-checkbox>\n </td>\n </tr>\n </table>\n</form>\n\n <div class=\"activity-container\">\n <div class=\"activity-graph-container\">\n <canvas class=\"activity-graph\" #activityGraph></canvas>\n </div>\n <div class=\"info-container\">\n <pre>KIP: {{ app.appVersion() }}\n{{ app.browserVersion() }}, {{ app.osVersion() }}<br />\n{{ endpointServiceStatus.serverDescription }}\n{{ streamStatus.message }}, {{ streamStatus.hasToken ? 'Logged In' : 'Readonly'}}</pre>\n </div>\n </div>\n","import { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, ChangeDetectorRef, NgZone, Renderer2, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, booleanAttribute, numberAttribute, ViewChildren, ContentChild, ContentChildren, forwardRef, EventEmitter, signal, Directive, Output, NgModule } from '@angular/core';\nimport { b as RippleState, M as MatRipple, a as MAT_RIPPLE_GLOBAL_OPTIONS } from './ripple-BMyyyLz2.mjs';\nimport { _CdkPrivateStyleLoader } from '@angular/cdk/private';\nimport { _ as _animationsDisabled } from './animation-ChQ1vjiF.mjs';\nimport { _ as _StructuralStylesLoader } from './structural-styles-CObeNzjn.mjs';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { M as MatCommonModule } from './common-module-cKSwHniA.mjs';\nimport { M as MatRippleModule } from './index-BRImSAOu.mjs';\nimport '@angular/cdk/a11y';\nimport '@angular/cdk/coercion';\nimport '@angular/cdk/layout';\n\n/**\n * Thumb types: range slider has two thumbs (START, END) whereas single point\n * slider only has one thumb (END).\n */\nconst _c0 = [\"knob\"];\nconst _c1 = [\"valueIndicatorContainer\"];\nfunction MatSliderVisualThumb_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2, 1)(2, \"div\", 5)(3, \"span\", 6);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(4);\n i0.ɵɵtextInterpolate(ctx_r0.valueIndicatorText);\n }\n}\nconst _c2 = [\"trackActive\"];\nconst _c3 = [\"*\"];\nfunction MatSlider_Conditional_6_Conditional_2_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\");\n }\n if (rf & 2) {\n const tickMark_r1 = ctx.$implicit;\n const ɵ$index_14_r2 = ctx.$index;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵclassMap(tickMark_r1 === 0 ? \"mdc-slider__tick-mark--active\" : \"mdc-slider__tick-mark--inactive\");\n i0.ɵɵstyleProp(\"transform\", ctx_r2._calcTickMarkTransform(ɵ$index_14_r2));\n }\n}\nfunction MatSlider_Conditional_6_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, MatSlider_Conditional_6_Conditional_2_For_1_Template, 1, 4, \"div\", 8, i0.ɵɵrepeaterTrackByIndex);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵrepeater(ctx_r2._tickMarks);\n }\n}\nfunction MatSlider_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 6, 1);\n i0.ɵɵconditionalCreate(2, MatSlider_Conditional_6_Conditional_2_Template, 2, 0);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx_r2._cachedWidth ? 2 : -1);\n }\n}\nfunction MatSlider_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mat-slider-visual-thumb\", 7);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"discrete\", ctx_r2.discrete)(\"thumbPosition\", 1)(\"valueIndicatorText\", ctx_r2.startValueIndicatorText);\n }\n}\nvar _MatThumb;\n(function (_MatThumb) {\n _MatThumb[_MatThumb[\"START\"] = 1] = \"START\";\n _MatThumb[_MatThumb[\"END\"] = 2] = \"END\";\n})(_MatThumb || (_MatThumb = {}));\n/** Tick mark enum, for discrete sliders. */\nvar _MatTickMark;\n(function (_MatTickMark) {\n _MatTickMark[_MatTickMark[\"ACTIVE\"] = 0] = \"ACTIVE\";\n _MatTickMark[_MatTickMark[\"INACTIVE\"] = 1] = \"INACTIVE\";\n})(_MatTickMark || (_MatTickMark = {}));\n/**\n * Injection token that can be used for a `MatSlider` to provide itself as a\n * parent to the `MatSliderThumb` and `MatSliderRangeThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER = new InjectionToken('_MatSlider');\n/**\n * Injection token that can be used to query for a `MatSliderThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER_THUMB = new InjectionToken('_MatSliderThumb');\n/**\n * Injection token that can be used to query for a `MatSliderRangeThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER_RANGE_THUMB = new InjectionToken('_MatSliderRangeThumb');\n/**\n * Injection token that can be used to query for a `MatSliderVisualThumb`.\n * Used primarily to avoid circular imports.\n * @docs-private\n */\nconst MAT_SLIDER_VISUAL_THUMB = new InjectionToken('_MatSliderVisualThumb');\n/**\n * A simple change event emitted by the MatSlider component.\n * @deprecated Use event bindings directly on the MatSliderThumbs for `change` and `input` events. See https://v17.material.angular.dev/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nclass MatSliderChange {\n /** The MatSliderThumb that was interacted with. */\n source;\n /** The MatSlider that was interacted with. */\n parent;\n /** The new value of the source slider. */\n value;\n}\n\n/**\n * The visual slider thumb.\n *\n * Handles the slider thumb ripple states (hover, focus, and active),\n * and displaying the value tooltip on discrete sliders.\n * @docs-private\n */\nclass MatSliderVisualThumb {\n _cdr = inject(ChangeDetectorRef);\n _ngZone = inject(NgZone);\n _slider = inject(MAT_SLIDER);\n _renderer = inject(Renderer2);\n _listenerCleanups;\n /** Whether the slider displays a numeric value label upon pressing the thumb. */\n discrete;\n /** Indicates which slider thumb this input corresponds to. */\n thumbPosition;\n /** The display value of the slider thumb. */\n valueIndicatorText;\n /** The MatRipple for this slider thumb. */\n _ripple;\n /** The slider thumb knob. */\n _knob;\n /** The slider thumb value indicator container. */\n _valueIndicatorContainer;\n /** The slider input corresponding to this slider thumb. */\n _sliderInput;\n /** The native html element of the slider input corresponding to this thumb. */\n _sliderInputEl;\n /** The RippleRef for the slider thumbs hover state. */\n _hoverRippleRef;\n /** The RippleRef for the slider thumbs focus state. */\n _focusRippleRef;\n /** The RippleRef for the slider thumbs active state. */\n _activeRippleRef;\n /** Whether the slider thumb is currently being hovered. */\n _isHovered = false;\n /** Whether the slider thumb is currently being pressed. */\n _isActive = false;\n /** Whether the value indicator tooltip is visible. */\n _isValueIndicatorVisible = false;\n /** The host native HTML input element. */\n _hostElement = inject(ElementRef).nativeElement;\n _platform = inject(Platform);\n constructor() {}\n ngAfterViewInit() {\n const sliderInput = this._slider._getInput(this.thumbPosition);\n // No-op if the slider isn't configured properly. `MatSlider` will\n // throw an error instructing the user how to set up the slider.\n if (!sliderInput) {\n return;\n }\n this._ripple.radius = 24;\n this._sliderInput = sliderInput;\n this._sliderInputEl = this._sliderInput._hostElement;\n // These listeners don't update any data bindings so we bind them outside\n // of the NgZone to prevent Angular from needlessly running change detection.\n this._ngZone.runOutsideAngular(() => {\n const input = this._sliderInputEl;\n const renderer = this._renderer;\n this._listenerCleanups = [renderer.listen(input, 'pointermove', this._onPointerMove), renderer.listen(input, 'pointerdown', this._onDragStart), renderer.listen(input, 'pointerup', this._onDragEnd), renderer.listen(input, 'pointerleave', this._onMouseLeave), renderer.listen(input, 'focus', this._onFocus), renderer.listen(input, 'blur', this._onBlur)];\n });\n }\n ngOnDestroy() {\n this._listenerCleanups?.forEach(cleanup => cleanup());\n }\n _onPointerMove = event => {\n if (this._sliderInput._isFocused) {\n return;\n }\n const rect = this._hostElement.getBoundingClientRect();\n const isHovered = this._slider._isCursorOnSliderThumb(event, rect);\n this._isHovered = isHovered;\n if (isHovered) {\n this._showHoverRipple();\n } else {\n this._hideRipple(this._hoverRippleRef);\n }\n };\n _onMouseLeave = () => {\n this._isHovered = false;\n this._hideRipple(this._hoverRippleRef);\n };\n _onFocus = () => {\n // We don't want to show the hover ripple on top of the focus ripple.\n // Happen when the users cursor is over a thumb and then the user tabs to it.\n this._hideRipple(this._hoverRippleRef);\n this._showFocusRipple();\n this._hostElement.classList.add('mdc-slider__thumb--focused');\n };\n _onBlur = () => {\n // Happens when the user tabs away while still dragging a thumb.\n if (!this._isActive) {\n this._hideRipple(this._focusRippleRef);\n }\n // Happens when the user tabs away from a thumb but their cursor is still over it.\n if (this._isHovered) {\n this._showHoverRipple();\n }\n this._hostElement.classList.remove('mdc-slider__thumb--focused');\n };\n _onDragStart = event => {\n if (event.button !== 0) {\n return;\n }\n this._isActive = true;\n this._showActiveRipple();\n };\n _onDragEnd = () => {\n this._isActive = false;\n this._hideRipple(this._activeRippleRef);\n // Happens when the user starts dragging a thumb, tabs away, and then stops dragging.\n if (!this._sliderInput._isFocused) {\n this._hideRipple(this._focusRippleRef);\n }\n // On Safari we need to immediately re-show the hover ripple because\n // sliders do not retain focus from pointer events on that platform.\n if (this._platform.SAFARI) {\n this._showHoverRipple();\n }\n };\n /** Handles displaying the hover ripple. */\n _showHoverRipple() {\n if (!this._isShowingRipple(this._hoverRippleRef)) {\n this._hoverRippleRef = this._showRipple({\n enterDuration: 0,\n exitDuration: 0\n });\n this._hoverRippleRef?.element.classList.add('mat-mdc-slider-hover-ripple');\n }\n }\n /** Handles displaying the focus ripple. */\n _showFocusRipple() {\n // Show the focus ripple event if noop animations are enabled.\n if (!this._isShowingRipple(this._focusRippleRef)) {\n this._focusRippleRef = this._showRipple({\n enterDuration: 0,\n exitDuration: 0\n }, true);\n this._focusRippleRef?.element.classList.add('mat-mdc-slider-focus-ripple');\n }\n }\n /** Handles displaying the active ripple. */\n _showActiveRipple() {\n if (!this._isShowingRipple(this._activeRippleRef)) {\n this._activeRippleRef = this._showRipple({\n enterDuration: 225,\n exitDuration: 400\n });\n this._activeRippleRef?.element.classList.add('mat-mdc-slider-active-ripple');\n }\n }\n /** Whether the given rippleRef is currently fading in or visible. */\n _isShowingRipple(rippleRef) {\n return rippleRef?.state === RippleState.FADING_IN || rippleRef?.state === RippleState.VISIBLE;\n }\n /** Manually launches the slider thumb ripple using the specified ripple animation config. */\n _showRipple(animation, ignoreGlobalRippleConfig) {\n if (this._slider.disabled) {\n return;\n }\n this._showValueIndicator();\n if (this._slider._isRange) {\n const sibling = this._slider._getThumb(this.thumbPosition === _MatThumb.START ? _MatThumb.END : _MatThumb.START);\n sibling._showValueIndicator();\n }\n if (this._slider._globalRippleOptions?.disabled && !ignoreGlobalRippleConfig) {\n return;\n }\n return this._ripple.launch({\n animation: this._slider._noopAnimations ? {\n enterDuration: 0,\n exitDuration: 0\n } : animation,\n centered: true,\n persistent: true\n });\n }\n /**\n * Fades out the given ripple.\n * Also hides the value indicator if no ripple is showing.\n */\n _hideRipple(rippleRef) {\n rippleRef?.fadeOut();\n if (this._isShowingAnyRipple()) {\n return;\n }\n if (!this._slider._isRange) {\n this._hideValueIndicator();\n }\n const sibling = this._getSibling();\n if (!sibling._isShowingAnyRipple()) {\n this._hideValueIndicator();\n sibling._hideValueIndicator();\n }\n }\n /** Shows the value indicator ui. */\n _showValueIndicator() {\n this._hostElement.classList.add('mdc-slider__thumb--with-indicator');\n }\n /** Hides the value indicator ui. */\n _hideValueIndicator() {\n this._hostElement.classList.remove('mdc-slider__thumb--with-indicator');\n }\n _getSibling() {\n return this._slider._getThumb(this.thumbPosition === _MatThumb.START ? _MatThumb.END : _MatThumb.START);\n }\n /** Gets the value indicator container's native HTML element. */\n _getValueIndicatorContainer() {\n return this._valueIndicatorContainer?.nativeElement;\n }\n /** Gets the native HTML element of the slider thumb knob. */\n _getKnob() {\n return this._knob.nativeElement;\n }\n _isShowingAnyRipple() {\n return this._isShowingRipple(this._hoverRippleRef) || this._isShowingRipple(this._focusRippleRef) || this._isShowingRipple(this._activeRippleRef);\n }\n static ɵfac = function MatSliderVisualThumb_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderVisualThumb)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSliderVisualThumb,\n selectors: [[\"mat-slider-visual-thumb\"]],\n viewQuery: function MatSliderVisualThumb_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(MatRipple, 5);\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._ripple = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._knob = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._valueIndicatorContainer = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-slider__thumb\", \"mat-mdc-slider-visual-thumb\"],\n inputs: {\n discrete: \"discrete\",\n thumbPosition: \"thumbPosition\",\n valueIndicatorText: \"valueIndicatorText\"\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SLIDER_VISUAL_THUMB,\n useExisting: MatSliderVisualThumb\n }])],\n decls: 4,\n vars: 2,\n consts: [[\"knob\", \"\"], [\"valueIndicatorContainer\", \"\"], [1, \"mdc-slider__value-indicator-container\"], [1, \"mdc-slider__thumb-knob\"], [\"matRipple\", \"\", 1, \"mat-focus-indicator\", 3, \"matRippleDisabled\"], [1, \"mdc-slider__value-indicator\"], [1, \"mdc-slider__value-indicator-text\"]],\n template: function MatSliderVisualThumb_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵconditionalCreate(0, MatSliderVisualThumb_Conditional_0_Template, 5, 1, \"div\", 2);\n i0.ɵɵelement(1, \"div\", 3, 0)(3, \"div\", 4);\n }\n if (rf & 2) {\n i0.ɵɵconditional(ctx.discrete ? 0 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"matRippleDisabled\", true);\n }\n },\n dependencies: [MatRipple],\n styles: [\".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSliderVisualThumb, [{\n type: Component,\n args: [{\n selector: 'mat-slider-visual-thumb',\n host: {\n 'class': 'mdc-slider__thumb mat-mdc-slider-visual-thumb'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: MAT_SLIDER_VISUAL_THUMB,\n useExisting: MatSliderVisualThumb\n }],\n imports: [MatRipple],\n template: \"@if (discrete) {\\n <div class=\\\"mdc-slider__value-indicator-container\\\" #valueIndicatorContainer>\\n <div class=\\\"mdc-slider__value-indicator\\\">\\n <span class=\\\"mdc-slider__value-indicator-text\\\">{{valueIndicatorText}}</span>\\n </div>\\n </div>\\n}\\n<div class=\\\"mdc-slider__thumb-knob\\\" #knob></div>\\n<div matRipple class=\\\"mat-focus-indicator\\\" [matRippleDisabled]=\\\"true\\\"></div>\\n\",\n styles: [\".mat-mdc-slider-visual-thumb .mat-ripple{height:100%;width:100%}.mat-mdc-slider .mdc-slider__tick-marks{justify-content:start}.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--active,.mat-mdc-slider .mdc-slider__tick-marks .mdc-slider__tick-mark--inactive{position:absolute;left:2px}\\n\"]\n }]\n }], () => [], {\n discrete: [{\n type: Input\n }],\n thumbPosition: [{\n type: Input\n }],\n valueIndicatorText: [{\n type: Input\n }],\n _ripple: [{\n type: ViewChild,\n args: [MatRipple]\n }],\n _knob: [{\n type: ViewChild,\n args: ['knob']\n }],\n _valueIndicatorContainer: [{\n type: ViewChild,\n args: ['valueIndicatorContainer']\n }]\n });\n})();\n\n// TODO(wagnermaciel): maybe handle the following edge case:\n// 1. start dragging discrete slider\n// 2. tab to disable checkbox\n// 3. without ending drag, disable the slider\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `<input type=\"range\">` element.\n */\nclass MatSlider {\n _ngZone = inject(NgZone);\n _cdr = inject(ChangeDetectorRef);\n _elementRef = inject(ElementRef);\n _dir = inject(Directionality, {\n optional: true\n });\n _globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, {\n optional: true\n });\n /** The active portion of the slider track. */\n _trackActive;\n /** The slider thumb(s). */\n _thumbs;\n /** The sliders hidden range input(s). */\n _input;\n /** The sliders hidden range input(s). */\n _inputs;\n /** Whether the slider is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(v) {\n this._disabled = v;\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n if (endInput) {\n endInput.disabled = this._disabled;\n }\n if (startInput) {\n startInput.disabled = this._disabled;\n }\n }\n _disabled = false;\n /** Whether the slider displays a numeric value label upon pressing the thumb. */\n get discrete() {\n return this._discrete;\n }\n set discrete(v) {\n this._discrete = v;\n this._updateValueIndicatorUIs();\n }\n _discrete = false;\n /** Whether the slider displays tick marks along the slider track. */\n get showTickMarks() {\n return this._showTickMarks;\n }\n set showTickMarks(value) {\n this._showTickMarks = value;\n if (this._hasViewInitialized) {\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n }\n }\n _showTickMarks = false;\n /** The minimum value that the slider can have. */\n get min() {\n return this._min;\n }\n set min(v) {\n const min = v === undefined || v === null || isNaN(v) ? this._min : v;\n if (this._min !== min) {\n this._updateMin(min);\n }\n }\n _min = 0;\n /**\n * Theme color of the slider. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/slider/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color;\n /** Whether ripples are disabled in the slider. */\n disableRipple = false;\n _updateMin(min) {\n const prevMin = this._min;\n this._min = min;\n this._isRange ? this._updateMinRange({\n old: prevMin,\n new: min\n }) : this._updateMinNonRange(min);\n this._onMinMaxOrStepChange();\n }\n _updateMinRange(min) {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n const oldEndValue = endInput.value;\n const oldStartValue = startInput.value;\n startInput.min = min.new;\n endInput.min = Math.max(min.new, startInput.value);\n startInput.max = Math.min(endInput.max, endInput.value);\n startInput._updateWidthInactive();\n endInput._updateWidthInactive();\n min.new < min.old ? this._onTranslateXChangeBySideEffect(endInput, startInput) : this._onTranslateXChangeBySideEffect(startInput, endInput);\n if (oldEndValue !== endInput.value) {\n this._onValueChange(endInput);\n }\n if (oldStartValue !== startInput.value) {\n this._onValueChange(startInput);\n }\n }\n _updateMinNonRange(min) {\n const input = this._getInput(_MatThumb.END);\n if (input) {\n const oldValue = input.value;\n input.min = min;\n input._updateThumbUIByValue();\n this._updateTrackUI(input);\n if (oldValue !== input.value) {\n this._onValueChange(input);\n }\n }\n }\n /** The maximum value that the slider can have. */\n get max() {\n return this._max;\n }\n set max(v) {\n const max = v === undefined || v === null || isNaN(v) ? this._max : v;\n if (this._max !== max) {\n this._updateMax(max);\n }\n }\n _max = 100;\n _updateMax(max) {\n const prevMax = this._max;\n this._max = max;\n this._isRange ? this._updateMaxRange({\n old: prevMax,\n new: max\n }) : this._updateMaxNonRange(max);\n this._onMinMaxOrStepChange();\n }\n _updateMaxRange(max) {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n const oldEndValue = endInput.value;\n const oldStartValue = startInput.value;\n endInput.max = max.new;\n startInput.max = Math.min(max.new, endInput.value);\n endInput.min = startInput.value;\n endInput._updateWidthInactive();\n startInput._updateWidthInactive();\n max.new > max.old ? this._onTranslateXChangeBySideEffect(startInput, endInput) : this._onTranslateXChangeBySideEffect(endInput, startInput);\n if (oldEndValue !== endInput.value) {\n this._onValueChange(endInput);\n }\n if (oldStartValue !== startInput.value) {\n this._onValueChange(startInput);\n }\n }\n _updateMaxNonRange(max) {\n const input = this._getInput(_MatThumb.END);\n if (input) {\n const oldValue = input.value;\n input.max = max;\n input._updateThumbUIByValue();\n this._updateTrackUI(input);\n if (oldValue !== input.value) {\n this._onValueChange(input);\n }\n }\n }\n /** The values at which the thumb will snap. */\n get step() {\n return this._step;\n }\n set step(v) {\n const step = isNaN(v) ? this._step : v;\n if (this._step !== step) {\n this._updateStep(step);\n }\n }\n _step = 1;\n _updateStep(step) {\n this._step = step;\n this._isRange ? this._updateStepRange() : this._updateStepNonRange();\n this._onMinMaxOrStepChange();\n }\n _updateStepRange() {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n const oldEndValue = endInput.value;\n const oldStartValue = startInput.value;\n const prevStartValue = startInput.value;\n endInput.min = this._min;\n startInput.max = this._max;\n endInput.step = this._step;\n startInput.step = this._step;\n if (this._platform.SAFARI) {\n endInput.value = endInput.value;\n startInput.value = startInput.value;\n }\n endInput.min = Math.max(this._min, startInput.value);\n startInput.max = Math.min(this._max, endInput.value);\n startInput._updateWidthInactive();\n endInput._updateWidthInactive();\n endInput.value < prevStartValue ? this._onTranslateXChangeBySideEffect(startInput, endInput) : this._onTranslateXChangeBySideEffect(endInput, startInput);\n if (oldEndValue !== endInput.value) {\n this._onValueChange(endInput);\n }\n if (oldStartValue !== startInput.value) {\n this._onValueChange(startInput);\n }\n }\n _updateStepNonRange() {\n const input = this._getInput(_MatThumb.END);\n if (input) {\n const oldValue = input.value;\n input.step = this._step;\n if (this._platform.SAFARI) {\n input.value = input.value;\n }\n input._updateThumbUIByValue();\n if (oldValue !== input.value) {\n this._onValueChange(input);\n }\n }\n }\n /**\n * Function that will be used to format the value before it is displayed\n * in the thumb label. Can be used to format very large number in order\n * for them to fit into the slider thumb.\n */\n displayWith = value => `${value}`;\n /** Used to keep track of & render the active & inactive tick marks on the slider track. */\n _tickMarks;\n /** Whether animations have been disabled. */\n _noopAnimations = _animationsDisabled();\n /** Subscription to changes to the directionality (LTR / RTL) context for the application. */\n _dirChangeSubscription;\n /** Observer used to monitor size changes in the slider. */\n _resizeObserver;\n // Stored dimensions to avoid calling getBoundingClientRect redundantly.\n _cachedWidth;\n _cachedLeft;\n _rippleRadius = 24;\n // The value indicator tooltip text for the visual slider thumb(s).\n /** @docs-private */\n startValueIndicatorText = '';\n /** @docs-private */\n endValueIndicatorText = '';\n // Used to control the translateX of the visual slider thumb(s).\n _endThumbTransform;\n _startThumbTransform;\n _isRange = false;\n /** Whether the slider is rtl. */\n _isRtl = false;\n _hasViewInitialized = false;\n /**\n * The width of the tick mark track.\n * The tick mark track width is different from full track width\n */\n _tickMarkTrackWidth = 0;\n _hasAnimation = false;\n _resizeTimer = null;\n _platform = inject(Platform);\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(() => this._onDirChange());\n this._isRtl = this._dir.value === 'rtl';\n }\n }\n /** The radius of the native slider's knob. AFAIK there is no way to avoid hardcoding this. */\n _knobRadius = 8;\n _inputPadding;\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._updateDimensions();\n }\n const eInput = this._getInput(_MatThumb.END);\n const sInput = this._getInput(_MatThumb.START);\n this._isRange = !!eInput && !!sInput;\n this._cdr.detectChanges();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _validateInputs(this._isRange, this._getInput(_MatThumb.END), this._getInput(_MatThumb.START));\n }\n const thumb = this._getThumb(_MatThumb.END);\n this._rippleRadius = thumb._ripple.radius;\n this._inputPadding = this._rippleRadius - this._knobRadius;\n this._isRange ? this._initUIRange(eInput, sInput) : this._initUINonRange(eInput);\n this._updateTrackUI(eInput);\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n this._observeHostResize();\n this._cdr.detectChanges();\n }\n _initUINonRange(eInput) {\n eInput.initProps();\n eInput.initUI();\n this._updateValueIndicatorUI(eInput);\n this._hasViewInitialized = true;\n eInput._updateThumbUIByValue();\n }\n _initUIRange(eInput, sInput) {\n eInput.initProps();\n eInput.initUI();\n sInput.initProps();\n sInput.initUI();\n eInput._updateMinMax();\n sInput._updateMinMax();\n eInput._updateStaticStyles();\n sInput._updateStaticStyles();\n this._updateValueIndicatorUIs();\n this._hasViewInitialized = true;\n eInput._updateThumbUIByValue();\n sInput._updateThumbUIByValue();\n }\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n /** Handles updating the slider ui after a dir change. */\n _onDirChange() {\n this._isRtl = this._dir?.value === 'rtl';\n this._isRange ? this._onDirChangeRange() : this._onDirChangeNonRange();\n this._updateTickMarkUI();\n }\n _onDirChangeRange() {\n const endInput = this._getInput(_MatThumb.END);\n const startInput = this._getInput(_MatThumb.START);\n endInput._setIsLeftThumb();\n startInput._setIsLeftThumb();\n endInput.translateX = endInput._calcTranslateXByValue();\n startInput.translateX = startInput._calcTranslateXByValue();\n endInput._updateStaticStyles();\n startInput._updateStaticStyles();\n endInput._updateWidthInactive();\n startInput._updateWidthInactive();\n endInput._updateThumbUIByValue();\n startInput._updateThumbUIByValue();\n }\n _onDirChangeNonRange() {\n const input = this._getInput(_MatThumb.END);\n input._updateThumbUIByValue();\n }\n /** Starts observing and updating the slider if the host changes its size. */\n _observeHostResize() {\n if (typeof ResizeObserver === 'undefined' || !ResizeObserver) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver = new ResizeObserver(() => {\n if (this._isActive()) {\n return;\n }\n if (this._resizeTimer) {\n clearTimeout(this._resizeTimer);\n }\n this._onResize();\n });\n this._resizeObserver.observe(this._elementRef.nativeElement);\n });\n }\n /** Whether any of the thumbs are currently active. */\n _isActive() {\n return this._getThumb(_MatThumb.START)._isActive || this._getThumb(_MatThumb.END)._isActive;\n }\n _getValue(thumbPosition = _MatThumb.END) {\n const input = this._getInput(thumbPosition);\n if (!input) {\n return this.min;\n }\n return input.value;\n }\n _skipUpdate() {\n return !!(this._getInput(_MatThumb.START)?._skipUIUpdate || this._getInput(_MatThumb.END)?._skipUIUpdate);\n }\n /** Stores the slider dimensions. */\n _updateDimensions() {\n this._cachedWidth = this._elementRef.nativeElement.offsetWidth;\n this._cachedLeft = this._elementRef.nativeElement.getBoundingClientRect().left;\n }\n /** Sets the styles for the active portion of the track. */\n _setTrackActiveStyles(styles) {\n const trackStyle = this._trackActive.nativeElement.style;\n trackStyle.left = styles.left;\n trackStyle.right = styles.right;\n trackStyle.transformOrigin = styles.transformOrigin;\n trackStyle.transform = styles.transform;\n }\n /** Returns the translateX positioning for a tick mark based on it's index. */\n _calcTickMarkTransform(index) {\n // TODO(wagnermaciel): See if we can avoid doing this and just using flex to position these.\n const offset = index * (this._tickMarkTrackWidth / (this._tickMarks.length - 1));\n const translateX = this._isRtl ? this._cachedWidth - 6 - offset : offset;\n return `translateX(${translateX}px`;\n }\n // Handlers for updating the slider ui.\n _onTranslateXChange(source) {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateThumbUI(source);\n this._updateTrackUI(source);\n this._updateOverlappingThumbUI(source);\n }\n _onTranslateXChangeBySideEffect(input1, input2) {\n if (!this._hasViewInitialized) {\n return;\n }\n input1._updateThumbUIByValue();\n input2._updateThumbUIByValue();\n }\n _onValueChange(source) {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateValueIndicatorUI(source);\n this._updateTickMarkUI();\n this._cdr.detectChanges();\n }\n _onMinMaxOrStepChange() {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n this._cdr.markForCheck();\n }\n _onResize() {\n if (!this._hasViewInitialized) {\n return;\n }\n this._updateDimensions();\n if (this._isRange) {\n const eInput = this._getInput(_MatThumb.END);\n const sInput = this._getInput(_MatThumb.START);\n eInput._updateThumbUIByValue();\n sInput._updateThumbUIByValue();\n eInput._updateStaticStyles();\n sInput._updateStaticStyles();\n eInput._updateMinMax();\n sInput._updateMinMax();\n eInput._updateWidthInactive();\n sInput._updateWidthInactive();\n } else {\n const eInput = this._getInput(_MatThumb.END);\n if (eInput) {\n eInput._updateThumbUIByValue();\n }\n }\n this._updateTickMarkUI();\n this._updateTickMarkTrackUI();\n this._cdr.detectChanges();\n }\n /** Whether or not the slider thumbs overlap. */\n _thumbsOverlap = false;\n /** Returns true if the slider knobs are overlapping one another. */\n _areThumbsOverlapping() {\n const startInput = this._getInput(_MatThumb.START);\n const endInput = this._getInput(_MatThumb.END);\n if (!startInput || !endInput) {\n return false;\n }\n return endInput.translateX - startInput.translateX < 20;\n }\n /**\n * Updates the class names of overlapping slider thumbs so\n * that the current active thumb is styled to be on \"top\".\n */\n _updateOverlappingThumbClassNames(source) {\n const sibling = source.getSibling();\n const sourceThumb = this._getThumb(source.thumbPosition);\n const siblingThumb = this._getThumb(sibling.thumbPosition);\n siblingThumb._hostElement.classList.remove('mdc-slider__thumb--top');\n sourceThumb._hostElement.classList.toggle('mdc-slider__thumb--top', this._thumbsOverlap);\n }\n /** Updates the UI of slider thumbs when they begin or stop overlapping. */\n _updateOverlappingThumbUI(source) {\n if (!this._isRange || this._skipUpdate()) {\n return;\n }\n if (this._thumbsOverlap !== this._areThumbsOverlapping()) {\n this._thumbsOverlap = !this._thumbsOverlap;\n this._updateOverlappingThumbClassNames(source);\n }\n }\n // _MatThumb styles update conditions\n //\n // 1. TranslateX, resize, or dir change\n // - Reason: The thumb styles need to be updated according to the new translateX.\n // 2. Min, max, or step\n // - Reason: The value may have silently changed.\n /** Updates the translateX of the given thumb. */\n _updateThumbUI(source) {\n if (this._skipUpdate()) {\n return;\n }\n const thumb = this._getThumb(source.thumbPosition === _MatThumb.END ? _MatThumb.END : _MatThumb.START);\n thumb._hostElement.style.transform = `translateX(${source.translateX}px)`;\n }\n // Value indicator text update conditions\n //\n // 1. Value\n // - Reason: The value displayed needs to be updated.\n // 2. Min, max, or step\n // - Reason: The value may have silently changed.\n /** Updates the value indicator tooltip ui for the given thumb. */\n _updateValueIndicatorUI(source) {\n if (this._skipUpdate()) {\n return;\n }\n const valuetext = this.displayWith(source.value);\n this._hasViewInitialized ? source._valuetext.set(valuetext) : source._hostElement.setAttribute('aria-valuetext', valuetext);\n if (this.discrete) {\n source.thumbPosition === _MatThumb.START ? this.startValueIndicatorText = valuetext : this.endValueIndicatorText = valuetext;\n const visualThumb = this._getThumb(source.thumbPosition);\n valuetext.length < 3 ? visualThumb._hostElement.classList.add('mdc-slider__thumb--short-value') : visualThumb._hostElement.classList.remove('mdc-slider__thumb--short-value');\n }\n }\n /** Updates all value indicator UIs in the slider. */\n _updateValueIndicatorUIs() {\n const eInput = this._getInput(_MatThumb.END);\n const sInput = this._getInput(_MatThumb.START);\n if (eInput) {\n this._updateValueIndicatorUI(eInput);\n }\n if (sInput) {\n this._updateValueIndicatorUI(sInput);\n }\n }\n // Update Tick Mark Track Width\n //\n // 1. Min, max, or step\n // - Reason: The maximum reachable value may have changed.\n // - Side note: The maximum reachable value is different from the maximum value set by the\n // user. For example, a slider with [min: 5, max: 100, step: 10] would have a maximum\n // reachable value of 95.\n // 2. Resize\n // - Reason: The position for the maximum reachable value needs to be recalculated.\n /** Updates the width of the tick mark track. */\n _updateTickMarkTrackUI() {\n if (!this.showTickMarks || this._skipUpdate()) {\n return;\n }\n const step = this._step && this._step > 0 ? this._step : 1;\n const maxValue = Math.floor(this.max / step) * step;\n const percentage = (maxValue - this.min) / (this.max - this.min);\n this._tickMarkTrackWidth = (this._cachedWidth - 6) * percentage;\n }\n // Track active update conditions\n //\n // 1. TranslateX\n // - Reason: The track active should line up with the new thumb position.\n // 2. Min or max\n // - Reason #1: The 'active' percentage needs to be recalculated.\n // - Reason #2: The value may have silently changed.\n // 3. Step\n // - Reason: The value may have silently changed causing the thumb(s) to shift.\n // 4. Dir change\n // - Reason: The track active will need to be updated according to the new thumb position(s).\n // 5. Resize\n // - Reason: The total width the 'active' tracks translateX is based on has changed.\n /** Updates the scale on the active portion of the track. */\n _updateTrackUI(source) {\n if (this._skipUpdate()) {\n return;\n }\n this._isRange ? this._updateTrackUIRange(source) : this._updateTrackUINonRange(source);\n }\n _updateTrackUIRange(source) {\n const sibling = source.getSibling();\n if (!sibling || !this._cachedWidth) {\n return;\n }\n const activePercentage = Math.abs(sibling.translateX - source.translateX) / this._cachedWidth;\n if (source._isLeftThumb && this._cachedWidth) {\n this._setTrackActiveStyles({\n left: 'auto',\n right: `${this._cachedWidth - sibling.translateX}px`,\n transformOrigin: 'right',\n transform: `scaleX(${activePercentage})`\n });\n } else {\n this._setTrackActiveStyles({\n left: `${sibling.translateX}px`,\n right: 'auto',\n transformOrigin: 'left',\n transform: `scaleX(${activePercentage})`\n });\n }\n }\n _updateTrackUINonRange(source) {\n this._isRtl ? this._setTrackActiveStyles({\n left: 'auto',\n right: '0px',\n transformOrigin: 'right',\n transform: `scaleX(${1 - source.fillPercentage})`\n }) : this._setTrackActiveStyles({\n left: '0px',\n right: 'auto',\n transformOrigin: 'left',\n transform: `scaleX(${source.fillPercentage})`\n });\n }\n // Tick mark update conditions\n //\n // 1. Value\n // - Reason: a tick mark which was once active might now be inactive or vice versa.\n // 2. Min, max, or step\n // - Reason #1: the number of tick marks may have changed.\n // - Reason #2: The value may have silently changed.\n /** Updates the dots along the slider track. */\n _updateTickMarkUI() {\n if (!this.showTickMarks || this.step === undefined || this.min === undefined || this.max === undefined) {\n return;\n }\n const step = this.step > 0 ? this.step : 1;\n this._isRange ? this._updateTickMarkUIRange(step) : this._updateTickMarkUINonRange(step);\n }\n _updateTickMarkUINonRange(step) {\n const value = this._getValue();\n let numActive = Math.max(Math.round((value - this.min) / step), 0) + 1;\n let numInactive = Math.max(Math.round((this.max - value) / step), 0) - 1;\n this._isRtl ? numActive++ : numInactive++;\n this._tickMarks = Array(numActive).fill(_MatTickMark.ACTIVE).concat(Array(numInactive).fill(_MatTickMark.INACTIVE));\n }\n _updateTickMarkUIRange(step) {\n const endValue = this._getValue();\n const startValue = this._getValue(_MatThumb.START);\n const numInactiveBeforeStartThumb = Math.max(Math.round((startValue - this.min) / step), 0);\n const numActive = Math.max(Math.round((endValue - startValue) / step) + 1, 0);\n const numInactiveAfterEndThumb = Math.max(Math.round((this.max - endValue) / step), 0);\n this._tickMarks = Array(numInactiveBeforeStartThumb).fill(_MatTickMark.INACTIVE).concat(Array(numActive).fill(_MatTickMark.ACTIVE), Array(numInactiveAfterEndThumb).fill(_MatTickMark.INACTIVE));\n }\n /** Gets the slider thumb input of the given thumb position. */\n _getInput(thumbPosition) {\n if (thumbPosition === _MatThumb.END && this._input) {\n return this._input;\n }\n if (this._inputs?.length) {\n return thumbPosition === _MatThumb.START ? this._inputs.first : this._inputs.last;\n }\n return;\n }\n /** Gets the slider thumb HTML input element of the given thumb position. */\n _getThumb(thumbPosition) {\n return thumbPosition === _MatThumb.END ? this._thumbs?.last : this._thumbs?.first;\n }\n _setTransition(withAnimation) {\n this._hasAnimation = !this._platform.IOS && withAnimation && !this._noopAnimations;\n this._elementRef.nativeElement.classList.toggle('mat-mdc-slider-with-animation', this._hasAnimation);\n }\n /** Whether the given pointer event occurred within the bounds of the slider pointer's DOM Rect. */\n _isCursorOnSliderThumb(event, rect) {\n const radius = rect.width / 2;\n const centerX = rect.x + radius;\n const centerY = rect.y + radius;\n const dx = event.clientX - centerX;\n const dy = event.clientY - centerY;\n return Math.pow(dx, 2) + Math.pow(dy, 2) < Math.pow(radius, 2);\n }\n static ɵfac = function MatSlider_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSlider)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSlider,\n selectors: [[\"mat-slider\"]],\n contentQueries: function MatSlider_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_SLIDER_THUMB, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_SLIDER_RANGE_THUMB, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._input = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._inputs = _t);\n }\n },\n viewQuery: function MatSlider_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 5);\n i0.ɵɵviewQuery(MAT_SLIDER_VISUAL_THUMB, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._trackActive = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._thumbs = _t);\n }\n },\n hostAttrs: [1, \"mat-mdc-slider\", \"mdc-slider\"],\n hostVars: 12,\n hostBindings: function MatSlider_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(\"mat-\" + (ctx.color || \"primary\"));\n i0.ɵɵclassProp(\"mdc-slider--range\", ctx._isRange)(\"mdc-slider--disabled\", ctx.disabled)(\"mdc-slider--discrete\", ctx.discrete)(\"mdc-slider--tick-marks\", ctx.showTickMarks)(\"_mat-animation-noopable\", ctx._noopAnimations);\n }\n },\n inputs: {\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n discrete: [2, \"discrete\", \"discrete\", booleanAttribute],\n showTickMarks: [2, \"showTickMarks\", \"showTickMarks\", booleanAttribute],\n min: [2, \"min\", \"min\", numberAttribute],\n color: \"color\",\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n max: [2, \"max\", \"max\", numberAttribute],\n step: [2, \"step\", \"step\", numberAttribute],\n displayWith: \"displayWith\"\n },\n exportAs: [\"matSlider\"],\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_SLIDER,\n useExisting: MatSlider\n }])],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 5,\n consts: [[\"trackActive\", \"\"], [\"tickMarkContainer\", \"\"], [1, \"mdc-slider__track\"], [1, \"mdc-slider__track--inactive\"], [1, \"mdc-slider__track--active\"], [1, \"mdc-slider__track--active_fill\"], [1, \"mdc-slider__tick-marks\"], [3, \"discrete\", \"thumbPosition\", \"valueIndicatorText\"], [3, \"class\", \"transform\"]],\n template: function MatSlider_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"div\", 2);\n i0.ɵɵelement(2, \"div\", 3);\n i0.ɵɵelementStart(3, \"div\", 4);\n i0.ɵɵelement(4, \"div\", 5, 0);\n i0.ɵɵelementEnd();\n i0.ɵɵconditionalCreate(6, MatSlider_Conditional_6_Template, 3, 1, \"div\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵconditionalCreate(7, MatSlider_Conditional_7_Template, 1, 3, \"mat-slider-visual-thumb\", 7);\n i0.ɵɵelement(8, \"mat-slider-visual-thumb\", 7);\n }\n if (rf & 2) {\n i0.ɵɵadvance(6);\n i0.ɵɵconditional(ctx.showTickMarks ? 6 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx._isRange ? 7 : -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"discrete\", ctx.discrete)(\"thumbPosition\", 2)(\"valueIndicatorText\", ctx.endValueIndicatorText);\n }\n },\n dependencies: [MatSliderVisualThumb],\n styles: [\".mdc-slider__track{position:absolute;top:50%;transform:translateY(-50%);width:100%;pointer-events:none;height:var(--mat-slider-inactive-track-height, 4px)}.mdc-slider__track--active,.mdc-slider__track--inactive{display:flex;height:100%;position:absolute;width:100%}.mdc-slider__track--active{overflow:hidden;border-radius:var(--mat-slider-active-track-shape, var(--mat-sys-corner-full));height:var(--mat-slider-active-track-height, 4px);top:calc((var(--mat-slider-inactive-track-height, 4px) - var(--mat-slider-active-track-height, 4px))/2)}.mdc-slider__track--active_fill{border-top-style:solid;box-sizing:border-box;height:100%;width:100%;position:relative;transform-origin:left;transition:transform 80ms ease;border-color:var(--mat-slider-active-track-color, var(--mat-sys-primary));border-top-width:var(--mat-slider-active-track-height, 4px)}.mdc-slider--disabled .mdc-slider__track--active_fill{border-color:var(--mat-slider-disabled-active-track-color, var(--mat-sys-on-surface))}[dir=rtl] .mdc-slider__track--active_fill{-webkit-transform-origin:right;transform-origin:right}.mdc-slider__track--inactive{left:0;top:0;opacity:.24;background-color:var(--mat-slider-inactive-track-color, var(--mat-sys-surface-variant));height:var(--mat-slider-inactive-track-height, 4px);border-radius:var(--mat-slider-inactive-track-shape, var(--mat-sys-corner-full))}.mdc-slider--disabled .mdc-slider__track--inactive{background-color:var(--mat-slider-disabled-inactive-track-color, var(--mat-sys-on-surface));opacity:.24}.mdc-slider__track--inactive::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media(forced-colors: active){.mdc-slider__track--inactive::before{border-color:CanvasText}}.mdc-slider__value-indicator-container{bottom:44px;left:50%;pointer-events:none;position:absolute;transform:var(--mat-slider-value-indicator-container-transform, translateX(-50%) rotate(-45deg))}.mdc-slider__thumb--with-indicator .mdc-slider__value-indicator-container{pointer-events:auto}.mdc-slider__value-indicator{display:flex;align-items:center;transform:scale(0);transform-origin:bottom;transition:transform 100ms cubic-bezier(0.4, 0, 1, 1);word-break:normal;background-color:var(--mat-slider-label-container-color, var(--mat-sys-primary));color:var(--mat-slider-label-label-text-color, var(--mat-sys-on-primary));width:var(--mat-slider-value-indicator-width, 28px);height:var(--mat-slider-value-indicator-height, 28px);padding:var(--mat-slider-value-indicator-padding, 0);opacity:var(--mat-slider-value-indicator-opacity, 1);border-radius:var(--mat-slider-value-indicator-border-radius, 50% 50% 50% 0)}.mdc-slider__thumb--with-indicator .mdc-slider__value-indicator{transition:transform 100ms cubic-bezier(0, 0, 0.2, 1);transform:scale(1)}.mdc-slider__value-indicator::before{border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-top:6px solid;bottom:-5px;content:\\\"\\\";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;display:var(--mat-slider-value-indicator-caret-display, none);border-top-color:var(--mat-slider-label-container-color, var(--mat-sys-primary))}.mdc-slider__value-indicator::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media(forced-colors: active){.mdc-slider__value-indicator::after{border-color:CanvasText}}.mdc-slider__value-indicator-text{text-align:center;width:var(--mat-slider-value-indicator-width, 28px);transform:var(--mat-slider-value-indicator-text-transform, rotate(45deg));font-family:var(--mat-slider-label-label-text-font, var(--mat-sys-label-medium-font));font-size:var(--mat-slider-label-label-text-size, var(--mat-sys-label-medium-size));font-weight:var(--mat-slider-label-label-text-weight, var(--mat-sys-label-medium-weight));line-height:var(--mat-slider-label-label-text-line-height, var(--mat-sys-label-medium-line-height));letter-spacing:var(--mat-slider-label-label-text-tracking, var(--mat-sys-label-medium-tracking))}.mdc-slider__thumb{-webkit-user-select:none;user-select:none;display:flex;left:-24px;outline:none;position:absolute;height:48px;width:48px;pointer-events:none}.mdc-slider--discrete .mdc-slider__thumb{transition:transform 80ms ease}.mdc-slider--disabled .mdc-slider__thumb{pointer-events:none}.mdc-slider__thumb--top{z-index:1}.mdc-slider__thumb-knob{position:absolute;box-sizing:border-box;left:50%;top:50%;transform:translate(-50%, -50%);border-style:solid;width:var(--mat-slider-handle-width, 20px);height:var(--mat-slider-handle-height, 20px);border-width:calc(var(--mat-slider-handle-height, 20px)/2) calc(var(--mat-slider-handle-width, 20px)/2);box-shadow:var(--mat-slider-handle-elevation, var(--mat-sys-level1));background-color:var(--mat-slider-handle-color, var(--mat-sys-primary));border-color:var(--mat-slider-handle-color, var(--mat-sys-primary));border-radius:var(--mat-slider-handle-shape, var(--mat-sys-corner-full))}.mdc-slider__thumb:hover .mdc-slider__thumb-knob{background-color:var(--mat-slider-hover-handle-color, var(--mat-sys-primary));border-color:var(--mat-slider-hover-handle-color, var(--mat-sys-primary))}.mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--mat-slider-focus-handle-color, var(--mat-sys-primary));border-color:var(--mat-slider-focus-handle-color, var(--mat-sys-primary))}.mdc-slider--disabled .mdc-slider__thumb-knob{background-color:var(--mat-slider-disabled-handle-color, var(--mat-sys-on-surface));border-color:var(--mat-slider-disabled-handle-color, var(--mat-sys-on-surface))}.mdc-slider__thumb--top .mdc-slider__thumb-knob,.mdc-slider__thumb--top.mdc-slider__thumb:hover .mdc-slider__thumb-knob,.mdc-slider__thumb--top.mdc-slider__thumb--focused .mdc-slider__thumb-knob{border:solid 1px #fff;box-sizing:content-box;border-color:var(--mat-slider-with-overlap-handle-outline-color, var(--mat-sys-on-primary));border-width:var(--mat-slider-with-overlap-handle-outline-width, 1px)}.mdc-slider__tick-marks{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;padding:0 1px;position:absolute;width:100%}.mdc-slider__tick-mark--active,.mdc-slider__tick-mark--inactive{width:var(--mat-slider-with-tick-marks-container-size, 2px);height:var(--mat-slider-with-tick-marks-container-size, 2px);border-radius:var(--mat-slider-with-tick-marks-container-shape, var(--mat-sys-corner-full))}.mdc-slider__tick-mark--inactive{opacity:var(--mat-slider-with-tick-marks-inactive-container-opacity, 0.38);background-color:var(--mat-slider-with-tick-marks-inactive-container-color, var(--mat-sys-on-surface-variant))}.mdc-slider--disabled .mdc-slider__tick-mark--inactive{opacity:var(--mat-slider-with-tick-marks-inactive-container-opacity, 0.38);background-color:var(--mat-slider-with-tick-marks-disabled-container-color, var(--mat-sys-on-surface))}.mdc-slider__tick-mark--active{opacity:var(--mat-slider-with-tick-marks-active-container-opacity, 0.38);background-color:var(--mat-slider-with-tick-marks-active-container-color, var(--mat-sys-on-primary))}.mdc-slider__input{cursor:pointer;left:2px;margin:0;height:44px;opacity:0;position:absolute;top:2px;width:44px;box-sizing:content-box}.mdc-slider__input.mat-mdc-slider-input-no-pointer-events{pointer-events:none}.mdc-slider__input.mat-slider__right-input{left:auto;right:0}.mat-mdc-slider{display:inline-block;box-sizing:border-box;outline:none;vertical-align:middle;cursor:pointer;height:48px;margin:0 8px;position:relative;touch-action:pan-y;width:auto;min-width:112px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-slider.mdc-slider--disabled{cursor:auto;opacity:.38}.mat-mdc-slider.mdc-slider--disabled .mdc-slider__input{cursor:auto}.mat-mdc-slider .mdc-slider__thumb,.mat-mdc-slider .mdc-slider__track--active_fill{transition-duration:0ms}.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__thumb,.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__track--active_fill{transition-duration:80ms}.mat-mdc-slider.mdc-slider--discrete .mdc-slider__thumb,.mat-mdc-slider.mdc-slider--discrete .mdc-slider__track--active_fill{transition-duration:0ms}.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__thumb,.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__track--active_fill{transition-duration:80ms}.mat-mdc-slider .mat-ripple .mat-ripple-element{background-color:var(--mat-slider-ripple-color, var(--mat-sys-primary))}.mat-mdc-slider .mat-ripple .mat-mdc-slider-hover-ripple{background-color:var(--mat-slider-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-primary) 5%, transparent))}.mat-mdc-slider .mat-ripple .mat-mdc-slider-focus-ripple,.mat-mdc-slider .mat-ripple .mat-mdc-slider-active-ripple{background-color:var(--mat-slider-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-primary) 20%, transparent))}.mat-mdc-slider._mat-animation-noopable.mdc-slider--discrete .mdc-slider__thumb,.mat-mdc-slider._mat-animation-noopable.mdc-slider--discrete .mdc-slider__track--active_fill,.mat-mdc-slider._mat-animation-noopable .mdc-slider__value-indicator{transition:none}.mat-mdc-slider .mat-focus-indicator::before{border-radius:50%}.mdc-slider__thumb--focused .mat-focus-indicator::before{content:\\\"\\\"}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSlider, [{\n type: Component,\n args: [{\n selector: 'mat-slider',\n host: {\n 'class': 'mat-mdc-slider mdc-slider',\n '[class]': '\"mat-\" + (color || \"primary\")',\n '[class.mdc-slider--range]': '_isRange',\n '[class.mdc-slider--disabled]': 'disabled',\n '[class.mdc-slider--discrete]': 'discrete',\n '[class.mdc-slider--tick-marks]': 'showTickMarks',\n '[class._mat-animation-noopable]': '_noopAnimations'\n },\n exportAs: 'matSlider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: MAT_SLIDER,\n useExisting: MatSlider\n }],\n imports: [MatSliderVisualThumb],\n template: \"<!-- Inputs -->\\n<ng-content></ng-content>\\n\\n<!-- Track -->\\n<div class=\\\"mdc-slider__track\\\">\\n <div class=\\\"mdc-slider__track--inactive\\\"></div>\\n <div class=\\\"mdc-slider__track--active\\\">\\n <div #trackActive class=\\\"mdc-slider__track--active_fill\\\"></div>\\n </div>\\n @if (showTickMarks) {\\n <div class=\\\"mdc-slider__tick-marks\\\" #tickMarkContainer>\\n @if (_cachedWidth) {\\n @for (tickMark of _tickMarks; track i; let i = $index) {\\n <div\\n [class]=\\\"tickMark === 0 ? 'mdc-slider__tick-mark--active' : 'mdc-slider__tick-mark--inactive'\\\"\\n [style.transform]=\\\"_calcTickMarkTransform(i)\\\"></div>\\n }\\n }\\n </div>\\n }\\n</div>\\n\\n<!-- Thumbs -->\\n@if (_isRange) {\\n <mat-slider-visual-thumb\\n [discrete]=\\\"discrete\\\"\\n [thumbPosition]=\\\"1\\\"\\n [valueIndicatorText]=\\\"startValueIndicatorText\\\">\\n </mat-slider-visual-thumb>\\n}\\n\\n<mat-slider-visual-thumb\\n [discrete]=\\\"discrete\\\"\\n [thumbPosition]=\\\"2\\\"\\n [valueIndicatorText]=\\\"endValueIndicatorText\\\">\\n</mat-slider-visual-thumb>\\n\",\n styles: [\".mdc-slider__track{position:absolute;top:50%;transform:translateY(-50%);width:100%;pointer-events:none;height:var(--mat-slider-inactive-track-height, 4px)}.mdc-slider__track--active,.mdc-slider__track--inactive{display:flex;height:100%;position:absolute;width:100%}.mdc-slider__track--active{overflow:hidden;border-radius:var(--mat-slider-active-track-shape, var(--mat-sys-corner-full));height:var(--mat-slider-active-track-height, 4px);top:calc((var(--mat-slider-inactive-track-height, 4px) - var(--mat-slider-active-track-height, 4px))/2)}.mdc-slider__track--active_fill{border-top-style:solid;box-sizing:border-box;height:100%;width:100%;position:relative;transform-origin:left;transition:transform 80ms ease;border-color:var(--mat-slider-active-track-color, var(--mat-sys-primary));border-top-width:var(--mat-slider-active-track-height, 4px)}.mdc-slider--disabled .mdc-slider__track--active_fill{border-color:var(--mat-slider-disabled-active-track-color, var(--mat-sys-on-surface))}[dir=rtl] .mdc-slider__track--active_fill{-webkit-transform-origin:right;transform-origin:right}.mdc-slider__track--inactive{left:0;top:0;opacity:.24;background-color:var(--mat-slider-inactive-track-color, var(--mat-sys-surface-variant));height:var(--mat-slider-inactive-track-height, 4px);border-radius:var(--mat-slider-inactive-track-shape, var(--mat-sys-corner-full))}.mdc-slider--disabled .mdc-slider__track--inactive{background-color:var(--mat-slider-disabled-inactive-track-color, var(--mat-sys-on-surface));opacity:.24}.mdc-slider__track--inactive::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media(forced-colors: active){.mdc-slider__track--inactive::before{border-color:CanvasText}}.mdc-slider__value-indicator-container{bottom:44px;left:50%;pointer-events:none;position:absolute;transform:var(--mat-slider-value-indicator-container-transform, translateX(-50%) rotate(-45deg))}.mdc-slider__thumb--with-indicator .mdc-slider__value-indicator-container{pointer-events:auto}.mdc-slider__value-indicator{display:flex;align-items:center;transform:scale(0);transform-origin:bottom;transition:transform 100ms cubic-bezier(0.4, 0, 1, 1);word-break:normal;background-color:var(--mat-slider-label-container-color, var(--mat-sys-primary));color:var(--mat-slider-label-label-text-color, var(--mat-sys-on-primary));width:var(--mat-slider-value-indicator-width, 28px);height:var(--mat-slider-value-indicator-height, 28px);padding:var(--mat-slider-value-indicator-padding, 0);opacity:var(--mat-slider-value-indicator-opacity, 1);border-radius:var(--mat-slider-value-indicator-border-radius, 50% 50% 50% 0)}.mdc-slider__thumb--with-indicator .mdc-slider__value-indicator{transition:transform 100ms cubic-bezier(0, 0, 0.2, 1);transform:scale(1)}.mdc-slider__value-indicator::before{border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-top:6px solid;bottom:-5px;content:\\\"\\\";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;display:var(--mat-slider-value-indicator-caret-display, none);border-top-color:var(--mat-slider-label-container-color, var(--mat-sys-primary))}.mdc-slider__value-indicator::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media(forced-colors: active){.mdc-slider__value-indicator::after{border-color:CanvasText}}.mdc-slider__value-indicator-text{text-align:center;width:var(--mat-slider-value-indicator-width, 28px);transform:var(--mat-slider-value-indicator-text-transform, rotate(45deg));font-family:var(--mat-slider-label-label-text-font, var(--mat-sys-label-medium-font));font-size:var(--mat-slider-label-label-text-size, var(--mat-sys-label-medium-size));font-weight:var(--mat-slider-label-label-text-weight, var(--mat-sys-label-medium-weight));line-height:var(--mat-slider-label-label-text-line-height, var(--mat-sys-label-medium-line-height));letter-spacing:var(--mat-slider-label-label-text-tracking, var(--mat-sys-label-medium-tracking))}.mdc-slider__thumb{-webkit-user-select:none;user-select:none;display:flex;left:-24px;outline:none;position:absolute;height:48px;width:48px;pointer-events:none}.mdc-slider--discrete .mdc-slider__thumb{transition:transform 80ms ease}.mdc-slider--disabled .mdc-slider__thumb{pointer-events:none}.mdc-slider__thumb--top{z-index:1}.mdc-slider__thumb-knob{position:absolute;box-sizing:border-box;left:50%;top:50%;transform:translate(-50%, -50%);border-style:solid;width:var(--mat-slider-handle-width, 20px);height:var(--mat-slider-handle-height, 20px);border-width:calc(var(--mat-slider-handle-height, 20px)/2) calc(var(--mat-slider-handle-width, 20px)/2);box-shadow:var(--mat-slider-handle-elevation, var(--mat-sys-level1));background-color:var(--mat-slider-handle-color, var(--mat-sys-primary));border-color:var(--mat-slider-handle-color, var(--mat-sys-primary));border-radius:var(--mat-slider-handle-shape, var(--mat-sys-corner-full))}.mdc-slider__thumb:hover .mdc-slider__thumb-knob{background-color:var(--mat-slider-hover-handle-color, var(--mat-sys-primary));border-color:var(--mat-slider-hover-handle-color, var(--mat-sys-primary))}.mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--mat-slider-focus-handle-color, var(--mat-sys-primary));border-color:var(--mat-slider-focus-handle-color, var(--mat-sys-primary))}.mdc-slider--disabled .mdc-slider__thumb-knob{background-color:var(--mat-slider-disabled-handle-color, var(--mat-sys-on-surface));border-color:var(--mat-slider-disabled-handle-color, var(--mat-sys-on-surface))}.mdc-slider__thumb--top .mdc-slider__thumb-knob,.mdc-slider__thumb--top.mdc-slider__thumb:hover .mdc-slider__thumb-knob,.mdc-slider__thumb--top.mdc-slider__thumb--focused .mdc-slider__thumb-knob{border:solid 1px #fff;box-sizing:content-box;border-color:var(--mat-slider-with-overlap-handle-outline-color, var(--mat-sys-on-primary));border-width:var(--mat-slider-with-overlap-handle-outline-width, 1px)}.mdc-slider__tick-marks{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:space-between;padding:0 1px;position:absolute;width:100%}.mdc-slider__tick-mark--active,.mdc-slider__tick-mark--inactive{width:var(--mat-slider-with-tick-marks-container-size, 2px);height:var(--mat-slider-with-tick-marks-container-size, 2px);border-radius:var(--mat-slider-with-tick-marks-container-shape, var(--mat-sys-corner-full))}.mdc-slider__tick-mark--inactive{opacity:var(--mat-slider-with-tick-marks-inactive-container-opacity, 0.38);background-color:var(--mat-slider-with-tick-marks-inactive-container-color, var(--mat-sys-on-surface-variant))}.mdc-slider--disabled .mdc-slider__tick-mark--inactive{opacity:var(--mat-slider-with-tick-marks-inactive-container-opacity, 0.38);background-color:var(--mat-slider-with-tick-marks-disabled-container-color, var(--mat-sys-on-surface))}.mdc-slider__tick-mark--active{opacity:var(--mat-slider-with-tick-marks-active-container-opacity, 0.38);background-color:var(--mat-slider-with-tick-marks-active-container-color, var(--mat-sys-on-primary))}.mdc-slider__input{cursor:pointer;left:2px;margin:0;height:44px;opacity:0;position:absolute;top:2px;width:44px;box-sizing:content-box}.mdc-slider__input.mat-mdc-slider-input-no-pointer-events{pointer-events:none}.mdc-slider__input.mat-slider__right-input{left:auto;right:0}.mat-mdc-slider{display:inline-block;box-sizing:border-box;outline:none;vertical-align:middle;cursor:pointer;height:48px;margin:0 8px;position:relative;touch-action:pan-y;width:auto;min-width:112px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-slider.mdc-slider--disabled{cursor:auto;opacity:.38}.mat-mdc-slider.mdc-slider--disabled .mdc-slider__input{cursor:auto}.mat-mdc-slider .mdc-slider__thumb,.mat-mdc-slider .mdc-slider__track--active_fill{transition-duration:0ms}.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__thumb,.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__track--active_fill{transition-duration:80ms}.mat-mdc-slider.mdc-slider--discrete .mdc-slider__thumb,.mat-mdc-slider.mdc-slider--discrete .mdc-slider__track--active_fill{transition-duration:0ms}.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__thumb,.mat-mdc-slider.mat-mdc-slider-with-animation .mdc-slider__track--active_fill{transition-duration:80ms}.mat-mdc-slider .mat-ripple .mat-ripple-element{background-color:var(--mat-slider-ripple-color, var(--mat-sys-primary))}.mat-mdc-slider .mat-ripple .mat-mdc-slider-hover-ripple{background-color:var(--mat-slider-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-primary) 5%, transparent))}.mat-mdc-slider .mat-ripple .mat-mdc-slider-focus-ripple,.mat-mdc-slider .mat-ripple .mat-mdc-slider-active-ripple{background-color:var(--mat-slider-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-primary) 20%, transparent))}.mat-mdc-slider._mat-animation-noopable.mdc-slider--discrete .mdc-slider__thumb,.mat-mdc-slider._mat-animation-noopable.mdc-slider--discrete .mdc-slider__track--active_fill,.mat-mdc-slider._mat-animation-noopable .mdc-slider__value-indicator{transition:none}.mat-mdc-slider .mat-focus-indicator::before{border-radius:50%}.mdc-slider__thumb--focused .mat-focus-indicator::before{content:\\\"\\\"}\\n\"]\n }]\n }], () => [], {\n _trackActive: [{\n type: ViewChild,\n args: ['trackActive']\n }],\n _thumbs: [{\n type: ViewChildren,\n args: [MAT_SLIDER_VISUAL_THUMB]\n }],\n _input: [{\n type: ContentChild,\n args: [MAT_SLIDER_THUMB]\n }],\n _inputs: [{\n type: ContentChildren,\n args: [MAT_SLIDER_RANGE_THUMB, {\n descendants: false\n }]\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n discrete: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n showTickMarks: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n min: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n color: [{\n type: Input\n }],\n disableRipple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n max: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n step: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n displayWith: [{\n type: Input\n }]\n });\n})();\n/** Ensures that there is not an invalid configuration for the slider thumb inputs. */\nfunction _validateInputs(isRange, endInputElement, startInputElement) {\n const startValid = !isRange || startInputElement?._hostElement.hasAttribute('matSliderStartThumb');\n const endValid = endInputElement?._hostElement.hasAttribute(isRange ? 'matSliderEndThumb' : 'matSliderThumb');\n if (!startValid || !endValid) {\n _throwInvalidInputConfigurationError();\n }\n}\nfunction _throwInvalidInputConfigurationError() {\n throw Error(`Invalid slider thumb input configuration!\n\n Valid configurations are as follows:\n\n <mat-slider>\n <input matSliderThumb>\n </mat-slider>\n\n or\n\n <mat-slider>\n <input matSliderStartThumb>\n <input matSliderEndThumb>\n </mat-slider>\n `);\n}\n\n/**\n * Provider that allows the slider thumb to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_SLIDER_THUMB_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSliderThumb),\n multi: true\n};\n/**\n * Provider that allows the range slider thumb to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_SLIDER_RANGE_THUMB_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSliderRangeThumb),\n multi: true\n};\n/**\n * Directive that adds slider-specific behaviors to an input element inside `<mat-slider>`.\n * Up to two may be placed inside of a `<mat-slider>`.\n *\n * If one is used, the selector `matSliderThumb` must be used, and the outcome will be a normal\n * slider. If two are used, the selectors `matSliderStartThumb` and `matSliderEndThumb` must be\n * used, and the outcome will be a range slider with two slider thumbs.\n */\nclass MatSliderThumb {\n _ngZone = inject(NgZone);\n _elementRef = inject(ElementRef);\n _cdr = inject(ChangeDetectorRef);\n _slider = inject(MAT_SLIDER);\n _platform = inject(Platform);\n _listenerCleanups;\n get value() {\n return numberAttribute(this._hostElement.value, 0);\n }\n set value(value) {\n if (value === null) {\n value = this._getDefaultValue();\n }\n value = isNaN(value) ? 0 : value;\n const stringValue = value + '';\n if (!this._hasSetInitialValue) {\n this._initialValue = stringValue;\n return;\n }\n if (this._isActive) {\n return;\n }\n this._setValue(stringValue);\n }\n /**\n * Handles programmatic value setting. This has been split out to\n * allow the range thumb to override it and add additional necessary logic.\n */\n _setValue(value) {\n this._hostElement.value = value;\n this._updateThumbUIByValue();\n this._slider._onValueChange(this);\n this._cdr.detectChanges();\n this._slider._cdr.markForCheck();\n }\n /** Event emitted when the `value` is changed. */\n valueChange = new EventEmitter();\n /** Event emitted when the slider thumb starts being dragged. */\n dragStart = new EventEmitter();\n /** Event emitted when the slider thumb stops being dragged. */\n dragEnd = new EventEmitter();\n /**\n * The current translateX in px of the slider visual thumb.\n * @docs-private\n */\n get translateX() {\n if (this._slider.min >= this._slider.max) {\n this._translateX = this._tickMarkOffset;\n return this._translateX;\n }\n if (this._translateX === undefined) {\n this._translateX = this._calcTranslateXByValue();\n }\n return this._translateX;\n }\n set translateX(v) {\n this._translateX = v;\n }\n _translateX;\n /**\n * Indicates whether this thumb is the start or end thumb.\n * @docs-private\n */\n thumbPosition = _MatThumb.END;\n /** @docs-private */\n get min() {\n return numberAttribute(this._hostElement.min, 0);\n }\n set min(v) {\n this._hostElement.min = v + '';\n this._cdr.detectChanges();\n }\n /** @docs-private */\n get max() {\n return numberAttribute(this._hostElement.max, 0);\n }\n set max(v) {\n this._hostElement.max = v + '';\n this._cdr.detectChanges();\n }\n get step() {\n return numberAttribute(this._hostElement.step, 0);\n }\n set step(v) {\n this._hostElement.step = v + '';\n this._cdr.detectChanges();\n }\n /** @docs-private */\n get disabled() {\n return booleanAttribute(this._hostElement.disabled);\n }\n set disabled(v) {\n this._hostElement.disabled = v;\n this._cdr.detectChanges();\n if (this._slider.disabled !== this.disabled) {\n this._slider.disabled = this.disabled;\n }\n }\n /** The percentage of the slider that coincides with the value. */\n get percentage() {\n if (this._slider.min >= this._slider.max) {\n return this._slider._isRtl ? 1 : 0;\n }\n return (this.value - this._slider.min) / (this._slider.max - this._slider.min);\n }\n /** @docs-private */\n get fillPercentage() {\n if (!this._slider._cachedWidth) {\n return this._slider._isRtl ? 1 : 0;\n }\n if (this._translateX === 0) {\n return 0;\n }\n return this.translateX / this._slider._cachedWidth;\n }\n /** The host native HTML input element. */\n _hostElement = this._elementRef.nativeElement;\n /** The aria-valuetext string representation of the input's value. */\n _valuetext = signal('');\n /** The radius of a native html slider's knob. */\n _knobRadius = 8;\n /** The distance in px from the start of the slider track to the first tick mark. */\n _tickMarkOffset = 3;\n /** Whether user's cursor is currently in a mouse down state on the input. */\n _isActive = false;\n /** Whether the input is currently focused (either by tab or after clicking). */\n _isFocused = false;\n /** Used to relay updates to _isFocused to the slider visual thumbs. */\n _setIsFocused(v) {\n this._isFocused = v;\n }\n /**\n * Whether the initial value has been set.\n * This exists because the initial value cannot be immediately set because the min and max\n * must first be relayed from the parent MatSlider component, which can only happen later\n * in the component lifecycle.\n */\n _hasSetInitialValue = false;\n /** The stored initial value. */\n _initialValue;\n /** Defined when a user is using a form control to manage slider value & validation. */\n _formControl;\n /** Emits when the component is destroyed. */\n _destroyed = new Subject();\n /**\n * Indicates whether UI updates should be skipped.\n *\n * This flag is used to avoid flickering\n * when correcting values on pointer up/down.\n */\n _skipUIUpdate = false;\n /** Callback called when the slider input value changes. */\n _onChangeFn;\n /** Callback called when the slider input has been touched. */\n _onTouchedFn = () => {};\n /**\n * Whether the NgModel has been initialized.\n *\n * This flag is used to ignore ghost null calls to\n * writeValue which can break slider initialization.\n *\n * See https://github.com/angular/angular/issues/14988.\n */\n _isControlInitialized = false;\n constructor() {\n const renderer = inject(Renderer2);\n this._ngZone.runOutsideAngular(() => {\n this._listenerCleanups = [renderer.listen(this._hostElement, 'pointerdown', this._onPointerDown.bind(this)), renderer.listen(this._hostElement, 'pointermove', this._onPointerMove.bind(this)), renderer.listen(this._hostElement, 'pointerup', this._onPointerUp.bind(this))];\n });\n }\n ngOnDestroy() {\n this._listenerCleanups.forEach(cleanup => cleanup());\n this._destroyed.next();\n this._destroyed.complete();\n this.dragStart.complete();\n this.dragEnd.complete();\n }\n /** @docs-private */\n initProps() {\n this._updateWidthInactive();\n // If this or the parent slider is disabled, just make everything disabled.\n if (this.disabled !== this._slider.disabled) {\n // The MatSlider setter for disabled will relay this and disable both inputs.\n this._slider.disabled = true;\n }\n this.step = this._slider.step;\n this.min = this._slider.min;\n this.max = this._slider.max;\n this._initValue();\n }\n /** @docs-private */\n initUI() {\n this._updateThumbUIByValue();\n }\n _initValue() {\n this._hasSetInitialValue = true;\n if (this._initialValue === undefined) {\n this.value = this._getDefaultValue();\n } else {\n this._hostElement.value = this._initialValue;\n this._updateThumbUIByValue();\n this._slider._onValueChange(this);\n this._cdr.detectChanges();\n }\n }\n _getDefaultValue() {\n return this.min;\n }\n _onBlur() {\n this._setIsFocused(false);\n this._onTouchedFn();\n }\n _onFocus() {\n this._slider._setTransition(false);\n this._slider._updateTrackUI(this);\n this._setIsFocused(true);\n }\n _onChange() {\n this.valueChange.emit(this.value);\n // only used to handle the edge case where user\n // mousedown on the slider then uses arrow keys.\n if (this._isActive) {\n this._updateThumbUIByValue({\n withAnimation: true\n });\n }\n }\n _onInput() {\n this._onChangeFn?.(this.value);\n // handles arrowing and updating the value when\n // a step is defined.\n if (this._slider.step || !this._isActive) {\n this._updateThumbUIByValue({\n withAnimation: true\n });\n }\n this._slider._onValueChange(this);\n }\n _onNgControlValueChange() {\n // only used to handle when the value change\n // originates outside of the slider.\n if (!this._isActive || !this._isFocused) {\n this._slider._onValueChange(this);\n this._updateThumbUIByValue();\n }\n this._slider.disabled = this._formControl.disabled;\n }\n _onPointerDown(event) {\n if (this.disabled || event.button !== 0) {\n return;\n }\n // On IOS, dragging only works if the pointer down happens on the\n // slider thumb and the slider does not receive focus from pointer events.\n if (this._platform.IOS) {\n const isCursorOnSliderThumb = this._slider._isCursorOnSliderThumb(event, this._slider._getThumb(this.thumbPosition)._hostElement.getBoundingClientRect());\n this._isActive = isCursorOnSliderThumb;\n this._updateWidthActive();\n this._slider._updateDimensions();\n return;\n }\n this._isActive = true;\n this._setIsFocused(true);\n this._updateWidthActive();\n this._slider._updateDimensions();\n // Does nothing if a step is defined because we\n // want the value to snap to the values on input.\n if (!this._slider.step) {\n this._updateThumbUIByPointerEvent(event, {\n withAnimation: true\n });\n }\n if (!this.disabled) {\n this._handleValueCorrection(event);\n this.dragStart.emit({\n source: this,\n parent: this._slider,\n value: this.value\n });\n }\n }\n /**\n * Corrects the value of the slider on pointer up/down.\n *\n * Called on pointer down and up because the value is set based\n * on the inactive width instead of the active width.\n */\n _handleValueCorrection(event) {\n // Don't update the UI with the current value! The value on pointerdown\n // and pointerup is calculated in the split second before the input(s)\n // resize. See _updateWidthInactive() and _updateWidthActive() for more\n // details.\n this._skipUIUpdate = true;\n // Note that this function gets triggered before the actual value of the\n // slider is updated. This means if we were to set the value here, it\n // would immediately be overwritten. Using setTimeout ensures the setting\n // of the value happens after the value has been updated by the\n // pointerdown event.\n setTimeout(() => {\n this._skipUIUpdate = false;\n this._fixValue(event);\n }, 0);\n }\n /** Corrects the value of the slider based on the pointer event's position. */\n _fixValue(event) {\n const xPos = event.clientX - this._slider._cachedLeft;\n const width = this._slider._cachedWidth;\n const step = this._slider.step === 0 ? 1 : this._slider.step;\n const numSteps = Math.floor((this._slider.max - this._slider.min) / step);\n const percentage = this._slider._isRtl ? 1 - xPos / width : xPos / width;\n // To ensure the percentage is rounded to the necessary number of decimals.\n const fixedPercentage = Math.round(percentage * numSteps) / numSteps;\n const impreciseValue = fixedPercentage * (this._slider.max - this._slider.min) + this._slider.min;\n const value = Math.round(impreciseValue / step) * step;\n const prevValue = this.value;\n if (value === prevValue) {\n // Because we prevented UI updates, if it turns out that the race\n // condition didn't happen and the value is already correct, we\n // have to apply the ui updates now.\n this._slider._onValueChange(this);\n this._slider.step > 0 ? this._updateThumbUIByValue() : this._updateThumbUIByPointerEvent(event, {\n withAnimation: this._slider._hasAnimation\n });\n return;\n }\n this.value = value;\n this.valueChange.emit(this.value);\n this._onChangeFn?.(this.value);\n this._slider._onValueChange(this);\n this._slider.step > 0 ? this._updateThumbUIByValue() : this._updateThumbUIByPointerEvent(event, {\n withAnimation: this._slider._hasAnimation\n });\n }\n _onPointerMove(event) {\n // Again, does nothing if a step is defined because\n // we want the value to snap to the values on input.\n if (!this._slider.step && this._isActive) {\n this._updateThumbUIByPointerEvent(event);\n }\n }\n _onPointerUp() {\n if (this._isActive) {\n this._isActive = false;\n if (this._platform.SAFARI) {\n this._setIsFocused(false);\n }\n this.dragEnd.emit({\n source: this,\n parent: this._slider,\n value: this.value\n });\n // This setTimeout is to prevent the pointerup from triggering a value\n // change on the input based on the inactive width. It's not clear why\n // but for some reason on IOS this race condition is even more common so\n // the timeout needs to be increased.\n setTimeout(() => this._updateWidthInactive(), this._platform.IOS ? 10 : 0);\n }\n }\n _clamp(v) {\n const min = this._tickMarkOffset;\n const max = this._slider._cachedWidth - this._tickMarkOffset;\n return Math.max(Math.min(v, max), min);\n }\n _calcTranslateXByValue() {\n if (this._slider._isRtl) {\n return (1 - this.percentage) * (this._slider._cachedWidth - this._tickMarkOffset * 2) + this._tickMarkOffset;\n }\n return this.percentage * (this._slider._cachedWidth - this._tickMarkOffset * 2) + this._tickMarkOffset;\n }\n _calcTranslateXByPointerEvent(event) {\n return event.clientX - this._slider._cachedLeft;\n }\n /**\n * Used to set the slider width to the correct\n * dimensions while the user is dragging.\n */\n _updateWidthActive() {}\n /**\n * Sets the slider input to disproportionate dimensions to allow for touch\n * events to be captured on touch devices.\n */\n _updateWidthInactive() {\n this._hostElement.style.padding = `0 ${this._slider._inputPadding}px`;\n this._hostElement.style.width = `calc(100% + ${this._slider._inputPadding - this._tickMarkOffset * 2}px)`;\n this._hostElement.style.left = `-${this._slider._rippleRadius - this._tickMarkOffset}px`;\n }\n _updateThumbUIByValue(options) {\n this.translateX = this._clamp(this._calcTranslateXByValue());\n this._updateThumbUI(options);\n }\n _updateThumbUIByPointerEvent(event, options) {\n this.translateX = this._clamp(this._calcTranslateXByPointerEvent(event));\n this._updateThumbUI(options);\n }\n _updateThumbUI(options) {\n this._slider._setTransition(!!options?.withAnimation);\n this._slider._onTranslateXChange(this);\n }\n /**\n * Sets the input's value.\n * @param value The new value of the input\n * @docs-private\n */\n writeValue(value) {\n if (this._isControlInitialized || value !== null) {\n this.value = value;\n }\n }\n /**\n * Registers a callback to be invoked when the input's value changes from user input.\n * @param fn The callback to register\n * @docs-private\n */\n registerOnChange(fn) {\n this._onChangeFn = fn;\n this._isControlInitialized = true;\n }\n /**\n * Registers a callback to be invoked when the input is blurred by the user.\n * @param fn The callback to register\n * @docs-private\n */\n registerOnTouched(fn) {\n this._onTouchedFn = fn;\n }\n /**\n * Sets the disabled state of the slider.\n * @param isDisabled The new disabled state\n * @docs-private\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n focus() {\n this._hostElement.focus();\n }\n blur() {\n this._hostElement.blur();\n }\n static ɵfac = function MatSliderThumb_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderThumb)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSliderThumb,\n selectors: [[\"input\", \"matSliderThumb\", \"\"]],\n hostAttrs: [\"type\", \"range\", 1, \"mdc-slider__input\"],\n hostVars: 1,\n hostBindings: function MatSliderThumb_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function MatSliderThumb_change_HostBindingHandler() {\n return ctx._onChange();\n })(\"input\", function MatSliderThumb_input_HostBindingHandler() {\n return ctx._onInput();\n })(\"blur\", function MatSliderThumb_blur_HostBindingHandler() {\n return ctx._onBlur();\n })(\"focus\", function MatSliderThumb_focus_HostBindingHandler() {\n return ctx._onFocus();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-valuetext\", ctx._valuetext());\n }\n },\n inputs: {\n value: [2, \"value\", \"value\", numberAttribute]\n },\n outputs: {\n valueChange: \"valueChange\",\n dragStart: \"dragStart\",\n dragEnd: \"dragEnd\"\n },\n exportAs: [\"matSliderThumb\"],\n features: [i0.ɵɵProvidersFeature([MAT_SLIDER_THUMB_VALUE_ACCESSOR, {\n provide: MAT_SLIDER_THUMB,\n useExisting: MatSliderThumb\n }])]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSliderThumb, [{\n type: Directive,\n args: [{\n selector: 'input[matSliderThumb]',\n exportAs: 'matSliderThumb',\n host: {\n 'class': 'mdc-slider__input',\n 'type': 'range',\n '[attr.aria-valuetext]': '_valuetext()',\n '(change)': '_onChange()',\n '(input)': '_onInput()',\n // TODO(wagnermaciel): Consider using a global event listener instead.\n // Reason: I have found a semi-consistent way to mouse up without triggering this event.\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()'\n },\n providers: [MAT_SLIDER_THUMB_VALUE_ACCESSOR, {\n provide: MAT_SLIDER_THUMB,\n useExisting: MatSliderThumb\n }]\n }]\n }], () => [], {\n value: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n valueChange: [{\n type: Output\n }],\n dragStart: [{\n type: Output\n }],\n dragEnd: [{\n type: Output\n }]\n });\n})();\nclass MatSliderRangeThumb extends MatSliderThumb {\n _cdr = inject(ChangeDetectorRef);\n /** @docs-private */\n getSibling() {\n if (!this._sibling) {\n this._sibling = this._slider._getInput(this._isEndThumb ? _MatThumb.START : _MatThumb.END);\n }\n return this._sibling;\n }\n _sibling;\n /**\n * Returns the minimum translateX position allowed for this slider input's visual thumb.\n * @docs-private\n */\n getMinPos() {\n const sibling = this.getSibling();\n if (!this._isLeftThumb && sibling) {\n return sibling.translateX;\n }\n return this._tickMarkOffset;\n }\n /**\n * Returns the maximum translateX position allowed for this slider input's visual thumb.\n * @docs-private\n */\n getMaxPos() {\n const sibling = this.getSibling();\n if (this._isLeftThumb && sibling) {\n return sibling.translateX;\n }\n return this._slider._cachedWidth - this._tickMarkOffset;\n }\n _setIsLeftThumb() {\n this._isLeftThumb = this._isEndThumb && this._slider._isRtl || !this._isEndThumb && !this._slider._isRtl;\n }\n /** Whether this slider corresponds to the input on the left hand side. */\n _isLeftThumb;\n /** Whether this slider corresponds to the input with greater value. */\n _isEndThumb;\n constructor() {\n super();\n this._isEndThumb = this._hostElement.hasAttribute('matSliderEndThumb');\n this._setIsLeftThumb();\n this.thumbPosition = this._isEndThumb ? _MatThumb.END : _MatThumb.START;\n }\n _getDefaultValue() {\n return this._isEndThumb && this._slider._isRange ? this.max : this.min;\n }\n _onInput() {\n super._onInput();\n this._updateSibling();\n if (!this._isActive) {\n this._updateWidthInactive();\n }\n }\n _onNgControlValueChange() {\n super._onNgControlValueChange();\n this.getSibling()?._updateMinMax();\n }\n _onPointerDown(event) {\n if (this.disabled || event.button !== 0) {\n return;\n }\n if (this._sibling) {\n this._sibling._updateWidthActive();\n this._sibling._hostElement.classList.add('mat-mdc-slider-input-no-pointer-events');\n }\n super._onPointerDown(event);\n }\n _onPointerUp() {\n super._onPointerUp();\n if (this._sibling) {\n setTimeout(() => {\n this._sibling._updateWidthInactive();\n this._sibling._hostElement.classList.remove('mat-mdc-slider-input-no-pointer-events');\n });\n }\n }\n _onPointerMove(event) {\n super._onPointerMove(event);\n if (!this._slider.step && this._isActive) {\n this._updateSibling();\n }\n }\n _fixValue(event) {\n super._fixValue(event);\n this._sibling?._updateMinMax();\n }\n _clamp(v) {\n return Math.max(Math.min(v, this.getMaxPos()), this.getMinPos());\n }\n _updateMinMax() {\n const sibling = this.getSibling();\n if (!sibling) {\n return;\n }\n if (this._isEndThumb) {\n this.min = Math.max(this._slider.min, sibling.value);\n this.max = this._slider.max;\n } else {\n this.min = this._slider.min;\n this.max = Math.min(this._slider.max, sibling.value);\n }\n }\n _updateWidthActive() {\n const minWidth = this._slider._rippleRadius * 2 - this._slider._inputPadding * 2;\n const maxWidth = this._slider._cachedWidth + this._slider._inputPadding - minWidth - this._tickMarkOffset * 2;\n const percentage = this._slider.min < this._slider.max ? (this.max - this.min) / (this._slider.max - this._slider.min) : 1;\n const width = maxWidth * percentage + minWidth;\n this._hostElement.style.width = `${width}px`;\n this._hostElement.style.padding = `0 ${this._slider._inputPadding}px`;\n }\n _updateWidthInactive() {\n const sibling = this.getSibling();\n if (!sibling) {\n return;\n }\n const maxWidth = this._slider._cachedWidth - this._tickMarkOffset * 2;\n const midValue = this._isEndThumb ? this.value - (this.value - sibling.value) / 2 : this.value + (sibling.value - this.value) / 2;\n const _percentage = this._isEndThumb ? (this.max - midValue) / (this._slider.max - this._slider.min) : (midValue - this.min) / (this._slider.max - this._slider.min);\n const percentage = this._slider.min < this._slider.max ? _percentage : 1;\n // Extend the native input width by the radius of the ripple\n let ripplePadding = this._slider._rippleRadius;\n // If one of the inputs is maximally sized (the value of both thumbs is\n // equal to the min or max), make that input take up all of the width and\n // make the other unselectable.\n if (percentage === 1) {\n ripplePadding = 48;\n } else if (percentage === 0) {\n ripplePadding = 0;\n }\n const width = maxWidth * percentage + ripplePadding;\n this._hostElement.style.width = `${width}px`;\n this._hostElement.style.padding = '0px';\n if (this._isLeftThumb) {\n this._hostElement.style.left = `-${this._slider._rippleRadius - this._tickMarkOffset}px`;\n this._hostElement.style.right = 'auto';\n } else {\n this._hostElement.style.left = 'auto';\n this._hostElement.style.right = `-${this._slider._rippleRadius - this._tickMarkOffset}px`;\n }\n }\n _updateStaticStyles() {\n this._hostElement.classList.toggle('mat-slider__right-input', !this._isLeftThumb);\n }\n _updateSibling() {\n const sibling = this.getSibling();\n if (!sibling) {\n return;\n }\n sibling._updateMinMax();\n if (this._isActive) {\n sibling._updateWidthActive();\n } else {\n sibling._updateWidthInactive();\n }\n }\n /**\n * Sets the input's value.\n * @param value The new value of the input\n * @docs-private\n */\n writeValue(value) {\n if (this._isControlInitialized || value !== null) {\n this.value = value;\n this._updateWidthInactive();\n this._updateSibling();\n }\n }\n _setValue(value) {\n super._setValue(value);\n this._updateWidthInactive();\n this._updateSibling();\n }\n static ɵfac = function MatSliderRangeThumb_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderRangeThumb)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSliderRangeThumb,\n selectors: [[\"input\", \"matSliderStartThumb\", \"\"], [\"input\", \"matSliderEndThumb\", \"\"]],\n exportAs: [\"matSliderRangeThumb\"],\n features: [i0.ɵɵProvidersFeature([MAT_SLIDER_RANGE_THUMB_VALUE_ACCESSOR, {\n provide: MAT_SLIDER_RANGE_THUMB,\n useExisting: MatSliderRangeThumb\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSliderRangeThumb, [{\n type: Directive,\n args: [{\n selector: 'input[matSliderStartThumb], input[matSliderEndThumb]',\n exportAs: 'matSliderRangeThumb',\n providers: [MAT_SLIDER_RANGE_THUMB_VALUE_ACCESSOR, {\n provide: MAT_SLIDER_RANGE_THUMB,\n useExisting: MatSliderRangeThumb\n }]\n }]\n }], () => [], null);\n})();\nclass MatSliderModule {\n static ɵfac = function MatSliderModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatSliderModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSliderModule,\n imports: [MatCommonModule, MatRippleModule, MatSlider, MatSliderThumb, MatSliderRangeThumb, MatSliderVisualThumb],\n exports: [MatSlider, MatSliderThumb, MatSliderRangeThumb]\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatRippleModule]\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSliderModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatRippleModule, MatSlider, MatSliderThumb, MatSliderRangeThumb, MatSliderVisualThumb],\n exports: [MatSlider, MatSliderThumb, MatSliderRangeThumb]\n }]\n }], null, null);\n})();\nexport { MatSlider, MatSliderChange, MatSliderModule, MatSliderRangeThumb, MatSliderThumb, MatSliderVisualThumb };\n","import { Component, inject, OnInit, viewChild, signal, Signal, model } from '@angular/core';\nimport { BreakpointObserver, Breakpoints, BreakpointState } from '@angular/cdk/layout';\nimport { AppService } from '../../../services/app-service';\nimport { AppSettingsService } from '../../../services/app-settings.service';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { FormsModule, NgForm } from '@angular/forms';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { SignalkPluginsService } from '../../../services/signalk-plugins.service';\nimport { DataService } from '../../../services/data.service';\n\n\n@Component({\n selector: 'settings-display',\n templateUrl: './display.component.html',\n styleUrls: ['./display.component.scss'],\n imports: [\n FormsModule,\n MatCheckbox,\n MatDivider,\n MatButton,\n MatSliderModule,\n MatExpansionModule\n ],\n})\nexport class SettingsDisplayComponent implements OnInit {\n readonly MODE_PATH: string = 'self.environment.mode';\n readonly displayForm = viewChild<NgForm>('displayForm');\n private _app = inject(AppService);\n private _settings = inject(AppSettingsService);\n private _responsive = inject(BreakpointObserver);\n private _plugins = inject(SignalkPluginsService);\n private _data = inject(DataService);\n protected isPhonePortrait: Signal<BreakpointState>;\n protected nightBrightness = signal<number>(0.27);\n protected autoNightMode = model<boolean>(false);\n protected isRedNightMode = model<boolean>(false);\n protected isLightTheme = model<boolean>(false);\n // Guards concurrent plugin enable checks to avoid stale promise handlers mutating state\n private _pluginCheckSeq = 0;\n\n readonly LIGHT_THEME_NAME = \"light-theme\";\n readonly RED_NIGHT_MODE_THEME_NAME = \"night-theme\";\n\n constructor() {\n this.isPhonePortrait = toSignal(this._responsive.observe(Breakpoints.HandsetPortrait));\n }\n\n ngOnInit() {\n this.nightBrightness.set(this._settings.getNightModeBrightness());\n this.autoNightMode.set(this._settings.getAutoNightMode());\n this.isLightTheme.set(this._settings.getThemeName() === this.LIGHT_THEME_NAME);\n this.isRedNightMode.set(this._settings.getRedNightMode());\n }\n\n protected saveAllSettings():void {\n this._settings.setAutoNightMode(this.autoNightMode());\n this._settings.setRedNightMode(this.isRedNightMode());\n this._settings.setNightModeBrightness(this.nightBrightness());\n this.displayForm().form.markAsPristine();\n\n if (!this._app.isNightMode()) {\n this._app.setBrightness(1);\n }\n if (this.isLightTheme()) {\n this._settings.setThemeName(this.LIGHT_THEME_NAME);\n } else {\n this._settings.setThemeName(\"\");\n }\n this._app.sendSnackbarNotification(\"Configuration saved\", 3000, false);\n }\n\n protected isAutoNightModeSupported(e: MatCheckboxChange): void {\n this.displayForm().form.markAsDirty();\n // If user unchecked, immediately disable and abort\n if (!e.checked) {\n this.autoNightMode.set(false);\n return;\n }\n const seq = ++this._pluginCheckSeq; // capture sequence for this async request\n this._plugins.isEnabled('derived-data')\n .then((enabled) => {\n if (seq !== this._pluginCheckSeq) return; // stale response; ignore\n if (!enabled) {\n this.autoNightMode.set(false);\n this._app.sendSnackbarNotification(\n \"Plugin Error: To enable Automatic Night Mode, verify that: 1) The Signal K Derived Data plugin is installed and enabled on the server. 2) The plugin's Sun: Sets environment.sun parameter is enabled. Restart the Signal K server and try again.\",\n 0\n );\n return;\n }\n const supported = this.validateAutoNightModeSupported();\n this.autoNightMode.set(supported);\n })\n .catch((error) => {\n if (seq !== this._pluginCheckSeq) return;\n console.error('[Display Component] Error checking plugin status:', error);\n this.autoNightMode.set(false);\n });\n }\n\n /**\n * Check if the browser supports the automatic night mode feature.\n * This is a helper method to check if the browser supports the\n * matchMedia API and the prefers-color-scheme media query.\n */\n public validateAutoNightModeSupported(): boolean {\n if (!this._data.getPathObject(this.MODE_PATH)) {\n this._app.sendSnackbarNotification(\"Path Error: In Signal K, locate the Derived Data plugin and enable the 'Sets environment.sun' parameter under the 'Sun' group. Restart the Signal K server and try again.\", 0);\n return false;\n }\n return true;\n }\n\n protected setBrightness(value: number): void {\n this.displayForm().form.markAsDirty();\n this.nightBrightness.set(value);\n this._app.setBrightness(value, this._app.isNightMode());\n }\n}\n","<form (ngSubmit)=\"saveAllSettings()\" #displayForm=\"ngForm\" id=\"displaySetting\">\n <p>Customize your display settings to improve visibility and adapt to various\n lighting conditions.</p>\n\n <mat-accordion>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n Night Mode\n </mat-panel-title>\n @if (!isPhonePortrait().matches) {\n <mat-panel-description [hidden]=\"isPhonePortrait().matches\">\n Adjust night mode settings to enhance visibility in low-light environments.\n </mat-panel-description>\n }\n </mat-expansion-panel-header>\n <mat-checkbox class=\"full-width\"\n (change)=\"isAutoNightModeSupported($event)\"\n name=\"autoNightMode\"\n [(ngModel)]=\"autoNightMode\">\n Automatically activate day and night modes based on sun phases.\n </mat-checkbox>\n <mat-checkbox class=\"full-width\"\n [(ngModel)]=\"isRedNightMode\"\n name=\"redNightMode\">\n Enable red-only night mode.\n </mat-checkbox>\n <div style=\"padding-left: 10px;\">\n <br/>\n <span class=\"mat-body-medium\">Adjust Night Mode Brightness</span>\n <br/>\n <mat-slider min=\"0\" max=\"1\" step=\"0.01\" discrete>\n <input #inputBrightness matSliderThumb\n [value]=\"nightBrightness()\"\n (input)=\"setBrightness(+inputBrightness.value)\"\n [disabled]=\"isRedNightMode()\">\n </mat-slider>\n </div>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>\n Theme\n </mat-panel-title>\n @if (!isPhonePortrait().matches) {\n <mat-panel-description>\n Choose your preferred high-contrast theme.\n </mat-panel-description>\n }\n </mat-expansion-panel-header>\n <mat-checkbox class=\"full-width\"\n [(ngModel)]=\"isLightTheme\"\n name=\"isLightTheme\">\n Enable light theme for brighter display settings.\n </mat-checkbox>\n </mat-expansion-panel>\n </mat-accordion>\n <div class=\"formActionFooter\">\n <mat-divider class=\"formActionDivider\"></mat-divider>\n <button mat-flat-button type=\"submit\" class=\"formActionButton\" [disabled]=\"!displayForm.form.dirty\">Save</button>\n </div>\n</form>\n","import { Component, OnInit, OnDestroy, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AuthenticationService, IAuthorizationToken } from '../../../services/authentication.service';\nimport { AppService } from '../../../services/app-service';\nimport { AppSettingsService } from '../../../services/app-settings.service';\nimport { IConfig } from '../../../interfaces/app-settings.interfaces';\nimport { StorageService } from '../../../services/storage.service';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { MatInput, MatInputModule } from '@angular/material/input';\nimport { MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\n\nimport { RouterLink } from '@angular/router';\n\n\ninterface IRemoteConfig {\n scope: string,\n name: string\n}\n\n@Component({\n selector: 'settings-config',\n templateUrl: './config.component.html',\n styleUrls: ['./config.component.scss'],\n imports: [RouterLink, FormsModule, MatDivider, MatButton, MatFormField, MatLabel, MatSelect, MatOption, MatInput, ReactiveFormsModule, MatInputModule]\n})\nexport class SettingsConfigComponent implements OnInit, OnDestroy {\n private appSettingsService = inject(AppSettingsService);\n private storageSvc = inject(StorageService);\n private appService = inject(AppService);\n private auth = inject(AuthenticationService);\n private fb = inject(UntypedFormBuilder);\n\n protected readonly pageTitle: string = \"Configurations\";\n public hasToken = false;\n public isTokenTypeDevice = false;\n private tokenSub: Subscription;\n\n public supportApplicationData = false;\n public serverConfigList: IRemoteConfig[] = [];\n public serverUpgradableConfigList: IRemoteConfig[] = [];\n\n public copyConfigForm: UntypedFormGroup;\n public storageLocation: string = null;\n public locations: string[] = [\"Local Storage\", \"Server Storage\"];\n\n public saveConfigName: string = null;\n public saveConfigScope: string = null;\n public deleteConfigItem: IRemoteConfig;\n public jsonData: IConfig = null;\n\n ngOnInit() {\n // Token observer\n this.tokenSub = this.auth.authToken$.subscribe((token: IAuthorizationToken) => {\n if (token && token.token) {\n this.hasToken = true;\n this.isTokenTypeDevice = token.isDeviceAccessToken;\n if (!token.isDeviceAccessToken) {\n this.saveConfigScope ='user';\n } else {\n this.saveConfigScope ='global';\n }\n } else {\n this.hasToken = false;\n }\n });\n\n this.copyConfigForm = this.fb.group({\n sourceTarget: [{value: '', disabled: false}, Validators.required]\n });\n\n this.supportApplicationData = this.storageSvc.isAppDataSupported;\n if(this.hasToken) this.getServerConfigList();\n // this.getServerConfigList(1); // See if we have v 1.0.0.json file for upgrade\n }\n\n public getServerConfigList(configFileVersionName?: number) {\n if (this.supportApplicationData) {\n this.storageSvc.listConfigs(configFileVersionName)\n .then((configs) => {\n // Filter out entries with scope 'user' and name 'default'\n const filteredConfigs = configs.filter(config => !(config.scope === 'user' && config.name === 'default'));\n\n // see if we have an old config file\n if(configFileVersionName) {\n this.serverUpgradableConfigList = filteredConfigs;\n } else {\n this.serverConfigList = filteredConfigs;\n }\n })\n .catch((error: HttpErrorResponse) => {\n switch (error.status) {\n case 401:\n this.appService.sendSnackbarNotification(\"Application Storage Error: \" + error.statusText + \". Signal K configuration must meet the following requirements; 1) Security enabled. 2) Application Data Storage Interface: On. 3) Either Allow Readonly Access enabled, or connecting with a user.\", 0, false);\n break;\n\n default: this.appService.sendSnackbarNotification(\"Error listing server configurations: \" + error, 3000, false);\n break;\n }\n });\n }\n }\n\n public saveConfig(conf: IConfig, scope: string, name: string, dontRefreshConfigList?: boolean, forceSave?: boolean) {\n if (this.supportApplicationData) {\n // Prevent saving with scope 'user' and name 'default'\n if ((scope === 'user' && name === 'default') && !forceSave) {\n this.appService.sendSnackbarNotification(\"Saving configuration with scope 'user' and name 'default' is not allowed.\", 5000, false);\n return;\n }\n\n if (this.storageSvc.setConfig(scope, name, conf)) {\n this.appService.sendSnackbarNotification(`Configuration [${name}] saved to [${scope}] storage scope`, 5000, false);\n if (!dontRefreshConfigList || undefined) {\n this.getServerConfigList();\n }\n } else {\n this.appService.sendSnackbarNotification(\"Error saving configuration to server\", 0, false);\n }\n }\n }\n\n /**\n * Save config to local storage\n */\n public saveToLocalstorage(config: IConfig) {\n this.appSettingsService.replaceConfig(\"appConfig\", config.app, false);\n this.appSettingsService.replaceConfig(\"dashboardsConfig\", config.dashboards, false);\n this.appSettingsService.replaceConfig(\"themeConfig\", config.theme, false);\n }\n\n public async copyConfig() {\n let conf: IConfig = null;\n try {\n await this.storageSvc.getConfig(this.copyConfigForm.value.sourceTarget.scope, this.copyConfigForm.value.sourceTarget.name)\n .then((config: IConfig) => {\n conf = config\n });\n } catch (error) {\n this.appService.sendSnackbarNotification(\"Error retrieving configuration from server: \" + error.statusText, 3000, false);\n return;\n }\n\n this.saveConfig(conf, 'user', 'default', false, true);\n this.appSettingsService.reloadApp();\n }\n\n public deleteConfig (scope: string, name: string, forceConfigFileVersion?: number, dontRefreshConfigList?: boolean) {\n this.storageSvc.removeItem(scope, name, forceConfigFileVersion);\n this.appService.sendSnackbarNotification(`Configuration [${name}] deleted from [${scope}] storage scope`, 5000, false);\n if (!dontRefreshConfigList) {\n this.getServerConfigList();\n }\n }\n\n public resetConfigToDefault() {\n this.appSettingsService.resetSettings();\n }\n\n public resetConnectionToDefault() {\n this.appSettingsService.resetConnection();\n }\n\n public loadDemoConfig() {\n this.appSettingsService.loadDemoConfig();\n }\n\n public getActiveConfig(): IConfig {\n let conf: IConfig;\n if (this.appSettingsService.useSharedConfig) {\n conf = this.getLocalConfigFromMemory();\n } else {\n conf = this.getLocalConfigFromLocalStorage();\n }\n return conf;\n }\n\n public getLocalConfigFromMemory(): IConfig {\n const localConfig: IConfig = {\n \"app\": this.appSettingsService.getAppConfig(),\n \"dashboards\": this.appSettingsService.getDashboardConfig(),\n \"theme\": this.appSettingsService.getThemeConfig(),\n };\n return localConfig;\n }\n\n public getLocalConfigFromLocalStorage(): IConfig {\n const localConfig: IConfig = {\n \"app\": this.appSettingsService.loadConfigFromLocalStorage('appConfig'),\n \"dashboards\": this.appSettingsService.loadConfigFromLocalStorage('dashboardsConfig'),\n \"theme\": this.appSettingsService.loadConfigFromLocalStorage('themeConfig'),\n };\n return localConfig;\n }\n\n public downloadJsonConfig(): void {\n const jsonData = this.getActiveConfig();\n const jsonString = JSON.stringify(jsonData, null, 2);\n const blob = new Blob([jsonString], { type: 'application/json' });\n\n const downloadURL = window.URL.createObjectURL(blob); // Generate a temporary download URL\n\n // Create an invisible <a> element and trigger the download\n const a = document.createElement('a');\n a.href = downloadURL;\n a.download = 'KipConfig.json'; // File name\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n window.URL.revokeObjectURL(downloadURL); // Cleanup memory\n }\n\n public uploadJsonConfig(event: Event) {\n const input = event.target as HTMLInputElement;\n const file = input.files?.[0];\n if (file && file.type === \"application/json\") {\n const reader = new FileReader();\n reader.onload = (e) => {\n try {\n this.jsonData = JSON.parse(e.target?.result as string); // Parse JSON\n if (this.hasToken) {\n this.saveConfig(this.jsonData, 'user', 'default', false, true);\n } else {\n this.saveToLocalstorage(this.jsonData);\n }\n this.appSettingsService.reloadApp();\n } catch (error) {\n this.appService.sendSnackbarNotification(\"Invalid JSON file\", 3000, false);\n console.error(\"Invalid JSON file:\", error);\n }\n };\n reader.readAsText(file); // Read the file as text\n } else {\n this.appService.sendSnackbarNotification(\"Please select a valid JSON file\", 0, false);\n }\n }\n\n ngOnDestroy() {\n this.tokenSub.unsubscribe();\n }\n}\n","<div class=\"page-content\">\n <p>\n Recommended Reading: To understand configuration management and storage\n options, consult the\n <a routerLink=\"/help\">Configuration Management Help</a> section.\n </p>\n <div class=\"flex-container\">\n <div class=\"flex-item-rounded-card rounded-card-color\">\n <form\n name=\"saveConfigForm\"\n (ngSubmit)=\"saveConfig(this.getActiveConfig(), saveConfigScope, saveConfigName)\"\n #saveConfigForm=\"ngForm\"\n >\n <h2>Backup</h2>\n <p style=\"margin-bottom: 16px\">\n Create a backup of the current active configuration on the server.\n </p>\n @if (hasToken) {\n <div>\n <mat-form-field style=\"width: 25%\">\n <mat-label>Scope</mat-label>\n <mat-select\n name=\"serverConfiScope\"\n [(ngModel)]=\"saveConfigScope\"\n required\n >\n <mat-option value=\"global\"> Global </mat-option>\n <mat-option value=\"user\"> User </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field style=\"width: 70%; padding-left: 3%\">\n <mat-label>Configuration Name</mat-label>\n <input\n matInput\n name=\"serverConfigName\"\n placeholder=\"Enter a name for the configuration\"\n [(ngModel)]=\"saveConfigName\"\n [ngModelOptions]=\"{ standalone: false }\"\n required\n />\n </mat-form-field>\n @if (!hasToken) {\n <div>\n Writing to the server requires \"Login to Server\" authentication or a\n Device token\n </div>\n }\n </div>\n } @else {\n <div class=\"no-token-notice\">\n <p>Server authentication or Device Token required</p>\n </div>\n }\n <div class=\"formActionFooter\">\n <mat-divider class=\"formActionDivider\"></mat-divider>\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"!hasToken || !saveConfigForm.valid\"\n color=\"accent\"\n >\n Create\n </button>\n </div>\n </form>\n </div>\n <div class=\"flex-item-rounded-card rounded-card-color\">\n <form\n name=\"deleteConfigForm\"\n (ngSubmit)=\"deleteConfig(deleteConfigItem.scope, deleteConfigItem.name)\"\n #deleteConfigForm=\"ngForm\"\n >\n <h2>Delete</h2>\n <p style=\"margin-bottom: 16px\">\n Select a backup configuration to permanently delete from the server.\n </p>\n @if (hasToken) {\n <div>\n <mat-form-field style=\"width: 100%\">\n <mat-label>Configuration</mat-label>\n <mat-select\n name=\"selectedDeleteItem\"\n [(ngModel)]=\"deleteConfigItem\"\n required\n >\n @for (config of serverConfigList; track config) {\n <mat-option\n [value]=\"config\"\n >\n {{ config.scope }} / {{ config.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n } @else {\n <div class=\"no-token-notice\">\n <p>Authentication or Device Token required</p>\n </div>\n }\n <div class=\"formActionFooter\">\n <mat-divider class=\"formActionDivider\"></mat-divider>\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"!hasToken || !deleteConfigForm.valid\"\n color=\"accent\"\n >\n Delete\n </button>\n </div>\n </form>\n </div>\n <div class=\"flex-item-rounded-card rounded-card-color\">\n <form [formGroup]=\"copyConfigForm\" (ngSubmit)=\"copyConfig()\">\n <h2>Restore</h2>\n <p style=\"margin-bottom: 16px\">\n Replace the current configuration with a backup from the server.\n </p>\n @if (hasToken) {\n <div>\n <mat-form-field style=\"width: 100%\">\n <mat-label>Configuration</mat-label>\n <mat-select formControlName=\"sourceTarget\">\n @for (config of serverConfigList; track $index) {\n <mat-option\n [value]=\"config\"\n >\n {{ config.scope }} / {{ config.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n } @else {\n <div class=\"no-token-notice\">\n <p>Authentication or Device Token required</p>\n </div>\n }\n <div class=\"formActionFooter\">\n <mat-divider class=\"formActionDivider\"></mat-divider>\n <button\n mat-flat-button\n type=\"submit\"\n color=\"accent\"\n [disabled]=\"!this.copyConfigForm.valid\"\n >\n Restore\n </button>\n </div>\n </form>\n </div>\n <div class=\"flex-item-reset rounded-card-color\">\n <h2>Advanced</h2>\n <div class=\"config-operation-container\" style=\"margin-top: 20px\">\n <div class=\"download-txt\">\n <p>To reuse your configuration on different devices, simply login using the same credential\n from any device (See <a routerLink=\"/help\">Login & Configurations Help documentation</a> for more information). If\n you need to move your configuration between different Signal K servers, you can use Download\n to obtain a copy of the active configuration to a file.</p>\n </div>\n <div class=\"download-btn btn-div\">\n <button\n mat-flat-button\n type=\"button\"\n class=\"adv-btn\"\n (click)=\"downloadJsonConfig()\"\n >\n Download\n </button>\n </div>\n <div class=\"upload-txt\">\n <p>\n Select a configuration file to upload. The file must be a valid KIP\n configuration file of JSON format.\n <br /><strong>WARNING: This will permanently overwrite active configuration.</strong>\n </p>\n </div>\n <div class=\"upload-btn btn-div\">\n <!-- Hidden file input -->\n <input\n type=\"file\"\n #fileInput\n (change)=\"uploadJsonConfig($event)\"\n accept=\".json\"\n hidden\n />\n <!-- Material button to trigger file input -->\n <button mat-flat-button class=\"adv-btn\" (click)=\"fileInput.click()\">\n Upload\n </button>\n </div>\n <div class=\"demo-txt\">\n <p>\n Load the demonstration configuration and connection to Signal K demo\n server.\n <br /><strong>WARNING: This will permanently reset your active configuration.</strong>\n </p>\n </div>\n <div class=\"demo-btn btn-div\">\n <button\n mat-flat-button\n type=\"button\"\n class=\"adv-btn\"\n (click)=\"loadDemoConfig()\"\n >\n Demo\n </button>\n </div>\n <div class=\"reset-txt\">\n <p>\n Reset all your settings to default. The default configuration has a\n single Getting Started instruction widget. Your Signal K server\n connection settings will remain.\n <br /><strong>WARNING: This will permanently reset your active configuration.</strong>\n </p>\n </div>\n <div class=\"reset-btn btn-div\">\n <button\n mat-flat-button\n type=\"button\"\n class=\"adv-btn\"\n (click)=\"resetConfigToDefault()\"\n >\n Default\n </button>\n </div>\n <div class=\"config-txt\">\n <p>\n Clear the current connection configuration. This only affects\n Connectivity settings tab.\n </p>\n </div>\n <div class=\"config-btn btn-div\">\n <button\n mat-flat-button\n type=\"button\"\n class=\"adv-btn\"\n (click)=\"resetConnectionToDefault()\"\n >\n Connection\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\nimport { SettingsUnitsComponent } from '../units/units.component';\nimport { SettingsNotificationsComponent } from '../notifications/notifications.component';\nimport { SettingsSignalkComponent } from '../signalk/signalk.component';\nimport { SettingsDisplayComponent } from '../display/display.component';\nimport { MatTabGroup, MatTab } from '@angular/material/tabs';\nimport { PageHeaderComponent } from '../../../components/page-header/page-header.component';\nimport { SettingsConfigComponent } from '../configuration/config.component';\nimport { SettingsDatasetsComponent } from '../../datasets/datasets.component';\n\n\n@Component({\n selector: 'settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n imports: [\n MatTabGroup,\n MatTab,\n SettingsSignalkComponent,\n SettingsNotificationsComponent,\n SettingsUnitsComponent,\n SettingsDisplayComponent,\n SettingsNotificationsComponent,\n SettingsConfigComponent,\n PageHeaderComponent,\n SettingsDatasetsComponent\n ]\n})\nexport class AppSettingsComponent {\n protected readonly pageTitle: string = \"Settings\";\n constructor() { }\n}\n","<page-header [pageTitle]=\"pageTitle\" />\n<mat-tab-group class=\"content-area\">\n <mat-tab label=\"Connectivity\">\n <settings-signalk class=\"tab-content\" />\n </mat-tab>\n <mat-tab label=\"Display\">\n <settings-display class=\"tab-content\" />\n </mat-tab>\n <mat-tab label=\"Notifications\">\n <settings-notifications class=\"tab-content\" />\n </mat-tab>\n <mat-tab label=\"Units\">\n <settings-units class=\"tab-content\" />\n </mat-tab>\n <mat-tab label=\"Dataset\">\n <settings-datasets class=\"tab-content\" />\n </mat-tab>\n <mat-tab label=\"Configuration\">\n <settings-config class=\"tab-content\" />\n </mat-tab>\n </mat-tab-group>\n"],"mappings":"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","names":["_c0","_c1","_c1","_c2","_c0","_c1","_c2","_c3","_MatThumb","_MatTickMark","_c0","_c1","_c2","_c3","_c0"],"x_google_ignoreList":[2,3,4,7,10]}
|