{"version":3,"sources":["node_modules/@angular/material/fesm2022/radio.mjs","node_modules/@angular/material/fesm2022/sidenav.mjs","node_modules/@angular/material/fesm2022/toolbar.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { forwardRef, InjectionToken, EventEmitter, booleanAttribute, Directive, Output, ContentChildren, Input, numberAttribute, ANIMATION_MODULE_TYPE, ElementRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Attribute, ViewChild, NgModule } from '@angular/core';\nimport { MatRipple, _MatInternalFormField, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i2 from '@angular/cdk/collections';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\n// Increasing integer for generating unique ids for radio components.\nconst _c0 = [\"input\"];\nconst _c1 = [\"formField\"];\nconst _c2 = [\"*\"];\nlet nextUniqueId = 0;\n/** Change event object emitted by radio button and radio group. */\nclass MatRadioChange {\n constructor( /** The radio button that emits the change event. */\n source, /** The value of the radio button. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/**\n * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This\n * allows it to support [(ngModel)] and ngControl.\n * @docs-private\n */\nconst MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: /*#__PURE__*/forwardRef(() => MatRadioGroup),\n multi: true\n};\n/**\n * Injection token that can be used to inject instances of `MatRadioGroup`. It serves as\n * alternative token to the actual `MatRadioGroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nconst MAT_RADIO_GROUP = /*#__PURE__*/new InjectionToken('MatRadioGroup');\nconst MAT_RADIO_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-radio-default-options', {\n providedIn: 'root',\n factory: MAT_RADIO_DEFAULT_OPTIONS_FACTORY\n});\nfunction MAT_RADIO_DEFAULT_OPTIONS_FACTORY() {\n return {\n color: 'accent'\n };\n}\n/**\n * A group of radio buttons. May contain one or more `` elements.\n */\nlet MatRadioGroup = /*#__PURE__*/(() => {\n class MatRadioGroup {\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\n get name() {\n return this._name;\n }\n set name(value) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n get labelPosition() {\n return this._labelPosition;\n }\n set labelPosition(v) {\n this._labelPosition = v === 'before' ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n /**\n * Value for the radio-group. Should equal the value of the selected radio button if there is\n * a corresponding radio button with a matching value. If there is not such a corresponding\n * radio button, this value persists to be applied in case a new radio button is added with a\n * matching value.\n */\n get value() {\n return this._value;\n }\n set value(newValue) {\n if (this._value !== newValue) {\n // Set this before proceeding to ensure no circular loop occurs with selection.\n this._value = newValue;\n this._updateSelectedRadioFromValue();\n this._checkSelectedRadioButton();\n }\n }\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n /**\n * The currently selected radio button. If set to a new radio button, the radio group value\n * will be updated to match the new selected button.\n */\n get selected() {\n return this._selected;\n }\n set selected(selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n /** Whether the radio group is disabled */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._markRadiosForCheck();\n }\n /** Whether the radio group is required */\n get required() {\n return this._required;\n }\n set required(value) {\n this._required = value;\n this._markRadiosForCheck();\n }\n constructor(_changeDetector) {\n this._changeDetector = _changeDetector;\n /** Selected value for the radio group. */\n this._value = null;\n /** The HTML name attribute applied to radio buttons in this group. */\n this._name = `mat-radio-group-${nextUniqueId++}`;\n /** The currently selected radio button. Should match value. */\n this._selected = null;\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */\n this._labelPosition = 'after';\n /** Whether the radio group is disabled. */\n this._disabled = false;\n /** Whether the radio group is required. */\n this._required = false;\n /** The method to be called in order to update ngModel */\n this._controlValueAccessorChangeFn = () => {};\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @docs-private\n */\n this.onTouched = () => {};\n /**\n * Event emitted when the group value changes.\n * Change events are only emitted when the value changes due to user interaction with\n * a radio button (the same behavior as ``).\n */\n this.change = new EventEmitter();\n }\n /**\n * Initialize properties once content children are available.\n * This allows us to propagate relevant attributes to associated buttons.\n */\n ngAfterContentInit() {\n // Mark this component as initialized in AfterContentInit because the initial value can\n // possibly be set by NgModel on MatRadioGroup, and it is possible that the OnInit of the\n // NgModel occurs *after* the OnInit of the MatRadioGroup.\n this._isInitialized = true;\n // Clear the `selected` button when it's destroyed since the tabindex of the rest of the\n // buttons depends on it. Note that we don't clear the `value`, because the radio button\n // may be swapped out with a similar one and there are some internal apps that depend on\n // that behavior.\n this._buttonChanges = this._radios.changes.subscribe(() => {\n if (this.selected && !this._radios.find(radio => radio === this.selected)) {\n this._selected = null;\n }\n });\n }\n ngOnDestroy() {\n this._buttonChanges?.unsubscribe();\n }\n /**\n * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n * radio buttons upon their blur.\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n _updateRadioButtonNames() {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n radio._markForCheck();\n });\n }\n }\n /** Updates the `selected` radio button from the internal _value state. */\n _updateSelectedRadioFromValue() {\n // If the value already matches the selected radio, do nothing.\n const isAlreadySelected = this._selected !== null && this._selected.value === this._value;\n if (this._radios && !isAlreadySelected) {\n this._selected = null;\n this._radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this._selected = radio;\n }\n });\n }\n }\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent() {\n if (this._isInitialized) {\n this.change.emit(new MatRadioChange(this._selected, this._value));\n }\n }\n _markRadiosForCheck() {\n if (this._radios) {\n this._radios.forEach(radio => radio._markForCheck());\n }\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n static {\n this.ɵfac = function MatRadioGroup_Factory(t) {\n return new (t || MatRadioGroup)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatRadioGroup,\n selectors: [[\"mat-radio-group\"]],\n contentQueries: function MatRadioGroup_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatRadioButton, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._radios = _t);\n }\n },\n hostAttrs: [\"role\", \"radiogroup\", 1, \"mat-mdc-radio-group\"],\n inputs: {\n color: \"color\",\n name: \"name\",\n labelPosition: \"labelPosition\",\n value: \"value\",\n selected: \"selected\",\n disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disabled\", \"disabled\", booleanAttribute],\n required: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"required\", \"required\", booleanAttribute]\n },\n outputs: {\n change: \"change\"\n },\n exportAs: [\"matRadioGroup\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, {\n provide: MAT_RADIO_GROUP,\n useExisting: MatRadioGroup\n }]), i0.ɵɵInputTransformsFeature]\n });\n }\n }\n return MatRadioGroup;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatRadioButton = /*#__PURE__*/(() => {\n class MatRadioButton {\n /** Whether this radio button is checked. */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n if (this._checked !== value) {\n this._checked = value;\n if (value && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!value && this.radioGroup && this.radioGroup.value === this.value) {\n // When unchecking the selected radio button, update the selected radio\n // property on the group.\n this.radioGroup.selected = null;\n }\n if (value) {\n // Notify all radio buttons with the same name to un-check.\n this._radioDispatcher.notify(this.id, this.name);\n }\n this._changeDetector.markForCheck();\n }\n }\n /** The value of this radio button. */\n get value() {\n return this._value;\n }\n set value(value) {\n if (this._value !== value) {\n this._value = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n // Update checked when the value changed to match the radio group's value\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n /** Whether the label should appear after or before the radio button. Defaults to 'after' */\n get labelPosition() {\n return this._labelPosition || this.radioGroup && this.radioGroup.labelPosition || 'after';\n }\n set labelPosition(value) {\n this._labelPosition = value;\n }\n /** Whether the radio button is disabled. */\n get disabled() {\n return this._disabled || this.radioGroup !== null && this.radioGroup.disabled;\n }\n set disabled(value) {\n this._setDisabled(value);\n }\n /** Whether the radio button is required. */\n get required() {\n return this._required || this.radioGroup && this.radioGroup.required;\n }\n set required(value) {\n this._required = value;\n }\n /** Theme color of the radio button. */\n get color() {\n // As per Material design specifications the selection control radio should use the accent color\n // palette by default. https://material.io/guidelines/components/selection-controls.html\n return this._color || this.radioGroup && this.radioGroup.color || this._providerOverride && this._providerOverride.color || 'accent';\n }\n set color(newValue) {\n this._color = newValue;\n }\n /** ID of the native input element inside `` */\n get inputId() {\n return `${this.id || this._uniqueId}-input`;\n }\n constructor(radioGroup, _elementRef, _changeDetector, _focusMonitor, _radioDispatcher, animationMode, _providerOverride, tabIndex) {\n this._elementRef = _elementRef;\n this._changeDetector = _changeDetector;\n this._focusMonitor = _focusMonitor;\n this._radioDispatcher = _radioDispatcher;\n this._providerOverride = _providerOverride;\n this._uniqueId = `mat-radio-${++nextUniqueId}`;\n /** The unique ID for the radio button. */\n this.id = this._uniqueId;\n /** Whether ripples are disabled inside the radio button */\n this.disableRipple = false;\n /** Tabindex of the radio button. */\n this.tabIndex = 0;\n /**\n * Event emitted when the checked state of this radio button changes.\n * Change events are only emitted when the value changes due to user interaction with\n * the radio button (the same behavior as ``).\n */\n this.change = new EventEmitter();\n /** Whether this radio is checked. */\n this._checked = false;\n /** Value assigned to this radio. */\n this._value = null;\n /** Unregister function for _radioDispatcher */\n this._removeUniqueSelectionListener = () => {};\n // Assertions. Ideally these should be stripped out by the compiler.\n // TODO(jelbourn): Assert that there's no name binding AND a parent radio group.\n this.radioGroup = radioGroup;\n this._noopAnimations = animationMode === 'NoopAnimations';\n if (tabIndex) {\n this.tabIndex = numberAttribute(tabIndex, 0);\n }\n }\n /** Focuses the radio button. */\n focus(options, origin) {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n } else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n /**\n * Marks the radio button as needing checking for change detection.\n * This method is exposed because the parent radio group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\n // update radio button's status\n this._changeDetector.markForCheck();\n }\n ngOnInit() {\n if (this.radioGroup) {\n // If the radio is inside a radio group, determine if it should be checked\n this.checked = this.radioGroup.value === this._value;\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n this._removeUniqueSelectionListener = this._radioDispatcher.listen((id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n ngDoCheck() {\n this._updateTabIndex();\n }\n ngAfterViewInit() {\n this._updateTabIndex();\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin && this.radioGroup) {\n this.radioGroup._touch();\n }\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._removeUniqueSelectionListener();\n }\n /** Dispatch change event with current value. */\n _emitChangeEvent() {\n this.change.emit(new MatRadioChange(this, this._value));\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n _onInputClick(event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `radio-button` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n /** Triggered when the radio button receives an interaction from the user. */\n _onInputInteraction(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n if (!this.checked && !this.disabled) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this._emitChangeEvent();\n if (this.radioGroup) {\n this.radioGroup._controlValueAccessorChangeFn(this.value);\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n }\n /** Triggered when the user clicks on the touch target. */\n _onTouchTargetClick(event) {\n this._onInputInteraction(event);\n if (!this.disabled) {\n // Normally the input should be focused already, but if the click\n // comes from the touch target, then we might have to focus it ourselves.\n this._inputElement.nativeElement.focus();\n }\n }\n /** Sets the disabled state and marks for check if a change occurred. */\n _setDisabled(value) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._changeDetector.markForCheck();\n }\n }\n /** Gets the tabindex for the underlying input element. */\n _updateTabIndex() {\n const group = this.radioGroup;\n let value;\n // Implement a roving tabindex if the button is inside a group. For most cases this isn't\n // necessary, because the browser handles the tab order for inputs inside a group automatically,\n // but we need an explicitly higher tabindex for the selected button in order for things like\n // the focus trap to pick it up correctly.\n if (!group || !group.selected || this.disabled) {\n value = this.tabIndex;\n } else {\n value = group.selected === this ? this.tabIndex : -1;\n }\n if (value !== this._previousTabIndex) {\n // We have to set the tabindex directly on the DOM node, because it depends on\n // the selected state which is prone to \"changed after checked errors\".\n const input = this._inputElement?.nativeElement;\n if (input) {\n input.setAttribute('tabindex', value + '');\n this._previousTabIndex = value;\n }\n }\n }\n static {\n this.ɵfac = function MatRadioButton_Factory(t) {\n return new (t || MatRadioButton)(i0.ɵɵdirectiveInject(MAT_RADIO_GROUP, 8), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.FocusMonitor), i0.ɵɵdirectiveInject(i2.UniqueSelectionDispatcher), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_RADIO_DEFAULT_OPTIONS, 8), i0.ɵɵinjectAttribute('tabindex'));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatRadioButton,\n selectors: [[\"mat-radio-button\"]],\n viewQuery: function MatRadioButton_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 7, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._inputElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._rippleTrigger = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-radio-button\"],\n hostVars: 15,\n hostBindings: function MatRadioButton_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focus\", function MatRadioButton_focus_HostBindingHandler() {\n return ctx._inputElement.nativeElement.focus();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"tabindex\", null)(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n i0.ɵɵclassProp(\"mat-primary\", ctx.color === \"primary\")(\"mat-accent\", ctx.color === \"accent\")(\"mat-warn\", ctx.color === \"warn\")(\"mat-mdc-radio-checked\", ctx.checked)(\"_mat-animation-noopable\", ctx._noopAnimations);\n }\n },\n inputs: {\n id: \"id\",\n name: \"name\",\n ariaLabel: [i0.ɵɵInputFlags.None, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [i0.ɵɵInputFlags.None, \"aria-labelledby\", \"ariaLabelledby\"],\n ariaDescribedby: [i0.ɵɵInputFlags.None, \"aria-describedby\", \"ariaDescribedby\"],\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute],\n tabIndex: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"tabIndex\", \"tabIndex\", value => value == null ? 0 : numberAttribute(value)],\n checked: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"checked\", \"checked\", booleanAttribute],\n value: \"value\",\n labelPosition: \"labelPosition\",\n disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disabled\", \"disabled\", booleanAttribute],\n required: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"required\", \"required\", booleanAttribute],\n color: \"color\"\n },\n outputs: {\n change: \"change\"\n },\n exportAs: [\"matRadioButton\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c2,\n decls: 13,\n vars: 16,\n consts: [[\"formField\", \"\"], [\"input\", \"\"], [\"mat-internal-form-field\", \"\", 3, \"labelPosition\"], [1, \"mdc-radio\"], [1, \"mat-mdc-radio-touch-target\", 3, \"click\"], [\"type\", \"radio\", 1, \"mdc-radio__native-control\", 3, \"change\", \"id\", \"checked\", \"disabled\", \"required\"], [1, \"mdc-radio__background\"], [1, \"mdc-radio__outer-circle\"], [1, \"mdc-radio__inner-circle\"], [\"mat-ripple\", \"\", 1, \"mat-radio-ripple\", \"mat-mdc-focus-indicator\", 3, \"matRippleTrigger\", \"matRippleDisabled\", \"matRippleCentered\"], [1, \"mat-ripple-element\", \"mat-radio-persistent-ripple\"], [1, \"mdc-label\", 3, \"for\"]],\n template: function MatRadioButton_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 2, 0)(2, \"div\", 3)(3, \"div\", 4);\n i0.ɵɵlistener(\"click\", function MatRadioButton_Template_div_click_3_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onTouchTargetClick($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"input\", 5, 1);\n i0.ɵɵlistener(\"change\", function MatRadioButton_Template_input_change_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx._onInputInteraction($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 6);\n i0.ɵɵelement(7, \"div\", 7)(8, \"div\", 8);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\", 9);\n i0.ɵɵelement(10, \"div\", 10);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(11, \"label\", 11);\n i0.ɵɵprojection(12);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"labelPosition\", ctx.labelPosition);\n i0.ɵɵadvance(2);\n i0.ɵɵclassProp(\"mdc-radio--disabled\", ctx.disabled);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"id\", ctx.inputId)(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"required\", ctx.required);\n i0.ɵɵattribute(\"name\", ctx.name)(\"value\", ctx.value)(\"aria-label\", ctx.ariaLabel)(\"aria-labelledby\", ctx.ariaLabelledby)(\"aria-describedby\", ctx.ariaDescribedby);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"matRippleTrigger\", ctx._rippleTrigger.nativeElement)(\"matRippleDisabled\", ctx._isRippleDisabled())(\"matRippleCentered\", true);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"for\", ctx.inputId);\n }\n },\n dependencies: [MatRipple, _MatInternalFormField],\n styles: [\".mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color}.mdc-radio[hidden]{display:none}.mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\";transition:opacity 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.mdc-radio--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-radio--touch .mdc-radio__native-control{top:calc((40px - 48px) / 2);right:calc((40px - 48px) / 2);left:calc((40px - 48px) / 2);width:48px;height:48px}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__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:100%;width:100%}@media screen and (forced-colors: active){.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring{border-color:CanvasText}}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring::after,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__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-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring::after,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring::after{border-color:CanvasText}}.mdc-radio__native-control:checked+.mdc-radio__background,.mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{transition:border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1),border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio--disabled{cursor:default;pointer-events:none}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle{transform:scale(0.5);transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1),border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:disabled+.mdc-radio__background,[aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background{cursor:default}.mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{padding:calc((var(--mdc-radio-state-layer-size) - 20px) / 2)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-selected-icon-color)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-disabled-selected-icon-color)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{opacity:var(--mdc-radio-disabled-selected-icon-opacity)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{opacity:var(--mdc-radio-disabled-selected-icon-opacity)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-unselected-icon-color)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{opacity:var(--mdc-radio-disabled-unselected-icon-opacity)}.mat-mdc-radio-button .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-focus-icon-color)}.mat-mdc-radio-button .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-focus-icon-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-hover-icon-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-hover-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-icon-color)}.mat-mdc-radio-button .mdc-radio:not(:disabled):active .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-pressed-icon-color)}.mat-mdc-radio-button .mdc-radio:not(:disabled):active .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-pressed-icon-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-hover-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-icon-color)}.mat-mdc-radio-button .mdc-radio:not(:disabled):active .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-pressed-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__background::before{top:calc(-1 * (var(--mdc-radio-state-layer-size) - 20px) / 2);left:calc(-1 * (var(--mdc-radio-state-layer-size) - 20px) / 2);width:var(--mdc-radio-state-layer-size);height:var(--mdc-radio-state-layer-size)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:calc((var(--mdc-radio-state-layer-size) - var(--mdc-radio-state-layer-size)) / 2);right:calc((var(--mdc-radio-state-layer-size) - var(--mdc-radio-state-layer-size)) / 2);left:calc((var(--mdc-radio-state-layer-size) - var(--mdc-radio-state-layer-size)) / 2);width:var(--mdc-radio-state-layer-size);height:var(--mdc-radio-state-layer-size)}.mat-mdc-radio-button .mdc-radio .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color)}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element{background-color:var(--mat-radio-checked-ripple-color)}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color)}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple .mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-focus-icon-color, black)}.mat-mdc-radio-button.cdk-focused .mat-mdc-focus-indicator::before{content:\\\"\\\"}.mat-mdc-radio-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display)}[dir=rtl] .mat-mdc-radio-touch-target{left:0;right:50%;transform:translate(50%, -50%)}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatRadioButton;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatRadioModule = /*#__PURE__*/(() => {\n class MatRadioModule {\n static {\n this.ɵfac = function MatRadioModule_Factory(t) {\n return new (t || MatRadioModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatRadioModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, CommonModule, MatRippleModule, MatRadioButton, MatCommonModule]\n });\n }\n }\n return MatRadioModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_RADIO_DEFAULT_OPTIONS, MAT_RADIO_DEFAULT_OPTIONS_FACTORY, MAT_RADIO_GROUP, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioButton, MatRadioChange, MatRadioGroup, MatRadioModule };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollable, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, EventEmitter, Optional, Input, Output, ViewChild, QueryList, ANIMATION_MODULE_TYPE, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i4 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport * as i3 from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { filter, map, mapTo, takeUntil, distinctUntilChanged, take, startWith, debounceTime } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nconst _c0 = [\"*\"];\nconst _c1 = [\"content\"];\nconst _c2 = [[[\"mat-drawer\"]], [[\"mat-drawer-content\"]], \"*\"];\nconst _c3 = [\"mat-drawer\", \"mat-drawer-content\", \"*\"];\nfunction MatDrawerContainer_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵlistener(\"click\", function MatDrawerContainer_Conditional_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onBackdropClicked());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"mat-drawer-shown\", ctx_r1._isShowingBackdrop());\n }\n}\nfunction MatDrawerContainer_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"mat-drawer-content\");\n i0.ɵɵprojection(1, 2);\n i0.ɵɵelementEnd();\n }\n}\nconst _c4 = [[[\"mat-sidenav\"]], [[\"mat-sidenav-content\"]], \"*\"];\nconst _c5 = [\"mat-sidenav\", \"mat-sidenav-content\", \"*\"];\nfunction MatSidenavContainer_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵlistener(\"click\", function MatSidenavContainer_Conditional_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onBackdropClicked());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"mat-drawer-shown\", ctx_r1._isShowingBackdrop());\n }\n}\nfunction MatSidenavContainer_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"mat-sidenav-content\");\n i0.ɵɵprojection(1, 2);\n i0.ɵɵelementEnd();\n }\n}\nconst _c6 = \".mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color);background-color:var(--mat-sidenav-content-background-color);box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color)}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color);box-shadow:var(--mat-sidenav-container-elevation-shadow);background-color:var(--mat-sidenav-container-background-color);border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);width:var(--mat-sidenav-container-width);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\";\nconst matDrawerAnimations = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: /*#__PURE__*/trigger('transform', [\n /*#__PURE__*/\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', /*#__PURE__*/style({\n 'transform': 'none',\n 'visibility': 'visible'\n })), /*#__PURE__*/state('void', /*#__PURE__*/style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden'\n })), /*#__PURE__*/transition('void => open-instant', /*#__PURE__*/animate('0ms')), /*#__PURE__*/transition('void <=> open, open-instant => void', /*#__PURE__*/animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))])\n};\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nfunction throwMatDuplicatedDrawerError(position) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n/** Configures whether drawers should use auto sizing by default. */\nconst MAT_DRAWER_DEFAULT_AUTOSIZE = /*#__PURE__*/new InjectionToken('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY\n});\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nconst MAT_DRAWER_CONTAINER = /*#__PURE__*/new InjectionToken('MAT_DRAWER_CONTAINER');\n/** @docs-private */\nfunction MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY() {\n return false;\n}\nlet MatDrawerContent = /*#__PURE__*/(() => {\n class MatDrawerContent extends CdkScrollable {\n constructor(_changeDetectorRef, _container, elementRef, scrollDispatcher, ngZone) {\n super(elementRef, scrollDispatcher, ngZone);\n this._changeDetectorRef = _changeDetectorRef;\n this._container = _container;\n }\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n static {\n this.ɵfac = function MatDrawerContent_Factory(t) {\n return new (t || MatDrawerContent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(forwardRef(() => MatDrawerContainer)), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatDrawerContent,\n selectors: [[\"mat-drawer-content\"]],\n hostAttrs: [1, \"mat-drawer-content\"],\n hostVars: 4,\n hostBindings: function MatDrawerContent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"margin-left\", ctx._container._contentMargins.left, \"px\")(\"margin-right\", ctx._container._contentMargins.right, \"px\");\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkScrollable,\n useExisting: MatDrawerContent\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MatDrawerContent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatDrawerContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nlet MatDrawer = /*#__PURE__*/(() => {\n class MatDrawer {\n /** The side that the drawer is attached to. */\n get position() {\n return this._position;\n }\n set position(value) {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value !== this._position) {\n // Static inputs in Ivy are set before the element is in the DOM.\n if (this._isAttached) {\n this._updatePositionInParent(value);\n }\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n get mode() {\n return this._mode;\n }\n set mode(value) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n get disableClose() {\n return this._disableClose;\n }\n set disableClose(value) {\n this._disableClose = coerceBooleanProperty(value);\n }\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or AutoFocusTarget\n * instead.\n */\n get autoFocus() {\n const value = this._autoFocus;\n // Note that usually we don't allow autoFocus to be set to `first-tabbable` in `side` mode,\n // because we don't know how the sidenav is being used, but in some cases it still makes\n // sense to do it. The consumer can explicitly set `autoFocus`.\n if (value == null) {\n if (this.mode === 'side') {\n return 'dialog';\n } else {\n return 'first-tabbable';\n }\n }\n return value;\n }\n set autoFocus(value) {\n if (value === 'true' || value === 'false' || value == null) {\n value = coerceBooleanProperty(value);\n }\n this._autoFocus = value;\n }\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n this.toggle(coerceBooleanProperty(value));\n }\n constructor(_elementRef, _focusTrapFactory, _focusMonitor, _platform, _ngZone, _interactivityChecker, _doc, _container) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._focusMonitor = _focusMonitor;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._interactivityChecker = _interactivityChecker;\n this._doc = _doc;\n this._container = _container;\n this._focusTrap = null;\n this._elementFocusedBeforeDrawerWasOpened = null;\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n this._enableAnimations = false;\n this._position = 'start';\n this._mode = 'over';\n this._disableClose = false;\n this._opened = false;\n /** Emits whenever the drawer has started animating. */\n this._animationStarted = new Subject();\n /** Emits whenever the drawer is done animating. */\n this._animationEnd = new Subject();\n /** Current state of the sidenav animation. */\n this._animationState = 'void';\n /** Event emitted when the drawer open state is changed. */\n this.openedChange =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter( /* isAsync */true);\n /** Event emitted when the drawer has been opened. */\n this._openedStream = this.openedChange.pipe(filter(o => o), map(() => {}));\n /** Event emitted when the drawer has started opening. */\n this.openedStart = this._animationStarted.pipe(filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0), mapTo(undefined));\n /** Event emitted when the drawer has been closed. */\n this._closedStream = this.openedChange.pipe(filter(o => !o), map(() => {}));\n /** Event emitted when the drawer has started closing. */\n this.closedStart = this._animationStarted.pipe(filter(e => e.fromState !== e.toState && e.toState === 'void'), mapTo(undefined));\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onPositionChanged = new EventEmitter();\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n this._modeChanged = new Subject();\n this.openedChange.subscribe(opened => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement;\n }\n this._takeFocus();\n } else if (this._isFocusWithinDrawer()) {\n this._restoreFocus(this._openedVia || 'program');\n }\n });\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent(this._elementRef.nativeElement, 'keydown').pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }), takeUntil(this._destroyed)).subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }));\n });\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n const {\n fromState,\n toState\n } = event;\n if (toState.indexOf('open') === 0 && fromState === 'void' || toState === 'void' && fromState.indexOf('open') === 0) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n _forceFocus(element, options) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n element.removeEventListener('blur', callback);\n element.removeEventListener('mousedown', callback);\n element.removeAttribute('tabindex');\n };\n element.addEventListener('blur', callback);\n element.addEventListener('mousedown', callback);\n });\n }\n element.focus(options);\n }\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n _focusByCssSelector(selector, options) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(selector);\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n _takeFocus() {\n if (!this._focusTrap) {\n return;\n }\n const element = this._elementRef.nativeElement;\n // When autoFocus is not on the sidenav, if the element cannot be focused or does\n // not exist, focus the sidenav itself so the keyboard navigation still works.\n // We need to check that `focus` is a function due to Universal.\n switch (this.autoFocus) {\n case false:\n case 'dialog':\n return;\n case true:\n case 'first-tabbable':\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n element.focus();\n }\n });\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this.autoFocus);\n break;\n }\n }\n /**\n * Restores focus to the element that was originally focused when the drawer opened.\n * If no element was focused at that time, the focus will be restored to the drawer.\n */\n _restoreFocus(focusOrigin) {\n if (this.autoFocus === 'dialog') {\n return;\n }\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, focusOrigin);\n } else {\n this._elementRef.nativeElement.blur();\n }\n this._elementFocusedBeforeDrawerWasOpened = null;\n }\n /** Whether focus is currently within the drawer. */\n _isFocusWithinDrawer() {\n const activeEl = this._doc.activeElement;\n return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n }\n ngAfterViewInit() {\n this._isAttached = true;\n // Only update the DOM position when the sidenav is positioned at\n // the end since we project the sidenav before the content by default.\n if (this._position === 'end') {\n this._updatePositionInParent('end');\n }\n // Needs to happen after the position is updated\n // so the focus trap anchors are in the right place.\n if (this._platform.isBrowser) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n }\n }\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n ngOnDestroy() {\n this._focusTrap?.destroy();\n this._anchor?.remove();\n this._anchor = null;\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia) {\n return this.toggle(true, openedVia);\n }\n /** Close the drawer. */\n close() {\n return this.toggle(false);\n }\n /** Closes the drawer with context that the backdrop was clicked. */\n _closeViaBackdropClick() {\n // If the drawer is closed upon a backdrop click, we always want to restore focus. We\n // don't need to check whether focus is currently in the drawer, as clicking on the\n // backdrop causes blurs the active element.\n return this._setOpen( /* isOpen */false, /* restoreFocus */true, 'mouse');\n }\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen = !this.opened, openedVia) {\n // If the focus is currently inside the drawer content and we are closing the drawer,\n // restore the focus to the initially focused element (when the drawer opened).\n if (isOpen && openedVia) {\n this._openedVia = openedVia;\n }\n const result = this._setOpen(isOpen, /* restoreFocus */!isOpen && this._isFocusWithinDrawer(), this._openedVia || 'program');\n if (!isOpen) {\n this._openedVia = null;\n }\n return result;\n }\n /**\n * Toggles the opened state of the drawer.\n * @param isOpen Whether the drawer should open or close.\n * @param restoreFocus Whether focus should be restored on close.\n * @param focusOrigin Origin to use when restoring focus.\n */\n _setOpen(isOpen, restoreFocus, focusOrigin) {\n this._opened = isOpen;\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n } else {\n this._animationState = 'void';\n if (restoreFocus) {\n this._restoreFocus(focusOrigin);\n }\n }\n this._updateFocusTrapState();\n return new Promise(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n _getWidth() {\n return this._elementRef.nativeElement ? this._elementRef.nativeElement.offsetWidth || 0 : 0;\n }\n /** Updates the enabled state of the focus trap. */\n _updateFocusTrapState() {\n if (this._focusTrap) {\n // Trap focus only if the backdrop is enabled. Otherwise, allow end user to interact with the\n // sidenav content.\n this._focusTrap.enabled = !!this._container?.hasBackdrop;\n }\n }\n /**\n * Updates the position of the drawer in the DOM. We need to move the element around ourselves\n * when it's in the `end` position so that it comes after the content and the visual order\n * matches the tab order. We also need to be able to move it back to `start` if the sidenav\n * started off as `end` and was changed to `start`.\n */\n _updatePositionInParent(newPosition) {\n // Don't move the DOM node around on the server, because it can throw off hydration.\n if (!this._platform.isBrowser) {\n return;\n }\n const element = this._elementRef.nativeElement;\n const parent = element.parentNode;\n if (newPosition === 'end') {\n if (!this._anchor) {\n this._anchor = this._doc.createComment('mat-drawer-anchor');\n parent.insertBefore(this._anchor, element);\n }\n parent.appendChild(element);\n } else if (this._anchor) {\n this._anchor.parentNode.insertBefore(element, this._anchor);\n }\n }\n static {\n this.ɵfac = function MatDrawer_Factory(t) {\n return new (t || MatDrawer)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.FocusTrapFactory), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i3.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.InteractivityChecker), i0.ɵɵdirectiveInject(DOCUMENT, 8), i0.ɵɵdirectiveInject(MAT_DRAWER_CONTAINER, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatDrawer,\n selectors: [[\"mat-drawer\"]],\n viewQuery: function MatDrawer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._content = _t.first);\n }\n },\n hostAttrs: [\"tabIndex\", \"-1\", 1, \"mat-drawer\"],\n hostVars: 12,\n hostBindings: function MatDrawer_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵsyntheticHostListener(\"@transform.start\", function MatDrawer_animation_transform_start_HostBindingHandler($event) {\n return ctx._animationStarted.next($event);\n })(\"@transform.done\", function MatDrawer_animation_transform_done_HostBindingHandler($event) {\n return ctx._animationEnd.next($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@transform\", ctx._animationState);\n i0.ɵɵattribute(\"align\", null);\n i0.ɵɵclassProp(\"mat-drawer-end\", ctx.position === \"end\")(\"mat-drawer-over\", ctx.mode === \"over\")(\"mat-drawer-push\", ctx.mode === \"push\")(\"mat-drawer-side\", ctx.mode === \"side\")(\"mat-drawer-opened\", ctx.opened);\n }\n },\n inputs: {\n position: \"position\",\n mode: \"mode\",\n disableClose: \"disableClose\",\n autoFocus: \"autoFocus\",\n opened: \"opened\"\n },\n outputs: {\n openedChange: \"openedChange\",\n _openedStream: \"opened\",\n openedStart: \"openedStart\",\n _closedStream: \"closed\",\n closedStart: \"closedStart\",\n onPositionChanged: \"positionChanged\"\n },\n exportAs: [\"matDrawer\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 0,\n consts: [[\"content\", \"\"], [\"cdkScrollable\", \"\", 1, \"mat-drawer-inner-container\"]],\n template: function MatDrawer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 1, 0);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n },\n dependencies: [CdkScrollable],\n encapsulation: 2,\n data: {\n animation: [matDrawerAnimations.transformDrawer]\n },\n changeDetection: 0\n });\n }\n }\n return MatDrawer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * `` component.\n *\n * This is the parent component to one or two ``s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\nlet MatDrawerContainer = /*#__PURE__*/(() => {\n class MatDrawerContainer {\n /** The drawer child with the `start` position. */\n get start() {\n return this._start;\n }\n /** The drawer child with the `end` position. */\n get end() {\n return this._end;\n }\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n get autosize() {\n return this._autosize;\n }\n set autosize(value) {\n this._autosize = coerceBooleanProperty(value);\n }\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n get hasBackdrop() {\n return this._drawerHasBackdrop(this._start) || this._drawerHasBackdrop(this._end);\n }\n set hasBackdrop(value) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable() {\n return this._userContent || this._content;\n }\n constructor(_dir, _element, _ngZone, _changeDetectorRef, viewportRuler, defaultAutosize = false, _animationMode) {\n this._dir = _dir;\n this._element = _element;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** Drawers that belong to this container. */\n this._drawers = new QueryList();\n /** Event emitted when the drawer backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n this._doCheckSubject = new Subject();\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n this._contentMargins = {\n left: null,\n right: null\n };\n this._contentMarginChanges = new Subject();\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n }\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler.change().pipe(takeUntil(this._destroyed)).subscribe(() => this.updateContentMargins());\n this._autosize = defaultAutosize;\n }\n ngAfterContentInit() {\n this._allDrawers.changes.pipe(startWith(this._allDrawers), takeUntil(this._destroyed)).subscribe(drawer => {\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n this._drawers.forEach(drawer => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n if (!this._drawers.length || this._isDrawerOpen(this._start) || this._isDrawerOpen(this._end)) {\n this.updateContentMargins();\n }\n this._changeDetectorRef.markForCheck();\n });\n // Avoid hitting the NgZone through the debounce timeout.\n this._ngZone.runOutsideAngular(() => {\n this._doCheckSubject.pipe(debounceTime(10),\n // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed)).subscribe(() => this.updateContentMargins());\n });\n }\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Calls `open` of both start and end drawers */\n open() {\n this._drawers.forEach(drawer => drawer.open());\n }\n /** Calls `close` of both start and end drawers */\n close() {\n this._drawers.forEach(drawer => drawer.close());\n }\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._getWidth();\n } else if (this._left.mode == 'push') {\n const width = this._left._getWidth();\n left += width;\n right -= width;\n }\n }\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._getWidth();\n } else if (this._right.mode == 'push') {\n const width = this._right._getWidth();\n right += width;\n left -= width;\n }\n }\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null;\n right = right || null;\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {\n left,\n right\n };\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n _watchDrawerToggle(drawer) {\n drawer._animationStarted.pipe(filter(event => event.fromState !== event.toState), takeUntil(this._drawers.changes)).subscribe(event => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n if (drawer.mode !== 'side') {\n drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(() => this._setContainerClass(drawer.opened));\n }\n }\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n _watchDrawerPosition(drawer) {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n /** Subscribes to changes in drawer mode so we can run change detection. */\n _watchDrawerMode(drawer) {\n if (drawer) {\n drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed))).subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n _setContainerClass(isAdd) {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n if (isAdd) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n /** Validate the state of the drawer children components. */\n _validateDrawers() {\n this._start = this._end = null;\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n this._right = this._left = null;\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n /** Whether the container is being pushed to the side by one of the drawers. */\n _isPushed() {\n return this._isDrawerOpen(this._start) && this._start.mode != 'over' || this._isDrawerOpen(this._end) && this._end.mode != 'over';\n }\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawersViaBackdrop();\n }\n _closeModalDrawersViaBackdrop() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end].filter(drawer => drawer && !drawer.disableClose && this._drawerHasBackdrop(drawer)).forEach(drawer => drawer._closeViaBackdropClick());\n }\n _isShowingBackdrop() {\n return this._isDrawerOpen(this._start) && this._drawerHasBackdrop(this._start) || this._isDrawerOpen(this._end) && this._drawerHasBackdrop(this._end);\n }\n _isDrawerOpen(drawer) {\n return drawer != null && drawer.opened;\n }\n // Whether argument drawer should have a backdrop when it opens\n _drawerHasBackdrop(drawer) {\n if (this._backdropOverride == null) {\n return !!drawer && drawer.mode !== 'side';\n }\n return this._backdropOverride;\n }\n static {\n this.ɵfac = function MatDrawerContainer_Factory(t) {\n return new (t || MatDrawerContainer)(i0.ɵɵdirectiveInject(i4.Directionality, 8), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ViewportRuler), i0.ɵɵdirectiveInject(MAT_DRAWER_DEFAULT_AUTOSIZE), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatDrawerContainer,\n selectors: [[\"mat-drawer-container\"]],\n contentQueries: function MatDrawerContainer_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatDrawerContent, 5);\n i0.ɵɵcontentQuery(dirIndex, MatDrawer, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._content = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allDrawers = _t);\n }\n },\n viewQuery: function MatDrawerContainer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(MatDrawerContent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._userContent = _t.first);\n }\n },\n hostAttrs: [1, \"mat-drawer-container\"],\n hostVars: 2,\n hostBindings: function MatDrawerContainer_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-drawer-container-explicit-backdrop\", ctx._backdropOverride);\n }\n },\n inputs: {\n autosize: \"autosize\",\n hasBackdrop: \"hasBackdrop\"\n },\n outputs: {\n backdropClick: \"backdropClick\"\n },\n exportAs: [\"matDrawerContainer\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 4,\n vars: 2,\n consts: [[1, \"mat-drawer-backdrop\"], [1, \"mat-drawer-backdrop\", 3, \"click\"]],\n template: function MatDrawerContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵtemplate(0, MatDrawerContainer_Conditional_0_Template, 1, 2, \"div\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵtemplate(3, MatDrawerContainer_Conditional_3_Template, 2, 0, \"mat-drawer-content\");\n }\n if (rf & 2) {\n i0.ɵɵconditional(0, ctx.hasBackdrop ? 0 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(3, !ctx._content ? 3 : -1);\n }\n },\n dependencies: [MatDrawerContent],\n styles: [\".mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color);background-color:var(--mat-sidenav-content-background-color);box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color)}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color);box-shadow:var(--mat-sidenav-container-elevation-shadow);background-color:var(--mat-sidenav-container-background-color);border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);width:var(--mat-sidenav-container-width);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatDrawerContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSidenavContent = /*#__PURE__*/(() => {\n class MatSidenavContent extends MatDrawerContent {\n constructor(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n static {\n this.ɵfac = function MatSidenavContent_Factory(t) {\n return new (t || MatSidenavContent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(forwardRef(() => MatSidenavContainer)), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSidenavContent,\n selectors: [[\"mat-sidenav-content\"]],\n hostAttrs: [1, \"mat-drawer-content\", \"mat-sidenav-content\"],\n hostVars: 4,\n hostBindings: function MatSidenavContent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"margin-left\", ctx._container._contentMargins.left, \"px\")(\"margin-right\", ctx._container._contentMargins.right, \"px\");\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: CdkScrollable,\n useExisting: MatSidenavContent\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MatSidenavContent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatSidenavContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSidenav = /*#__PURE__*/(() => {\n class MatSidenav extends MatDrawer {\n constructor() {\n super(...arguments);\n this._fixedInViewport = false;\n this._fixedTopGap = 0;\n this._fixedBottomGap = 0;\n }\n /** Whether the sidenav is fixed in the viewport. */\n get fixedInViewport() {\n return this._fixedInViewport;\n }\n set fixedInViewport(value) {\n this._fixedInViewport = coerceBooleanProperty(value);\n }\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n get fixedTopGap() {\n return this._fixedTopGap;\n }\n set fixedTopGap(value) {\n this._fixedTopGap = coerceNumberProperty(value);\n }\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n get fixedBottomGap() {\n return this._fixedBottomGap;\n }\n set fixedBottomGap(value) {\n this._fixedBottomGap = coerceNumberProperty(value);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵMatSidenav_BaseFactory;\n return function MatSidenav_Factory(t) {\n return (ɵMatSidenav_BaseFactory || (ɵMatSidenav_BaseFactory = i0.ɵɵgetInheritedFactory(MatSidenav)))(t || MatSidenav);\n };\n })();\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSidenav,\n selectors: [[\"mat-sidenav\"]],\n hostAttrs: [\"tabIndex\", \"-1\", 1, \"mat-drawer\", \"mat-sidenav\"],\n hostVars: 17,\n hostBindings: function MatSidenav_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"align\", null);\n i0.ɵɵstyleProp(\"top\", ctx.fixedInViewport ? ctx.fixedTopGap : null, \"px\")(\"bottom\", ctx.fixedInViewport ? ctx.fixedBottomGap : null, \"px\");\n i0.ɵɵclassProp(\"mat-drawer-end\", ctx.position === \"end\")(\"mat-drawer-over\", ctx.mode === \"over\")(\"mat-drawer-push\", ctx.mode === \"push\")(\"mat-drawer-side\", ctx.mode === \"side\")(\"mat-drawer-opened\", ctx.opened)(\"mat-sidenav-fixed\", ctx.fixedInViewport);\n }\n },\n inputs: {\n fixedInViewport: \"fixedInViewport\",\n fixedTopGap: \"fixedTopGap\",\n fixedBottomGap: \"fixedBottomGap\"\n },\n exportAs: [\"matSidenav\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 0,\n consts: [[\"content\", \"\"], [\"cdkScrollable\", \"\", 1, \"mat-drawer-inner-container\"]],\n template: function MatSidenav_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 1, 0);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n },\n dependencies: [CdkScrollable],\n encapsulation: 2,\n data: {\n animation: [matDrawerAnimations.transformDrawer]\n },\n changeDetection: 0\n });\n }\n }\n return MatSidenav;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSidenavContainer = /*#__PURE__*/(() => {\n class MatSidenavContainer extends MatDrawerContainer {\n constructor() {\n super(...arguments);\n this._allDrawers = undefined;\n // We need an initializer here to avoid a TS error.\n this._content = undefined;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵMatSidenavContainer_BaseFactory;\n return function MatSidenavContainer_Factory(t) {\n return (ɵMatSidenavContainer_BaseFactory || (ɵMatSidenavContainer_BaseFactory = i0.ɵɵgetInheritedFactory(MatSidenavContainer)))(t || MatSidenavContainer);\n };\n })();\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSidenavContainer,\n selectors: [[\"mat-sidenav-container\"]],\n contentQueries: function MatSidenavContainer_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatSidenavContent, 5);\n i0.ɵɵcontentQuery(dirIndex, MatSidenav, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._content = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allDrawers = _t);\n }\n },\n hostAttrs: [1, \"mat-drawer-container\", \"mat-sidenav-container\"],\n hostVars: 2,\n hostBindings: function MatSidenavContainer_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-drawer-container-explicit-backdrop\", ctx._backdropOverride);\n }\n },\n exportAs: [\"matSidenavContainer\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c5,\n decls: 4,\n vars: 2,\n consts: [[1, \"mat-drawer-backdrop\"], [1, \"mat-drawer-backdrop\", 3, \"click\"]],\n template: function MatSidenavContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c4);\n i0.ɵɵtemplate(0, MatSidenavContainer_Conditional_0_Template, 1, 2, \"div\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵtemplate(3, MatSidenavContainer_Conditional_3_Template, 2, 0, \"mat-sidenav-content\");\n }\n if (rf & 2) {\n i0.ɵɵconditional(0, ctx.hasBackdrop ? 0 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(3, !ctx._content ? 3 : -1);\n }\n },\n dependencies: [MatSidenavContent],\n styles: [_c6],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatSidenavContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatSidenavModule = /*#__PURE__*/(() => {\n class MatSidenavModule {\n static {\n this.ɵfac = function MatSidenavModule_Factory(t) {\n return new (t || MatSidenavModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSidenavModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, CdkScrollableModule, CdkScrollableModule, MatCommonModule]\n });\n }\n }\n return MatSidenavModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_DRAWER_DEFAULT_AUTOSIZE, MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, MatDrawer, MatDrawerContainer, MatDrawerContent, MatSidenav, MatSidenavContainer, MatSidenavContent, MatSidenavModule, matDrawerAnimations, throwMatDuplicatedDrawerError };\n","import * as i0 from '@angular/core';\nimport { Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, ContentChildren, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nconst _c0 = [\"*\", [[\"mat-toolbar-row\"]]];\nconst _c1 = [\"*\", \"mat-toolbar-row\"];\nlet MatToolbarRow = /*#__PURE__*/(() => {\n class MatToolbarRow {\n static {\n this.ɵfac = function MatToolbarRow_Factory(t) {\n return new (t || MatToolbarRow)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatToolbarRow,\n selectors: [[\"mat-toolbar-row\"]],\n hostAttrs: [1, \"mat-toolbar-row\"],\n exportAs: [\"matToolbarRow\"],\n standalone: true\n });\n }\n }\n return MatToolbarRow;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatToolbar = /*#__PURE__*/(() => {\n class MatToolbar {\n constructor(_elementRef, _platform, document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n // TODO: make the document a required param when doing breaking changes.\n this._document = document;\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._checkToolbarMixedModes();\n this._toolbarRows.changes.subscribe(() => this._checkToolbarMixedModes());\n }\n }\n /**\n * Throws an exception when developers are attempting to combine the different toolbar row modes.\n */\n _checkToolbarMixedModes() {\n if (this._toolbarRows.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n // Check if there are any other DOM nodes that can display content but aren't inside of\n // a element.\n const isCombinedUsage = Array.from(this._elementRef.nativeElement.childNodes).filter(node => !(node.classList && node.classList.contains('mat-toolbar-row'))).filter(node => node.nodeType !== (this._document ? this._document.COMMENT_NODE : 8)).some(node => !!(node.textContent && node.textContent.trim()));\n if (isCombinedUsage) {\n throwToolbarMixedModesError();\n }\n }\n }\n static {\n this.ɵfac = function MatToolbar_Factory(t) {\n return new (t || MatToolbar)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatToolbar,\n selectors: [[\"mat-toolbar\"]],\n contentQueries: function MatToolbar_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatToolbarRow, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._toolbarRows = _t);\n }\n },\n hostAttrs: [1, \"mat-toolbar\"],\n hostVars: 6,\n hostBindings: function MatToolbar_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.color ? \"mat-\" + ctx.color : \"\");\n i0.ɵɵclassProp(\"mat-toolbar-multiple-rows\", ctx._toolbarRows.length > 0)(\"mat-toolbar-single-row\", ctx._toolbarRows.length === 0);\n }\n },\n inputs: {\n color: \"color\"\n },\n exportAs: [\"matToolbar\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 2,\n vars: 0,\n template: function MatToolbar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c0);\n i0.ɵɵprojection(0);\n i0.ɵɵprojection(1, 1);\n }\n },\n styles: [\".mat-toolbar{background:var(--mat-toolbar-container-background-color);color:var(--mat-toolbar-container-text-color)}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font);font-size:var(--mat-toolbar-title-text-size);line-height:var(--mat-toolbar-title-text-line-height);font-weight:var(--mat-toolbar-title-text-weight);letter-spacing:var(--mat-toolbar-title-text-tracking);margin:0}.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color:var(--mat-toolbar-container-text-color);--mdc-outlined-button-label-text-color:var(--mat-toolbar-container-text-color)}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height)}}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatToolbar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Throws an exception when attempting to combine the different toolbar row modes.\n * @docs-private\n */\nfunction throwToolbarMixedModesError() {\n throw Error('MatToolbar: Attempting to combine different toolbar modes. ' + 'Either specify multiple `` elements explicitly or just place content ' + 'inside of a `` for a single row.');\n}\nlet MatToolbarModule = /*#__PURE__*/(() => {\n class MatToolbarModule {\n static {\n this.ɵfac = function MatToolbarModule_Factory(t) {\n return new (t || MatToolbarModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatToolbarModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatCommonModule]\n });\n }\n }\n return MatToolbarModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatToolbar, MatToolbarModule, MatToolbarRow, throwToolbarMixedModesError };\n"],"mappings":"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","names":["_c0","_c1","_c2","nextUniqueId","MatRadioChange","source","value","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","forwardRef","MatRadioGroup","MAT_RADIO_GROUP","InjectionToken","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_DEFAULT_OPTIONS_FACTORY","_MatRadioGroup","v","newValue","selected","_changeDetector","EventEmitter","radio","isAlreadySelected","fn","isDisabled","ɵɵdirectiveInject","ChangeDetectorRef","ɵɵdefineDirective","rf","ctx","dirIndex","ɵɵcontentQuery","MatRadioButton","_t","ɵɵqueryRefresh","ɵɵloadQuery","InputFlags","booleanAttribute","ɵɵProvidersFeature","ɵɵInputTransformsFeature","_MatRadioButton","radioGroup","_elementRef","_focusMonitor","_radioDispatcher","animationMode","_providerOverride","tabIndex","numberAttribute","options","origin","id","name","focusOrigin","event","groupValueChanged","group","input","ElementRef","FocusMonitor","UniqueSelectionDispatcher","ANIMATION_MODULE_TYPE","ɵɵinjectAttribute","ɵɵdefineComponent","ɵɵviewQuery","ɵɵlistener","ɵɵattribute","ɵɵclassProp","ɵɵStandaloneFeature","_r1","ɵɵgetCurrentView","ɵɵprojectionDef","ɵɵelementStart","$event","ɵɵrestoreView","ɵɵresetView","ɵɵelementEnd","ɵɵelement","ɵɵprojection","ɵɵproperty","ɵɵadvance","MatRipple","_MatInternalFormField","MatRadioModule","_MatRadioModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","CommonModule","MatRippleModule","_c0","_c1","_c2","_c3","MatDrawerContainer_Conditional_0_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵelementEnd","ɵɵclassProp","MatDrawerContainer_Conditional_3_Template","ɵɵprojection","_c4","_c5","MatSidenavContainer_Conditional_0_Template","MatSidenavContainer_Conditional_3_Template","_c6","matDrawerAnimations","trigger","state","style","transition","animate","MAT_DRAWER_DEFAULT_AUTOSIZE","InjectionToken","MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY","MAT_DRAWER_CONTAINER","MatDrawerContent","_MatDrawerContent","CdkScrollable","_changeDetectorRef","_container","elementRef","scrollDispatcher","ngZone","ɵɵdirectiveInject","ChangeDetectorRef","forwardRef","MatDrawerContainer","ElementRef","ScrollDispatcher","NgZone","ɵɵdefineComponent","rf","ctx","ɵɵstyleProp","ɵɵProvidersFeature","ɵɵInheritDefinitionFeature","ɵɵStandaloneFeature","_c0","ɵɵprojectionDef","ɵɵprojection","MatDrawer","_MatDrawer","value","coerceBooleanProperty","_elementRef","_focusTrapFactory","_focusMonitor","_platform","_ngZone","_interactivityChecker","_doc","Subject","EventEmitter","filter","o","map","e","mapTo","opened","fromEvent","event","hasModifierKey","takeUntil","distinctUntilChanged","x","y","fromState","toState","element","options","callback","selector","elementToFocus","hasMovedFocus","focusOrigin","activeEl","openedVia","isOpen","result","restoreFocus","resolve","take","open","newPosition","parent","FocusTrapFactory","FocusMonitor","Platform","InteractivityChecker","DOCUMENT","ɵɵviewQuery","_c1","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵsyntheticHostListener","$event","ɵɵsyntheticHostProperty","ɵɵattribute","ɵɵclassProp","ɵɵelementStart","ɵɵelementEnd","matDrawerAnimations","_MatDrawerContainer","_dir","_element","viewportRuler","defaultAutosize","_animationMode","QueryList","startWith","drawer","item","debounceTime","left","right","width","merge","isAdd","classList","className","Directionality","ViewportRuler","ANIMATION_MODULE_TYPE","dirIndex","ɵɵcontentQuery","_c3","_c2","ɵɵtemplate","MatDrawerContainer_Conditional_0_Template","MatDrawerContainer_Conditional_3_Template","ɵɵconditional","ɵɵadvance","MatSidenavContent","_MatSidenavContent","changeDetectorRef","container","MatSidenavContainer","MatSidenav","_MatSidenav","coerceNumberProperty","ɵMatSidenav_BaseFactory","t","ɵɵgetInheritedFactory","_MatSidenavContainer","ɵMatSidenavContainer_BaseFactory","_c5","_c4","MatSidenavContainer_Conditional_0_Template","MatSidenavContainer_Conditional_3_Template","_c6","MatSidenavModule","_MatSidenavModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","CdkScrollableModule","_c0","_c1","MatToolbarRow","_MatToolbarRow","ɵɵdefineDirective","MatToolbar","_MatToolbar","_elementRef","_platform","document","ɵɵdirectiveInject","ElementRef","Platform","DOCUMENT","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","ɵɵprojectionDef","ɵɵprojection","MatToolbarModule","_MatToolbarModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule"],"x_google_ignoreList":[0,1,2]}