{"version":3,"sources":["node_modules/@angular/material/fesm2022/button.mjs","node_modules/@angular/material/fesm2022/snack-bar.mjs","node_modules/@ngxs/store/fesm2015/ngxs-store-internals.js","node_modules/@ngxs/store/fesm2015/ngxs-store-operators.js","node_modules/@ngxs/store/fesm2015/ngxs-store.js","node_modules/@ngxs/form-plugin/fesm2015/ngxs-form-plugin.js","src/app/store/profile/profile.actions.ts","node_modules/@ngxs/router-plugin/fesm2015/ngxs-router-plugin.js","src/app/modules/profile/profile.service.ts","src/app/shared/helpers/upload-progress.ts","src/app/shared/services/profile-media-api.service.ts","src/app/shared/helpers/error-handler.ts","src/app/store/profile/profile.state.ts","src/app/core/base/base.component.ts"],"sourcesContent":["import * as i1 from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, booleanAttribute, Directive, Input, numberAttribute, ANIMATION_MODULE_TYPE, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, NgModule } from '@angular/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { MatRippleLoader, MatCommonModule, MatRippleModule } from '@angular/material/core';\n\n/** Injection token that can be used to provide the default options the button component. */\nconst _c0 = [\"mat-button\", \"\"];\nconst _c1 = [[[\"\", 8, \"material-icons\", 3, \"iconPositionEnd\", \"\"], [\"mat-icon\", 3, \"iconPositionEnd\", \"\"], [\"\", \"matButtonIcon\", \"\", 3, \"iconPositionEnd\", \"\"]], \"*\", [[\"\", \"iconPositionEnd\", \"\", 8, \"material-icons\"], [\"mat-icon\", \"iconPositionEnd\", \"\"], [\"\", \"matButtonIcon\", \"\", \"iconPositionEnd\", \"\"]]];\nconst _c2 = [\".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])\", \"*\", \".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]\"];\nconst _c3 = \".mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px);display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:\\\"\\\";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{font-family:var(--mdc-text-button-label-text-font);font-size:var(--mdc-text-button-label-text-size);letter-spacing:var(--mdc-text-button-label-text-tracking);font-weight:var(--mdc-text-button-label-text-weight);text-transform:var(--mdc-text-button-label-text-transform);height:var(--mdc-text-button-container-height);border-radius:var(--mdc-text-button-container-shape);padding:0 var(--mat-text-button-horizontal-padding, 8px)}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color)}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity)}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity)}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity)}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{font-family:var(--mdc-filled-button-label-text-font);font-size:var(--mdc-filled-button-label-text-size);letter-spacing:var(--mdc-filled-button-label-text-tracking);font-weight:var(--mdc-filled-button-label-text-weight);text-transform:var(--mdc-filled-button-label-text-transform);height:var(--mdc-filled-button-container-height);border-radius:var(--mdc-filled-button-container-shape);padding:0 var(--mat-filled-button-horizontal-padding, 16px)}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color)}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color)}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity)}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity)}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity)}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{font-family:var(--mdc-protected-button-label-text-font);font-size:var(--mdc-protected-button-label-text-size);letter-spacing:var(--mdc-protected-button-label-text-tracking);font-weight:var(--mdc-protected-button-label-text-weight);text-transform:var(--mdc-protected-button-label-text-transform);height:var(--mdc-protected-button-container-height);border-radius:var(--mdc-protected-button-container-shape);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow)}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color)}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color)}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity)}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity)}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity)}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow)}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow)}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow)}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow)}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{font-family:var(--mdc-outlined-button-label-text-font);font-size:var(--mdc-outlined-button-label-text-size);letter-spacing:var(--mdc-outlined-button-label-text-tracking);font-weight:var(--mdc-outlined-button-label-text-weight);text-transform:var(--mdc-outlined-button-label-text-transform);height:var(--mdc-outlined-button-container-height);border-radius:var(--mdc-outlined-button-container-shape);padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width);padding:0 var(--mat-outlined-button-horizontal-padding, 15px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color)}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape)}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color)}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width))}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color)}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity)}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity)}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity)}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button-base{text-decoration:none}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}\";\nconst _c4 = \".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}\";\nconst _c5 = [\"mat-fab\", \"\"];\nconst _c6 = [\"mat-mini-fab\", \"\"];\nconst _c7 = \".mat-mdc-fab-base{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1);flex-shrink:0}.mat-mdc-fab-base .mat-mdc-button-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab-base .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-fab-base .mdc-button__label,.mat-mdc-fab-base .mat-icon{z-index:1;position:relative}.mat-mdc-fab-base .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab-base:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-fab-base._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab-base::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}.mat-mdc-fab-base[hidden]{display:none}.mat-mdc-fab-base::-moz-focus-inner{padding:0;border:0}.mat-mdc-fab-base:active,.mat-mdc-fab-base:focus{outline:none}.mat-mdc-fab-base:hover{cursor:pointer}.mat-mdc-fab-base>svg{width:100%}.mat-mdc-fab-base .mat-icon,.mat-mdc-fab-base .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab-base .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base[disabled]:focus,.mat-mdc-fab-base.mat-mdc-button-disabled,.mat-mdc-fab-base.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-fab-base.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-fab{background-color:var(--mdc-fab-container-color);border-radius:var(--mdc-fab-container-shape);color:inherit;color:var(--mat-fab-foreground-color, inherit);box-shadow:var(--mdc-fab-container-elevation-shadow)}.mat-mdc-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-touch-target-display)}.mat-mdc-fab .mat-ripple-element{background-color:var(--mat-fab-ripple-color)}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-state-layer-color)}.mat-mdc-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-disabled-state-layer-color)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-hover-state-layer-opacity)}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-focus-state-layer-opacity)}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-pressed-state-layer-opacity)}.mat-mdc-fab:hover{box-shadow:var(--mdc-fab-hover-container-elevation-shadow)}.mat-mdc-fab:focus{box-shadow:var(--mdc-fab-focus-container-elevation-shadow)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active{box-shadow:var(--mdc-fab-pressed-container-elevation-shadow)}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-disabled-state-foreground-color);background-color:var(--mat-fab-disabled-state-container-color)}.mat-mdc-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-mini-fab{width:40px;height:40px;background-color:var(--mdc-fab-small-container-color);border-radius:var(--mdc-fab-small-container-shape);color:inherit;color:var(--mat-fab-small-foreground-color, inherit);box-shadow:var(--mdc-fab-small-container-elevation-shadow)}.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-small-touch-target-display)}.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-fab-small-ripple-color)}.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-state-layer-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-disabled-state-layer-color)}.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-hover-state-layer-opacity)}.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-focus-state-layer-opacity)}.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-pressed-state-layer-opacity)}.mat-mdc-mini-fab:hover{box-shadow:var(--mdc-fab-small-hover-container-elevation-shadow)}.mat-mdc-mini-fab:focus{box-shadow:var(--mdc-fab-small-focus-container-elevation-shadow)}.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:var(--mdc-fab-small-pressed-container-elevation-shadow)}.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-small-disabled-state-foreground-color);background-color:var(--mat-fab-small-disabled-state-container-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;line-height:normal;box-shadow:var(--mdc-extended-fab-container-elevation-shadow);height:var(--mdc-extended-fab-container-height);border-radius:var(--mdc-extended-fab-container-shape);font-family:var(--mdc-extended-fab-label-text-font);font-size:var(--mdc-extended-fab-label-text-size);font-weight:var(--mdc-extended-fab-label-text-weight);letter-spacing:var(--mdc-extended-fab-label-text-tracking)}.mat-mdc-extended-fab:hover{box-shadow:var(--mdc-extended-fab-hover-container-elevation-shadow)}.mat-mdc-extended-fab:focus{box-shadow:var(--mdc-extended-fab-focus-container-elevation-shadow)}.mat-mdc-extended-fab:active,.mat-mdc-extended-fab:focus:active{box-shadow:var(--mdc-extended-fab-pressed-container-elevation-shadow)}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab[disabled]:focus,.mat-mdc-extended-fab.mat-mdc-button-disabled,.mat-mdc-extended-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-extended-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:-8px;margin-right:12px}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons,[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons{margin-left:12px;margin-right:-8px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}\";\nconst _c8 = [\"mat-icon-button\", \"\"];\nconst _c9 = [\"*\"];\nconst _c10 = \".mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);color:var(--mdc-icon-button-icon-color);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\";\nconst MAT_BUTTON_CONFIG = /*#__PURE__*/new InjectionToken('MAT_BUTTON_CONFIG');\n/** Shared host configuration for all buttons */\nconst MAT_BUTTON_HOST = {\n '[attr.disabled]': '_getDisabledAttribute()',\n '[attr.aria-disabled]': '_getAriaDisabled()',\n '[class.mat-mdc-button-disabled]': 'disabled',\n '[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n // MDC automatically applies the primary theme color to the button, but we want to support\n // an unthemed version. If color is undefined, apply a CSS class that makes it easy to\n // select and style this \"theme\".\n '[class.mat-unthemed]': '!color',\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons.\n '[class.mat-mdc-button-base]': 'true',\n '[class]': 'color ? \"mat-\" + color : \"\"'\n};\n/** List of classes to add to buttons instances based on host attribute selector. */\nconst HOST_SELECTOR_MDC_CLASS_PAIR = [{\n attribute: 'mat-button',\n mdcClasses: ['mdc-button', 'mat-mdc-button']\n}, {\n attribute: 'mat-flat-button',\n mdcClasses: ['mdc-button', 'mdc-button--unelevated', 'mat-mdc-unelevated-button']\n}, {\n attribute: 'mat-raised-button',\n mdcClasses: ['mdc-button', 'mdc-button--raised', 'mat-mdc-raised-button']\n}, {\n attribute: 'mat-stroked-button',\n mdcClasses: ['mdc-button', 'mdc-button--outlined', 'mat-mdc-outlined-button']\n}, {\n attribute: 'mat-fab',\n mdcClasses: ['mdc-fab', 'mat-mdc-fab-base', 'mat-mdc-fab']\n}, {\n attribute: 'mat-mini-fab',\n mdcClasses: ['mdc-fab', 'mat-mdc-fab-base', 'mdc-fab--mini', 'mat-mdc-mini-fab']\n}, {\n attribute: 'mat-icon-button',\n mdcClasses: ['mdc-icon-button', 'mat-mdc-icon-button']\n}];\n/** Base class for all buttons. */\nlet MatButtonBase = /*#__PURE__*/(() => {\n class MatButtonBase {\n /**\n * Reference to the MatRipple instance of the button.\n * @deprecated Considered an implementation detail. To be removed.\n * @breaking-change 17.0.0\n */\n get ripple() {\n return this._rippleLoader?.getRipple(this._elementRef.nativeElement);\n }\n set ripple(v) {\n this._rippleLoader?.attachRipple(this._elementRef.nativeElement, v);\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = value;\n this._updateRippleDisabled();\n }\n /** Whether the button is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._updateRippleDisabled();\n }\n constructor(_elementRef, _platform, _ngZone, _animationMode) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._focusMonitor = inject(FocusMonitor);\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve initial load time of large applications.\n */\n this._rippleLoader = inject(MatRippleLoader);\n /** Whether this button is a FAB. Used to apply the correct class on the ripple. */\n this._isFab = false;\n this._disableRipple = false;\n this._disabled = false;\n const config = inject(MAT_BUTTON_CONFIG, {\n optional: true\n });\n const element = _elementRef.nativeElement;\n const classList = element.classList;\n this.disabledInteractive = config?.disabledInteractive ?? false;\n this._rippleLoader?.configureRipple(element, {\n className: 'mat-mdc-button-ripple'\n });\n // For each of the variant selectors that is present in the button's host\n // attributes, add the correct corresponding MDC classes.\n for (const {\n attribute,\n mdcClasses\n } of HOST_SELECTOR_MDC_CLASS_PAIR) {\n if (element.hasAttribute(attribute)) {\n classList.add(...mdcClasses);\n }\n }\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n }\n /** Focuses the button. */\n focus(origin = 'program', options) {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n _getAriaDisabled() {\n if (this.ariaDisabled != null) {\n return this.ariaDisabled;\n }\n return this.disabled && this.disabledInteractive ? true : null;\n }\n _getDisabledAttribute() {\n return this.disabledInteractive || !this.disabled ? null : true;\n }\n _updateRippleDisabled() {\n this._rippleLoader?.setDisabled(this._elementRef.nativeElement, this.disableRipple || this.disabled);\n }\n static {\n this.ɵfac = function MatButtonBase_Factory(t) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatButtonBase,\n inputs: {\n color: \"color\",\n disableRipple: [2, \"disableRipple\", \"disableRipple\", booleanAttribute],\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute],\n ariaDisabled: [2, \"aria-disabled\", \"ariaDisabled\", booleanAttribute],\n disabledInteractive: [2, \"disabledInteractive\", \"disabledInteractive\", booleanAttribute]\n },\n features: [i0.ɵɵInputTransformsFeature]\n });\n }\n }\n return MatButtonBase;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Shared host configuration for buttons using the `` tag. */\nconst MAT_ANCHOR_HOST = {\n '[attr.disabled]': '_getDisabledAttribute()',\n '[class.mat-mdc-button-disabled]': 'disabled',\n '[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n // Note that we ignore the user-specified tabindex when it's disabled for\n // consistency with the `mat-button` applied on native buttons where even\n // though they have an index, they're not tabbable.\n '[attr.tabindex]': 'disabled && !disabledInteractive ? -1 : tabIndex',\n '[attr.aria-disabled]': '_getDisabledAttribute()',\n // MDC automatically applies the primary theme color to the button, but we want to support\n // an unthemed version. If color is undefined, apply a CSS class that makes it easy to\n // select and style this \"theme\".\n '[class.mat-unthemed]': '!color',\n // Add a class that applies to all buttons. This makes it easier to target if somebody\n // wants to target all Material buttons.\n '[class.mat-mdc-button-base]': 'true',\n '[class]': 'color ? \"mat-\" + color : \"\"'\n};\n/**\n * Anchor button base.\n */\nlet MatAnchorBase = /*#__PURE__*/(() => {\n class MatAnchorBase extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n this._haltDisabledEvents = event => {\n // A disabled button shouldn't apply any actions\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n }\n ngOnInit() {\n this._ngZone.runOutsideAngular(() => {\n this._elementRef.nativeElement.addEventListener('click', this._haltDisabledEvents);\n });\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._elementRef.nativeElement.removeEventListener('click', this._haltDisabledEvents);\n }\n _getAriaDisabled() {\n return this.ariaDisabled == null ? this.disabled : this.ariaDisabled;\n }\n static {\n this.ɵfac = function MatAnchorBase_Factory(t) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAnchorBase,\n inputs: {\n tabIndex: [2, \"tabIndex\", \"tabIndex\", value => {\n return value == null ? undefined : numberAttribute(value);\n }]\n },\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return MatAnchorBase;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Material Design button component. Users interact with a button to perform an action.\n * See https://material.io/components/buttons\n *\n * The `MatButton` class applies to native button elements and captures the appearances for\n * \"text button\", \"outlined button\", and \"contained button\" per the Material Design\n * specification. `MatButton` additionally captures an additional \"flat\" appearance, which matches\n * \"contained\" but without elevation.\n */\nlet MatButton = /*#__PURE__*/(() => {\n class MatButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n }\n static {\n this.ɵfac = function MatButton_Factory(t) {\n return new (t || MatButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatButton,\n selectors: [[\"button\", \"mat-button\", \"\"], [\"button\", \"mat-raised-button\", \"\"], [\"button\", \"mat-flat-button\", \"\"], [\"button\", \"mat-stroked-button\", \"\"]],\n hostVars: 14,\n hostBindings: function MatButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [\".mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px);display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:\\\"\\\";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{font-family:var(--mdc-text-button-label-text-font);font-size:var(--mdc-text-button-label-text-size);letter-spacing:var(--mdc-text-button-label-text-tracking);font-weight:var(--mdc-text-button-label-text-weight);text-transform:var(--mdc-text-button-label-text-transform);height:var(--mdc-text-button-container-height);border-radius:var(--mdc-text-button-container-shape);padding:0 var(--mat-text-button-horizontal-padding, 8px)}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color)}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity)}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity)}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity)}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{font-family:var(--mdc-filled-button-label-text-font);font-size:var(--mdc-filled-button-label-text-size);letter-spacing:var(--mdc-filled-button-label-text-tracking);font-weight:var(--mdc-filled-button-label-text-weight);text-transform:var(--mdc-filled-button-label-text-transform);height:var(--mdc-filled-button-container-height);border-radius:var(--mdc-filled-button-container-shape);padding:0 var(--mat-filled-button-horizontal-padding, 16px)}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color)}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color)}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity)}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity)}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity)}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{font-family:var(--mdc-protected-button-label-text-font);font-size:var(--mdc-protected-button-label-text-size);letter-spacing:var(--mdc-protected-button-label-text-tracking);font-weight:var(--mdc-protected-button-label-text-weight);text-transform:var(--mdc-protected-button-label-text-transform);height:var(--mdc-protected-button-container-height);border-radius:var(--mdc-protected-button-container-shape);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow)}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color)}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color)}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity)}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity)}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity)}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow)}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow)}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow)}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow)}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{font-family:var(--mdc-outlined-button-label-text-font);font-size:var(--mdc-outlined-button-label-text-size);letter-spacing:var(--mdc-outlined-button-label-text-tracking);font-weight:var(--mdc-outlined-button-label-text-weight);text-transform:var(--mdc-outlined-button-label-text-transform);height:var(--mdc-outlined-button-container-height);border-radius:var(--mdc-outlined-button-container-shape);padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width);padding:0 var(--mat-outlined-button-horizontal-padding, 15px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color)}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape)}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color)}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width))}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color)}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity)}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity)}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity)}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button-base{text-decoration:none}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}\", \".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design button component for anchor elements. Anchor elements are used to provide\n * links for the user to navigate across different routes or pages.\n * See https://material.io/components/buttons\n *\n * The `MatAnchor` class applies to native anchor elements and captures the appearances for\n * \"text button\", \"outlined button\", and \"contained button\" per the Material Design\n * specification. `MatAnchor` additionally captures an additional \"flat\" appearance, which matches\n * \"contained\" but without elevation.\n */\nlet MatAnchor = /*#__PURE__*/(() => {\n class MatAnchor extends MatAnchorBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n }\n static {\n this.ɵfac = function MatAnchor_Factory(t) {\n return new (t || MatAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatAnchor,\n selectors: [[\"a\", \"mat-button\", \"\"], [\"a\", \"mat-raised-button\", \"\"], [\"a\", \"mat-flat-button\", \"\"], [\"a\", \"mat-stroked-button\", \"\"]],\n hostVars: 15,\n hostBindings: function MatAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c3, _c4],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token to be used to override the default options for FAB. */\nconst MAT_FAB_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-mdc-fab-default-options', {\n providedIn: 'root',\n factory: MAT_FAB_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_FAB_DEFAULT_OPTIONS_FACTORY() {\n return {\n // The FAB by default has its color set to accent.\n color: 'accent'\n };\n}\n// Default FAB configuration.\nconst defaults = /*#__PURE__*/MAT_FAB_DEFAULT_OPTIONS_FACTORY();\n/**\n * Material Design floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://material.io/components/buttons-floating-action-button/\n *\n * The `MatFabButton` class has two appearances: normal and extended.\n */\nlet MatFabButton = /*#__PURE__*/(() => {\n class MatFabButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatFabButton_Factory(t) {\n return new (t || MatFabButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatFabButton,\n selectors: [[\"button\", \"mat-fab\", \"\"]],\n hostVars: 18,\n hostBindings: function MatFabButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true)(\"mdc-fab--extended\", ctx.extended)(\"mat-mdc-extended-fab\", ctx.extended);\n }\n },\n inputs: {\n extended: [2, \"extended\", \"extended\", booleanAttribute]\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c5,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatFabButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [\".mat-mdc-fab-base{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1);flex-shrink:0}.mat-mdc-fab-base .mat-mdc-button-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab-base .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-fab-base .mdc-button__label,.mat-mdc-fab-base .mat-icon{z-index:1;position:relative}.mat-mdc-fab-base .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab-base:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-fab-base._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab-base::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}.mat-mdc-fab-base[hidden]{display:none}.mat-mdc-fab-base::-moz-focus-inner{padding:0;border:0}.mat-mdc-fab-base:active,.mat-mdc-fab-base:focus{outline:none}.mat-mdc-fab-base:hover{cursor:pointer}.mat-mdc-fab-base>svg{width:100%}.mat-mdc-fab-base .mat-icon,.mat-mdc-fab-base .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab-base .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base[disabled]:focus,.mat-mdc-fab-base.mat-mdc-button-disabled,.mat-mdc-fab-base.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-fab-base.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-fab{background-color:var(--mdc-fab-container-color);border-radius:var(--mdc-fab-container-shape);color:inherit;color:var(--mat-fab-foreground-color, inherit);box-shadow:var(--mdc-fab-container-elevation-shadow)}.mat-mdc-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-touch-target-display)}.mat-mdc-fab .mat-ripple-element{background-color:var(--mat-fab-ripple-color)}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-state-layer-color)}.mat-mdc-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-disabled-state-layer-color)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-hover-state-layer-opacity)}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-focus-state-layer-opacity)}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-pressed-state-layer-opacity)}.mat-mdc-fab:hover{box-shadow:var(--mdc-fab-hover-container-elevation-shadow)}.mat-mdc-fab:focus{box-shadow:var(--mdc-fab-focus-container-elevation-shadow)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active{box-shadow:var(--mdc-fab-pressed-container-elevation-shadow)}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-disabled-state-foreground-color);background-color:var(--mat-fab-disabled-state-container-color)}.mat-mdc-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-mini-fab{width:40px;height:40px;background-color:var(--mdc-fab-small-container-color);border-radius:var(--mdc-fab-small-container-shape);color:inherit;color:var(--mat-fab-small-foreground-color, inherit);box-shadow:var(--mdc-fab-small-container-elevation-shadow)}.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-small-touch-target-display)}.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-fab-small-ripple-color)}.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-state-layer-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-disabled-state-layer-color)}.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-hover-state-layer-opacity)}.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-focus-state-layer-opacity)}.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-pressed-state-layer-opacity)}.mat-mdc-mini-fab:hover{box-shadow:var(--mdc-fab-small-hover-container-elevation-shadow)}.mat-mdc-mini-fab:focus{box-shadow:var(--mdc-fab-small-focus-container-elevation-shadow)}.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:var(--mdc-fab-small-pressed-container-elevation-shadow)}.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-small-disabled-state-foreground-color);background-color:var(--mat-fab-small-disabled-state-container-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;line-height:normal;box-shadow:var(--mdc-extended-fab-container-elevation-shadow);height:var(--mdc-extended-fab-container-height);border-radius:var(--mdc-extended-fab-container-shape);font-family:var(--mdc-extended-fab-label-text-font);font-size:var(--mdc-extended-fab-label-text-size);font-weight:var(--mdc-extended-fab-label-text-weight);letter-spacing:var(--mdc-extended-fab-label-text-tracking)}.mat-mdc-extended-fab:hover{box-shadow:var(--mdc-extended-fab-hover-container-elevation-shadow)}.mat-mdc-extended-fab:focus{box-shadow:var(--mdc-extended-fab-focus-container-elevation-shadow)}.mat-mdc-extended-fab:active,.mat-mdc-extended-fab:focus:active{box-shadow:var(--mdc-extended-fab-pressed-container-elevation-shadow)}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab[disabled]:focus,.mat-mdc-extended-fab.mat-mdc-button-disabled,.mat-mdc-extended-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-extended-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:-8px;margin-right:12px}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons,[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons{margin-left:12px;margin-right:-8px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatFabButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design mini floating action button (FAB) component. These buttons represent the primary\n * or most common action for users to interact with.\n * See https://material.io/components/buttons-floating-action-button/\n */\nlet MatMiniFabButton = /*#__PURE__*/(() => {\n class MatMiniFabButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatMiniFabButton_Factory(t) {\n return new (t || MatMiniFabButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMiniFabButton,\n selectors: [[\"button\", \"mat-mini-fab\", \"\"]],\n hostVars: 14,\n hostBindings: function MatMiniFabButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c6,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatMiniFabButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c7],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatMiniFabButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://material.io/components/buttons-floating-action-button/\n *\n * The `MatFabAnchor` class has two appearances: normal and extended.\n */\nlet MatFabAnchor = /*#__PURE__*/(() => {\n class MatFabAnchor extends MatAnchor {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatFabAnchor_Factory(t) {\n return new (t || MatFabAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatFabAnchor,\n selectors: [[\"a\", \"mat-fab\", \"\"]],\n hostVars: 19,\n hostBindings: function MatFabAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true)(\"mdc-fab--extended\", ctx.extended)(\"mat-mdc-extended-fab\", ctx.extended);\n }\n },\n inputs: {\n extended: [2, \"extended\", \"extended\", booleanAttribute]\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c5,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatFabAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c7],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatFabAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design mini floating action button (FAB) component for anchor elements. Anchor elements\n * are used to provide links for the user to navigate across different routes or pages.\n * See https://material.io/components/buttons-floating-action-button/\n */\nlet MatMiniFabAnchor = /*#__PURE__*/(() => {\n class MatMiniFabAnchor extends MatAnchor {\n constructor(elementRef, platform, ngZone, animationMode, _options) {\n super(elementRef, platform, ngZone, animationMode);\n this._options = _options;\n this._isFab = true;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n }\n static {\n this.ɵfac = function MatMiniFabAnchor_Factory(t) {\n return new (t || MatMiniFabAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_FAB_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMiniFabAnchor,\n selectors: [[\"a\", \"mat-mini-fab\", \"\"]],\n hostVars: 15,\n hostBindings: function MatMiniFabAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c6,\n ngContentSelectors: _c2,\n decls: 7,\n vars: 4,\n consts: [[1, \"mat-mdc-button-persistent-ripple\"], [1, \"mdc-button__label\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatMiniFabAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementStart(2, \"span\", 1);\n i0.ɵɵprojection(3, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(4, 2);\n i0.ɵɵelement(5, \"span\", 2)(6, \"span\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"mdc-button__ripple\", !ctx._isFab)(\"mdc-fab__ripple\", ctx._isFab);\n }\n },\n styles: [_c7],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatMiniFabAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Material Design icon button component. This type of button displays a single interactive icon for\n * users to perform an action.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\nlet MatIconButton = /*#__PURE__*/(() => {\n class MatIconButton extends MatButtonBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n this._rippleLoader.configureRipple(this._elementRef.nativeElement, {\n centered: true\n });\n }\n static {\n this.ɵfac = function MatIconButton_Factory(t) {\n return new (t || MatIconButton)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatIconButton,\n selectors: [[\"button\", \"mat-icon-button\", \"\"]],\n hostVars: 14,\n hostBindings: function MatIconButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"aria-disabled\", ctx._getAriaDisabled());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c8,\n ngContentSelectors: _c9,\n decls: 4,\n vars: 0,\n consts: [[1, \"mat-mdc-button-persistent-ripple\", \"mdc-icon-button__ripple\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatIconButton_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelement(2, \"span\", 1)(3, \"span\", 2);\n }\n },\n styles: [\".mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);color:var(--mdc-icon-button-icon-color);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\\\"\\\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\", _c4],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatIconButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Material Design icon button component for anchor elements. This button displays a single\n * interaction icon that allows users to navigate across different routes or pages.\n * See https://material.io/develop/web/components/buttons/icon-buttons/\n */\nlet MatIconAnchor = /*#__PURE__*/(() => {\n class MatIconAnchor extends MatAnchorBase {\n constructor(elementRef, platform, ngZone, animationMode) {\n super(elementRef, platform, ngZone, animationMode);\n }\n static {\n this.ɵfac = function MatIconAnchor_Factory(t) {\n return new (t || MatIconAnchor)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatIconAnchor,\n selectors: [[\"a\", \"mat-icon-button\", \"\"]],\n hostVars: 15,\n hostBindings: function MatIconAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx._getDisabledAttribute())(\"tabindex\", ctx.disabled && !ctx.disabledInteractive ? -1 : ctx.tabIndex)(\"aria-disabled\", ctx._getDisabledAttribute());\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-mdc-button-disabled\", ctx.disabled)(\"mat-mdc-button-disabled-interactive\", ctx.disabledInteractive)(\"_mat-animation-noopable\", ctx._animationMode === \"NoopAnimations\")(\"mat-unthemed\", !ctx.color)(\"mat-mdc-button-base\", true);\n }\n },\n exportAs: [\"matButton\", \"matAnchor\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c8,\n ngContentSelectors: _c9,\n decls: 4,\n vars: 0,\n consts: [[1, \"mat-mdc-button-persistent-ripple\", \"mdc-icon-button__ripple\"], [1, \"mat-mdc-focus-indicator\"], [1, \"mat-mdc-button-touch-target\"]],\n template: function MatIconAnchor_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"span\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵelement(2, \"span\", 1)(3, \"span\", 2);\n }\n },\n styles: [_c10, _c4],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatIconAnchor;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatButtonModule = /*#__PURE__*/(() => {\n class MatButtonModule {\n static {\n this.ɵfac = function MatButtonModule_Factory(t) {\n return new (t || MatButtonModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatButtonModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatRippleModule, MatCommonModule]\n });\n }\n }\n return MatButtonModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_BUTTON_CONFIG, MAT_FAB_DEFAULT_OPTIONS, MAT_FAB_DEFAULT_OPTIONS_FACTORY, MatAnchor, MatButton, MatButtonModule, MatFabAnchor, MatFabButton, MatIconAnchor, MatIconButton, MatMiniFabAnchor, MatMiniFabButton };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, inject, ViewChild, Injector, TemplateRef, Injectable, Optional, SkipSelf, NgModule } from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { Subject } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i1 from '@angular/cdk/platform';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { takeUntil } from 'rxjs/operators';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nfunction SimpleSnackBar_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"button\", 2);\n i0.ɵɵlistener(\"click\", function SimpleSnackBar_Conditional_2_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.action());\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.data.action, \" \");\n }\n}\nconst _c0 = [\"label\"];\nfunction MatSnackBarContainer_ng_template_4_Template(rf, ctx) {}\nconst MAX_TIMEOUT = /*#__PURE__*/Math.pow(2, 31) - 1;\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nclass MatSnackBarRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n this._onAction = new Subject();\n /** Whether the snack bar was dismissed using the action button. */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the snack bar. */\n dismiss() {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /** Marks the snackbar action clicked. */\n dismissWithAction() {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction() {\n this.dismissWithAction();\n }\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration) {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Marks the snackbar as opened */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /** Cleans up the DOM after closing. */\n _finishDismiss() {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({\n dismissedByAction: this._dismissedByAction\n });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction() {\n return this._onAction;\n }\n}\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nconst MAT_SNACK_BAR_DATA = /*#__PURE__*/new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nclass MatSnackBarConfig {\n constructor() {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n this.announcementMessage = '';\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n this.duration = 0;\n /** Data being injected into the child component. */\n this.data = null;\n /** The horizontal position to place the snack bar. */\n this.horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n this.verticalPosition = 'bottom';\n }\n}\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\nlet MatSnackBarLabel = /*#__PURE__*/(() => {\n class MatSnackBarLabel {\n static {\n this.ɵfac = function MatSnackBarLabel_Factory(t) {\n return new (t || MatSnackBarLabel)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarLabel,\n selectors: [[\"\", \"matSnackBarLabel\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-label\", \"mdc-snackbar__label\"],\n standalone: true\n });\n }\n }\n return MatSnackBarLabel;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\nlet MatSnackBarActions = /*#__PURE__*/(() => {\n class MatSnackBarActions {\n static {\n this.ɵfac = function MatSnackBarActions_Factory(t) {\n return new (t || MatSnackBarActions)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarActions,\n selectors: [[\"\", \"matSnackBarActions\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-actions\", \"mdc-snackbar__actions\"],\n standalone: true\n });\n }\n }\n return MatSnackBarActions;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive that should be applied to each of the snack bar's action buttons. */\nlet MatSnackBarAction = /*#__PURE__*/(() => {\n class MatSnackBarAction {\n static {\n this.ɵfac = function MatSnackBarAction_Factory(t) {\n return new (t || MatSnackBarAction)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarAction,\n selectors: [[\"\", \"matSnackBarAction\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-action\", \"mdc-snackbar__action\"],\n standalone: true\n });\n }\n }\n return MatSnackBarAction;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SimpleSnackBar = /*#__PURE__*/(() => {\n class SimpleSnackBar {\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n action() {\n this.snackBarRef.dismissWithAction();\n }\n /** If the action button should be shown. */\n get hasAction() {\n return !!this.data.action;\n }\n static {\n this.ɵfac = function SimpleSnackBar_Factory(t) {\n return new (t || SimpleSnackBar)(i0.ɵɵdirectiveInject(MatSnackBarRef), i0.ɵɵdirectiveInject(MAT_SNACK_BAR_DATA));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SimpleSnackBar,\n selectors: [[\"simple-snack-bar\"]],\n hostAttrs: [1, \"mat-mdc-simple-snack-bar\"],\n exportAs: [\"matSnackBar\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 2,\n consts: [[\"matSnackBarLabel\", \"\"], [\"matSnackBarActions\", \"\"], [\"mat-button\", \"\", \"matSnackBarAction\", \"\", 3, \"click\"]],\n template: function SimpleSnackBar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, SimpleSnackBar_Conditional_2_Template, 3, 1, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx.data.message, \"\\n\");\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.hasAction ? 2 : -1);\n }\n },\n dependencies: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n styles: [\".mat-mdc-simple-snack-bar{display:flex}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return SimpleSnackBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nconst matSnackBarAnimations = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: /*#__PURE__*/trigger('state', [/*#__PURE__*/state('void, hidden', /*#__PURE__*/style({\n transform: 'scale(0.8)',\n opacity: 0\n })), /*#__PURE__*/state('visible', /*#__PURE__*/style({\n transform: 'scale(1)',\n opacity: 1\n })), /*#__PURE__*/transition('* => visible', /*#__PURE__*/animate('150ms cubic-bezier(0, 0, 0.2, 1)')), /*#__PURE__*/transition('* => void, * => hidden', /*#__PURE__*/animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', /*#__PURE__*/style({\n opacity: 0\n })))])\n};\nlet uniqueId = 0;\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nlet MatSnackBarContainer = /*#__PURE__*/(() => {\n class MatSnackBarContainer extends BasePortalOutlet {\n constructor(_ngZone, _elementRef, _changeDetectorRef, _platform, /** The snack bar configuration. */\n snackBarConfig) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platform = _platform;\n this.snackBarConfig = snackBarConfig;\n this._document = inject(DOCUMENT);\n this._trackedModals = new Set();\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n this._announceDelay = 150;\n /** Whether the component has been destroyed. */\n this._destroyed = false;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n this._onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n this._onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n this._onEnter = new Subject();\n /** The state of the snack bar animations. */\n this._animationState = 'void';\n /** Unique ID of the aria-live element. */\n this._liveElementId = `mat-snack-bar-container-live-${uniqueId++}`;\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n } else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event) {\n const {\n fromState,\n toState\n } = event;\n if (toState === 'void' && fromState !== 'void' || toState === 'hidden') {\n this._completeExit();\n }\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of snack bar entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n /** Begin animation of the snack bar exiting from view. */\n exit() {\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n });\n return this._onExit;\n }\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\n this._completeExit();\n }\n /**\n * Removes the element in a microtask. Helps prevent errors where we end up\n * removing an element which is in the middle of an animation.\n */\n _completeExit() {\n queueMicrotask(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n _afterPortalAttached() {\n const element = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n this._exposeToModals();\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n _exposeToModals() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n // `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n /** Clears the references to the live element from any modals it was added to. */\n _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n } else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n /** Asserts that no content is already attached to the container. */\n _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement = null;\n if (this._platform.isBrowser && document.activeElement instanceof HTMLElement && inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n }\n static {\n this.ɵfac = function MatSnackBarContainer_Factory(t) {\n return new (t || MatSnackBarContainer)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(MatSnackBarConfig));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSnackBarContainer,\n selectors: [[\"mat-snack-bar-container\"]],\n viewQuery: function MatSnackBarContainer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkPortalOutlet, 7);\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._label = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-snackbar\", \"mat-mdc-snack-bar-container\"],\n hostVars: 1,\n hostBindings: function MatSnackBarContainer_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵsyntheticHostListener(\"@state.done\", function MatSnackBarContainer_animation_state_done_HostBindingHandler($event) {\n return ctx.onAnimationEnd($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@state\", ctx._animationState);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 6,\n vars: 3,\n consts: [[\"label\", \"\"], [1, \"mdc-snackbar__surface\", \"mat-mdc-snackbar-surface\"], [1, \"mat-mdc-snack-bar-label\"], [\"aria-hidden\", \"true\"], [\"cdkPortalOutlet\", \"\"]],\n template: function MatSnackBarContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1)(1, \"div\", 2, 0)(3, \"div\", 3);\n i0.ɵɵtemplate(4, MatSnackBarContainer_ng_template_4_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(5, \"div\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(5);\n i0.ɵɵattribute(\"aria-live\", ctx._live)(\"role\", ctx._role)(\"id\", ctx._liveElementId);\n }\n },\n dependencies: [CdkPortalOutlet],\n styles: [\".mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}.cdk-high-contrast-active .mat-mdc-snackbar-surface{outline:solid 1px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mdc-snackbar-supporting-text-color);border-radius:var(--mdc-snackbar-container-shape);background-color:var(--mdc-snackbar-container-color)}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mdc-snackbar-supporting-text-font);font-size:var(--mdc-snackbar-supporting-text-size);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}\"],\n encapsulation: 2,\n data: {\n animation: [matSnackBarAnimations.snackBarState]\n }\n });\n }\n }\n return MatSnackBarContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** @docs-private */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/** Injection token that can be used to specify default snack bar. */\nconst MAT_SNACK_BAR_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY\n});\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nlet MatSnackBar = /*#__PURE__*/(() => {\n class MatSnackBar {\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef() {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n constructor(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar, _defaultConfig) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\n this._defaultConfig = _defaultConfig;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n this._snackBarRefAtThisLevel = null;\n /** The component that should be rendered as the snack bar's simple component. */\n this.simpleSnackBarComponent = SimpleSnackBar;\n /** The container component that attaches the provided template or component. */\n this.snackBarContainerComponent = MatSnackBarContainer;\n /** The CSS class to apply for handset mode. */\n this.handsetCssClass = 'mat-mdc-snack-bar-handset';\n }\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent(component, config) {\n return this._attach(component, config);\n }\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template, config) {\n return this._attach(template, config);\n }\n /**\n * Opens a snackbar with a message and an optional action.\n * @param message The message to show in the snackbar.\n * @param action The label for the snackbar action.\n * @param config Additional configuration options for the snackbar.\n */\n open(message, action = '', config) {\n const _config = {\n ...this._defaultConfig,\n ...config\n };\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = {\n message,\n action\n };\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n /**\n * Attaches the snack bar container component to the overlay.\n */\n _attachSnackBarContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarConfig,\n useValue: config\n }]\n });\n const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n _attach(content, userConfig) {\n const config = {\n ...new MatSnackBarConfig(),\n ...this._defaultConfig,\n ...userConfig\n };\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef(container, overlayRef);\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null, {\n $implicit: config.data,\n snackBarRef\n });\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(takeUntil(overlayRef.detachments())).subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage, config.politeness);\n });\n }\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /** Animates the old snack bar out and the new one in. */\n _animateSnackBar(snackBarRef, config) {\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n if (config.announcementMessage) {\n this._live.clear();\n }\n });\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (config.duration && config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration));\n }\n }\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n _createOverlay(config) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = config.horizontalPosition === 'left' || config.horizontalPosition === 'start' && !isRtl || config.horizontalPosition === 'end' && isRtl;\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n _createInjector(config, snackBarRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarRef,\n useValue: snackBarRef\n }, {\n provide: MAT_SNACK_BAR_DATA,\n useValue: config.data\n }]\n });\n }\n static {\n this.ɵfac = function MatSnackBar_Factory(t) {\n return new (t || MatSnackBar)(i0.ɵɵinject(i1$1.Overlay), i0.ɵɵinject(i2.LiveAnnouncer), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i3.BreakpointObserver), i0.ɵɵinject(MatSnackBar, 12), i0.ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatSnackBar,\n factory: MatSnackBar.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MatSnackBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\nlet MatSnackBarModule = /*#__PURE__*/(() => {\n class MatSnackBarModule {\n static {\n this.ɵfac = function MatSnackBarModule_Factory(t) {\n return new (t || MatSnackBarModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSnackBarModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MatSnackBar],\n imports: [OverlayModule, PortalModule, MatButtonModule, MatCommonModule, SimpleSnackBar, MatCommonModule]\n });\n }\n }\n return MatSnackBarModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SNACK_BAR_DATA, MAT_SNACK_BAR_DEFAULT_OPTIONS, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MatSnackBar, MatSnackBarAction, MatSnackBarActions, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarModule, MatSnackBarRef, SimpleSnackBar, matSnackBarAnimations };\n","import * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nlet NgxsBootstrapper = /*#__PURE__*/(() => {\n class NgxsBootstrapper {\n constructor() {\n /**\n * Use `ReplaySubject`, thus we can get cached value even if the stream is completed\n */\n this.bootstrap$ = new ReplaySubject(1);\n }\n get appBootstrapped$() {\n return this.bootstrap$.asObservable();\n }\n /**\n * This event will be emitted after attaching `ComponentRef` of the root component\n * to the tree of views, that's a signal that application has been fully rendered\n */\n bootstrap() {\n this.bootstrap$.next(true);\n this.bootstrap$.complete();\n }\n }\n /** @nocollapse */\n /** @nocollapse */NgxsBootstrapper.ɵfac = function NgxsBootstrapper_Factory(t) {\n return new (t || NgxsBootstrapper)();\n };\n NgxsBootstrapper.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgxsBootstrapper,\n factory: NgxsBootstrapper.ɵfac,\n providedIn: 'root'\n });\n return NgxsBootstrapper;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n const length = prev.length;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Memoize a function on its last inputs only.\n * Originally from: https://github.com/reduxjs/reselect/blob/master/src/index.js\n *\n * @ignore\n */\nfunction memoize(func, equalityCheck = defaultEqualityCheck) {\n let lastArgs = null;\n let lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n function memoized() {\n // eslint-disable-next-line prefer-rest-params\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n // eslint-disable-next-line prefer-rest-params, prefer-spread\n lastResult = func.apply(null, arguments);\n }\n // eslint-disable-next-line prefer-rest-params\n lastArgs = arguments;\n return lastResult;\n }\n memoized.reset = function () {\n // The hidden (for now) ability to reset the memoization\n lastArgs = null;\n lastResult = null;\n };\n return memoized;\n}\nlet InitialState = /*#__PURE__*/(() => {\n class InitialState {\n static set(state) {\n this._value = state;\n }\n static pop() {\n const state = this._value;\n this._value = {};\n return state;\n }\n }\n InitialState._value = {};\n return InitialState;\n})();\nconst INITIAL_STATE_TOKEN = new InjectionToken('INITIAL_STATE_TOKEN', {\n providedIn: 'root',\n factory: () => InitialState.pop()\n});\n\n// These tokens are internal and can change at any point.\nconst ɵNGXS_STATE_FACTORY = new InjectionToken('ɵNGXS_STATE_FACTORY');\nconst ɵNGXS_STATE_CONTEXT_FACTORY = new InjectionToken('ɵNGXS_STATE_CONTEXT_FACTORY');\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_STATE_TOKEN, InitialState, NgxsBootstrapper, memoize, ɵNGXS_STATE_CONTEXT_FACTORY, ɵNGXS_STATE_FACTORY };\n","/**\n * @param items - Specific items to append to the end of an array\n */\nfunction append(items) {\n return function appendOperator(existing) {\n // If `items` is `undefined` or `null` or `[]` but `existing` is provided\n // just return `existing`\n const itemsNotProvidedButExistingIs = (!items || !items.length) && existing;\n if (itemsNotProvidedButExistingIs) {\n return existing;\n }\n if (Array.isArray(existing)) {\n return existing.concat(items);\n }\n // For example if some property is added dynamically\n // and didn't exist before thus it's not `ArrayLike`\n return items;\n };\n}\nfunction compose(...operators) {\n return function composeOperator(existing) {\n return operators.reduce((accumulator, operator) => operator(accumulator), existing);\n };\n}\nfunction isStateOperator(value) {\n return typeof value === 'function';\n}\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\nfunction isPredicate(value) {\n return typeof value === 'function';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\nfunction invalidIndex(index) {\n return Number.isNaN(index) || index === -1;\n}\nfunction isNil(value) {\n return value === null || isUndefined(value);\n}\nfunction retrieveValue(operatorOrValue, existing) {\n // If state operator is a function\n // then call it with an original value\n if (isStateOperator(operatorOrValue)) {\n const value = operatorOrValue(existing);\n return value;\n }\n // If operator or value was not provided\n // e.g. `elseOperatorOrValue` is `undefined`\n // then we just return an original value\n if (isUndefined(operatorOrValue)) {\n return existing;\n }\n return operatorOrValue;\n}\n/**\n * @param condition - Condition can be a plain boolean value or a function,\n * that returns boolean, also this function can take a value as an argument\n * to which this state operator applies\n * @param trueOperatorOrValue - Any value or a state operator\n * @param elseOperatorOrValue - Any value or a state operator\n */\nfunction iif(condition, trueOperatorOrValue, elseOperatorOrValue) {\n return function iifOperator(existing) {\n // Convert the value to a boolean\n let result = !!condition;\n // but if it is a function then run it to get the result\n if (isPredicate(condition)) {\n result = condition(existing);\n }\n if (result) {\n return retrieveValue(trueOperatorOrValue, existing);\n }\n return retrieveValue(elseOperatorOrValue, existing);\n };\n}\n\n/**\n * @param value - Value to insert\n * @param [beforePosition] - Specified index to insert value before, optional\n */\nfunction insertItem(value, beforePosition) {\n return function insertItemOperator(existing) {\n // Have to check explicitly for `null` and `undefined`\n // because `value` can be `0`, thus `!value` will return `true`\n if (isNil(value) && existing) {\n return existing;\n }\n // Property may be dynamic and might not existed before\n if (!Array.isArray(existing)) {\n return [value];\n }\n const clone = existing.slice();\n let index = 0;\n // No need to call `isNumber`\n // as we are checking `> 0` not `>= 0`\n // everything except number will return false here\n if (beforePosition > 0) {\n index = beforePosition;\n }\n clone.splice(index, 0, value);\n return clone;\n };\n}\nfunction patch(patchObject) {\n return function patchStateOperator(existing) {\n let clone = null;\n for (const k in patchObject) {\n const newValue = patchObject[k];\n const existingPropValue = existing === null || existing === void 0 ? void 0 : existing[k];\n const newPropValue = isStateOperator(newValue) ? newValue(existingPropValue) : newValue;\n if (newPropValue !== existingPropValue) {\n if (!clone) {\n clone = Object.assign({}, existing);\n }\n clone[k] = newPropValue;\n }\n }\n return clone || existing;\n };\n}\n\n/**\n * @param selector - Index of item in the array or a predicate function\n * that can be provided in `Array.prototype.findIndex`\n * @param operatorOrValue - New value under the `selector` index or a\n * function that can be applied to an existing value\n */\nfunction updateItem(selector, operatorOrValue) {\n return function updateItemOperator(existing) {\n let index = -1;\n if (isPredicate(selector)) {\n index = existing.findIndex(selector);\n } else if (isNumber(selector)) {\n index = selector;\n }\n if (invalidIndex(index)) {\n return existing;\n }\n let value = null;\n // Need to check if the new item value will change the existing item value\n // then, only if it will change it then clone the array and set the item\n const theOperatorOrValue = operatorOrValue;\n if (isStateOperator(theOperatorOrValue)) {\n value = theOperatorOrValue(existing[index]);\n } else {\n value = theOperatorOrValue;\n }\n // If the value hasn't been mutated\n // then we just return `existing` array\n if (value === existing[index]) {\n return existing;\n }\n const clone = existing.slice();\n clone[index] = value;\n return clone;\n };\n}\n\n/**\n * @param selector - index or predicate to remove an item from an array by\n */\nfunction removeItem(selector) {\n return function removeItemOperator(existing) {\n let index = -1;\n if (isPredicate(selector)) {\n index = existing.findIndex(selector);\n } else if (isNumber(selector)) {\n index = selector;\n }\n if (invalidIndex(index)) {\n return existing;\n }\n const clone = existing.slice();\n clone.splice(index, 1);\n return clone;\n };\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { append, compose, iif, insertItem, isPredicate, isStateOperator, patch, removeItem, updateItem };\n","import * as i0 from '@angular/core';\nimport { NgZone, PLATFORM_ID, Injectable, Inject, InjectionToken, inject, INJECTOR, ɵglobal, ErrorHandler, Optional, SkipSelf, NgModule, APP_BOOTSTRAP_LISTENER } from '@angular/core';\nimport * as i5 from '@ngxs/store/internals';\nimport { memoize, INITIAL_STATE_TOKEN, NgxsBootstrapper, ɵNGXS_STATE_CONTEXT_FACTORY, ɵNGXS_STATE_FACTORY } from '@ngxs/store/internals';\nimport { isPlatformServer } from '@angular/common';\nimport { Observable, Subject, BehaviorSubject, of, forkJoin, throwError, EMPTY, from, isObservable } from 'rxjs';\nimport { filter, map, share, shareReplay, take, exhaustMap, mergeMap, defaultIfEmpty, catchError, takeUntil, distinctUntilChanged, tap, startWith, pairwise } from 'rxjs/operators';\nimport { isStateOperator } from '@ngxs/store/operators';\n\n/**\n * Returns the type from an action instance/class.\n * @ignore\n */\nfunction getActionTypeFromInstance(action) {\n if (action.constructor && action.constructor.type) {\n return action.constructor.type;\n } else {\n return action.type;\n }\n}\n/**\n * Matches a action\n * @ignore\n */\nfunction actionMatcher(action1) {\n const type1 = getActionTypeFromInstance(action1);\n return function (action2) {\n return type1 === getActionTypeFromInstance(action2);\n };\n}\n/**\n * Set a deeply nested value. Example:\n *\n * setValue({ foo: { bar: { eat: false } } },\n * 'foo.bar.eat', true) //=> { foo: { bar: { eat: true } } }\n *\n * While it traverses it also creates new objects from top down.\n *\n * @ignore\n */\nconst setValue = (obj, prop, val) => {\n obj = Object.assign({}, obj);\n const split = prop.split('.');\n const lastIndex = split.length - 1;\n split.reduce((acc, part, index) => {\n if (index === lastIndex) {\n acc[part] = val;\n } else {\n acc[part] = Array.isArray(acc[part]) ? acc[part].slice() : Object.assign({}, acc[part]);\n }\n return acc && acc[part];\n }, obj);\n return obj;\n};\n/**\n * Get a deeply nested value. Example:\n *\n * getValue({ foo: bar: [] }, 'foo.bar') //=> []\n *\n * @ignore\n */\nconst getValue = (obj, prop) => prop.split('.').reduce((acc, part) => acc && acc[part], obj);\n/**\n * Simple object check.\n *\n * isObject({a:1}) //=> true\n * isObject(1) //=> false\n *\n * @ignore\n */\nconst isObject$1 = item => {\n return item && typeof item === 'object' && !Array.isArray(item);\n};\n/**\n * Deep merge two objects.\n *\n * mergeDeep({a:1, b:{x: 1, y:2}}, {b:{x: 3}, c:4}) //=> {a:1, b:{x:3, y:2}, c:4}\n *\n * @param base base object onto which `sources` will be applied\n */\nconst mergeDeep = (base, ...sources) => {\n if (!sources.length) return base;\n const source = sources.shift();\n if (isObject$1(base) && isObject$1(source)) {\n for (const key in source) {\n if (isObject$1(source[key])) {\n if (!base[key]) Object.assign(base, {\n [key]: {}\n });\n mergeDeep(base[key], source[key]);\n } else {\n Object.assign(base, {\n [key]: source[key]\n });\n }\n }\n }\n return mergeDeep(base, ...sources);\n};\nfunction throwStateNameError(name) {\n throw new Error(`${name} is not a valid state name. It needs to be a valid object property name.`);\n}\nfunction throwStateNamePropertyError() {\n throw new Error(`States must register a 'name' property.`);\n}\nfunction throwStateUniqueError(current, newName, oldName) {\n throw new Error(`State name '${current}' from ${newName} already exists in ${oldName}.`);\n}\nfunction throwStateDecoratorError(name) {\n throw new Error(`States must be decorated with @State() decorator, but \"${name}\" isn't.`);\n}\nfunction throwActionDecoratorError() {\n throw new Error('@Action() decorator cannot be used with static methods.');\n}\nfunction throwSelectorDecoratorError() {\n throw new Error('Selectors only work on methods.');\n}\nfunction getZoneWarningMessage() {\n return 'Your application was bootstrapped with nooped zone and your execution strategy requires an actual NgZone!\\n' + 'Please set the value of the executionStrategy property to NoopNgxsExecutionStrategy.\\n' + 'NgxsModule.forRoot(states, { executionStrategy: NoopNgxsExecutionStrategy })';\n}\nfunction getUndecoratedStateInIvyWarningMessage(name) {\n return `'${name}' class should be decorated with @Injectable() right after the @State() decorator`;\n}\nfunction throwSelectFactoryNotConnectedError() {\n throw new Error('You have forgotten to import the NGXS module!');\n}\nfunction throwPatchingArrayError() {\n throw new Error('Patching arrays is not supported.');\n}\nfunction throwPatchingPrimitiveError() {\n throw new Error('Patching primitives is not supported.');\n}\nlet DispatchOutsideZoneNgxsExecutionStrategy = /*#__PURE__*/(() => {\n class DispatchOutsideZoneNgxsExecutionStrategy {\n constructor(_ngZone, _platformId) {\n this._ngZone = _ngZone;\n this._platformId = _platformId;\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n verifyZoneIsNotNooped(_ngZone);\n }\n }\n enter(func) {\n if (isPlatformServer(this._platformId)) {\n return this.runInsideAngular(func);\n }\n return this.runOutsideAngular(func);\n }\n leave(func) {\n return this.runInsideAngular(func);\n }\n runInsideAngular(func) {\n if (NgZone.isInAngularZone()) {\n return func();\n }\n return this._ngZone.run(func);\n }\n runOutsideAngular(func) {\n if (NgZone.isInAngularZone()) {\n return this._ngZone.runOutsideAngular(func);\n }\n return func();\n }\n }\n /** @nocollapse */\n /** @nocollapse */DispatchOutsideZoneNgxsExecutionStrategy.ɵfac = function DispatchOutsideZoneNgxsExecutionStrategy_Factory(t) {\n return new (t || DispatchOutsideZoneNgxsExecutionStrategy)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(PLATFORM_ID));\n };\n DispatchOutsideZoneNgxsExecutionStrategy.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DispatchOutsideZoneNgxsExecutionStrategy,\n factory: DispatchOutsideZoneNgxsExecutionStrategy.ɵfac,\n providedIn: 'root'\n });\n return DispatchOutsideZoneNgxsExecutionStrategy;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n// Caretaker note: this should exist as a separate function and not a class method,\n// since class methods are not tree-shakable.\nfunction verifyZoneIsNotNooped(ngZone) {\n // `NoopNgZone` is not exposed publicly as it doesn't expect\n // to be used outside of the core Angular code, thus we just have\n // to check if the zone doesn't extend or instanceof `NgZone`.\n if (ngZone instanceof NgZone) {\n return;\n }\n console.warn(getZoneWarningMessage());\n}\nconst ROOT_OPTIONS = new InjectionToken('ROOT_OPTIONS');\nconst ROOT_STATE_TOKEN = new InjectionToken('ROOT_STATE_TOKEN');\nconst FEATURE_STATE_TOKEN = new InjectionToken('FEATURE_STATE_TOKEN');\nconst NGXS_PLUGINS = new InjectionToken('NGXS_PLUGINS');\nconst META_KEY = 'NGXS_META';\nconst META_OPTIONS_KEY = 'NGXS_OPTIONS_META';\nconst SELECTOR_META_KEY = 'NGXS_SELECTOR_META';\n/**\n * The NGXS config settings.\n */\nlet NgxsConfig = /*#__PURE__*/(() => {\n class NgxsConfig {\n constructor() {\n /**\n * Defining the default state before module initialization\n * This is convenient if we need to create a define our own set of states.\n * @deprecated will be removed after v4\n * (default: {})\n */\n this.defaultsState = {};\n /**\n * Defining shared selector options\n */\n this.selectorOptions = {\n injectContainerState: true,\n suppressErrors: true // TODO: default is true in v3, will change in v4\n };\n this.compatibility = {\n strictContentSecurityPolicy: false\n };\n this.executionStrategy = DispatchOutsideZoneNgxsExecutionStrategy;\n }\n }\n /** @nocollapse */\n /** @nocollapse */NgxsConfig.ɵfac = function NgxsConfig_Factory(t) {\n return new (t || NgxsConfig)();\n };\n NgxsConfig.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgxsConfig,\n factory: function NgxsConfig_Factory(t) {\n let r = null;\n if (t) {\n r = new t();\n } else {\n r = (options => mergeDeep(new NgxsConfig(), options))(i0.ɵɵinject(ROOT_OPTIONS));\n }\n return r;\n },\n providedIn: 'root'\n });\n return NgxsConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Represents a basic change from a previous to a new value for a single state instance.\n * Passed as a value in a NgxsSimpleChanges object to the ngxsOnChanges hook.\n */\nclass NgxsSimpleChange {\n constructor(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n}\nlet NoopNgxsExecutionStrategy = /*#__PURE__*/(() => {\n class NoopNgxsExecutionStrategy {\n enter(func) {\n return func();\n }\n leave(func) {\n return func();\n }\n }\n /** @nocollapse */\n /** @nocollapse */NoopNgxsExecutionStrategy.ɵfac = function NoopNgxsExecutionStrategy_Factory(t) {\n return new (t || NoopNgxsExecutionStrategy)();\n };\n NoopNgxsExecutionStrategy.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NoopNgxsExecutionStrategy,\n factory: NoopNgxsExecutionStrategy.ɵfac,\n providedIn: 'root'\n });\n return NoopNgxsExecutionStrategy;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The strategy that might be provided by users through `options.executionStrategy`.\n */\nconst USER_PROVIDED_NGXS_EXECUTION_STRATEGY = new InjectionToken('USER_PROVIDED_NGXS_EXECUTION_STRATEGY');\n/*\n * Internal execution strategy injection token\n */\nconst NGXS_EXECUTION_STRATEGY = new InjectionToken('NGXS_EXECUTION_STRATEGY', {\n providedIn: 'root',\n factory: () => {\n const injector = inject(INJECTOR);\n const executionStrategy = injector.get(USER_PROVIDED_NGXS_EXECUTION_STRATEGY);\n return executionStrategy ? injector.get(executionStrategy) : injector.get(typeof ɵglobal.Zone !== 'undefined' ? DispatchOutsideZoneNgxsExecutionStrategy : NoopNgxsExecutionStrategy);\n }\n});\n\n/**\n * Ensures metadata is attached to the class and returns it.\n *\n * @ignore\n */\nfunction ensureStoreMetadata$1(target) {\n if (!target.hasOwnProperty(META_KEY)) {\n const defaultMetadata = {\n name: null,\n actions: {},\n defaults: {},\n path: null,\n makeRootSelector(context) {\n return context.getStateGetter(defaultMetadata.name);\n },\n children: []\n };\n Object.defineProperty(target, META_KEY, {\n value: defaultMetadata\n });\n }\n return getStoreMetadata$1(target);\n}\n/**\n * Get the metadata attached to the state class if it exists.\n *\n * @ignore\n */\nfunction getStoreMetadata$1(target) {\n return target[META_KEY];\n}\n/**\n * Ensures metadata is attached to the selector and returns it.\n *\n * @ignore\n */\nfunction ensureSelectorMetadata$1(target) {\n if (!target.hasOwnProperty(SELECTOR_META_KEY)) {\n const defaultMetadata = {\n makeRootSelector: null,\n originalFn: null,\n containerClass: null,\n selectorName: null,\n getSelectorOptions: () => ({})\n };\n Object.defineProperty(target, SELECTOR_META_KEY, {\n value: defaultMetadata\n });\n }\n return getSelectorMetadata$1(target);\n}\n/**\n * Get the metadata attached to the selector if it exists.\n *\n * @ignore\n */\nfunction getSelectorMetadata$1(target) {\n return target[SELECTOR_META_KEY];\n}\n/**\n * Get a deeply nested value. Example:\n *\n * getValue({ foo: bar: [] }, 'foo.bar') //=> []\n *\n * Note: This is not as fast as the `fastPropGetter` but is strict Content Security Policy compliant.\n * See perf hit: https://jsperf.com/fast-value-getter-given-path/1\n *\n * @ignore\n */\nfunction compliantPropGetter(paths) {\n const copyOfPaths = paths.slice();\n return obj => copyOfPaths.reduce((acc, part) => acc && acc[part], obj);\n}\n/**\n * The generated function is faster than:\n * - pluck (Observable operator)\n * - memoize\n *\n * @ignore\n */\nfunction fastPropGetter(paths) {\n const segments = paths;\n let seg = 'store.' + segments[0];\n let i = 0;\n const l = segments.length;\n let expr = seg;\n while (++i < l) {\n expr = expr + ' && ' + (seg = seg + '.' + segments[i]);\n }\n const fn = new Function('store', 'return ' + expr + ';');\n return fn;\n}\n/**\n * Get a deeply nested value. Example:\n *\n * getValue({ foo: bar: [] }, 'foo.bar') //=> []\n *\n * @ignore\n */\nfunction propGetter(paths, config) {\n if (config && config.compatibility && config.compatibility.strictContentSecurityPolicy) {\n return compliantPropGetter(paths);\n } else {\n return fastPropGetter(paths);\n }\n}\n/**\n * Given an array of states, it will return a object graph. Example:\n * const states = [\n * Cart,\n * CartSaved,\n * CartSavedItems\n * ]\n *\n * would return:\n *\n * const graph = {\n * cart: ['saved'],\n * saved: ['items'],\n * items: []\n * };\n *\n * @ignore\n */\nfunction buildGraph(stateClasses) {\n const findName = stateClass => {\n const meta = stateClasses.find(g => g === stateClass);\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !meta) {\n throw new Error(`Child state not found: ${stateClass}. \\r\\nYou may have forgotten to add states to module`);\n }\n return meta[META_KEY].name;\n };\n return stateClasses.reduce((result, stateClass) => {\n const {\n name,\n children\n } = stateClass[META_KEY];\n result[name] = (children || []).map(findName);\n return result;\n }, {});\n}\n/**\n * Given a states array, returns object graph\n * returning the name and state metadata. Example:\n *\n * const graph = {\n * cart: { metadata }\n * };\n *\n * @ignore\n */\nfunction nameToState(states) {\n return states.reduce((result, stateClass) => {\n const meta = stateClass[META_KEY];\n result[meta.name] = stateClass;\n return result;\n }, {});\n}\n/**\n * Given a object relationship graph will return the full path\n * for the child items. Example:\n *\n * const graph = {\n * cart: ['saved'],\n * saved: ['items'],\n * items: []\n * };\n *\n * would return:\n *\n * const r = {\n * cart: 'cart',\n * saved: 'cart.saved',\n * items: 'cart.saved.items'\n * };\n *\n * @ignore\n */\nfunction findFullParentPath(obj, newObj = {}) {\n const visit = (child, keyToFind) => {\n for (const key in child) {\n if (child.hasOwnProperty(key) && child[key].indexOf(keyToFind) >= 0) {\n const parent = visit(child, key);\n return parent !== null ? `${parent}.${key}` : key;\n }\n }\n return null;\n };\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const parent = visit(obj, key);\n newObj[key] = parent ? `${parent}.${key}` : key;\n }\n }\n return newObj;\n}\n/**\n * Given a object graph, it will return the items topologically sorted Example:\n *\n * const graph = {\n * cart: ['saved'],\n * saved: ['items'],\n * items: []\n * };\n *\n * would return:\n *\n * const results = [\n * 'items',\n * 'saved',\n * 'cart'\n * ];\n *\n * @ignore\n */\nfunction topologicalSort(graph) {\n const sorted = [];\n const visited = {};\n const visit = (name, ancestors = []) => {\n if (!Array.isArray(ancestors)) {\n ancestors = [];\n }\n ancestors.push(name);\n visited[name] = true;\n graph[name].forEach(dep => {\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && ancestors.indexOf(dep) >= 0) {\n throw new Error(`Circular dependency '${dep}' is required by '${name}': ${ancestors.join(' -> ')}`);\n }\n if (visited[dep]) {\n return;\n }\n visit(dep, ancestors.slice(0));\n });\n if (sorted.indexOf(name) < 0) {\n sorted.push(name);\n }\n };\n Object.keys(graph).forEach(k => visit(k));\n return sorted.reverse();\n}\n/**\n * Returns if the parameter is a object or not.\n *\n * @ignore\n */\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null || typeof obj === 'function';\n}\n\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will grab actions that have just been dispatched as well as actions that have completed\n */\nfunction ofAction(...allowedTypes) {\n return ofActionOperator(allowedTypes);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been dispatched\n */\nfunction ofActionDispatched(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"DISPATCHED\" /* Dispatched */]);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been successfully completed\n */\nfunction ofActionSuccessful(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"SUCCESSFUL\" /* Successful */]);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been canceled\n */\nfunction ofActionCanceled(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"CANCELED\" /* Canceled */]);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just been completed\n */\nfunction ofActionCompleted(...allowedTypes) {\n const allowedStatuses = [\"SUCCESSFUL\" /* Successful */, \"CANCELED\" /* Canceled */, \"ERRORED\" /* Errored */];\n return ofActionOperator(allowedTypes, allowedStatuses, mapActionResult);\n}\n/**\n * RxJS operator for selecting out specific actions.\n *\n * This will ONLY grab actions that have just thrown an error\n */\nfunction ofActionErrored(...allowedTypes) {\n return ofActionOperator(allowedTypes, [\"ERRORED\" /* Errored */]);\n}\nfunction ofActionOperator(allowedTypes, statuses,\n// This actually could've been `OperatorFunction`,\n// since it maps either to `ctx.action` OR to `ActionCompletion`. But `ActionCompleteion | any`\n// defaults to `any`, thus there is no sense from union type.\nmapOperator = mapAction) {\n const allowedMap = createAllowedActionTypesMap(allowedTypes);\n const allowedStatusMap = statuses && createAllowedStatusesMap(statuses);\n return function (o) {\n return o.pipe(filterStatus(allowedMap, allowedStatusMap), mapOperator());\n };\n}\nfunction filterStatus(allowedTypes, allowedStatuses) {\n return filter(ctx => {\n const actionType = getActionTypeFromInstance(ctx.action);\n const typeMatch = allowedTypes[actionType];\n const statusMatch = allowedStatuses ? allowedStatuses[ctx.status] : true;\n return typeMatch && statusMatch;\n });\n}\nfunction mapActionResult() {\n return map(({\n action,\n status,\n error\n }) => {\n return {\n action,\n result: {\n successful: \"SUCCESSFUL\" /* Successful */ === status,\n canceled: \"CANCELED\" /* Canceled */ === status,\n error\n }\n };\n });\n}\nfunction mapAction() {\n return map(ctx => ctx.action);\n}\nfunction createAllowedActionTypesMap(types) {\n return types.reduce((filterMap, klass) => {\n filterMap[getActionTypeFromInstance(klass)] = true;\n return filterMap;\n }, {});\n}\nfunction createAllowedStatusesMap(statuses) {\n return statuses.reduce((filterMap, status) => {\n filterMap[status] = true;\n return filterMap;\n }, {});\n}\n\n/**\n * Returns operator that will run\n * `subscribe` outside of the ngxs execution context\n */\nfunction leaveNgxs(ngxsExecutionStrategy) {\n return source => {\n return new Observable(sink => {\n return source.subscribe({\n next(value) {\n ngxsExecutionStrategy.leave(() => sink.next(value));\n },\n error(error) {\n ngxsExecutionStrategy.leave(() => sink.error(error));\n },\n complete() {\n ngxsExecutionStrategy.leave(() => sink.complete());\n }\n });\n });\n };\n}\nlet InternalNgxsExecutionStrategy = /*#__PURE__*/(() => {\n class InternalNgxsExecutionStrategy {\n constructor(_executionStrategy) {\n this._executionStrategy = _executionStrategy;\n }\n enter(func) {\n return this._executionStrategy.enter(func);\n }\n leave(func) {\n return this._executionStrategy.leave(func);\n }\n }\n /** @nocollapse */\n /** @nocollapse */InternalNgxsExecutionStrategy.ɵfac = function InternalNgxsExecutionStrategy_Factory(t) {\n return new (t || InternalNgxsExecutionStrategy)(i0.ɵɵinject(NGXS_EXECUTION_STRATEGY));\n };\n InternalNgxsExecutionStrategy.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InternalNgxsExecutionStrategy,\n factory: InternalNgxsExecutionStrategy.ɵfac,\n providedIn: 'root'\n });\n return InternalNgxsExecutionStrategy;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * This wraps the provided function, and will enforce the following:\n * - The calls will execute in the order that they are made\n * - A call will only be initiated when the previous call has completed\n * - If there is a call currently executing then the new call will be added\n * to the queue and the function will return immediately\n *\n * NOTE: The following assumptions about the operation must hold true:\n * - The operation is synchronous in nature\n * - If any asynchronous side effects of the call exist, it should not\n * have any bearing on the correctness of the next call in the queue\n * - The operation has a void return\n * - The caller should not assume that the call has completed upon\n * return of the function\n * - The caller can assume that all the queued calls will complete\n * within the current microtask\n * - The only way that a call will encounter another call in the queue\n * would be if the call at the front of the queue initiated this call\n * as part of its synchronous execution\n */\nfunction orderedQueueOperation(operation) {\n const callsQueue = [];\n let busyPushingNext = false;\n return function callOperation(...args) {\n if (busyPushingNext) {\n callsQueue.unshift(args);\n return;\n }\n busyPushingNext = true;\n operation(...args);\n while (callsQueue.length > 0) {\n const nextCallArgs = callsQueue.pop();\n nextCallArgs && operation(...nextCallArgs);\n }\n busyPushingNext = false;\n };\n}\n/**\n * Custom Subject that ensures that subscribers are notified of values in the order that they arrived.\n * A standard Subject does not have this guarantee.\n * For example, given the following code:\n * ```typescript\n * const subject = new Subject();\n subject.subscribe(value => {\n if (value === 'start') subject.next('end');\n });\n subject.subscribe(value => { });\n subject.next('start');\n * ```\n * When `subject` is a standard `Subject` the second subscriber would recieve `end` and then `start`.\n * When `subject` is a `OrderedSubject` the second subscriber would recieve `start` and then `end`.\n */\nclass OrderedSubject extends Subject {\n constructor() {\n super(...arguments);\n this._orderedNext = orderedQueueOperation(value => super.next(value));\n }\n next(value) {\n this._orderedNext(value);\n }\n}\n/**\n * Custom BehaviorSubject that ensures that subscribers are notified of values in the order that they arrived.\n * A standard BehaviorSubject does not have this guarantee.\n * For example, given the following code:\n * ```typescript\n * const subject = new BehaviorSubject();\n subject.subscribe(value => {\n if (value === 'start') subject.next('end');\n });\n subject.subscribe(value => { });\n subject.next('start');\n * ```\n * When `subject` is a standard `BehaviorSubject` the second subscriber would recieve `end` and then `start`.\n * When `subject` is a `OrderedBehaviorSubject` the second subscriber would recieve `start` and then `end`.\n */\nclass OrderedBehaviorSubject extends BehaviorSubject {\n constructor(value) {\n super(value);\n this._orderedNext = orderedQueueOperation(value => super.next(value));\n this._currentValue = value;\n }\n getValue() {\n return this._currentValue;\n }\n next(value) {\n this._currentValue = value;\n this._orderedNext(value);\n }\n}\n\n/**\n * Internal Action stream that is emitted anytime an action is dispatched.\n */\nlet InternalActions = /*#__PURE__*/(() => {\n class InternalActions extends OrderedSubject {\n ngOnDestroy() {\n this.complete();\n }\n }\n /** @nocollapse */\n /** @nocollapse */InternalActions.ɵfac = /* @__PURE__ */(() => {\n let ɵInternalActions_BaseFactory;\n return function InternalActions_Factory(t) {\n return (ɵInternalActions_BaseFactory || (ɵInternalActions_BaseFactory = i0.ɵɵgetInheritedFactory(InternalActions)))(t || InternalActions);\n };\n })();\n InternalActions.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InternalActions,\n factory: InternalActions.ɵfac,\n providedIn: 'root'\n });\n return InternalActions;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Action stream that is emitted anytime an action is dispatched.\n *\n * You can listen to this in services to react without stores.\n */\nlet Actions = /*#__PURE__*/(() => {\n class Actions extends Observable {\n constructor(internalActions$, internalExecutionStrategy) {\n const sharedInternalActions$ = internalActions$.pipe(leaveNgxs(internalExecutionStrategy),\n // The `InternalActions` subject emits outside of the Angular zone.\n // We have to re-enter the Angular zone for any incoming consumer.\n // The `share()` operator reduces the number of change detections.\n // This would call leave only once for any stream emission across all active subscribers.\n share());\n super(observer => {\n const childSubscription = sharedInternalActions$.subscribe({\n next: ctx => observer.next(ctx),\n error: error => observer.error(error),\n complete: () => observer.complete()\n });\n observer.add(childSubscription);\n });\n }\n }\n /** @nocollapse */\n /** @nocollapse */Actions.ɵfac = function Actions_Factory(t) {\n return new (t || Actions)(i0.ɵɵinject(InternalActions), i0.ɵɵinject(InternalNgxsExecutionStrategy));\n };\n Actions.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Actions,\n factory: Actions.ɵfac,\n providedIn: 'root'\n });\n return Actions;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Composes a array of functions from left to right. Example:\n *\n * compose([fn, final])(state, action);\n *\n * then the funcs have a signature like:\n *\n * function fn (state, action, next) {\n * console.log('here', state, action, next);\n * return next(state, action);\n * }\n *\n * function final (state, action) {\n * console.log('here', state, action);\n * return state;\n * }\n *\n * the last function should not call `next`.\n *\n * @ignore\n */\nconst compose = funcs => (...args) => {\n const curr = funcs.shift();\n return curr(...args, (...nextArgs) => compose(funcs)(...nextArgs));\n};\n\n/**\n * This operator is used for piping the observable result\n * from the `dispatch()`. It has a \"smart\" error handling\n * strategy that allows us to decide whether we propagate\n * errors to Angular's `ErrorHandler` or enable users to\n * handle them manually. We consider following cases:\n * 1) `store.dispatch()` (no subscribe) -> call `handleError()`\n * 2) `store.dispatch().subscribe()` (no error callback) -> call `handleError()`\n * 3) `store.dispatch().subscribe({ error: ... })` -> don't call `handleError()`\n * 4) `toPromise()` without `catch` -> do `handleError()`\n * 5) `toPromise()` with `catch` -> don't `handleError()`\n */\nfunction ngxsErrorHandler(internalErrorReporter, ngxsExecutionStrategy) {\n return source => {\n let subscribed = false;\n source.subscribe({\n error: error => {\n // Do not trigger change detection for a microtask. This depends on the execution\n // strategy being used, but the default `DispatchOutsideZoneNgxsExecutionStrategy`\n // leaves the Angular zone.\n ngxsExecutionStrategy.enter(() => Promise.resolve().then(() => {\n if (!subscribed) {\n ngxsExecutionStrategy.leave(() => internalErrorReporter.reportErrorSafely(error));\n }\n }));\n }\n });\n return new Observable(subscriber => {\n subscribed = true;\n return source.pipe(leaveNgxs(ngxsExecutionStrategy)).subscribe(subscriber);\n });\n };\n}\nlet InternalErrorReporter = /*#__PURE__*/(() => {\n class InternalErrorReporter {\n constructor(_injector) {\n this._injector = _injector;\n /** Will be set lazily to be backward compatible. */\n this._errorHandler = null;\n }\n reportErrorSafely(error) {\n if (this._errorHandler === null) {\n this._errorHandler = this._injector.get(ErrorHandler);\n }\n // The `try-catch` is used to avoid handling the error twice. Suppose we call\n // `handleError` which re-throws the error internally. The re-thrown error will\n // be caught by zone.js which will then get to the `zone.onError.emit()` and the\n // `onError` subscriber will call `handleError` again.\n try {\n this._errorHandler.handleError(error);\n } catch (_a) {}\n }\n }\n /** @nocollapse */\n /** @nocollapse */InternalErrorReporter.ɵfac = function InternalErrorReporter_Factory(t) {\n return new (t || InternalErrorReporter)(i0.ɵɵinject(i0.Injector));\n };\n InternalErrorReporter.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InternalErrorReporter,\n factory: InternalErrorReporter.ɵfac,\n providedIn: 'root'\n });\n return InternalErrorReporter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * BehaviorSubject of the entire state.\n * @ignore\n */\nlet StateStream = /*#__PURE__*/(() => {\n class StateStream extends OrderedBehaviorSubject {\n constructor() {\n super({});\n }\n ngOnDestroy() {\n // The `StateStream` should never emit values once the root view is removed, e.g. when the `NgModuleRef.destroy()` is called.\n // This will eliminate memory leaks in server-side rendered apps where the `StateStream` is created per each HTTP request, users\n // might forget to unsubscribe from `store.select` or `store.subscribe`, thus this will lead to huge memory leaks in SSR apps.\n this.complete();\n }\n }\n /** @nocollapse */\n /** @nocollapse */StateStream.ɵfac = function StateStream_Factory(t) {\n return new (t || StateStream)();\n };\n StateStream.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StateStream,\n factory: StateStream.ɵfac,\n providedIn: 'root'\n });\n return StateStream;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PluginManager = /*#__PURE__*/(() => {\n class PluginManager {\n constructor(_parentManager, _pluginHandlers) {\n this._parentManager = _parentManager;\n this._pluginHandlers = _pluginHandlers;\n this.plugins = [];\n this.registerHandlers();\n }\n get rootPlugins() {\n return this._parentManager && this._parentManager.plugins || this.plugins;\n }\n registerHandlers() {\n const pluginHandlers = this.getPluginHandlers();\n this.rootPlugins.push(...pluginHandlers);\n }\n getPluginHandlers() {\n const handlers = this._pluginHandlers || [];\n return handlers.map(plugin => plugin.handle ? plugin.handle.bind(plugin) : plugin);\n }\n }\n /** @nocollapse */\n /** @nocollapse */PluginManager.ɵfac = function PluginManager_Factory(t) {\n return new (t || PluginManager)(i0.ɵɵinject(PluginManager, 12), i0.ɵɵinject(NGXS_PLUGINS, 8));\n };\n PluginManager.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PluginManager,\n factory: PluginManager.ɵfac\n });\n return PluginManager;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Internal Action result stream that is emitted when an action is completed.\n * This is used as a method of returning the action result to the dispatcher\n * for the observable returned by the dispatch(...) call.\n * The dispatcher then asynchronously pushes the result from this stream onto the main action stream as a result.\n */\nlet InternalDispatchedActionResults = /*#__PURE__*/(() => {\n class InternalDispatchedActionResults extends Subject {}\n /** @nocollapse */\n /** @nocollapse */InternalDispatchedActionResults.ɵfac = /* @__PURE__ */(() => {\n let ɵInternalDispatchedActionResults_BaseFactory;\n return function InternalDispatchedActionResults_Factory(t) {\n return (ɵInternalDispatchedActionResults_BaseFactory || (ɵInternalDispatchedActionResults_BaseFactory = i0.ɵɵgetInheritedFactory(InternalDispatchedActionResults)))(t || InternalDispatchedActionResults);\n };\n })();\n InternalDispatchedActionResults.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InternalDispatchedActionResults,\n factory: InternalDispatchedActionResults.ɵfac,\n providedIn: 'root'\n });\n return InternalDispatchedActionResults;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet InternalDispatcher = /*#__PURE__*/(() => {\n class InternalDispatcher {\n constructor(_actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy, _internalErrorReporter) {\n this._actions = _actions;\n this._actionResults = _actionResults;\n this._pluginManager = _pluginManager;\n this._stateStream = _stateStream;\n this._ngxsExecutionStrategy = _ngxsExecutionStrategy;\n this._internalErrorReporter = _internalErrorReporter;\n }\n /**\n * Dispatches event(s).\n */\n dispatch(actionOrActions) {\n const result = this._ngxsExecutionStrategy.enter(() => this.dispatchByEvents(actionOrActions));\n return result.pipe(ngxsErrorHandler(this._internalErrorReporter, this._ngxsExecutionStrategy));\n }\n dispatchByEvents(actionOrActions) {\n if (Array.isArray(actionOrActions)) {\n if (actionOrActions.length === 0) return of(this._stateStream.getValue());\n return forkJoin(actionOrActions.map(action => this.dispatchSingle(action)));\n } else {\n return this.dispatchSingle(actionOrActions);\n }\n }\n dispatchSingle(action) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const type = getActionTypeFromInstance(action);\n if (!type) {\n const error = new Error(`This action doesn't have a type property: ${action.constructor.name}`);\n return throwError(error);\n }\n }\n const prevState = this._stateStream.getValue();\n const plugins = this._pluginManager.plugins;\n return compose([...plugins, (nextState, nextAction) => {\n if (nextState !== prevState) {\n this._stateStream.next(nextState);\n }\n const actionResult$ = this.getActionResultStream(nextAction);\n actionResult$.subscribe(ctx => this._actions.next(ctx));\n this._actions.next({\n action: nextAction,\n status: \"DISPATCHED\" /* Dispatched */\n });\n return this.createDispatchObservable(actionResult$);\n }])(prevState, action).pipe(shareReplay());\n }\n getActionResultStream(action) {\n return this._actionResults.pipe(filter(ctx => ctx.action === action && ctx.status !== \"DISPATCHED\" /* Dispatched */), take(1), shareReplay());\n }\n createDispatchObservable(actionResult$) {\n return actionResult$.pipe(exhaustMap(ctx => {\n switch (ctx.status) {\n case \"SUCCESSFUL\" /* Successful */:\n return of(this._stateStream.getValue());\n case \"ERRORED\" /* Errored */:\n return throwError(ctx.error);\n default:\n return EMPTY;\n }\n })).pipe(shareReplay());\n }\n }\n /** @nocollapse */\n /** @nocollapse */InternalDispatcher.ɵfac = function InternalDispatcher_Factory(t) {\n return new (t || InternalDispatcher)(i0.ɵɵinject(InternalActions), i0.ɵɵinject(InternalDispatchedActionResults), i0.ɵɵinject(PluginManager), i0.ɵɵinject(StateStream), i0.ɵɵinject(InternalNgxsExecutionStrategy), i0.ɵɵinject(InternalErrorReporter));\n };\n InternalDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InternalDispatcher,\n factory: InternalDispatcher.ɵfac,\n providedIn: 'root'\n });\n return InternalDispatcher;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Object freeze code\n * https://github.com/jsdf/deep-freeze\n */\nconst deepFreeze = o => {\n Object.freeze(o);\n const oIsFunction = typeof o === 'function';\n const hasOwnProp = Object.prototype.hasOwnProperty;\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (hasOwnProp.call(o, prop) && (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true) && o[prop] !== null && (typeof o[prop] === 'object' || typeof o[prop] === 'function') && !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n};\n\n/**\n * @ignore\n */\nlet InternalStateOperations = /*#__PURE__*/(() => {\n class InternalStateOperations {\n constructor(_stateStream, _dispatcher, _config) {\n this._stateStream = _stateStream;\n this._dispatcher = _dispatcher;\n this._config = _config;\n }\n /**\n * Returns the root state operators.\n */\n getRootStateOperations() {\n const rootStateOperations = {\n getState: () => this._stateStream.getValue(),\n setState: newState => this._stateStream.next(newState),\n dispatch: actionOrActions => this._dispatcher.dispatch(actionOrActions)\n };\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return this._config.developmentMode ? ensureStateAndActionsAreImmutable(rootStateOperations) : rootStateOperations;\n } else {\n return rootStateOperations;\n }\n }\n setStateToTheCurrentWithNew(results) {\n const stateOperations = this.getRootStateOperations();\n // Get our current stream\n const currentState = stateOperations.getState();\n // Set the state to the current + new\n stateOperations.setState(Object.assign(Object.assign({}, currentState), results.defaults));\n }\n }\n /** @nocollapse */\n /** @nocollapse */InternalStateOperations.ɵfac = function InternalStateOperations_Factory(t) {\n return new (t || InternalStateOperations)(i0.ɵɵinject(StateStream), i0.ɵɵinject(InternalDispatcher), i0.ɵɵinject(NgxsConfig));\n };\n InternalStateOperations.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InternalStateOperations,\n factory: InternalStateOperations.ɵfac,\n providedIn: 'root'\n });\n return InternalStateOperations;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction ensureStateAndActionsAreImmutable(root) {\n return {\n getState: () => root.getState(),\n setState: value => {\n const frozenValue = deepFreeze(value);\n return root.setState(frozenValue);\n },\n dispatch: actions => {\n return root.dispatch(actions);\n }\n };\n}\nfunction simplePatch(value) {\n return existingState => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (Array.isArray(value)) {\n throwPatchingArrayError();\n } else if (typeof value !== 'object') {\n throwPatchingPrimitiveError();\n }\n }\n const newState = Object.assign({}, existingState);\n for (const key in value) {\n // deep clone for patch compatibility\n newState[key] = value[key];\n }\n return newState;\n };\n}\n\n/**\n * State Context factory class\n * @ignore\n */\nlet StateContextFactory = /*#__PURE__*/(() => {\n class StateContextFactory {\n constructor(_internalStateOperations) {\n this._internalStateOperations = _internalStateOperations;\n }\n /**\n * Create the state context\n */\n createStateContext(mappedStore) {\n const root = this._internalStateOperations.getRootStateOperations();\n return {\n getState() {\n const currentAppState = root.getState();\n return getState(currentAppState, mappedStore.path);\n },\n patchState(val) {\n const currentAppState = root.getState();\n const patchOperator = simplePatch(val);\n return setStateFromOperator(root, currentAppState, patchOperator, mappedStore.path);\n },\n setState(val) {\n const currentAppState = root.getState();\n return isStateOperator(val) ? setStateFromOperator(root, currentAppState, val, mappedStore.path) : setStateValue(root, currentAppState, val, mappedStore.path);\n },\n dispatch(actions) {\n return root.dispatch(actions);\n }\n };\n }\n }\n /** @nocollapse */\n /** @nocollapse */StateContextFactory.ɵfac = function StateContextFactory_Factory(t) {\n return new (t || StateContextFactory)(i0.ɵɵinject(InternalStateOperations));\n };\n StateContextFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StateContextFactory,\n factory: StateContextFactory.ɵfac,\n providedIn: 'root'\n });\n return StateContextFactory;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction setStateValue(root, currentAppState, newValue, path) {\n const newAppState = setValue(currentAppState, path, newValue);\n root.setState(newAppState);\n return newAppState;\n // In doing this refactoring I noticed that there is a 'bug' where the\n // application state is returned instead of this state slice.\n // This has worked this way since the beginning see:\n // https://github.com/ngxs/store/blame/324c667b4b7debd8eb979006c67ca0ae347d88cd/src/state-factory.ts\n // This needs to be fixed, but is a 'breaking' change.\n // I will do this fix in a subsequent PR and we can decide how to handle it.\n}\nfunction setStateFromOperator(root, currentAppState, stateOperator, path) {\n const local = getState(currentAppState, path);\n const newValue = stateOperator(local);\n return setStateValue(root, currentAppState, newValue, path);\n}\nfunction getState(currentAppState, path) {\n return getValue(currentAppState, path);\n}\nconst stateNameRegex = new RegExp('^[a-zA-Z0-9_]+$');\nfunction ensureStateNameIsValid(name) {\n if (!name) {\n throwStateNamePropertyError();\n } else if (!stateNameRegex.test(name)) {\n throwStateNameError(name);\n }\n}\nfunction ensureStateNameIsUnique(stateName, state, statesByName) {\n const existingState = statesByName[stateName];\n if (existingState && existingState !== state) {\n throwStateUniqueError(stateName, state.name, existingState.name);\n }\n}\nfunction ensureStatesAreDecorated(stateClasses) {\n stateClasses.forEach(stateClass => {\n if (!getStoreMetadata$1(stateClass)) {\n throwStateDecoratorError(stateClass.name);\n }\n });\n}\n\n/**\n * All provided or injected tokens must have `@Injectable` decorator\n * (previously, injected tokens without `@Injectable` were allowed\n * if another decorator was used, e.g. pipes).\n */\nfunction ensureStateClassIsInjectable(stateClass) {\n if (jit_hasInjectableAnnotation(stateClass) || aot_hasNgInjectableDef(stateClass)) {\n return;\n }\n console.warn(getUndecoratedStateInIvyWarningMessage(stateClass.name));\n}\nfunction aot_hasNgInjectableDef(stateClass) {\n // `ɵprov` is a static property added by the NGCC compiler. It always exists in\n // AOT mode because this property is added before runtime. If an application is running in\n // JIT mode then this property can be added by the `@Injectable()` decorator. The `@Injectable()`\n // decorator has to go after the `@State()` decorator, thus we prevent users from unwanted DI errors.\n return !!stateClass.ɵprov;\n}\nfunction jit_hasInjectableAnnotation(stateClass) {\n // `ɵprov` doesn't exist in JIT mode (for instance when running unit tests with Jest).\n const annotations = stateClass.__annotations__ || [];\n return annotations.some(annotation => (annotation === null || annotation === void 0 ? void 0 : annotation.ngMetadataName) === 'Injectable');\n}\n\n/**\n * Init action\n */\nlet InitState = /*#__PURE__*/(() => {\n class InitState {}\n InitState.type = '@@INIT';\n /**\n * Update action\n */\n return InitState;\n})();\nlet UpdateState = /*#__PURE__*/(() => {\n class UpdateState {\n constructor(addedStates) {\n this.addedStates = addedStates;\n }\n }\n UpdateState.type = '@@UPDATE_STATE';\n return UpdateState;\n})();\nconst NGXS_DEVELOPMENT_OPTIONS = new InjectionToken('NGXS_DEVELOPMENT_OPTIONS', {\n providedIn: 'root',\n factory: () => ({\n warnOnUnhandledActions: true\n })\n});\nlet NgxsUnhandledActionsLogger = /*#__PURE__*/(() => {\n class NgxsUnhandledActionsLogger {\n constructor(options) {\n /**\n * These actions should be ignored by default; the user can increase this\n * list in the future via the `ignoreActions` method.\n */\n this._ignoredActions = new Set([InitState.type, UpdateState.type]);\n if (typeof options.warnOnUnhandledActions === 'object') {\n this.ignoreActions(...options.warnOnUnhandledActions.ignore);\n }\n }\n /**\n * Adds actions to the internal list of actions that should be ignored.\n */\n ignoreActions(...actions) {\n for (const action of actions) {\n this._ignoredActions.add(action.type);\n }\n }\n /** @internal */\n warn(action) {\n const actionShouldBeIgnored = Array.from(this._ignoredActions).some(type => type === getActionTypeFromInstance(action));\n if (actionShouldBeIgnored) {\n return;\n }\n action = action.constructor && action.constructor.name !== 'Object' ? action.constructor.name : action.type;\n console.warn(`The ${action} action has been dispatched but hasn't been handled. This may happen if the state with an action handler for this action is not registered.`);\n }\n }\n /** @nocollapse */\n /** @nocollapse */NgxsUnhandledActionsLogger.ɵfac = function NgxsUnhandledActionsLogger_Factory(t) {\n return new (t || NgxsUnhandledActionsLogger)(i0.ɵɵinject(NGXS_DEVELOPMENT_OPTIONS));\n };\n NgxsUnhandledActionsLogger.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgxsUnhandledActionsLogger,\n factory: NgxsUnhandledActionsLogger.ɵfac\n });\n return NgxsUnhandledActionsLogger;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;\n/**\n * The `StateFactory` class adds root and feature states to the graph.\n * This extracts state names from state classes, checks if they already\n * exist in the global graph, throws errors if their names are invalid, etc.\n * See its constructor, state factories inject state factories that are\n * parent-level providers. This is required to get feature states from the\n * injector on the same level.\n *\n * The `NgxsModule.forFeature(...)` returns `providers: [StateFactory, ...states]`.\n * The `StateFactory` is initialized on the feature level and goes through `...states`\n * to get them from the injector through `injector.get(state)`.\n * @ignore\n */\nlet StateFactory = /*#__PURE__*/(() => {\n class StateFactory {\n constructor(_injector, _config, _parentFactory, _actions, _actionResults, _stateContextFactory, _initialState) {\n this._injector = _injector;\n this._config = _config;\n this._parentFactory = _parentFactory;\n this._actions = _actions;\n this._actionResults = _actionResults;\n this._stateContextFactory = _stateContextFactory;\n this._initialState = _initialState;\n this._actionsSubscription = null;\n this._states = [];\n this._statesByName = {};\n this._statePaths = {};\n this.getRuntimeSelectorContext = memoize(() => {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const stateFactory = this;\n function resolveGetter(key) {\n const path = stateFactory.statePaths[key];\n return path ? propGetter(path.split('.'), stateFactory._config) : null;\n }\n const context = this._parentFactory ? this._parentFactory.getRuntimeSelectorContext() : {\n getStateGetter(key) {\n let getter = resolveGetter(key);\n if (getter) {\n return getter;\n }\n return (...args) => {\n // Late loaded getter\n if (!getter) {\n getter = resolveGetter(key);\n }\n return getter ? getter(...args) : undefined;\n };\n },\n getSelectorOptions(localOptions) {\n const globalSelectorOptions = stateFactory._config.selectorOptions;\n return Object.assign(Object.assign({}, globalSelectorOptions), localOptions || {});\n }\n };\n return context;\n });\n }\n get states() {\n return this._parentFactory ? this._parentFactory.states : this._states;\n }\n get statesByName() {\n return this._parentFactory ? this._parentFactory.statesByName : this._statesByName;\n }\n get statePaths() {\n return this._parentFactory ? this._parentFactory.statePaths : this._statePaths;\n }\n static _cloneDefaults(defaults) {\n let value = defaults;\n if (Array.isArray(defaults)) {\n value = defaults.slice();\n } else if (isObject(defaults)) {\n value = Object.assign({}, defaults);\n } else if (defaults === undefined) {\n value = {};\n }\n return value;\n }\n ngOnDestroy() {\n var _a;\n (_a = this._actionsSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n /**\n * Add a new state to the global defs.\n */\n add(stateClasses) {\n if (NG_DEV_MODE) {\n ensureStatesAreDecorated(stateClasses);\n }\n const {\n newStates\n } = this.addToStatesMap(stateClasses);\n if (!newStates.length) return [];\n const stateGraph = buildGraph(newStates);\n const sortedStates = topologicalSort(stateGraph);\n const paths = findFullParentPath(stateGraph);\n const nameGraph = nameToState(newStates);\n const bootstrappedStores = [];\n for (const name of sortedStates) {\n const stateClass = nameGraph[name];\n const path = paths[name];\n const meta = stateClass[META_KEY];\n this.addRuntimeInfoToMeta(meta, path);\n // Note: previously we called `ensureStateClassIsInjectable` within the\n // `State` decorator. This check is moved here because the `ɵprov` property\n // will not exist on the class in JIT mode (because it's set asynchronously\n // during JIT compilation through `Object.defineProperty`).\n if (NG_DEV_MODE) {\n ensureStateClassIsInjectable(stateClass);\n }\n const stateMap = {\n name,\n path,\n isInitialised: false,\n actions: meta.actions,\n instance: this._injector.get(stateClass),\n defaults: StateFactory._cloneDefaults(meta.defaults)\n };\n // ensure our store hasn't already been added\n // but don't throw since it could be lazy\n // loaded from different paths\n if (!this.hasBeenMountedAndBootstrapped(name, path)) {\n bootstrappedStores.push(stateMap);\n }\n this.states.push(stateMap);\n }\n return bootstrappedStores;\n }\n /**\n * Add a set of states to the store and return the defaults\n */\n addAndReturnDefaults(stateClasses) {\n const classes = stateClasses || [];\n const mappedStores = this.add(classes);\n const defaults = mappedStores.reduce((result, mappedStore) => setValue(result, mappedStore.path, mappedStore.defaults), {});\n return {\n defaults,\n states: mappedStores\n };\n }\n connectActionHandlers() {\n // Note: We have to connect actions only once when the `StateFactory`\n // is being created for the first time. This checks if we're in\n // a child state factory and the parent state factory already exists.\n if (this._parentFactory || this._actionsSubscription !== null) {\n return;\n }\n const dispatched$ = new Subject();\n this._actionsSubscription = this._actions.pipe(filter(ctx => ctx.status === \"DISPATCHED\" /* Dispatched */), mergeMap(ctx => {\n dispatched$.next(ctx);\n const action = ctx.action;\n return this.invokeActions(dispatched$, action).pipe(map(() => ({\n action,\n status: \"SUCCESSFUL\" /* Successful */\n })), defaultIfEmpty({\n action,\n status: \"CANCELED\" /* Canceled */\n }), catchError(error => of({\n action,\n status: \"ERRORED\" /* Errored */,\n error\n })));\n })).subscribe(ctx => this._actionResults.next(ctx));\n }\n /**\n * Invoke actions on the states.\n */\n invokeActions(dispatched$, action) {\n const type = getActionTypeFromInstance(action);\n const results = [];\n // Determines whether the dispatched action has been handled, this is assigned\n // to `true` within the below `for` loop if any `actionMetas` has been found.\n let actionHasBeenHandled = false;\n for (const metadata of this.states) {\n const actionMetas = metadata.actions[type];\n if (actionMetas) {\n for (const actionMeta of actionMetas) {\n const stateContext = this._stateContextFactory.createStateContext(metadata);\n try {\n let result = metadata.instance[actionMeta.fn](stateContext, action);\n if (result instanceof Promise) {\n result = from(result);\n }\n if (isObservable(result)) {\n // If this observable has been completed w/o emitting\n // any value then we wouldn't want to complete the whole chain\n // of actions. Since if any observable completes then\n // action will be canceled.\n // For instance if any action handler would've had such statement:\n // `handler(ctx) { return EMPTY; }`\n // then the action will be canceled.\n // See https://github.com/ngxs/store/issues/1568\n result = result.pipe(mergeMap(value => {\n if (value instanceof Promise) {\n return from(value);\n }\n if (isObservable(value)) {\n return value;\n }\n return of(value);\n }), defaultIfEmpty({}));\n if (actionMeta.options.cancelUncompleted) {\n // todo: ofActionDispatched should be used with action class\n result = result.pipe(takeUntil(dispatched$.pipe(ofActionDispatched(action))));\n }\n } else {\n result = of({}).pipe(shareReplay());\n }\n results.push(result);\n } catch (e) {\n results.push(throwError(e));\n }\n actionHasBeenHandled = true;\n }\n }\n }\n // The `NgxsUnhandledActionsLogger` is a tree-shakable class which functions\n // only during development.\n if (NG_DEV_MODE && !actionHasBeenHandled) {\n const unhandledActionsLogger = this._injector.get(NgxsUnhandledActionsLogger, null);\n // The `NgxsUnhandledActionsLogger` will not be resolved by the injector if the\n // `NgxsDevelopmentModule` is not provided. It's enough to check whether the `injector.get`\n // didn't return `null` so we may ensure the module has been imported.\n if (unhandledActionsLogger) {\n unhandledActionsLogger.warn(action);\n }\n }\n if (!results.length) {\n results.push(of({}));\n }\n return forkJoin(results);\n }\n addToStatesMap(stateClasses) {\n const newStates = [];\n const statesMap = this.statesByName;\n for (const stateClass of stateClasses) {\n const stateName = getStoreMetadata$1(stateClass).name;\n if (NG_DEV_MODE) {\n ensureStateNameIsUnique(stateName, stateClass, statesMap);\n }\n const unmountedState = !statesMap[stateName];\n if (unmountedState) {\n newStates.push(stateClass);\n statesMap[stateName] = stateClass;\n }\n }\n return {\n newStates\n };\n }\n addRuntimeInfoToMeta(meta, path) {\n this.statePaths[meta.name] = path;\n // TODO: v4 - we plan to get rid of the path property because it is non-deterministic\n // we can do this when we get rid of the incorrectly exposed getStoreMetadata\n // We will need to come up with an alternative in v4 because this is used by many plugins\n meta.path = path;\n }\n hasBeenMountedAndBootstrapped(name, path) {\n const valueIsBootstrappedInInitialState = getValue(this._initialState, path) !== undefined;\n // This checks whether a state has been already added to the global graph and\n // its lifecycle is in 'bootstrapped' state.\n return this.statesByName[name] && valueIsBootstrappedInInitialState;\n }\n }\n /** @nocollapse */\n /** @nocollapse */StateFactory.ɵfac = function StateFactory_Factory(t) {\n return new (t || StateFactory)(i0.ɵɵinject(i0.Injector), i0.ɵɵinject(NgxsConfig), i0.ɵɵinject(StateFactory, 12), i0.ɵɵinject(InternalActions), i0.ɵɵinject(InternalDispatchedActionResults), i0.ɵɵinject(StateContextFactory), i0.ɵɵinject(INITIAL_STATE_TOKEN, 8));\n };\n StateFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StateFactory,\n factory: StateFactory.ɵfac\n });\n return StateFactory;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction createRootSelectorFactory(selectorMetaData, selectors, memoizedSelectorFn) {\n return context => {\n const {\n argumentSelectorFunctions,\n selectorOptions\n } = getRuntimeSelectorInfo(context, selectorMetaData, selectors);\n return function selectFromRoot(rootState) {\n // Determine arguments from the app state using the selectors\n const results = argumentSelectorFunctions.map(argFn => argFn(rootState));\n // if the lambda tries to access a something on the\n // state that doesn't exist, it will throw a TypeError.\n // since this is quite usual behaviour, we simply return undefined if so.\n try {\n return memoizedSelectorFn(...results);\n } catch (ex) {\n if (ex instanceof TypeError && selectorOptions.suppressErrors) {\n return undefined;\n }\n throw ex;\n }\n };\n };\n}\nfunction createMemoizedSelectorFn(originalFn, creationMetadata) {\n const containerClass = creationMetadata && creationMetadata.containerClass;\n const wrappedFn = function wrappedSelectorFn(...args) {\n const returnValue = originalFn.apply(containerClass, args);\n if (returnValue instanceof Function) {\n const innerMemoizedFn = memoize.apply(null, [returnValue]);\n return innerMemoizedFn;\n }\n return returnValue;\n };\n const memoizedFn = memoize(wrappedFn);\n Object.setPrototypeOf(memoizedFn, originalFn);\n return memoizedFn;\n}\nfunction getRuntimeSelectorInfo(context, selectorMetaData, selectors = []) {\n const localSelectorOptions = selectorMetaData.getSelectorOptions();\n const selectorOptions = context.getSelectorOptions(localSelectorOptions);\n const selectorsToApply = getSelectorsToApply(selectors, selectorOptions, selectorMetaData.containerClass);\n const argumentSelectorFunctions = selectorsToApply.map(selector => {\n const factory = getRootSelectorFactory(selector);\n return factory(context);\n });\n return {\n selectorOptions,\n argumentSelectorFunctions\n };\n}\nfunction getSelectorsToApply(selectors = [], selectorOptions, containerClass) {\n const selectorsToApply = [];\n const canInjectContainerState = selectors.length === 0 || selectorOptions.injectContainerState;\n if (containerClass && canInjectContainerState) {\n // If we are on a state class, add it as the first selector parameter\n const metadata = getStoreMetadata$1(containerClass);\n if (metadata) {\n selectorsToApply.push(containerClass);\n }\n }\n if (selectors) {\n selectorsToApply.push(...selectors);\n }\n return selectorsToApply;\n}\n/**\n * This function gets the factory function to create the selector to get the selected slice from the app state\n * @ignore\n */\nfunction getRootSelectorFactory(selector) {\n const metadata = getSelectorMetadata$1(selector) || getStoreMetadata$1(selector);\n return metadata && metadata.makeRootSelector || (() => selector);\n}\n\n// tslint:disable:unified-signatures\nlet Store = /*#__PURE__*/(() => {\n class Store {\n constructor(_stateStream, _internalStateOperations, _config, _internalExecutionStrategy, _stateFactory, initialStateValue) {\n this._stateStream = _stateStream;\n this._internalStateOperations = _internalStateOperations;\n this._config = _config;\n this._internalExecutionStrategy = _internalExecutionStrategy;\n this._stateFactory = _stateFactory;\n /**\n * This is a derived state stream that leaves NGXS execution strategy to emit state changes within the Angular zone,\n * because state is being changed actually within the `` zone, see `InternalDispatcher#dispatchSingle`.\n * All selects would use this stream, and it would call leave only once for any state change across all active selectors.\n */\n this._selectableStateStream = this._stateStream.pipe(leaveNgxs(this._internalExecutionStrategy), shareReplay({\n bufferSize: 1,\n refCount: true\n }));\n this.initStateStream(initialStateValue);\n }\n /**\n * Dispatches event(s).\n */\n dispatch(actionOrActions) {\n return this._internalStateOperations.getRootStateOperations().dispatch(actionOrActions);\n }\n select(selector) {\n const selectorFn = this.getStoreBoundSelectorFn(selector);\n return this._selectableStateStream.pipe(map(selectorFn), catchError(err => {\n // if error is TypeError we swallow it to prevent usual errors with property access\n const {\n suppressErrors\n } = this._config.selectorOptions;\n if (err instanceof TypeError && suppressErrors) {\n return of(undefined);\n }\n // rethrow other errors\n return throwError(err);\n }), distinctUntilChanged(), leaveNgxs(this._internalExecutionStrategy));\n }\n selectOnce(selector) {\n return this.select(selector).pipe(take(1));\n }\n selectSnapshot(selector) {\n const selectorFn = this.getStoreBoundSelectorFn(selector);\n return selectorFn(this._stateStream.getValue());\n }\n /**\n * Allow the user to subscribe to the root of the state\n */\n subscribe(fn) {\n return this._selectableStateStream.pipe(leaveNgxs(this._internalExecutionStrategy)).subscribe(fn);\n }\n /**\n * Return the raw value of the state.\n */\n snapshot() {\n return this._internalStateOperations.getRootStateOperations().getState();\n }\n /**\n * Reset the state to a specific point in time. This method is useful\n * for plugin's who need to modify the state directly or unit testing.\n */\n reset(state) {\n return this._internalStateOperations.getRootStateOperations().setState(state);\n }\n getStoreBoundSelectorFn(selector) {\n const makeSelectorFn = getRootSelectorFactory(selector);\n const runtimeContext = this._stateFactory.getRuntimeSelectorContext();\n return makeSelectorFn(runtimeContext);\n }\n initStateStream(initialStateValue) {\n const value = this._stateStream.value;\n const storeIsEmpty = !value || Object.keys(value).length === 0;\n if (storeIsEmpty) {\n const defaultStateNotEmpty = Object.keys(this._config.defaultsState).length > 0;\n const storeValues = defaultStateNotEmpty ? Object.assign(Object.assign({}, this._config.defaultsState), initialStateValue) : initialStateValue;\n this._stateStream.next(storeValues);\n }\n }\n }\n /** @nocollapse */\n /** @nocollapse */Store.ɵfac = function Store_Factory(t) {\n return new (t || Store)(i0.ɵɵinject(StateStream), i0.ɵɵinject(InternalStateOperations), i0.ɵɵinject(NgxsConfig), i0.ɵɵinject(InternalNgxsExecutionStrategy), i0.ɵɵinject(StateFactory), i0.ɵɵinject(INITIAL_STATE_TOKEN, 8));\n };\n Store.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Store,\n factory: Store.ɵfac,\n providedIn: 'root'\n });\n return Store;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Allows the select decorator to get access to the DI store, this is used internally\n * in `@Select` decorator.\n */\nlet SelectFactory = /*#__PURE__*/(() => {\n class SelectFactory {\n constructor(store, config) {\n SelectFactory.store = store;\n SelectFactory.config = config;\n }\n ngOnDestroy() {\n SelectFactory.store = null;\n SelectFactory.config = null;\n }\n }\n SelectFactory.store = null;\n SelectFactory.config = null;\n /** @nocollapse */\n /** @nocollapse */\n SelectFactory.ɵfac = function SelectFactory_Factory(t) {\n return new (t || SelectFactory)(i0.ɵɵinject(Store), i0.ɵɵinject(NgxsConfig));\n };\n SelectFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SelectFactory,\n factory: SelectFactory.ɵfac,\n providedIn: 'root'\n });\n return SelectFactory;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet LifecycleStateManager = /*#__PURE__*/(() => {\n class LifecycleStateManager {\n constructor(_store, _internalErrorReporter, _internalStateOperations, _stateContextFactory, _bootstrapper) {\n this._store = _store;\n this._internalErrorReporter = _internalErrorReporter;\n this._internalStateOperations = _internalStateOperations;\n this._stateContextFactory = _stateContextFactory;\n this._bootstrapper = _bootstrapper;\n this._destroy$ = new Subject();\n }\n ngOnDestroy() {\n this._destroy$.next();\n }\n ngxsBootstrap(action, results) {\n this._internalStateOperations.getRootStateOperations().dispatch(action).pipe(filter(() => !!results), tap(() => this._invokeInitOnStates(results.states)), mergeMap(() => this._bootstrapper.appBootstrapped$), filter(appBootstrapped => !!appBootstrapped), catchError(error => {\n // The `SafeSubscriber` (which is used by most RxJS operators) re-throws\n // errors asynchronously (`setTimeout(() => { throw error })`). This might\n // break existing user's code or unit tests. We catch the error manually to\n // be backward compatible with the old behavior.\n this._internalErrorReporter.reportErrorSafely(error);\n return EMPTY;\n }), takeUntil(this._destroy$)).subscribe(() => this._invokeBootstrapOnStates(results.states));\n }\n _invokeInitOnStates(mappedStores) {\n for (const mappedStore of mappedStores) {\n const instance = mappedStore.instance;\n if (instance.ngxsOnChanges) {\n this._store.select(state => getValue(state, mappedStore.path)).pipe(startWith(undefined), pairwise(), takeUntil(this._destroy$)).subscribe(([previousValue, currentValue]) => {\n const change = new NgxsSimpleChange(previousValue, currentValue, !mappedStore.isInitialised);\n instance.ngxsOnChanges(change);\n });\n }\n if (instance.ngxsOnInit) {\n instance.ngxsOnInit(this._getStateContext(mappedStore));\n }\n mappedStore.isInitialised = true;\n }\n }\n _invokeBootstrapOnStates(mappedStores) {\n for (const mappedStore of mappedStores) {\n const instance = mappedStore.instance;\n if (instance.ngxsAfterBootstrap) {\n instance.ngxsAfterBootstrap(this._getStateContext(mappedStore));\n }\n }\n }\n _getStateContext(mappedStore) {\n return this._stateContextFactory.createStateContext(mappedStore);\n }\n }\n /** @nocollapse */\n /** @nocollapse */LifecycleStateManager.ɵfac = function LifecycleStateManager_Factory(t) {\n return new (t || LifecycleStateManager)(i0.ɵɵinject(Store), i0.ɵɵinject(InternalErrorReporter), i0.ɵɵinject(InternalStateOperations), i0.ɵɵinject(StateContextFactory), i0.ɵɵinject(i5.NgxsBootstrapper));\n };\n LifecycleStateManager.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LifecycleStateManager,\n factory: LifecycleStateManager.ɵfac,\n providedIn: 'root'\n });\n return LifecycleStateManager;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Root module\n * @ignore\n */\nlet NgxsRootModule = /*#__PURE__*/(() => {\n class NgxsRootModule {\n constructor(factory, internalStateOperations, _store, _select, states = [], lifecycleStateManager) {\n // Add stores to the state graph and return their defaults\n const results = factory.addAndReturnDefaults(states);\n internalStateOperations.setStateToTheCurrentWithNew(results);\n // Connect our actions stream\n factory.connectActionHandlers();\n // Dispatch the init action and invoke init and bootstrap functions after\n lifecycleStateManager.ngxsBootstrap(new InitState(), results);\n }\n }\n /** @nocollapse */\n /** @nocollapse */\n /** @nocollapse */NgxsRootModule.ɵfac = function NgxsRootModule_Factory(t) {\n return new (t || NgxsRootModule)(i0.ɵɵinject(StateFactory), i0.ɵɵinject(InternalStateOperations), i0.ɵɵinject(Store), i0.ɵɵinject(SelectFactory), i0.ɵɵinject(ROOT_STATE_TOKEN, 8), i0.ɵɵinject(LifecycleStateManager));\n };\n NgxsRootModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxsRootModule\n });\n NgxsRootModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return NgxsRootModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Feature module\n * @ignore\n */\nlet NgxsFeatureModule = /*#__PURE__*/(() => {\n class NgxsFeatureModule {\n constructor(_store, internalStateOperations, factory, states = [], lifecycleStateManager) {\n // Since FEATURE_STATE_TOKEN is a multi token, we need to\n // flatten it [[Feature1State, Feature2State], [Feature3State]]\n const flattenedStates = NgxsFeatureModule.flattenStates(states);\n // add stores to the state graph and return their defaults\n const results = factory.addAndReturnDefaults(flattenedStates);\n if (results.states.length) {\n internalStateOperations.setStateToTheCurrentWithNew(results);\n // dispatch the update action and invoke init and bootstrap functions after\n lifecycleStateManager.ngxsBootstrap(new UpdateState(results.defaults), results);\n }\n }\n static flattenStates(states = []) {\n return states.reduce((total, values) => total.concat(values), []);\n }\n }\n /** @nocollapse */\n /** @nocollapse */\n /** @nocollapse */NgxsFeatureModule.ɵfac = function NgxsFeatureModule_Factory(t) {\n return new (t || NgxsFeatureModule)(i0.ɵɵinject(Store), i0.ɵɵinject(InternalStateOperations), i0.ɵɵinject(StateFactory), i0.ɵɵinject(FEATURE_STATE_TOKEN, 8), i0.ɵɵinject(LifecycleStateManager));\n };\n NgxsFeatureModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxsFeatureModule\n });\n NgxsFeatureModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return NgxsFeatureModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Ngxs Module\n */\nlet NgxsModule = /*#__PURE__*/(() => {\n class NgxsModule {\n /**\n * Root module factory\n */\n static forRoot(states = [], options = {}) {\n return {\n ngModule: NgxsRootModule,\n providers: [StateFactory, PluginManager, ...states, ...NgxsModule.ngxsTokenProviders(states, options)]\n };\n }\n /**\n * Feature module factory\n */\n static forFeature(states = []) {\n return {\n ngModule: NgxsFeatureModule,\n providers: [\n // This is required on the feature level, see comments in `state-factory.ts`.\n StateFactory, PluginManager, ...states, {\n provide: FEATURE_STATE_TOKEN,\n multi: true,\n useValue: states\n }]\n };\n }\n static ngxsTokenProviders(states, options) {\n return [{\n provide: USER_PROVIDED_NGXS_EXECUTION_STRATEGY,\n useValue: options.executionStrategy\n }, {\n provide: ROOT_STATE_TOKEN,\n useValue: states\n }, {\n provide: ROOT_OPTIONS,\n useValue: options\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n useFactory: NgxsModule.appBootstrapListenerFactory,\n multi: true,\n deps: [NgxsBootstrapper]\n }, {\n provide: ɵNGXS_STATE_CONTEXT_FACTORY,\n useExisting: StateContextFactory\n }, {\n provide: ɵNGXS_STATE_FACTORY,\n useExisting: StateFactory\n }];\n }\n static appBootstrapListenerFactory(bootstrapper) {\n return () => bootstrapper.bootstrap();\n }\n }\n /** @nocollapse */\n /** @nocollapse */\n /** @nocollapse */NgxsModule.ɵfac = function NgxsModule_Factory(t) {\n return new (t || NgxsModule)();\n };\n NgxsModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxsModule\n });\n NgxsModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return NgxsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Decorates a method with a action information.\n */\nfunction Action(actions, options) {\n return (target, name) => {\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const isStaticMethod = target.hasOwnProperty('prototype');\n if (isStaticMethod) {\n throwActionDecoratorError();\n }\n }\n const meta = ensureStoreMetadata$1(target.constructor);\n if (!Array.isArray(actions)) {\n actions = [actions];\n }\n for (const action of actions) {\n const type = action.type;\n if (!meta.actions[type]) {\n meta.actions[type] = [];\n }\n meta.actions[type].push({\n fn: name,\n options: options || {},\n type\n });\n }\n };\n}\n\n/**\n * Decorates a class with ngxs state information.\n */\nfunction State(options) {\n return target => {\n const stateClass = target;\n const meta = ensureStoreMetadata$1(stateClass);\n const inheritedStateClass = Object.getPrototypeOf(stateClass);\n const optionsWithInheritance = getStateOptions(inheritedStateClass, options);\n mutateMetaData({\n meta,\n inheritedStateClass,\n optionsWithInheritance\n });\n stateClass[META_OPTIONS_KEY] = optionsWithInheritance;\n };\n}\nfunction getStateOptions(inheritedStateClass, options) {\n const inheritanceOptions = inheritedStateClass[META_OPTIONS_KEY] || {};\n return Object.assign(Object.assign({}, inheritanceOptions), options);\n}\nfunction mutateMetaData(params) {\n const {\n meta,\n inheritedStateClass,\n optionsWithInheritance\n } = params;\n const {\n children,\n defaults,\n name\n } = optionsWithInheritance;\n const stateName = typeof name === 'string' ? name : name && name.getName() || null;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureStateNameIsValid(stateName);\n }\n if (inheritedStateClass.hasOwnProperty(META_KEY)) {\n const inheritedMeta = inheritedStateClass[META_KEY] || {};\n meta.actions = Object.assign(Object.assign({}, meta.actions), inheritedMeta.actions);\n }\n meta.children = children;\n meta.defaults = defaults;\n meta.name = stateName;\n}\nconst DOLLAR_CHAR_CODE = 36;\nfunction createSelectObservable(selector) {\n if (!SelectFactory.store) {\n throwSelectFactoryNotConnectedError();\n }\n return SelectFactory.store.select(selector);\n}\nfunction createSelectorFn(name, rawSelector, paths = []) {\n rawSelector = !rawSelector ? removeDollarAtTheEnd(name) : rawSelector;\n if (typeof rawSelector === 'string') {\n const propsArray = paths.length ? [rawSelector, ...paths] : rawSelector.split('.');\n return propGetter(propsArray, SelectFactory.config);\n }\n return rawSelector;\n}\n/**\n * @example If `foo$` => make it just `foo`\n */\nfunction removeDollarAtTheEnd(name) {\n const lastCharIndex = name.length - 1;\n const dollarAtTheEnd = name.charCodeAt(lastCharIndex) === DOLLAR_CHAR_CODE;\n return dollarAtTheEnd ? name.slice(0, lastCharIndex) : name;\n}\n\n/**\n * Decorator for selecting a slice of state from the store.\n */\nfunction Select(rawSelector, ...paths) {\n return function (target, key) {\n const name = key.toString();\n const selectorId = `__${name}__selector`;\n const selector = createSelectorFn(name, rawSelector, paths);\n Object.defineProperties(target, {\n [selectorId]: {\n writable: true,\n enumerable: false,\n configurable: true\n },\n [name]: {\n enumerable: true,\n configurable: true,\n get() {\n return this[selectorId] || (this[selectorId] = createSelectObservable(selector));\n }\n }\n });\n };\n}\nconst SELECTOR_OPTIONS_META_KEY = 'NGXS_SELECTOR_OPTIONS_META';\nconst selectorOptionsMetaAccessor = {\n getOptions: target => {\n return target && target[SELECTOR_OPTIONS_META_KEY] || {};\n },\n defineOptions: (target, options) => {\n if (!target) return;\n target[SELECTOR_OPTIONS_META_KEY] = options;\n }\n};\nfunction setupSelectorMetadata(originalFn, creationMetadata) {\n const selectorMetaData = ensureSelectorMetadata$1(originalFn);\n selectorMetaData.originalFn = originalFn;\n let getExplicitSelectorOptions = () => ({});\n if (creationMetadata) {\n selectorMetaData.containerClass = creationMetadata.containerClass;\n selectorMetaData.selectorName = creationMetadata.selectorName || null;\n getExplicitSelectorOptions = creationMetadata.getSelectorOptions || getExplicitSelectorOptions;\n }\n const selectorMetaDataClone = Object.assign({}, selectorMetaData);\n selectorMetaData.getSelectorOptions = () => getLocalSelectorOptions(selectorMetaDataClone, getExplicitSelectorOptions());\n return selectorMetaData;\n}\nfunction getLocalSelectorOptions(selectorMetaData, explicitOptions) {\n return Object.assign(Object.assign(Object.assign(Object.assign({}, selectorOptionsMetaAccessor.getOptions(selectorMetaData.containerClass) || {}), selectorOptionsMetaAccessor.getOptions(selectorMetaData.originalFn) || {}), selectorMetaData.getSelectorOptions() || {}), explicitOptions);\n}\n\n/**\n * Decorator for setting selector options at a method or class level.\n */\nfunction SelectorOptions(options) {\n return function decorate(target, methodName, descriptor) {\n if (methodName) {\n descriptor || (descriptor = Object.getOwnPropertyDescriptor(target, methodName));\n // Method Decorator\n const originalFn = descriptor.value || descriptor.originalFn;\n if (originalFn) {\n selectorOptionsMetaAccessor.defineOptions(originalFn, options);\n }\n } else {\n // Class Decorator\n selectorOptionsMetaAccessor.defineOptions(target, options);\n }\n };\n}\nfunction ensureStoreMetadata(target) {\n return ensureStoreMetadata$1(target);\n}\nfunction getStoreMetadata(target) {\n return getStoreMetadata$1(target);\n}\nfunction ensureSelectorMetadata(target) {\n return ensureSelectorMetadata$1(target);\n}\nfunction getSelectorMetadata(target) {\n return getSelectorMetadata$1(target);\n}\nfunction createSelector(selectors, projector, creationMetadata) {\n const memoizedFn = createMemoizedSelectorFn(projector, creationMetadata);\n const selectorMetaData = setupSelectorMetadata(projector, creationMetadata);\n selectorMetaData.makeRootSelector = createRootSelectorFactory(selectorMetaData, selectors, memoizedFn);\n return memoizedFn;\n}\nfunction Selector(selectors) {\n return (target, key, descriptor) => {\n descriptor || (descriptor = Object.getOwnPropertyDescriptor(target, key));\n const originalFn = descriptor === null || descriptor === void 0 ? void 0 : descriptor.value;\n // Caretaker note: we have still left the `typeof` condition in order to avoid\n // creating a breaking change for projects that still use the View Engine.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (originalFn && typeof originalFn !== 'function') {\n throwSelectorDecoratorError();\n }\n }\n const memoizedFn = createSelector(selectors, originalFn, {\n containerClass: target,\n selectorName: key.toString(),\n getSelectorOptions() {\n return {};\n }\n });\n const newDescriptor = {\n configurable: true,\n get() {\n return memoizedFn;\n }\n };\n // Add hidden property to descriptor\n newDescriptor['originalFn'] = originalFn;\n return newDescriptor;\n };\n}\nclass StateToken {\n constructor(name) {\n this.name = name;\n const selectorMetadata = ensureSelectorMetadata$1(this);\n selectorMetadata.makeRootSelector = runtimeContext => {\n return runtimeContext.getStateGetter(this.name);\n };\n }\n getName() {\n return this.name;\n }\n toString() {\n return `StateToken[${this.name}]`;\n }\n}\nlet NgxsDevelopmentModule = /*#__PURE__*/(() => {\n class NgxsDevelopmentModule {\n static forRoot(options) {\n return {\n ngModule: NgxsDevelopmentModule,\n providers: [NgxsUnhandledActionsLogger, {\n provide: NGXS_DEVELOPMENT_OPTIONS,\n useValue: options\n }]\n };\n }\n }\n /** @nocollapse */\n /** @nocollapse */\n /** @nocollapse */NgxsDevelopmentModule.ɵfac = function NgxsDevelopmentModule_Factory(t) {\n return new (t || NgxsDevelopmentModule)();\n };\n NgxsDevelopmentModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxsDevelopmentModule\n });\n NgxsDevelopmentModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return NgxsDevelopmentModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction ensureValidSelector(selector, context = {}) {\n const noun = context.noun || 'selector';\n const prefix = context.prefix ? context.prefix + ': ' : '';\n ensureValueProvided(selector, {\n noun,\n prefix: context.prefix\n });\n const metadata = getSelectorMetadata$1(selector) || getStoreMetadata$1(selector);\n if (!metadata) {\n throw new Error(`${prefix}The value provided as the ${noun} is not a valid selector.`);\n }\n}\nfunction ensureValueProvided(value, context = {}) {\n const noun = context.noun || 'value';\n const prefix = context.prefix ? context.prefix + ': ' : '';\n if (!value) {\n throw new Error(`${prefix}A ${noun} must be provided.`);\n }\n}\nfunction createModelSelector(selectorMap) {\n const selectorKeys = Object.keys(selectorMap);\n const selectors = Object.values(selectorMap);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureValidSelectorMap({\n prefix: '[createModelSelector]',\n selectorMap,\n selectorKeys,\n selectors\n });\n }\n return createSelector(selectors, (...args) => {\n return selectorKeys.reduce((obj, key, index) => {\n obj[key] = args[index];\n return obj;\n }, {});\n });\n}\nfunction ensureValidSelectorMap({\n prefix,\n selectorMap,\n selectorKeys,\n selectors\n}) {\n ensureValueProvided(selectorMap, {\n prefix,\n noun: 'selector map'\n });\n ensureValueProvided(typeof selectorMap === 'object', {\n prefix,\n noun: 'valid selector map'\n });\n ensureValueProvided(selectorKeys.length, {\n prefix,\n noun: 'non-empty selector map'\n });\n selectors.forEach((selector, index) => ensureValidSelector(selector, {\n prefix,\n noun: `selector for the '${selectorKeys[index]}' property`\n }));\n}\nfunction createPickSelector(selector, keys) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureValidSelector(selector, {\n prefix: '[createPickSelector]'\n });\n }\n const validKeys = keys.filter(Boolean);\n const selectors = validKeys.map(key => createSelector([selector], s => s[key]));\n return createSelector([...selectors], (...props) => {\n return validKeys.reduce((acc, key, index) => {\n acc[key] = props[index];\n return acc;\n }, {});\n });\n}\nfunction createPropertySelectors(parentSelector) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n ensureValidSelector(parentSelector, {\n prefix: '[createPropertySelectors]',\n noun: 'parent selector'\n });\n }\n const cache = {};\n return new Proxy({}, {\n get(_target, prop) {\n const selector = cache[prop] || createSelector([parentSelector], s => s === null || s === void 0 ? void 0 : s[prop]);\n cache[prop] = selector;\n return selector;\n }\n });\n}\n\n/**\n * The public api for consumers of @ngxs/store\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Action, Actions, InitState, NGXS_PLUGINS, NgxsDevelopmentModule, NgxsModule, NgxsSimpleChange, NgxsUnhandledActionsLogger, NoopNgxsExecutionStrategy, Select, Selector, SelectorOptions, State, StateStream, StateToken, Store, UpdateState, actionMatcher, createModelSelector, createPickSelector, createPropertySelectors, createSelector, ensureSelectorMetadata, ensureStoreMetadata, getActionTypeFromInstance, getSelectorMetadata, getStoreMetadata, getValue, ofAction, ofActionCanceled, ofActionCompleted, ofActionDispatched, ofActionErrored, ofActionSuccessful, setValue, NgxsFeatureModule as ɵNgxsFeatureModule, NgxsRootModule as ɵNgxsRootModule };\n","import * as i0 from '@angular/core';\nimport { Injectable, Directive, Input, NgModule } from '@angular/core';\nimport * as i1 from '@ngxs/store';\nimport { getActionTypeFromInstance, setValue, getValue, ofActionDispatched, NGXS_PLUGINS } from '@ngxs/store';\nimport * as i2 from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil, distinctUntilChanged, debounceTime } from 'rxjs/operators';\nlet UpdateFormStatus = /*#__PURE__*/(() => {\n class UpdateFormStatus {\n constructor(payload) {\n this.payload = payload;\n }\n }\n UpdateFormStatus.type = '[Forms] Update Form Status';\n return UpdateFormStatus;\n})();\nlet UpdateFormValue = /*#__PURE__*/(() => {\n class UpdateFormValue {\n constructor(payload) {\n this.payload = payload;\n }\n }\n UpdateFormValue.type = '[Forms] Update Form Value';\n return UpdateFormValue;\n})();\nlet UpdateForm = /*#__PURE__*/(() => {\n class UpdateForm {\n constructor(payload) {\n this.payload = payload;\n }\n }\n UpdateForm.type = '[Forms] Update Form';\n return UpdateForm;\n})();\nlet UpdateFormDirty = /*#__PURE__*/(() => {\n class UpdateFormDirty {\n constructor(payload) {\n this.payload = payload;\n }\n }\n UpdateFormDirty.type = '[Forms] Update Form Dirty';\n return UpdateFormDirty;\n})();\nlet SetFormDirty = /*#__PURE__*/(() => {\n class SetFormDirty {\n constructor(payload) {\n this.payload = payload;\n }\n }\n SetFormDirty.type = '[Forms] Set Form Dirty';\n return SetFormDirty;\n})();\nlet SetFormPristine = /*#__PURE__*/(() => {\n class SetFormPristine {\n constructor(payload) {\n this.payload = payload;\n }\n }\n SetFormPristine.type = '[Forms] Set Form Pristine';\n return SetFormPristine;\n})();\nlet UpdateFormErrors = /*#__PURE__*/(() => {\n class UpdateFormErrors {\n constructor(payload) {\n this.payload = payload;\n }\n }\n UpdateFormErrors.type = '[Forms] Update Form Errors';\n return UpdateFormErrors;\n})();\nlet SetFormDisabled = /*#__PURE__*/(() => {\n class SetFormDisabled {\n constructor(payload) {\n this.payload = payload;\n }\n }\n SetFormDisabled.type = '[Forms] Set Form Disabled';\n return SetFormDisabled;\n})();\nlet SetFormEnabled = /*#__PURE__*/(() => {\n class SetFormEnabled {\n constructor(payload) {\n this.payload = payload;\n }\n }\n SetFormEnabled.type = '[Forms] Set Form Enabled';\n return SetFormEnabled;\n})();\nlet ResetForm = /*#__PURE__*/(() => {\n class ResetForm {\n constructor(payload) {\n this.payload = payload;\n }\n }\n ResetForm.type = '[Forms] Reset Form';\n return ResetForm;\n})();\nlet NgxsFormPlugin = /*#__PURE__*/(() => {\n class NgxsFormPlugin {\n handle(state, event, next) {\n const type = getActionTypeFromInstance(event);\n let nextState = state;\n if (type === UpdateFormValue.type || type === UpdateForm.type || type === ResetForm.type) {\n const {\n value\n } = event.payload;\n const payloadValue = Array.isArray(value) ? value.slice() : isObjectLike(value) ? Object.assign({}, value) : value;\n const path = this.joinPathWithPropertyPath(event);\n nextState = setValue(nextState, path, payloadValue);\n }\n if (type === ResetForm.type) {\n const model = getValue(nextState, `${event.payload.path}.model`);\n nextState = setValue(nextState, `${event.payload.path}`, {\n model: model\n });\n }\n if (type === UpdateFormStatus.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.status`, event.payload.status);\n }\n if (type === UpdateFormErrors.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.errors`, Object.assign({}, event.payload.errors));\n }\n if (type === UpdateFormDirty.type || type === UpdateForm.type) {\n nextState = setValue(nextState, `${event.payload.path}.dirty`, event.payload.dirty);\n }\n if (type === SetFormDirty.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, true);\n }\n if (type === SetFormPristine.type) {\n nextState = setValue(nextState, `${event.payload}.dirty`, false);\n }\n if (type === SetFormDisabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, true);\n }\n if (type === SetFormEnabled.type) {\n nextState = setValue(nextState, `${event.payload}.disabled`, false);\n }\n return next(nextState, event);\n }\n joinPathWithPropertyPath({\n payload\n }) {\n let path = `${payload.path}.model`;\n if (payload.propertyPath) {\n path += `.${payload.propertyPath}`;\n }\n return path;\n }\n }\n /** @nocollapse */\n /** @nocollapse */NgxsFormPlugin.ɵfac = function NgxsFormPlugin_Factory(t) {\n return new (t || NgxsFormPlugin)();\n };\n NgxsFormPlugin.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgxsFormPlugin,\n factory: NgxsFormPlugin.ɵfac\n });\n return NgxsFormPlugin;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction isObjectLike(target) {\n return target !== null && typeof target === 'object';\n}\nlet FormDirective = /*#__PURE__*/(() => {\n class FormDirective {\n constructor(_actions$, _store, _formGroupDirective, _cd) {\n this._actions$ = _actions$;\n this._store = _store;\n this._formGroupDirective = _formGroupDirective;\n this._cd = _cd;\n this.path = null;\n this._debounce = 100;\n this._clearDestroy = false;\n this._updating = false;\n this._destroy$ = new Subject();\n }\n set debounce(debounce) {\n this._debounce = Number(debounce);\n }\n get debounce() {\n return this._debounce;\n }\n set clearDestroy(val) {\n this._clearDestroy = val != null && `${val}` !== 'false';\n }\n get clearDestroy() {\n return this._clearDestroy;\n }\n ngOnInit() {\n this._actions$.pipe(ofActionDispatched(ResetForm), filter(action => action.payload.path === this.path), takeUntil(this._destroy$)).subscribe(({\n payload: {\n value\n }\n }) => {\n this.form.reset(value);\n this.updateFormStateWithRawValue(true);\n this._cd.markForCheck();\n });\n this.getStateStream(`${this.path}.model`).subscribe(model => {\n if (this._updating || !model) {\n return;\n }\n this.form.patchValue(model);\n this._cd.markForCheck();\n });\n this.getStateStream(`${this.path}.dirty`).subscribe(dirty => {\n if (this.form.dirty === dirty || typeof dirty !== 'boolean') {\n return;\n }\n if (dirty) {\n this.form.markAsDirty();\n } else {\n this.form.markAsPristine();\n }\n this._cd.markForCheck();\n });\n // On first state change, sync form model, status and dirty with state\n this._store.selectOnce(state => getValue(state, this.path)).subscribe(() => {\n this._store.dispatch([new UpdateFormValue({\n path: this.path,\n value: this.form.getRawValue()\n }), new UpdateFormStatus({\n path: this.path,\n status: this.form.status\n }), new UpdateFormDirty({\n path: this.path,\n dirty: this.form.dirty\n })]);\n });\n this.getStateStream(`${this.path}.disabled`).subscribe(disabled => {\n if (this.form.disabled === disabled || typeof disabled !== 'boolean') {\n return;\n }\n if (disabled) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n this._cd.markForCheck();\n });\n this._formGroupDirective.valueChanges.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), this.debounceChange()).subscribe(() => {\n this.updateFormStateWithRawValue();\n });\n this._formGroupDirective.statusChanges.pipe(distinctUntilChanged(), this.debounceChange()).subscribe(status => {\n this._store.dispatch(new UpdateFormStatus({\n status,\n path: this.path\n }));\n });\n }\n updateFormStateWithRawValue(withFormStatus) {\n if (this._updating) return;\n const value = this._formGroupDirective.control.getRawValue();\n const actions = [new UpdateFormValue({\n path: this.path,\n value\n }), new UpdateFormDirty({\n path: this.path,\n dirty: this._formGroupDirective.dirty\n }), new UpdateFormErrors({\n path: this.path,\n errors: this._formGroupDirective.errors\n })];\n if (withFormStatus) {\n actions.push(new UpdateFormStatus({\n path: this.path,\n status: this._formGroupDirective.status\n }));\n }\n this._updating = true;\n this._store.dispatch(actions).subscribe({\n error: () => this._updating = false,\n complete: () => this._updating = false\n });\n }\n ngOnDestroy() {\n this._destroy$.next();\n if (this.clearDestroy) {\n this._store.dispatch(new UpdateForm({\n path: this.path,\n value: null,\n dirty: null,\n status: null,\n errors: null\n }));\n }\n }\n debounceChange() {\n const skipDebounceTime = this._formGroupDirective.control.updateOn !== 'change' || this._debounce < 0;\n return skipDebounceTime ? change => change.pipe(takeUntil(this._destroy$)) : change => change.pipe(debounceTime(this._debounce), takeUntil(this._destroy$));\n }\n get form() {\n return this._formGroupDirective.form;\n }\n getStateStream(path) {\n return this._store.select(state => getValue(state, path)).pipe(takeUntil(this._destroy$));\n }\n }\n /** @nocollapse */\n /** @nocollapse */FormDirective.ɵfac = function FormDirective_Factory(t) {\n return new (t || FormDirective)(i0.ɵɵdirectiveInject(i1.Actions), i0.ɵɵdirectiveInject(i1.Store), i0.ɵɵdirectiveInject(i2.FormGroupDirective), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n FormDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormDirective,\n selectors: [[\"\", \"ngxsForm\", \"\"]],\n inputs: {\n path: [0, \"ngxsForm\", \"path\"],\n debounce: [0, \"ngxsFormDebounce\", \"debounce\"],\n clearDestroy: [0, \"ngxsFormClearOnDestroy\", \"clearDestroy\"]\n }\n });\n return FormDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxsFormPluginModule = /*#__PURE__*/(() => {\n class NgxsFormPluginModule {\n static forRoot() {\n return {\n ngModule: NgxsFormPluginModule,\n providers: [{\n provide: NGXS_PLUGINS,\n useClass: NgxsFormPlugin,\n multi: true\n }]\n };\n }\n }\n /** @nocollapse */\n /** @nocollapse */\n /** @nocollapse */NgxsFormPluginModule.ɵfac = function NgxsFormPluginModule_Factory(t) {\n return new (t || NgxsFormPluginModule)();\n };\n NgxsFormPluginModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxsFormPluginModule\n });\n NgxsFormPluginModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[ReactiveFormsModule]]\n });\n return NgxsFormPluginModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The public api for consumers of @ngxs/form-plugin\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxsFormPlugin, NgxsFormPluginModule, ResetForm, SetFormDirty, SetFormDisabled, SetFormEnabled, SetFormPristine, UpdateForm, UpdateFormDirty, UpdateFormErrors, UpdateFormStatus, UpdateFormValue, FormDirective as ɵFormDirective };\n","\n\nexport class EditProfile {\n public static readonly type = '[Profile] Edit profile';\n}\n\nexport class EditProfileAddress {\n public static readonly type = '[Profile] Edit profile address';\n}\n\nexport class GetProfile {\n public static readonly type = '[Profile] Get profile';\n constructor(public params?: {forceRefetch?: boolean}) {\n }\n}\n\nexport class GoToEditProfile {\n public static readonly type = '[Profile] Go to edit profile';\n}\n\nexport class GoToEditAddressProfile {\n public static readonly type = '[Profile] Go to edit address profile';\n}\n\nexport class CancelEditProfile {\n public static readonly type = '[Profile] Cancel edit profile';\n}\n\nexport class CancelEditAddressProfile {\n public static readonly type = '[Profile] Cancel edit address profile';\n}","import * as i0 from '@angular/core';\nimport { InjectionToken, NgZone, Injector, Injectable, NgModule } from '@angular/core';\nimport * as i1 from '@ngxs/store';\nimport { Action, Selector, State, Store, NgxsModule } from '@ngxs/store';\nimport { __decorate, __metadata } from 'tslib';\nimport * as i2 from '@angular/router';\nimport { NavigationStart, RoutesRecognized, ResolveEnd, NavigationCancel, NavigationError, NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n/**\n * Public event api of the router\n */\nlet Navigate = /*#__PURE__*/(() => {\n class Navigate {\n constructor(path, queryParams, extras) {\n this.path = path;\n this.queryParams = queryParams;\n this.extras = extras;\n }\n }\n Navigate.type = '[Router] Navigate';\n /**\n *\n * Angular Routers internal state events\n *\n */\n /**\n * An action dispatched when the router starts the navigation.\n */\n return Navigate;\n})();\nlet RouterRequest = /*#__PURE__*/(() => {\n class RouterRequest {\n constructor(routerState, event, trigger = 'none') {\n this.routerState = routerState;\n this.event = event;\n this.trigger = trigger;\n }\n }\n RouterRequest.type = '[Router] RouterRequest';\n /**\n * An action dispatched when the router navigates.\n */\n return RouterRequest;\n})();\nlet RouterNavigation = /*#__PURE__*/(() => {\n class RouterNavigation {\n constructor(routerState, event, trigger = 'none') {\n this.routerState = routerState;\n this.event = event;\n this.trigger = trigger;\n }\n }\n RouterNavigation.type = '[Router] RouterNavigation';\n /**\n * An action dispatched when the router cancel navigation.\n */\n return RouterNavigation;\n})();\nlet RouterCancel = /*#__PURE__*/(() => {\n class RouterCancel {\n constructor(routerState, storeState, event, trigger = 'none') {\n this.routerState = routerState;\n this.storeState = storeState;\n this.event = event;\n this.trigger = trigger;\n }\n }\n RouterCancel.type = '[Router] RouterCancel';\n /**\n * An action dispatched when the router errors.\n */\n return RouterCancel;\n})();\nlet RouterError = /*#__PURE__*/(() => {\n class RouterError {\n constructor(routerState, storeState, event, trigger = 'none') {\n this.routerState = routerState;\n this.storeState = storeState;\n this.event = event;\n this.trigger = trigger;\n }\n }\n RouterError.type = '[Router] RouterError';\n /**\n * An action dispatched when the `ResolveEnd` event is triggered.\n */\n return RouterError;\n})();\nlet RouterDataResolved = /*#__PURE__*/(() => {\n class RouterDataResolved {\n constructor(routerState, event, trigger = 'none') {\n this.routerState = routerState;\n this.event = event;\n this.trigger = trigger;\n }\n }\n RouterDataResolved.type = '[Router] RouterDataResolved';\n /**\n * An action dispatched when the router navigation has been finished successfully.\n */\n return RouterDataResolved;\n})();\nlet RouterNavigated = /*#__PURE__*/(() => {\n class RouterNavigated {\n constructor(routerState, event, trigger = 'none') {\n this.routerState = routerState;\n this.event = event;\n this.trigger = trigger;\n }\n }\n RouterNavigated.type = '[Router] RouterNavigated';\n return RouterNavigated;\n})();\nclass RouterStateSerializer {}\nclass DefaultRouterStateSerializer {\n serialize(routerState) {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url\n };\n }\n serializeRoute(route) {\n const children = route.children.map(c => this.serializeRoute(c));\n return {\n url: route.url,\n params: route.params,\n queryParams: route.queryParams,\n fragment: route.fragment,\n data: route.data,\n outlet: route.outlet,\n component: null,\n routeConfig: null,\n root: null,\n parent: null,\n firstChild: children[0],\n children: children,\n pathFromRoot: null,\n paramMap: route.paramMap,\n queryParamMap: route.queryParamMap,\n toString: route.toString\n };\n }\n}\nconst USER_OPTIONS = new InjectionToken('USER_OPTIONS', {\n providedIn: 'root',\n factory: () => undefined\n});\nconst NGXS_ROUTER_PLUGIN_OPTIONS = new InjectionToken('NGXS_ROUTER_PLUGIN_OPTIONS', {\n providedIn: 'root',\n factory: () => ({})\n});\nfunction createRouterPluginOptions(options) {\n return {\n navigationActionTiming: options && options.navigationActionTiming || 1 /* PreActivation */\n };\n}\nvar RouterState_1;\nlet RouterState = RouterState_1 = class RouterState {\n constructor(_store, _router, _serializer, _ngZone, injector) {\n this._store = _store;\n this._router = _router;\n this._serializer = _serializer;\n this._ngZone = _ngZone;\n /**\n * Determines how navigation was performed by the `RouterState` itself\n * or outside via `new Navigate(...)`\n */\n this._trigger = 'none';\n /**\n * That's the serialized state from the `Router` class\n */\n this._routerState = null;\n /**\n * That's the value of the `RouterState` state\n */\n this._storeState = null;\n this._lastEvent = null;\n this._subscription = new Subscription();\n this._options = null;\n // Note: do not use `@Inject` since it fails on lower versions of Angular with Jest\n // integration, it cannot resolve the token provider.\n this._options = injector.get(NGXS_ROUTER_PLUGIN_OPTIONS, null);\n this._setUpStoreListener();\n this._setUpRouterEventsListener();\n }\n static state(state) {\n return state && state.state;\n }\n static url(state) {\n return state && state.state && state.state.url;\n }\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n navigate(_, action) {\n return this._ngZone.run(() => this._router.navigate(action.path, Object.assign({\n queryParams: action.queryParams\n }, action.extras)));\n }\n angularRouterAction(ctx, action) {\n ctx.setState({\n trigger: action.trigger,\n state: action.routerState,\n navigationId: action.event.id\n });\n }\n _setUpStoreListener() {\n const subscription = this._store.select(RouterState_1).subscribe(state => {\n this._navigateIfNeeded(state);\n });\n this._subscription.add(subscription);\n }\n _navigateIfNeeded(routerState) {\n if (routerState && routerState.trigger === 'devtools') {\n this._storeState = this._store.selectSnapshot(RouterState_1);\n }\n const canSkipNavigation = !this._storeState || !this._storeState.state || !routerState || routerState.trigger === 'router' || this._router.url === this._storeState.state.url || this._lastEvent instanceof NavigationStart;\n if (canSkipNavigation) {\n return;\n }\n this._storeState = this._store.selectSnapshot(RouterState_1);\n this._trigger = 'store';\n this._ngZone.run(() => this._router.navigateByUrl(this._storeState.state.url));\n }\n _setUpRouterEventsListener() {\n const dispatchRouterNavigationLate = this._options != null && this._options.navigationActionTiming === 2 /* PostActivation */;\n let lastRoutesRecognized;\n const subscription = this._router.events.subscribe(event => {\n this._lastEvent = event;\n if (event instanceof NavigationStart) {\n this._navigationStart(event);\n } else if (event instanceof RoutesRecognized) {\n lastRoutesRecognized = event;\n if (!dispatchRouterNavigationLate && this._trigger !== 'store') {\n this._dispatchRouterNavigation(lastRoutesRecognized);\n }\n } else if (event instanceof ResolveEnd) {\n this._dispatchRouterDataResolved(event);\n } else if (event instanceof NavigationCancel) {\n this._dispatchRouterCancel(event);\n this._reset();\n } else if (event instanceof NavigationError) {\n this._dispatchRouterError(event);\n this._reset();\n } else if (event instanceof NavigationEnd) {\n if (this._trigger !== 'store') {\n if (dispatchRouterNavigationLate) {\n this._dispatchRouterNavigation(lastRoutesRecognized);\n }\n this._dispatchRouterNavigated(event);\n }\n this._reset();\n }\n });\n this._subscription.add(subscription);\n }\n /** Reacts to `NavigationStart`. */\n _navigationStart(event) {\n this._routerState = this._serializer.serialize(this._router.routerState.snapshot);\n if (this._trigger !== 'none') {\n this._storeState = this._store.selectSnapshot(RouterState_1);\n this._dispatchRouterAction(new RouterRequest(this._routerState, event, this._trigger));\n }\n }\n /** Reacts to `ResolveEnd`. */\n _dispatchRouterDataResolved(event) {\n const routerState = this._serializer.serialize(event.state);\n this._dispatchRouterAction(new RouterDataResolved(routerState, event, this._trigger));\n }\n /** Reacts to `RoutesRecognized` or `NavigationEnd`, depends on the `navigationActionTiming`. */\n _dispatchRouterNavigation(lastRoutesRecognized) {\n const nextRouterState = this._serializer.serialize(lastRoutesRecognized.state);\n this._dispatchRouterAction(new RouterNavigation(nextRouterState, new RoutesRecognized(lastRoutesRecognized.id, lastRoutesRecognized.url, lastRoutesRecognized.urlAfterRedirects, nextRouterState), this._trigger));\n }\n /** Reacts to `NavigationCancel`. */\n _dispatchRouterCancel(event) {\n this._dispatchRouterAction(new RouterCancel(this._routerState, this._storeState, event, this._trigger));\n }\n /** Reacts to `NavigationEnd`. */\n _dispatchRouterError(event) {\n this._dispatchRouterAction(new RouterError(this._routerState, this._storeState, new NavigationError(event.id, event.url, `${event}`), this._trigger));\n }\n /** Reacts to `NavigationEnd`. */\n _dispatchRouterNavigated(event) {\n const routerState = this._serializer.serialize(this._router.routerState.snapshot);\n this._dispatchRouterAction(new RouterNavigated(routerState, event, this._trigger));\n }\n _dispatchRouterAction(action) {\n this._trigger = 'router';\n try {\n this._store.dispatch(action);\n } finally {\n this._trigger = 'none';\n }\n }\n _reset() {\n this._trigger = 'none';\n this._storeState = null;\n this._routerState = null;\n }\n};\n/** @nocollapse */\nRouterState.ɵfac = function RouterState_Factory(t) {\n return new (t || RouterState)(i0.ɵɵinject(i1.Store), i0.ɵɵinject(i2.Router), i0.ɵɵinject(RouterStateSerializer), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.Injector));\n};\n/** @nocollapse */\nRouterState.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterState,\n factory: RouterState.ɵfac\n});\n__decorate([Action(Navigate), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object, Navigate]), __metadata(\"design:returntype\", void 0)], RouterState.prototype, \"navigate\", null);\n__decorate([Action([RouterRequest, RouterNavigation, RouterError, RouterCancel, RouterDataResolved, RouterNavigated]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object, Object]), __metadata(\"design:returntype\", void 0)], RouterState.prototype, \"angularRouterAction\", null);\n__decorate([Selector(), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", void 0)], RouterState, \"state\", null);\n__decorate([Selector(), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Object)], RouterState, \"url\", null);\nRouterState = RouterState_1 = __decorate([State({\n name: 'router',\n defaults: {\n state: undefined,\n navigationId: undefined,\n trigger: 'none'\n }\n}), __metadata(\"design:paramtypes\", [Store, Router, RouterStateSerializer, NgZone, Injector])], RouterState);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxsRouterPluginModule = /*#__PURE__*/(() => {\n class NgxsRouterPluginModule {\n static forRoot(options) {\n return {\n ngModule: NgxsRouterPluginModule,\n providers: [{\n provide: USER_OPTIONS,\n useValue: options\n }, {\n provide: NGXS_ROUTER_PLUGIN_OPTIONS,\n useFactory: createRouterPluginOptions,\n deps: [USER_OPTIONS]\n }, {\n provide: RouterStateSerializer,\n useClass: DefaultRouterStateSerializer\n }]\n };\n }\n }\n /** @nocollapse */\n /** @nocollapse */\n /** @nocollapse */NgxsRouterPluginModule.ɵfac = function NgxsRouterPluginModule_Factory(t) {\n return new (t || NgxsRouterPluginModule)();\n };\n NgxsRouterPluginModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxsRouterPluginModule\n });\n NgxsRouterPluginModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[NgxsModule.forFeature([RouterState])]]\n });\n return NgxsRouterPluginModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The public api for consumers of @ngxs/router-plugin\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DefaultRouterStateSerializer, Navigate, NgxsRouterPluginModule, RouterCancel, RouterDataResolved, RouterError, RouterNavigated, RouterNavigation, RouterRequest, RouterState, RouterStateSerializer };\n","import {EMPTY, Observable, of} from 'rxjs';\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpErrorResponse} from '@angular/common/http';\nimport {ConfigurationService} from 'src/app/core/config/configuration.service';\nimport {IProfile} from 'src/app/interfaces/profile';\nimport {catchError, concatMap, map} from 'rxjs/operators';\nimport {IPartnerData} from 'src/app/interfaces/general/profile-definitions/partner-data.interface';\nimport {ItemPayload} from 'src/app/interfaces/general/responses/item-payload.interface';\nimport {ITermVersionCheck} from 'src/app/interfaces/general/member-definitions/term-version-check.interface';\nimport {IPropertyValue} from 'src/app/interfaces/general/profile-definitions/property-value.interface';\n\nexport const LANGS: {key: string; value: string}[] = [\n {key: 'en', value: 'english'},\n {key: 'de', value: 'german'},\n {key: 'it', value: 'italian'},\n {key: 'fr', value: 'french'},\n];\n\nexport const SALUTATIONS = [\n {key: 'Mrs', value: 'miss'},\n {key: 'Mr', value: 'mister'},\n {key: 'Child', value: 'child'},\n {key: 'Other', value: 'other'},\n];\n\nexport const GENDER: {key: string; value: string}[] = [\n {key: 'Female', value: 'female'},\n {key: 'Male', value: 'male'},\n {key: 'Diverse', value: 'diverse'},\n];\n\nexport const MARITAL_STATUS: {key: string; value: string}[] = [\n {key: 'Married', value: 'married'},\n {key: 'Single', value: 'single'},\n {key: 'Divorced', value: 'divorced'},\n {key: 'Widowed', value: 'widowed'},\n];\n\nexport const REDUCTION: {key: string; value: string}[] = [\n {key: 'none', value: 'none'},\n {key: 'ga-1st', value: 'ga-1st'},\n {key: 'ga-2nd', value: 'ga-2nd'},\n {key: 'half-fare', value: 'half-fare'},\n {key: 'junior-card', value: 'junior-card'},\n {key: 'child-card', value: 'child-card'},\n {key: 'swiss-half-fare-card', value: 'swiss-half-fare-card'},\n {key: 'swiss-travel-pass', value: 'swiss-travel-pass'},\n {key: 'student', value: 'student'},\n];\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfileService {\n private readonly _profileApiUrl: string;\n private readonly sjhProfileUrl: string;\n constructor(\n private config: ConfigurationService,\n private http: HttpClient,\n ) {\n this._profileApiUrl = this.config.get('profileApi');\n this.sjhProfileUrl = this.config.get('sjhApi');\n }\n\n public getProfile(): Observable {\n return this.http.get(`${this.sjhProfileUrl}/me`);\n }\n\n public getProfilePic(): Observable {\n return this.http\n .get(`${this._profileApiUrl}/me/profileimage`, {\n responseType: 'text',\n })\n .pipe(\n map((res) => 'data:image/png;base64,' + res),\n catchError(() => {\n return of(null);\n }),\n );\n }\n\n public deleteProfilePic(): Observable {\n return this.http.delete(`${this._profileApiUrl}/me/profileimage`);\n }\n\n public updateProfile(payload: Partial): Observable {\n return this.http.patch(`${this.sjhProfileUrl}/me`, payload);\n }\n\n public getAllImages(): Observable {\n return this.http.get(`${this._profileApiUrl}/media`);\n }\n\n public getPartnerData(top = 10000): Observable> {\n return this.http.get>(\n `${this._profileApiUrl}/partnerdata?top=${top}`,\n );\n }\n\n public getPartnerDataByName(name?: string): Observable {\n return this.http.get(`${this._profileApiUrl}/partnerdata/${name}`);\n }\n\n public createPartnerData(partnerData: any): Observable {\n return this.http.post(`${this._profileApiUrl}/partnerdata`, partnerData);\n }\n\n public updatePartnerData(name: string, partnerData: any): Observable {\n return this.http.put(`${this._profileApiUrl}/partnerdata/${name}`, partnerData);\n }\n\n public updatePartnerDataByName(\n name: string,\n propertyValue: Partial,\n ): Observable {\n return this.http.get(`${this._profileApiUrl}/partnerdata/${name}`).pipe(\n catchError((error: HttpErrorResponse) => {\n console.error(error);\n return EMPTY;\n }),\n concatMap((partnerData) => {\n const copy = [...(partnerData.additionalProperty ?? [])];\n const index = copy.findIndex((i) => i.propertyId === propertyValue.propertyId);\n if (index === -1) return EMPTY;\n copy[index] = propertyValue as IPropertyValue;\n partnerData.additionalProperty = copy;\n return this.updatePartnerData(name, partnerData);\n }),\n );\n }\n\n public removePartnerDataByNameAndId(name: string, id: string): Observable {\n return this.http.get(`${this._profileApiUrl}/partnerdata/${name}`).pipe(\n catchError((error: HttpErrorResponse) => {\n console.error(error);\n return EMPTY;\n }),\n concatMap((partnerData) => {\n partnerData.additionalProperty =\n partnerData.additionalProperty?.filter((t) => {\n return (t as any).propertyId !== id;\n }) ?? [];\n return this.updatePartnerData(name, partnerData);\n }),\n );\n }\n\n public sharePartnerData(name: string): Observable {\n return this.http.put(`${this._profileApiUrl}/partnerdata/${name}/share`, {});\n }\n\n public removePartnerDataSharing(name: string): Observable {\n return this.http.delete(`${this._profileApiUrl}/partnerdata/${name}/share`);\n }\n\n public initiateDeletionProfile(): Observable {\n return this.http.delete(`${this.sjhProfileUrl}/me`);\n }\n\n public cancelDeletionProfile(): Observable {\n return this.http.put(`${this._profileApiUrl}/me/cancelDelete`, {});\n }\n\n public confirmDeletionProfile(): Observable {\n return this.http.put(`${this._profileApiUrl}/me/confirmDelete`, {});\n }\n\n public verifyProfile(key: string): Observable {\n return this.http.put(`${this._profileApiUrl}/me/verify`, {verificationKey: key});\n }\n\n public resendVerificationMail(): Observable {\n return this.http.put(`${this._profileApiUrl}/me/verify/email`, {observe: 'response'});\n }\n\n public getTerms(termCode: string): Observable {\n return this.http.get(`${this._profileApiUrl}/terms/${termCode}`).pipe(\n catchError((err) => {\n console.error(err);\n return of(null);\n }),\n );\n }\n}\n","import {HttpEvent, HttpEventType} from '@angular/common/http';\nimport {tap} from 'rxjs';\n\nexport function uploadProgress(callback: (progress: number) => void) {\n return tap((event: HttpEvent) => {\n if (event.type === HttpEventType.UploadProgress) {\n callback(Math.round((100 * event.loaded) / event.total));\n }\n });\n}\n","import {HttpClient, HttpEventType, HttpResponse} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {catchError, EMPTY, filter, from, map, mergeMap, Observable, toArray} from 'rxjs';\nimport {ConfigurationService} from 'src/app/core/config/configuration.service';\nimport {IProfileMedia} from 'src/app/interfaces/profile-media';\nimport {\n IProfileMediaFilePayloadForRequest,\n IProfileMediaUploadRequest,\n} from 'src/app/interfaces/profile-media-upload.request';\nimport {uploadProgress} from 'src/app/shared/helpers/upload-progress';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProfileMediaApiService {\n constructor(\n private http: HttpClient,\n private cfg: ConfigurationService,\n ) {}\n\n public getNoImage(): Observable {\n return this.http.get('assets/images/no-image.png', {\n responseType: 'blob' as 'json',\n });\n }\n\n public getNoProfilePic(): Observable {\n return this.http.get('assets/images/no-profile-pic.svg', {\n responseType: 'blob' as 'json',\n });\n }\n\n public getAllProfileMedia(): Observable {\n return this.http.get(`${this.cfg.get('profileApi')}/media`);\n }\n\n public getProfileMedia(identifier: string): Observable {\n return this.http.get(`${this.cfg.get('profileApi')}/media/${identifier}`);\n }\n\n public getMedia(identifier: string): Observable {\n return this.http.get(`${this.cfg.get('profileApi')}/media/${identifier}/download`, {\n responseType: 'blob' as 'json',\n });\n }\n\n public delete(identifier: string): Observable;\n public delete(identifiers: string[]): Observable;\n public delete(identifiers: string | string[]): Observable {\n let ids: string[] = [];\n if (typeof identifiers === 'string') {\n ids.push(identifiers);\n }\n if (Array.isArray(identifiers)) {\n ids = identifiers;\n }\n\n return from(ids).pipe(\n mergeMap((id) =>\n this.http.delete(`${this.cfg.get('profileApi')}/media/${id}`).pipe(\n catchError((error) => {\n console.error(error);\n return EMPTY;\n }),\n ),\n ),\n toArray(),\n map(() => undefined),\n );\n }\n\n public upload(\n req: IProfileMediaUploadRequest,\n uploadCallback: (progress: number) => void,\n ): Observable {\n const {file, name, additionalType} = req;\n const formData = new FormData();\n formData.append('file', file);\n formData.append('name', name ?? file.name);\n formData.append('additionalType', additionalType);\n\n return this.http\n .post(`${this.cfg.get('profileApi')}/media`, formData, {\n reportProgress: true,\n observe: 'events',\n })\n .pipe(\n uploadProgress(uploadCallback),\n filter((event) => event.type === HttpEventType.Response),\n map((response: HttpResponse) => response.body),\n );\n }\n\n public uploadProfilePicture(\n req: IProfileMediaFilePayloadForRequest,\n uploadCallback: (progress: number) => void,\n ): Observable {\n return this.upload({...req, additionalType: 'ProfileImage'}, uploadCallback);\n }\n\n public uploadTravelerPicture(\n req: IProfileMediaFilePayloadForRequest,\n uploadCallback: (progress: number) => void,\n ): Observable {\n return this.upload(\n {...req, additionalType: 'TravelerProfileImage'},\n uploadCallback,\n );\n }\n\n public uploadSupportingDocument(\n req: IProfileMediaFilePayloadForRequest,\n uploadCallback: (progress: number) => void,\n ): Observable {\n return this.upload(\n {...req, additionalType: 'SupportingDocument'},\n uploadCallback,\n );\n }\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {SeverityLevel} from '@microsoft/applicationinsights-web';\nimport {AppInsightsService} from 'src/app/core/app-insights/app-insights.service';\n\nexport interface IErrorHandlerArgs {\n error: any;\n appInsightsSrv: AppInsightsService;\n fallbackMessage?: string;\n\n /** Usually it is class SomeService.name, but this approach can't be used due to minification, need to place 'SomeService'*/\n scope?: string;\n}\n\nexport const errorHandler = (arg: IErrorHandlerArgs): void => {\n const {error, appInsightsSrv, fallbackMessage, scope} = arg;\n console.error(error);\n let trackEventMessage = '';\n if (error instanceof HttpErrorResponse) {\n trackEventMessage = JSON.stringify({\n ...error,\n error: typeof error.error === 'object' ? JSON.stringify(error.error) : error.error,\n });\n } else {\n trackEventMessage = `${fallbackMessage}${scope ? '(scope ' + scope + ')' : ''}: ${error}`;\n }\n appInsightsSrv.trackTrace({\n message: trackEventMessage,\n severityLevel: SeverityLevel.Error,\n });\n};\n\nexport const httpErrorToString = (\n error: HttpErrorResponse,\n fallbackMessage = 'Unknown error',\n): string => {\n if (!(error instanceof HttpErrorResponse)) return JSON.stringify(error);\n\n if (Array.isArray(error?.error) && error?.error?.[0]?.errorMessage) {\n return error?.error?.map((e) => e.errorMessage).join('\\n');\n }\n\n if (error?.error?.message && typeof error.error.message === 'string') {\n return error.error.message;\n }\n if (error?.error && typeof error.error === 'string') {\n return error.error;\n }\n if (error?.error && typeof error.error === 'object') {\n return JSON.stringify(error.error);\n }\n return `${error.statusText} - ${fallbackMessage}`;\n};\n","import {Injectable} from '@angular/core';\nimport {Action, Selector, State, StateContext, Store} from '@ngxs/store';\nimport {IProfile} from 'src/app/interfaces/profile';\nimport {\n CancelEditAddressProfile,\n CancelEditProfile,\n EditProfile,\n EditProfileAddress,\n GetProfile,\n GoToEditAddressProfile,\n GoToEditProfile,\n} from './profile.actions';\nimport {ProfileService} from '../../modules/profile/profile.service';\nimport {Navigate} from '@ngxs/router-plugin';\nimport {UpdateFormValue} from '@ngxs/form-plugin';\nimport {firstValueFrom} from 'rxjs';\nimport {AppInsightsService} from 'src/app/core/app-insights/app-insights.service';\nimport {errorHandler, httpErrorToString, IErrorHandlerArgs} from 'src/app/shared/helpers/error-handler';\nimport {ProfileMediaApiService} from 'src/app/shared/services/profile-media-api.service';\n\nexport interface IProfileState {\n data: Partial;\n profileForm: {\n model: Partial;\n };\n addressForm: {\n model: Partial;\n };\n loading: boolean;\n hasValue: boolean;\n error: any;\n}\n\n@State({\n name: 'profile',\n defaults: {\n data: null,\n profileForm: {\n model: null,\n },\n addressForm: {\n model: null,\n },\n loading: false,\n hasValue: false,\n error: null,\n },\n})\n@Injectable()\nexport class ProfileState {\n private readonly _errorHandleInitArgs: IErrorHandlerArgs = {\n error: null,\n appInsightsSrv: this.insight,\n scope: 'ProfileState',\n };\n constructor(\n private store: Store,\n private profile: ProfileService,\n private insight: AppInsightsService,\n private profileMediaApi: ProfileMediaApiService,\n ) { }\n\n @Selector()\n public static profile(state: IProfileState): Partial {\n return state.data;\n }\n\n @Selector()\n public static model(state: IProfileState): Partial {\n return state.profileForm.model;\n }\n\n @Selector()\n public static loading(state: IProfileState): boolean {\n return state.loading;\n }\n\n @Selector()\n public static hasValue(state: IProfileState): boolean {\n return state.hasValue;\n }\n\n @Selector()\n public static error(state: IProfileState): any {\n return state.error;\n }\n\n @Action(GetProfile)\n public async getProfile(\n ctx: StateContext,\n {params}: GetProfile\n ): Promise {\n const {forceRefetch} = params ?? {};\n const state = ctx.getState();\n ctx.patchState({loading: true});\n let profile: Partial;\n if (state.hasValue && !forceRefetch) {\n profile = state.data;\n } else {\n try {\n profile = await firstValueFrom(this.profile.getProfile());\n } catch (error: any) {\n errorHandler({\n ...this._errorHandleInitArgs,\n error,\n fallbackMessage: 'An unknown error occurred during getting profile information'\n });\n ctx.patchState({\n data: null,\n hasValue: false,\n loading: false,\n error: httpErrorToString(error),\n });\n }\n }\n\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.profileForm',\n value: profile,\n })\n );\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.addressForm',\n value: profile,\n })\n );\n ctx.patchState({data: profile, loading: false, hasValue: !!profile});\n }\n\n @Action(EditProfile)\n public async editProfile(ctx: StateContext): Promise {\n ctx.patchState({loading: true});\n const currentProfileImage = ctx.getState().data.profileImage;\n const model = ctx.getState().profileForm.model;\n let birthDate: any = '';\n if (model.birthDate) {\n const copy = new Date(model.birthDate);\n birthDate = `${copy.getFullYear()}-${copy.getMonth() + 1}-${copy.getDate()}`;\n }\n\n let profileImage = ctx.getState().profileForm.model.profileImage;\n\n try {\n // if profileImage is an object, it means that the user has uploaded a new image\n if (Boolean(profileImage) && typeof profileImage === 'object') {\n const file = (profileImage as any).file as File;\n const profileMedia = await firstValueFrom(this.profileMediaApi.uploadProfilePicture({file}, () => { }));\n profileImage = profileMedia.identifier;\n }\n\n // if the user has uploaded a new image, we need to remove the old one\n // if the user has removed the image, we need to remove it\n if (currentProfileImage && profileImage && currentProfileImage !== profileImage) {\n await firstValueFrom(this.profileMediaApi.delete(currentProfileImage));\n }\n\n // if the user has removed the image, we need to remove it\n if (currentProfileImage && !profileImage) {\n await firstValueFrom(this.profile.deleteProfilePic());\n }\n\n const payload: Partial = {\n ...model,\n birthDate,\n profileImage,\n };\n\n const profile = await firstValueFrom(this.profile.updateProfile(payload));\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.profileForm',\n value: profile,\n })\n );\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.addressForm',\n value: profile,\n })\n );\n ctx.patchState({data: profile, loading: false, hasValue: !!profile});\n this.store.dispatch(new Navigate(['/']));\n } catch (error) {\n errorHandler({\n ...this._errorHandleInitArgs,\n error,\n fallbackMessage: 'An unknown error occurred during updating profile information',\n });\n ctx.patchState({\n loading: false,\n error: httpErrorToString(error),\n });\n }\n }\n\n @Action(EditProfileAddress)\n public async editProfileAddress(ctx: StateContext): Promise {\n const currentState = ctx.getState();\n try {\n ctx.patchState({loading: true, error: null});\n const model: Partial = currentState.addressForm.model;\n const profile = await firstValueFrom(this.profile.updateProfile(model));\n ctx.patchState({data: profile, loading: false, hasValue: !!profile});\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.profileForm',\n value: profile,\n })\n );\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.addressForm',\n value: profile,\n })\n );\n this.store.dispatch(new Navigate(['/']));\n } catch (error) {\n ctx.patchState({\n ...currentState,\n hasValue: false,\n loading: false,\n error: httpErrorToString(error),\n });\n errorHandler({\n ...this._errorHandleInitArgs,\n error,\n fallbackMessage: 'An unknown error occurred during updating profile address information',\n });\n }\n }\n\n @Action(GoToEditProfile)\n public goToEditProfile(): void {\n this.store.dispatch(new Navigate(['/profile/edit']));\n }\n\n @Action(GoToEditAddressProfile)\n public goToEditAddressProfile(): void {\n this.store.dispatch(new Navigate(['/profile/address']));\n }\n\n @Action([CancelEditProfile, CancelEditAddressProfile])\n public cancelEditProfile(ctx: StateContext): void {\n const profile = ctx.getState().data;\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.profileForm',\n value: profile,\n })\n );\n this.store.dispatch(\n new UpdateFormValue({\n path: 'profile.addressForm',\n value: profile,\n })\n );\n this.store.dispatch(new Navigate(['/']));\n }\n}\n","import {Location} from '@angular/common';\nimport {Component, Injector, OnDestroy} from '@angular/core';\nimport {MatSnackBar} from '@angular/material/snack-bar';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {AvailableLang} from '@discover-swiss/models';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Store} from '@ngxs/store';\nimport {Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged, filter, map, takeUntil} from 'rxjs/operators';\nimport {LanguageService} from 'src/app/core/i18n/language.service';\nimport {MainPageService} from 'src/app/shared/services/main-page.service';\nimport {GetProfile} from 'src/app/store/profile/profile.actions';\nimport {IProfileState, ProfileState} from 'src/app/store/profile/profile.state';\n\n@Component({\n selector: 'app-base',\n template: '',\n})\nexport class BaseComponent implements OnDestroy {\n public profileState$: Observable;\n protected activatedRoute: ActivatedRoute;\n protected router: Router;\n protected location: Location;\n protected langService: LanguageService;\n protected translateService: TranslateService;\n protected store: Store;\n protected mainPageService: MainPageService;\n\n get currentLang(): AvailableLang {\n return this.langService.currentLang;\n }\n\n protected _destroy$ = new Subject();\n protected readonly destroy$ = this._destroy$.asObservable();\n\n constructor(protected injector: Injector) {\n this.mainPageService = injector.get(MainPageService);\n this.activatedRoute = injector.get(ActivatedRoute);\n this.router = injector.get(Router);\n this.location = injector.get(Location);\n this.langService = injector.get(LanguageService);\n this.translateService = injector.get(TranslateService);\n this.store = injector.get(Store);\n\n this.profileState$ = this.store.select(ProfileState);\n this.profileState$.pipe(\n filter((profileState) => profileState.hasValue),\n map((profileState) => profileState.data.preferredLanguage),\n takeUntil(this._destroy$),\n ).subscribe((preferredLanguage) => {\n this.langService.setPreferredLang(preferredLanguage as AvailableLang);\n })\n\n this.activatedRoute.queryParams.pipe(\n map((queryParams) => queryParams.lang),\n filter((lang) => Boolean(lang)),\n takeUntil(this._destroy$),\n ).subscribe({\n next: (lang: AvailableLang) => {\n this.langService.setQueryParamLang(lang);\n },\n });\n\n this.langService.languageChange$.pipe(\n takeUntil(this.destroy$)\n ).subscribe({\n next: () => {\n const queryParams = this.activatedRoute.snapshot.queryParams ?? {};\n const availableLangQueryParam = queryParams?.lang;\n\n if (availableLangQueryParam) {\n const url = this.router.createUrlTree([], {relativeTo: this.activatedRoute, queryParams: {...queryParams, lang: this.langService.currentLang}}).toString();\n this.location.replaceState(url);\n }\n }\n });\n\n const profileHasValue = this.store.selectSnapshot(ProfileState.hasValue);\n const profileLoading = this.store.selectSnapshot(ProfileState.loading);\n if (!profileHasValue && !profileLoading) {\n this.store.dispatch(new GetProfile());\n }\n\n this.store.select(ProfileState).pipe(\n distinctUntilChanged((a, b) => a.error === b.error),\n takeUntil(this._destroy$),\n ).subscribe((profileState) => {\n if (profileState.error) {\n console.error('ProfileState error:', profileState.error);\n this.injector.get(MatSnackBar).open(profileState.error, this.translateService.instant('close'), {\n panelClass: ['mat-snack-bar', 'mat-snack-bar-error'],\n });\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n"],"mappings":"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","names":["_c0","_c1","_c2","_c4","_c8","_c9","MAT_BUTTON_CONFIG","InjectionToken","HOST_SELECTOR_MDC_CLASS_PAIR","MatButtonBase","_MatButtonBase","v","value","_elementRef","_platform","_ngZone","_animationMode","inject","FocusMonitor","MatRippleLoader","config","MAT_BUTTON_CONFIG","element","classList","attribute","mdcClasses","origin","options","t","ɵɵinvalidFactory","ɵɵdefineDirective","booleanAttribute","ɵɵInputTransformsFeature","MatButton","_MatButton","MatButtonBase","elementRef","platform","ngZone","animationMode","t","ɵɵdirectiveInject","ElementRef","Platform","NgZone","ANIMATION_MODULE_TYPE","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵclassMap","ɵɵclassProp","ɵɵInheritDefinitionFeature","ɵɵStandaloneFeature","_c0","_c2","ɵɵprojectionDef","_c1","ɵɵelement","ɵɵprojection","ɵɵelementStart","ɵɵelementEnd","MatIconButton","_MatIconButton","MatButtonBase","elementRef","platform","ngZone","animationMode","t","ɵɵdirectiveInject","ElementRef","Platform","NgZone","ANIMATION_MODULE_TYPE","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵclassMap","ɵɵclassProp","ɵɵInheritDefinitionFeature","ɵɵStandaloneFeature","_c8","_c9","ɵɵprojectionDef","ɵɵelement","ɵɵprojection","_c4","MatButtonModule","_MatButtonModule","t","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","MatRippleModule","SimpleSnackBar_Conditional_2_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","_c0","MatSnackBarContainer_ng_template_4_Template","MAX_TIMEOUT","MatSnackBarRef","containerInstance","_overlayRef","Subject","duration","MAT_SNACK_BAR_DATA","InjectionToken","MatSnackBarConfig","MatSnackBarLabel","_MatSnackBarLabel","t","ɵɵdefineDirective","MatSnackBarActions","_MatSnackBarActions","MatSnackBarAction","_MatSnackBarAction","SimpleSnackBar","_SimpleSnackBar","snackBarRef","data","ɵɵdirectiveInject","ɵɵdefineComponent","ɵɵStandaloneFeature","ɵɵtemplate","ɵɵconditional","MatButton","matSnackBarAnimations","trigger","state","style","transition","animate","uniqueId","MatSnackBarContainer","_MatSnackBarContainer","BasePortalOutlet","_ngZone","_elementRef","_changeDetectorRef","_platform","snackBarConfig","inject","DOCUMENT","portal","result","event","fromState","toState","onEnter","element","panelClasses","cssClass","label","labelClass","id","modals","modal","ariaOwns","newValue","inertElement","liveElement","focusedElement","NgZone","ElementRef","ChangeDetectorRef","Platform","ɵɵviewQuery","CdkPortalOutlet","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵsyntheticHostListener","$event","ɵɵsyntheticHostProperty","ɵɵInheritDefinitionFeature","ɵɵelement","ɵɵattribute","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","MAT_SNACK_BAR_DEFAULT_OPTIONS","MatSnackBar","_MatSnackBar","parent","value","_overlay","_live","_injector","_breakpointObserver","_parentSnackBar","_defaultConfig","component","config","template","message","action","_config","__spreadValues","overlayRef","userInjector","injector","Injector","containerPortal","ComponentPortal","containerRef","content","userConfig","container","TemplateRef","TemplatePortal","contentRef","Breakpoints","takeUntil","overlayConfig","OverlayConfig","positionStrategy","isRtl","isLeft","isRight","ɵɵinject","Overlay","LiveAnnouncer","BreakpointObserver","ɵɵdefineInjectable","MatSnackBarModule","_MatSnackBarModule","t","ɵɵdefineNgModule","ɵɵdefineInjector","MatSnackBar","OverlayModule","PortalModule","MatButtonModule","MatCommonModule","SimpleSnackBar","NgxsBootstrapper","ReplaySubject","t","ɵɵdefineInjectable","defaultEqualityCheck","a","b","areArgumentsShallowlyEqual","equalityCheck","prev","next","length","i","memoize","func","lastArgs","lastResult","memoized","InitialState","state","INITIAL_STATE_TOKEN","InjectionToken","ɵNGXS_STATE_FACTORY","ɵNGXS_STATE_CONTEXT_FACTORY","isStateOperator","value","getActionTypeFromInstance","action","setValue","obj","prop","val","split","lastIndex","acc","part","index","getValue","isObject$1","item","mergeDeep","base","sources","source","key","throwStateUniqueError","current","newName","oldName","throwStateDecoratorError","name","getUndecoratedStateInIvyWarningMessage","name","throwSelectFactoryNotConnectedError","DispatchOutsideZoneNgxsExecutionStrategy","_ngZone","_platformId","func","isPlatformServer","NgZone","t","ɵɵinject","PLATFORM_ID","ɵɵdefineInjectable","ROOT_OPTIONS","InjectionToken","ROOT_STATE_TOKEN","FEATURE_STATE_TOKEN","NGXS_PLUGINS","META_KEY","META_OPTIONS_KEY","SELECTOR_META_KEY","NgxsConfig","DispatchOutsideZoneNgxsExecutionStrategy","t","ɵɵdefineInjectable","r","options","mergeDeep","ɵɵinject","NgxsSimpleChange","previousValue","currentValue","firstChange","NoopNgxsExecutionStrategy","func","USER_PROVIDED_NGXS_EXECUTION_STRATEGY","NGXS_EXECUTION_STRATEGY","injector","inject","INJECTOR$1","executionStrategy","_global","ensureStoreMetadata$1","target","defaultMetadata","context","getStoreMetadata$1","ensureSelectorMetadata$1","getSelectorMetadata$1","compliantPropGetter","paths","copyOfPaths","obj","acc","part","fastPropGetter","segments","seg","i","l","expr","propGetter","config","buildGraph","stateClasses","findName","stateClass","g","result","name","children","nameToState","states","meta","findFullParentPath","newObj","visit","child","keyToFind","key","parent","topologicalSort","graph","sorted","visited","ancestors","dep","k","isObject","ofActionDispatched","allowedTypes","ofActionOperator","ofActionOperator","allowedTypes","statuses","mapOperator","mapAction","allowedMap","createAllowedActionTypesMap","allowedStatusMap","createAllowedStatusesMap","o","filterStatus","allowedStatuses","filter","ctx","actionType","getActionTypeFromInstance","typeMatch","statusMatch","mapAction","map","ctx","createAllowedActionTypesMap","types","filterMap","klass","getActionTypeFromInstance","createAllowedStatusesMap","statuses","status","leaveNgxs","ngxsExecutionStrategy","source","Observable","sink","value","error","InternalNgxsExecutionStrategy","_executionStrategy","func","t","ɵɵinject","NGXS_EXECUTION_STRATEGY","ɵɵdefineInjectable","orderedQueueOperation","operation","callsQueue","busyPushingNext","args","nextCallArgs","OrderedSubject","Subject","OrderedBehaviorSubject","BehaviorSubject","InternalActions","ɵInternalActions_BaseFactory","ɵɵgetInheritedFactory","Actions","internalActions$","internalExecutionStrategy","sharedInternalActions$","share","observer","childSubscription","compose","funcs","nextArgs","ngxsErrorHandler","internalErrorReporter","subscribed","subscriber","InternalErrorReporter","_injector","ErrorHandler","Injector","StateStream","PluginManager","_parentManager","_pluginHandlers","pluginHandlers","plugin","NGXS_PLUGINS","InternalDispatchedActionResults","ɵInternalDispatchedActionResults_BaseFactory","InternalDispatcher","_actions","_actionResults","_pluginManager","_stateStream","_ngxsExecutionStrategy","_internalErrorReporter","actionOrActions","of","forkJoin","action","prevState","plugins","nextState","nextAction","actionResult$","shareReplay","filter","take","exhaustMap","throwError","EMPTY","InternalStateOperations","_stateStream","_dispatcher","_config","newState","actionOrActions","results","stateOperations","currentState","t","ɵɵinject","StateStream","InternalDispatcher","NgxsConfig","ɵɵdefineInjectable","simplePatch","value","existingState","newState","key","StateContextFactory","_internalStateOperations","mappedStore","root","currentAppState","getState","val","patchOperator","setStateFromOperator","isStateOperator","setStateValue","actions","t","ɵɵinject","InternalStateOperations","ɵɵdefineInjectable","newValue","path","newAppState","setValue","stateOperator","local","getValue","stateNameRegex","ensureStateNameIsUnique","stateName","state","statesByName","existingState","throwStateUniqueError","ensureStatesAreDecorated","stateClasses","stateClass","getStoreMetadata$1","throwStateDecoratorError","ensureStateClassIsInjectable","jit_hasInjectableAnnotation","aot_hasNgInjectableDef","getUndecoratedStateInIvyWarningMessage","annotation","InitState","UpdateState","addedStates","NGXS_DEVELOPMENT_OPTIONS","InjectionToken","NgxsUnhandledActionsLogger","options","actions","action","type","getActionTypeFromInstance","t","ɵɵinject","ɵɵdefineInjectable","NG_DEV_MODE","StateFactory","_injector","_config","_parentFactory","_actions","_actionResults","_stateContextFactory","_initialState","memoize","stateFactory","resolveGetter","key","path","propGetter","getter","args","localOptions","globalSelectorOptions","defaults","value","isObject","_a","newStates","stateGraph","buildGraph","sortedStates","topologicalSort","paths","findFullParentPath","nameGraph","nameToState","bootstrappedStores","name","meta","META_KEY","stateMap","classes","mappedStores","result","mappedStore","setValue","dispatched$","Subject","filter","ctx","mergeMap","map","defaultIfEmpty","catchError","error","of","results","actionHasBeenHandled","metadata","actionMetas","actionMeta","stateContext","from","isObservable","takeUntil","ofActionDispatched","shareReplay","e","throwError","unhandledActionsLogger","forkJoin","statesMap","valueIsBootstrappedInInitialState","getValue","Injector","NgxsConfig","InternalActions","InternalDispatchedActionResults","StateContextFactory","INITIAL_STATE_TOKEN","createRootSelectorFactory","selectorMetaData","selectors","memoizedSelectorFn","context","argumentSelectorFunctions","selectorOptions","getRuntimeSelectorInfo","rootState","argFn","ex","createMemoizedSelectorFn","originalFn","creationMetadata","containerClass","memoizedFn","returnValue","localSelectorOptions","getSelectorsToApply","selector","getRootSelectorFactory","selectorsToApply","canInjectContainerState","getSelectorMetadata$1","Store","_stateStream","_internalStateOperations","_internalExecutionStrategy","_stateFactory","initialStateValue","leaveNgxs","actionOrActions","selectorFn","err","suppressErrors","distinctUntilChanged","take","fn","makeSelectorFn","runtimeContext","storeValues","StateStream","InternalStateOperations","InternalNgxsExecutionStrategy","SelectFactory","store","config","LifecycleStateManager","_store","_internalErrorReporter","_bootstrapper","tap","appBootstrapped","EMPTY","instance","startWith","pairwise","previousValue","currentValue","change","NgxsSimpleChange","InternalErrorReporter","NgxsBootstrapper","NgxsRootModule","factory","internalStateOperations","_select","states","lifecycleStateManager","ROOT_STATE_TOKEN","ɵɵdefineNgModule","ɵɵdefineInjector","NgxsFeatureModule","flattenedStates","total","values","FEATURE_STATE_TOKEN","NgxsModule","PluginManager","USER_PROVIDED_NGXS_EXECUTION_STRATEGY","ROOT_OPTIONS","APP_BOOTSTRAP_LISTENER","ɵNGXS_STATE_CONTEXT_FACTORY","ɵNGXS_STATE_FACTORY","bootstrapper","Action","target","ensureStoreMetadata$1","State","inheritedStateClass","optionsWithInheritance","getStateOptions","mutateMetaData","META_OPTIONS_KEY","inheritanceOptions","params","children","inheritedMeta","DOLLAR_CHAR_CODE","createSelectObservable","throwSelectFactoryNotConnectedError","createSelectorFn","rawSelector","removeDollarAtTheEnd","propsArray","lastCharIndex","Select","selectorId","SELECTOR_OPTIONS_META_KEY","selectorOptionsMetaAccessor","setupSelectorMetadata","ensureSelectorMetadata$1","getExplicitSelectorOptions","selectorMetaDataClone","getLocalSelectorOptions","explicitOptions","createSelector","selectors","projector","creationMetadata","memoizedFn","createMemoizedSelectorFn","selectorMetaData","setupSelectorMetadata","createRootSelectorFactory","Selector","target","key","descriptor","originalFn","newDescriptor","UpdateFormStatus","payload","UpdateFormValue","UpdateForm","UpdateFormDirty","SetFormDirty","SetFormPristine","UpdateFormErrors","SetFormDisabled","SetFormEnabled","ResetForm","NgxsFormPlugin","state","event","next","type","getActionTypeFromInstance","nextState","value","payloadValue","isObjectLike","path","setValue","model","getValue","t","ɵɵdefineInjectable","target","FormDirective","_actions$","_store","_formGroupDirective","_cd","Subject","debounce","val","ofActionDispatched","filter","action","takeUntil","dirty","disabled","distinctUntilChanged","a","b","status","withFormStatus","actions","change","debounceTime","ɵɵdirectiveInject","Actions","Store","FormGroupDirective","ChangeDetectorRef","ɵɵdefineDirective","NgxsFormPluginModule","NGXS_PLUGINS","ɵɵdefineNgModule","ɵɵdefineInjector","ReactiveFormsModule","EditProfile","_EditProfile","type","EditProfileAddress","_EditProfileAddress","GetProfile","constructor","params","_GetProfile","GoToEditProfile","_GoToEditProfile","GoToEditAddressProfile","_GoToEditAddressProfile","CancelEditProfile","_CancelEditProfile","CancelEditAddressProfile","_CancelEditAddressProfile","Navigate","path","queryParams","extras","RouterRequest","routerState","event","trigger","RouterNavigation","RouterCancel","storeState","RouterError","RouterDataResolved","RouterNavigated","RouterStateSerializer","DefaultRouterStateSerializer","route","children","c","USER_OPTIONS","InjectionToken","NGXS_ROUTER_PLUGIN_OPTIONS","createRouterPluginOptions","options","RouterState_1","RouterState","_store","_router","_serializer","_ngZone","injector","Subscription","state","_","action","ctx","subscription","NavigationStart","dispatchRouterNavigationLate","lastRoutesRecognized","RoutesRecognized","ResolveEnd","NavigationCancel","NavigationError","NavigationEnd","nextRouterState","t","ɵɵinject","Store","Router","NgZone","Injector","ɵɵdefineInjectable","__decorate","Action","__metadata","Selector","State","NgxsRouterPluginModule","ɵɵdefineNgModule","ɵɵdefineInjector","NgxsModule","LANGS","key","value","SALUTATIONS","GENDER","MARITAL_STATUS","REDUCTION","ProfileService","constructor","config","http","_profileApiUrl","get","sjhProfileUrl","getProfile","getProfilePic","responseType","pipe","map","res","catchError","of","deleteProfilePic","delete","updateProfile","payload","patch","getAllImages","getPartnerData","top","getPartnerDataByName","name","createPartnerData","partnerData","post","updatePartnerData","put","updatePartnerDataByName","propertyValue","error","console","EMPTY","concatMap","copy","additionalProperty","index","findIndex","i","propertyId","removePartnerDataByNameAndId","id","filter","t","sharePartnerData","removePartnerDataSharing","initiateDeletionProfile","cancelDeletionProfile","confirmDeletionProfile","verifyProfile","verificationKey","resendVerificationMail","observe","getTerms","termCode","err","ɵɵinject","ConfigurationService","HttpClient","factory","ɵfac","providedIn","_ProfileService","uploadProgress","callback","tap","event","type","HttpEventType","UploadProgress","Math","round","loaded","total","ProfileMediaApiService","constructor","http","cfg","getNoImage","get","responseType","getNoProfilePic","getAllProfileMedia","getProfileMedia","identifier","getMedia","delete","identifiers","ids","push","Array","isArray","from","pipe","mergeMap","id","catchError","error","console","EMPTY","toArray","map","upload","req","uploadCallback","file","name","additionalType","formData","FormData","append","post","reportProgress","observe","uploadProgress","filter","event","type","HttpEventType","Response","response","body","uploadProfilePicture","__spreadProps","__spreadValues","uploadTravelerPicture","uploadSupportingDocument","ɵɵinject","HttpClient","ConfigurationService","factory","ɵfac","providedIn","_ProfileMediaApiService","errorHandler","arg","error","appInsightsSrv","fallbackMessage","scope","console","trackEventMessage","HttpErrorResponse","JSON","stringify","__spreadProps","__spreadValues","trackTrace","message","severityLevel","SeverityLevel","Error","httpErrorToString","Array","isArray","errorMessage","map","e","join","statusText","ProfileState","_a","constructor","store","profile","insight","profileMediaApi","_errorHandleInitArgs","error","appInsightsSrv","scope","state","data","model","profileForm","loading","hasValue","getProfile","ctx","_1","__async","params","forceRefetch","getState","patchState","firstValueFrom","errorHandler","__spreadProps","__spreadValues","fallbackMessage","httpErrorToString","dispatch","UpdateFormValue","path","value","editProfile","currentProfileImage","profileImage","birthDate","copy","Date","getFullYear","getMonth","getDate","file","uploadProfilePicture","identifier","delete","deleteProfilePic","payload","updateProfile","Navigate","editProfileAddress","currentState","addressForm","goToEditProfile","goToEditAddressProfile","cancelEditProfile","ɵɵinject","Store","ProfileService","AppInsightsService","ProfileMediaApiService","factory","ɵfac","__decorate","Action","GetProfile","EditProfile","EditProfileAddress","GoToEditProfile","GoToEditAddressProfile","CancelEditProfile","CancelEditAddressProfile","Selector","State","name","defaults","BaseComponent","currentLang","langService","constructor","injector","_destroy$","Subject","destroy$","asObservable","mainPageService","get","MainPageService","activatedRoute","ActivatedRoute","router","Router","location","Location","LanguageService","translateService","TranslateService","store","Store","profileState$","select","ProfileState","pipe","filter","profileState","hasValue","map","data","preferredLanguage","takeUntil","subscribe","setPreferredLang","queryParams","lang","Boolean","next","setQueryParamLang","languageChange$","snapshot","url","createUrlTree","relativeTo","__spreadProps","__spreadValues","toString","replaceState","profileHasValue","selectSnapshot","profileLoading","loading","dispatch","GetProfile","distinctUntilChanged","a","b","error","console","MatSnackBar","open","instant","panelClass","ngOnDestroy","complete","ɵɵdirectiveInject","Injector","selectors","decls","vars","template","rf","ctx","encapsulation","_BaseComponent"],"x_google_ignoreList":[0,1,2,3,4,5,7]}