{"version":3,"sources":["node_modules/@angular/material/fesm2022/radio.mjs","node_modules/@angular/material/fesm2022/autocomplete.mjs","src/app/home/impersonation/impersonation.component.ts","src/app/home/impersonation/impersonation.component.html"],"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: 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 = new InjectionToken('MatRadioGroup');\nconst MAT_RADIO_DEFAULT_OPTIONS = 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 */\nclass 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(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatRadioGroup, [{\n type: Directive,\n args: [{\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, {\n provide: MAT_RADIO_GROUP,\n useExisting: MatRadioGroup\n }],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-mdc-radio-group'\n },\n standalone: true\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }], {\n change: [{\n type: Output\n }],\n _radios: [{\n type: ContentChildren,\n args: [forwardRef(() => MatRadioButton), {\n descendants: true\n }]\n }],\n color: [{\n type: Input\n }],\n name: [{\n type: Input\n }],\n labelPosition: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n required: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\nclass 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(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatRadioButton, [{\n type: Component,\n args: [{\n selector: 'mat-radio-button',\n host: {\n 'class': 'mat-mdc-radio-button',\n '[attr.id]': 'id',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.mat-mdc-radio-checked]': 'checked',\n '[class._mat-animation-noopable]': '_noopAnimations',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n // Note: under normal conditions focus shouldn't land on this element, however it may be\n // programmatically set, for example inside of a focus trap, in this case we want to forward\n // the focus to the native element.\n '(focus)': '_inputElement.nativeElement.focus()'\n },\n exportAs: 'matRadioButton',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [MatRipple, _MatInternalFormField],\n template: \"
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n\",\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 }]\n }], () => [{\n type: MatRadioGroup,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_GROUP]\n }]\n }, {\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i1.FocusMonitor\n }, {\n type: i2.UniqueSelectionDispatcher\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_DEFAULT_OPTIONS]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Attribute,\n args: ['tabindex']\n }]\n }], {\n id: [{\n type: Input\n }],\n name: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }],\n disableRipple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n tabIndex: [{\n type: Input,\n args: [{\n transform: value => value == null ? 0 : numberAttribute(value)\n }]\n }],\n checked: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n value: [{\n type: Input\n }],\n labelPosition: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n required: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n color: [{\n type: Input\n }],\n change: [{\n type: Output\n }],\n _inputElement: [{\n type: ViewChild,\n args: ['input']\n }],\n _rippleTrigger: [{\n type: ViewChild,\n args: ['formField', {\n read: ElementRef,\n static: true\n }]\n }]\n });\n})();\nclass 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(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatRadioModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule, MatRippleModule, MatRadioGroup, MatRadioButton],\n exports: [MatCommonModule, MatRadioGroup, MatRadioButton]\n }]\n }], null, null);\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 i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, booleanAttribute, TemplateRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewChild, ContentChildren, Input, Output, Directive, forwardRef, inject, Optional, Host, NgModule } from '@angular/core';\nimport { MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nexport { MatOptgroup, MatOption } from '@angular/material/core';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { ActiveDescendantKeyManager, removeAriaReferencedId, addAriaReferencedId } from '@angular/cdk/a11y';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport { trigger, state, style, transition, group, animate } from '@angular/animations';\nimport { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';\nimport { ESCAPE, hasModifierKey, UP_ARROW, ENTER, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i4 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { startWith, switchMap, take, filter, map, tap, delay } from 'rxjs/operators';\nimport * as i2 from '@angular/cdk/bidi';\n\n// Animation values come from\n// https://github.com/material-components/material-components-web/blob/master/packages/mdc-menu-surface/_mixins.scss\n// TODO(mmalerba): Ideally find a way to import the values from MDC's code.\nconst _c0 = [\"panel\"];\nconst _c1 = [\"*\"];\nfunction MatAutocomplete_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1, 0);\n i0.ɵɵlistener(\"@panelAnimation.done\", function MatAutocomplete_ng_template_0_Template_div_animation_panelAnimation_done_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._animationDone.next($event));\n });\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const formFieldId_r3 = ctx.id;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1._classList);\n i0.ɵɵclassProp(\"mat-mdc-autocomplete-visible\", ctx_r1.showPanel)(\"mat-mdc-autocomplete-hidden\", !ctx_r1.showPanel)(\"mat-primary\", ctx_r1._color === \"primary\")(\"mat-accent\", ctx_r1._color === \"accent\")(\"mat-warn\", ctx_r1._color === \"warn\");\n i0.ɵɵproperty(\"id\", ctx_r1.id)(\"@panelAnimation\", ctx_r1.isOpen ? \"visible\" : \"hidden\");\n i0.ɵɵattribute(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1._getPanelAriaLabelledby(formFieldId_r3));\n }\n}\nconst panelAnimation = trigger('panelAnimation', [state('void, hidden', style({\n opacity: 0,\n transform: 'scaleY(0.8)'\n})), transition(':enter, hidden => visible', [group([animate('0.03s linear', style({\n opacity: 1\n})), animate('0.12s cubic-bezier(0, 0, 0.2, 1)', style({\n transform: 'scaleY(1)'\n}))])]), transition(':leave, visible => hidden', [animate('0.075s linear', style({\n opacity: 0\n}))])]);\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n constructor( /** Reference to the autocomplete panel that emitted the event. */\n source, /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return {\n autoActiveFirstOption: false,\n autoSelectActiveOption: false,\n hideSingleSelectionIndicator: false,\n requireSelection: false\n };\n}\n/** Autocomplete component. */\nclass MatAutocomplete {\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n /** @docs-private Sets the theme color of the panel. */\n _setColor(value) {\n this._color = value;\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n this._classList = value;\n this._elementRef.nativeElement.className = '';\n }\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncParentProperties();\n }\n /** Syncs the parent state with the individual options. */\n _syncParentProperties() {\n if (this.options) {\n for (const option of this.options) {\n option._changeDetectorRef.markForCheck();\n }\n }\n }\n constructor(_changeDetectorRef, _elementRef, _defaults, platform) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._defaults = _defaults;\n this._activeOptionChanges = Subscription.EMPTY;\n /** Emits when the panel animation is done. Null if the panel doesn't animate. */\n this._animationDone = new EventEmitter();\n /** Whether the autocomplete panel should be visible, depending on option length. */\n this.showPanel = false;\n this._isOpen = false;\n /** Function that maps an option's control value to its display value in the trigger. */\n this.displayWith = null;\n /** Event that is emitted whenever an option from the list is selected. */\n this.optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n this.opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n this.closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n this.optionActivated = new EventEmitter();\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this.autoActiveFirstOption = !!_defaults.autoActiveFirstOption;\n this.autoSelectActiveOption = !!_defaults.autoSelectActiveOption;\n this.requireSelection = !!_defaults.requireSelection;\n this._hideSingleSelectionIndicator = this._defaults.hideSingleSelectionIndicator ?? false;\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap().skipPredicate(this._skipPredicate);\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({\n source: this,\n option: this.options.toArray()[index] || null\n });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._activeOptionChanges.unsubscribe();\n this._animationDone.complete();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n // `skipPredicate` determines if key manager should avoid putting a given option in the tab\n // order. Allow disabled list items to receive focus via keyboard to align with WAI ARIA\n // recommendation.\n //\n // Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\n // makes a few exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n //\n // The user can focus disabled options using the keyboard, but the user cannot click disabled\n // options.\n _skipPredicate() {\n return false;\n }\n static {\n this.ɵfac = function MatAutocomplete_Factory(t) {\n return new (t || MatAutocomplete)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS), i0.ɵɵdirectiveInject(i1.Platform));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatAutocomplete,\n selectors: [[\"mat-autocomplete\"]],\n contentQueries: function MatAutocomplete_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MatOption, 5);\n i0.ɵɵcontentQuery(dirIndex, MAT_OPTGROUP, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.options = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionGroups = _t);\n }\n },\n viewQuery: function MatAutocomplete_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 7);\n i0.ɵɵviewQuery(_c0, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panel = _t.first);\n }\n },\n hostAttrs: [1, \"mat-mdc-autocomplete\"],\n inputs: {\n ariaLabel: [i0.ɵɵInputFlags.None, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [i0.ɵɵInputFlags.None, \"aria-labelledby\", \"ariaLabelledby\"],\n displayWith: \"displayWith\",\n autoActiveFirstOption: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"autoActiveFirstOption\", \"autoActiveFirstOption\", booleanAttribute],\n autoSelectActiveOption: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"autoSelectActiveOption\", \"autoSelectActiveOption\", booleanAttribute],\n requireSelection: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"requireSelection\", \"requireSelection\", booleanAttribute],\n panelWidth: \"panelWidth\",\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute],\n classList: [i0.ɵɵInputFlags.None, \"class\", \"classList\"],\n hideSingleSelectionIndicator: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute]\n },\n outputs: {\n optionSelected: \"optionSelected\",\n opened: \"opened\",\n closed: \"closed\",\n optionActivated: \"optionActivated\"\n },\n exportAs: [\"matAutocomplete\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatAutocomplete\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c1,\n decls: 1,\n vars: 0,\n consts: [[\"panel\", \"\"], [\"role\", \"listbox\", 1, \"mat-mdc-autocomplete-panel\", \"mdc-menu-surface\", \"mdc-menu-surface--open\", 3, \"id\"]],\n template: function MatAutocomplete_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatAutocomplete_ng_template_0_Template, 3, 16, \"ng-template\");\n }\n },\n styles: [\"div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape);box-shadow:var(--mat-autocomplete-container-elevation-shadow);background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}\"],\n encapsulation: 2,\n data: {\n animation: [panelAnimation]\n },\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatAutocomplete, [{\n type: Component,\n args: [{\n selector: 'mat-autocomplete',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n host: {\n 'class': 'mat-mdc-autocomplete'\n },\n providers: [{\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatAutocomplete\n }],\n animations: [panelAnimation],\n standalone: true,\n template: \"\\n \\n \\n \\n\\n\",\n styles: [\"div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape);box-shadow:var(--mat-autocomplete-container-elevation-shadow);background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}\"]\n }]\n }], () => [{\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }]\n }, {\n type: i1.Platform\n }], {\n template: [{\n type: ViewChild,\n args: [TemplateRef, {\n static: true\n }]\n }],\n panel: [{\n type: ViewChild,\n args: ['panel']\n }],\n options: [{\n type: ContentChildren,\n args: [MatOption, {\n descendants: true\n }]\n }],\n optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, {\n descendants: true\n }]\n }],\n ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }],\n ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }],\n displayWith: [{\n type: Input\n }],\n autoActiveFirstOption: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n autoSelectActiveOption: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n requireSelection: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n panelWidth: [{\n type: Input\n }],\n disableRipple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n optionSelected: [{\n type: Output\n }],\n opened: [{\n type: Output\n }],\n closed: [{\n type: Output\n }],\n optionActivated: [{\n type: Output\n }],\n classList: [{\n type: Input,\n args: ['class']\n }],\n hideSingleSelectionIndicator: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin {\n constructor( /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static {\n this.ɵfac = function MatAutocompleteOrigin_Factory(t) {\n return new (t || MatAutocompleteOrigin)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAutocompleteOrigin,\n selectors: [[\"\", \"matAutocompleteOrigin\", \"\"]],\n exportAs: [\"matAutocompleteOrigin\"],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatAutocompleteOrigin, [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], null);\n})();\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' + 'Make sure that the id passed to the `matAutocomplete` is correct and that ' + \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY\n};\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass MatAutocompleteTrigger {\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus = this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => {};\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => {};\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n /** Class to apply to the panel when it's above the input. */\n this._aboveClass = 'mat-mdc-autocomplete-panel-above';\n this._overlayAttached = false;\n /** Stream of changes to the selection state of the autocomplete options. */\n this.optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));\n });\n /** Handles keyboard events coming from the overlay panel. */\n this._handlePanelKeydown = event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if (event.keyCode === ESCAPE && !hasModifierKey(event) || event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey')) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n };\n /**\n * Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is\n * inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options\n * panel. Track the modal we have changed so we can undo the changes on destroy.\n */\n this._trackedModal = null;\n this._scrollStrategy = scrollStrategy;\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n this._clearFromModal();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._openPanelInternal();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // The `NgZone.onStable` always emits outside of the Angular zone,\n // so all the subscriptions from `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n // Only reset if this trigger is the latest one that opened the\n // autocomplete since another may have taken it over.\n if (this.autocomplete._latestOpeningTrigger === this) {\n this.autocomplete._isOpen = false;\n this.autocomplete._latestOpeningTrigger = null;\n }\n this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n this._updatePanelState();\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n // Remove aria-owns attribute when the autocomplete is no longer visible.\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', this.autocomplete.id);\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => event instanceof MatOptionSelectionChange ? event : null));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField.getConnectedOverlayOrigin().nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return this._overlayAttached && clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement && (!formField || !formField.contains(clickTarget)) && (!customOrigin || !customOrigin.contains(clickTarget)) && !!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget);\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n this._valueOnLastKeydown = this._element.nativeElement.value;\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n } else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || isArrowKey && !hasModifier && this.panelOpen) {\n this.autocomplete._keyManager.onKeydown(event);\n } else if (isArrowKey && this._canOpen()) {\n this._openPanelInternal(this._valueOnLastKeydown);\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._valueOnLastKeydown;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n // If selection is required we don't write to the CVA while the user is typing.\n // At the end of the selection either the user will have picked something\n // or we'll reset the value back to null.\n if (!this.autocomplete || !this.autocomplete.requireSelection) {\n this._onChange(value);\n }\n if (!value) {\n this._clearPreviousSelectedOption(null, false);\n } else if (this.panelOpen && !this.autocomplete.requireSelection) {\n // Note that we don't reset this when `requireSelection` is enabled,\n // because the option will be reset when the panel is closed.\n const selectedOption = this.autocomplete.options?.find(option => option.selected);\n if (selectedOption) {\n const display = this._getDisplayValue(selectedOption.value);\n if (value !== display) {\n selectedOption.deselect(false);\n }\n }\n }\n if (this._canOpen() && this._document.activeElement === event.target) {\n // When the `input` event fires, the input's value will have already changed. This means\n // that if we take the `this._element.nativeElement.value` directly, it'll be one keystroke\n // behind. This can be a problem when the user selects a value, changes a character while\n // the input still has focus and then clicks away (see #28432). To work around it, we\n // capture the value in `keydown` so we can use it here.\n const valueOnAttach = this._valueOnLastKeydown ?? this._element.nativeElement.value;\n this._valueOnLastKeydown = null;\n this._openPanelInternal(valueOnAttach);\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n } else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay(this._previousValue);\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this._openPanelInternal();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n } else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n if (this._formField) {\n this._formField.floatLabel = 'auto';\n }\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()),\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return merge(firstStable, optionChanges).pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n // The `NgZone.onStable` always emits outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n this._zone.run(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this._updatePanelState();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this._emitOpened();\n } else {\n this.autocomplete.closed.emit();\n }\n }\n });\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event));\n }\n /**\n * Emits the opened event once it's known that the panel will be shown and stores\n * the state of the trigger right before the opening sequence was finished.\n */\n _emitOpened() {\n this.autocomplete.opened.emit();\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n /** Given a value, returns the string that should be shown within the input. */\n _getDisplayValue(value) {\n const autocomplete = this.autocomplete;\n return autocomplete && autocomplete.displayWith ? autocomplete.displayWith(value) : value;\n }\n _assignOptionValue(value) {\n const toDisplay = this._getDisplayValue(value);\n if (value == null) {\n this._clearPreviousSelectedOption(null, false);\n }\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n } else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const panel = this.autocomplete;\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n // TODO(crisbeto): this should wait until the animation is done, otherwise the value\n // gets reset while the panel is still animating which looks glitchy. It'll likely break\n // some tests to change it at this point.\n this._onChange(toSelect.value);\n panel._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n } else if (panel.requireSelection && this._element.nativeElement.value !== this._valueOnAttach) {\n this._clearPreviousSelectedOption(null);\n this._assignOptionValue(null);\n // Wait for the animation to finish before clearing the form control value, otherwise\n // the options might change while the animation is running which looks glitchy.\n if (panel._animationDone) {\n panel._animationDone.pipe(take(1)).subscribe(() => this._onChange(null));\n } else {\n this._onChange(null);\n }\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip, emitEvent) {\n // Null checks are necessary here, because the autocomplete\n // or its options may not have been assigned yet.\n this.autocomplete?.options?.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect(emitEvent);\n }\n });\n }\n _openPanelInternal(valueOnAttach = this._element.nativeElement.value) {\n this._attachOverlay(valueOnAttach);\n this._floatLabel();\n // Add aria-owns attribute when the autocomplete becomes visible.\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n addAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n }\n _attachOverlay(valueOnAttach) {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId()\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({\n width: this._getPanelWidth()\n });\n }\n });\n } else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({\n width: this._getPanelWidth()\n });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._valueOnAttach = valueOnAttach;\n this._valueOnLastKeydown = null;\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._isOpen = this._overlayAttached = true;\n this.autocomplete._latestOpeningTrigger = this;\n this.autocomplete._setColor(this._formField?.color);\n this._updatePanelState();\n this._applyModalPanelOwnership();\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this._emitOpened();\n }\n }\n /** Updates the panel's visibility state and any trigger state tied to id. */\n _updatePanelState() {\n this.autocomplete._setVisibility();\n // Note that here we subscribe and unsubscribe based on the panel's visiblity state,\n // because the act of subscribing will prevent events from reaching other overlays and\n // we don't want to block the events if there are no options.\n if (this.panelOpen) {\n const overlayRef = this._overlayRef;\n if (!this._keydownSubscription) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);\n }\n if (!this._outsideClickSubscription) {\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();\n }\n } else {\n this._keydownSubscription?.unsubscribe();\n this._outsideClickSubscription?.unsubscribe();\n this._keydownSubscription = this._outsideClickSubscription = null;\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir ?? undefined,\n panelClass: this._defaults?.overlayPanelClass\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(false).withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [{\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass\n }, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n panelClass\n }];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n } else if (this.position === 'below') {\n positions = belowPositions;\n } else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Reset the active item to -1. This is so that pressing arrow keys will activate the correct\n * option.\n *\n * If the consumer opted-in to automatically activatating the first option, activate the first\n * *enabled* option.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Find the index of the first *enabled* option. Avoid calling `_keyManager.setActiveItem`\n // because it activates the first option that passes the skip predicate, rather than the\n // first *enabled* option.\n let firstEnabledOptionIndex = -1;\n for (let index = 0; index < autocomplete.options.length; index++) {\n const option = autocomplete.options.get(index);\n if (!option.disabled) {\n firstEnabledOptionIndex = index;\n break;\n }\n }\n autocomplete._keyManager.setActiveItem(firstEnabledOptionIndex);\n } else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this.autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document?.defaultView || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n } else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /**\n * If the autocomplete trigger is inside of an `aria-modal` element, connect\n * that modal to the options panel with `aria-owns`.\n *\n * For some browser + screen reader combinations, when navigation is inside\n * of an `aria-modal` element, the screen reader treats everything outside\n * of that modal as hidden or invisible.\n *\n * This causes a problem when the combobox trigger is _inside_ of a modal, because the\n * options panel is rendered _outside_ of that modal, preventing screen reader navigation\n * from reaching the panel.\n *\n * We can work around this issue by applying `aria-owns` to the modal with the `id` of\n * the options panel. This effectively communicates to assistive technology that the\n * options panel is part of the same interaction as the modal.\n *\n * At time of this writing, this issue is present in VoiceOver.\n * See https://github.com/angular/components/issues/20694\n */\n _applyModalPanelOwnership() {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `LiveAnnouncer` and any other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modal = this._element.nativeElement.closest('body > .cdk-overlay-container [aria-modal=\"true\"]');\n if (!modal) {\n // Most commonly, the autocomplete trigger is not inside a modal.\n return;\n }\n const panelId = this.autocomplete.id;\n if (this._trackedModal) {\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n }\n addAriaReferencedId(modal, 'aria-owns', panelId);\n this._trackedModal = modal;\n }\n /** Clears the references to the listbox overlay element from the modal it was added to. */\n _clearFromModal() {\n if (this._trackedModal) {\n const panelId = this.autocomplete.id;\n removeAriaReferencedId(this._trackedModal, 'aria-owns', panelId);\n this._trackedModal = null;\n }\n }\n static {\n this.ɵfac = function MatAutocompleteTrigger_Factory(t) {\n return new (t || MatAutocompleteTrigger)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1$1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(MAT_FORM_FIELD, 9), i0.ɵɵdirectiveInject(DOCUMENT, 8), i0.ɵɵdirectiveInject(i3.ViewportRuler), i0.ɵɵdirectiveInject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatAutocompleteTrigger,\n selectors: [[\"input\", \"matAutocomplete\", \"\"], [\"textarea\", \"matAutocomplete\", \"\"]],\n hostAttrs: [1, \"mat-mdc-autocomplete-trigger\"],\n hostVars: 7,\n hostBindings: function MatAutocompleteTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focusin\", function MatAutocompleteTrigger_focusin_HostBindingHandler() {\n return ctx._handleFocus();\n })(\"blur\", function MatAutocompleteTrigger_blur_HostBindingHandler() {\n return ctx._onTouched();\n })(\"input\", function MatAutocompleteTrigger_input_HostBindingHandler($event) {\n return ctx._handleInput($event);\n })(\"keydown\", function MatAutocompleteTrigger_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n })(\"click\", function MatAutocompleteTrigger_click_HostBindingHandler() {\n return ctx._handleClick();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"autocomplete\", ctx.autocompleteAttribute)(\"role\", ctx.autocompleteDisabled ? null : \"combobox\")(\"aria-autocomplete\", ctx.autocompleteDisabled ? null : \"list\")(\"aria-activedescendant\", ctx.panelOpen && ctx.activeOption ? ctx.activeOption.id : null)(\"aria-expanded\", ctx.autocompleteDisabled ? null : ctx.panelOpen.toString())(\"aria-controls\", ctx.autocompleteDisabled || !ctx.panelOpen ? null : ctx.autocomplete == null ? null : ctx.autocomplete.id)(\"aria-haspopup\", ctx.autocompleteDisabled ? null : \"listbox\");\n }\n },\n inputs: {\n autocomplete: [i0.ɵɵInputFlags.None, \"matAutocomplete\", \"autocomplete\"],\n position: [i0.ɵɵInputFlags.None, \"matAutocompletePosition\", \"position\"],\n connectedTo: [i0.ɵɵInputFlags.None, \"matAutocompleteConnectedTo\", \"connectedTo\"],\n autocompleteAttribute: [i0.ɵɵInputFlags.None, \"autocomplete\", \"autocompleteAttribute\"],\n autocompleteDisabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"matAutocompleteDisabled\", \"autocompleteDisabled\", booleanAttribute]\n },\n exportAs: [\"matAutocompleteTrigger\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([MAT_AUTOCOMPLETE_VALUE_ACCESSOR]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatAutocompleteTrigger, [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-mdc-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-controls]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()'\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }, {\n type: i1$1.Overlay\n }, {\n type: i0.ViewContainerRef\n }, {\n type: i0.NgZone\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }]\n }, {\n type: i2.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: i4.MatFormField,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: i3.ViewportRuler\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }]\n }], {\n autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }],\n position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }],\n connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }],\n autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }],\n autocompleteDisabled: [{\n type: Input,\n args: [{\n alias: 'matAutocompleteDisabled',\n transform: booleanAttribute\n }]\n }]\n });\n})();\nclass MatAutocompleteModule {\n static {\n this.ɵfac = function MatAutocompleteModule_Factory(t) {\n return new (t || MatAutocompleteModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatAutocompleteModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule, CdkScrollableModule, MatOptionModule, MatCommonModule]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatAutocompleteModule, [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule, MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n exports: [CdkScrollableModule, MatAutocomplete, MatOptionModule, MatCommonModule, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, getMatAutocompleteMissingPanelError };\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators\r\n} from '@angular/forms';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { applyStyles } from '@popperjs/core';\r\nimport { SignUpRoles } from '@portal/configs';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport {\r\n BehaviorSubject,\r\n debounceTime,\r\n distinctUntilChanged,\r\n Observable,\r\n of,\r\n Subscription,\r\n switchMap,\r\n} from 'rxjs';\r\nimport { AppConstants } from 'src/app/appconstants';\r\nimport { AuthService } from 'src/app/services/authguard/auth.service';\r\nimport { ProfileService } from 'src/app/services/profile.service';\r\nimport { EmployerProfileDto, UserProfileDto } from 'src/app/utils/types';\r\n@Component({\r\n selector: 'app-impersonation',\r\n templateUrl: './impersonation.component.html',\r\n styleUrl: './impersonation.component.css',\r\n})\r\nexport class ImpersonationComponent implements OnInit, OnDestroy {\r\n userControl = new FormControl();\r\n impersonationForm!: FormGroup;\r\n filteredUsers!: UserProfileDto[];\r\n filteredEmployer!: EmployerProfileDto[];\r\n filteredCP!: EmployerProfileDto[];\r\n subscription: Subscription | null = null;\r\n selectedValueForImpersonation: string = '';\r\n defaultUsers: UserProfileDto[] = [];\r\n userData$ = new Observable();\r\n userSearchQuery$ = new BehaviorSubject('');\r\n employerData$ = new Observable();\r\n EmployerSearchQuery$ = new BehaviorSubject('');\r\n cpSearchQuery$ = new BehaviorSubject('');\r\n cpData$ = new Observable();\r\n @ViewChild('auto') autoComplete!: ElementRef;\r\n constructor(\r\n private fb: FormBuilder,\r\n public dialogRef: MatDialogRef,\r\n private toastr: ToastrService,\r\n private profileService: ProfileService,\r\n private readonly auth: AuthService,\r\n private router: Router\r\n ) {}\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n this.subscription = null;\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.impersonationForm = this.fb.group({\r\n role: ['', Validators.required],\r\n selectedUser: ['', Validators.required],\r\n });\r\n this.impersonationForm.get('role')?.valueChanges.subscribe(() => {\r\n this.impersonationForm.get('selectedUser')?.reset();\r\n this.selectedValueForImpersonation = '';\r\n this.filteredUsers = this.defaultUsers; // Reset filtered users\r\n });\r\n this.updateUserList();\r\n this.updateEmployerList();\r\n this.updateCPList();\r\n }\r\n\r\n onRoleChange(): void {\r\n // Reset the selectedUser field when the role changes\r\n this.userControl.reset();\r\n }\r\n \r\n private updateUserList() {\r\n this.userData$ = this.userSearchQuery$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n switchMap((searchTerm: string) => {\r\n if (searchTerm.trim().length < 1) return of({ data: [] });\r\n return this.filterUsers(searchTerm);\r\n })\r\n );\r\n this.userData$.subscribe((users) => {\r\n this.filteredUsers = users.data?.length > 0 ? users.data : [];\r\n });\r\n }\r\n private updateEmployerList() {\r\n this.employerData$ = this.EmployerSearchQuery$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n switchMap((searchTerm: string) => {\r\n if (searchTerm.trim().length < 1) return of({ data: [] });\r\n return this.filterUsers(searchTerm);\r\n })\r\n );\r\n this.employerData$.subscribe((employers) => {\r\n this.filteredEmployer = employers.data?.length > 0 ? employers.data : [];\r\n });\r\n }\r\n\r\n private updateCPList() {\r\n this.cpData$ = this.cpSearchQuery$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n switchMap((searchTerm: string) => {\r\n if (searchTerm.trim().length < 1) return of({ data: [] });\r\n return this.filterUsers(searchTerm);\r\n })\r\n );\r\n this.cpData$.subscribe((users) => {\r\n this.filteredCP = users.data?.length > 0 ? users.data : [];\r\n });\r\n }\r\n\r\n onSelection(selectedValue: string) {\r\n this.selectedValueForImpersonation = selectedValue;\r\n }\r\n filterUsers(searchTerm: string) {\r\n const role = this.impersonationForm.get('role')?.value;\r\n if (role === 'jobSeeker') {\r\n return this.profileService.filteredByName(searchTerm);\r\n } else if (role === 'employer') {\r\n return this.profileService.filteredEmployerByName(searchTerm);\r\n } else if (role === 'communityPartner') {\r\n return this.profileService.filteredCPByName(searchTerm); }\r\n else {\r\n return new Observable();\r\n }\r\n }\r\n onUserSearch(event: Event): void {\r\n const searchTerm = (event.target as HTMLInputElement).value;\r\n this.userSearchQuery$.next(searchTerm);\r\n }\r\n\r\n onEmployerSearch(event: Event): void {\r\n const searchTerm = (event.target as HTMLInputElement).value;\r\n this.EmployerSearchQuery$.next(searchTerm);\r\n }\r\n\r\n onCommunityPartnerSearch(event: Event): void {\r\n const searchTerm = (event.target as HTMLInputElement).value;\r\n this.cpSearchQuery$.next(searchTerm);\r\n }\r\n\r\n\r\n\r\n filterByRole(user: any, role: string) {\r\n if (role === 'employer') {\r\n return user.employerId !== undefined;\r\n }\r\n if (role === 'communityPartner') {\r\n return user.partnerId !== undefined;\r\n }\r\n return false;\r\n }\r\n onSave(): void {\r\n const selectedUser = this.selectedValueForImpersonation;\r\n if (!selectedUser) {\r\n alert('no value selected');\r\n return;\r\n }\r\n this.loadUserProfile(selectedUser);\r\n this.dialogRef.close(selectedUser);\r\n }\r\n getUserId(email: string): string {\r\n const role = this.impersonationForm.get('role')?.value;\r\n if (role === 'jobSeeker') {\r\n return this.filteredUsers.find(e => e.email == email)?.id || '';\r\n } else if (role === 'employer') {\r\n return this.filteredEmployer.find(e => e.email == email)?.id || '';\r\n } else if (role === 'communityPartner') {\r\n return this.filteredCP.find(e => e.email == email)?.id || '';\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n private async loadUserProfile(email: string): Promise {\r\n let origuser = this.profileService.getUserClaims();\r\n localStorage.setItem(AppConstants.ORIGINAL_USER, JSON.stringify(origuser));\r\n var userId = this.getUserId(email); \r\n this.profileService.getUserProfileById(userId).subscribe((response: any) => {\r\n const userData = response.data;\r\n var userObj = null;\r\n if(userData.role === AppConstants.COMMPARTNER)\r\n {\r\n userObj = {\r\n userId: userData.cboProfile.id,\r\n firstName: userData.cboProfile.repFirstName,\r\n lastName: userData.cboProfile.repLastName,\r\n employer: userData.employer?.id || null,\r\n role: userData.role,\r\n email: email,\r\n };\r\n }\r\n else if(userData.role === AppConstants.EMPLOYER) {\r\n userObj = {\r\n userId: userData.userProfile.id,\r\n firstName: userData.userProfile.firstName,\r\n lastName: userData.userProfile.lastName,\r\n employer: userData.employer?.id || null,\r\n profileCompletionStatus: true,\r\n role: userData.role,\r\n email: email,\r\n isApproved: userData.employer?.isApproved\r\n };\r\n }\r\n else{\r\n userObj = {\r\n userId: userData.userProfile.id,\r\n firstName: userData.userProfile.firstName,\r\n lastName: userData.userProfile.lastName,\r\n employer: userData.employer?.id || null,\r\n profileCompletionStatus: true,\r\n role: userData.role,\r\n email: email,\r\n };\r\n }\r\n\r\n this.profileService.updateUserName(userObj.firstName + ' ' + userObj.lastName);\r\n\r\n localStorage.setItem(AppConstants.USER, JSON.stringify(userObj));\r\n if (response.data.employer != undefined) {\r\n const employer = {\r\n employerId: response.data.employer.id,\r\n employerName: response.data.employer.name,\r\n einNumber: response.data.employer.einNumber,\r\n };\r\n localStorage.setItem(\r\n AppConstants.EMPLOYERDATA,\r\n JSON.stringify(employer)\r\n );\r\n }\r\n this.auth.loggedIn.next(true);\r\n\r\n if(userData.role === AppConstants.COMMPARTNER) \r\n this.checkcboUserStatus(userData);\r\n else\r\n this.checkUserStatus(userData);\r\n\r\n const isJobSeeker = userData.role === AppConstants.JOBSEEKER;\r\n const isEmployer = userData.role === AppConstants.EMPLOYER;\r\n if (isJobSeeker) {\r\n if (userData.userProfile.firstName) {\r\n this.router.navigate([AppConstants.JOBSEEKER_DASHBOARD]);\r\n } else {\r\n this.gotoProfile(userObj);\r\n }\r\n } else if (isEmployer) {\r\n if (userData.employer?.isApproved) {\r\n this.router.navigate([AppConstants.EMPLOYER_DASHBOARD]);\r\n } else if (userData.employer?.name) {\r\n this.router.navigate([AppConstants.EMPLOYER_PROFILE_URL]);\r\n } else {\r\n this.gotoProfile(userObj);\r\n }\r\n }\r\n else if(userData.role === AppConstants.COMMPARTNER)\r\n {\r\n this.gotoProfile(userObj);\r\n }\r\n });\r\n }\r\n\r\n checkUserStatus(user: any): void {\r\n if (!user.userProfile.isActive) {\r\n this.profileService.enableDisableUser(user.userProfile.id).subscribe({\r\n next: (resp) => {\r\n if (resp.data) {\r\n this.toastr.success(AppConstants.REACTIVATED, '', {\r\n timeOut: 60000,\r\n closeButton: true,\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n console.error('Error enabling user', err);\r\n },\r\n });\r\n }\r\n }\r\n\r\n checkcboUserStatus(user: any): void {\r\n if (!user.cboProfile.isActive) {\r\n this.profileService.enableDisableUser(user.cboProfile.id).subscribe({\r\n next: (resp) => {\r\n if (resp.data) {\r\n this.toastr.success(AppConstants.REACTIVATED, '', {\r\n timeOut: 60000,\r\n closeButton: true,\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n console.error('Error enabling user', err);\r\n },\r\n });\r\n }\r\n }\r\n\r\n\r\n private gotoProfile(obj: any): void {\r\n if (obj.role === SignUpRoles.Employer) {\r\n this.router.navigate([AppConstants.EMPLOYER_EDIT_PROFILE]);\r\n } else if (obj.role === SignUpRoles.JobSeeker) {\r\n this.router.navigate([AppConstants.JOBSEEKER_EDIT_PROFILE]);\r\n } else if (obj.role === AppConstants.COMMPARTNER) {\r\n this.router.navigate([AppConstants.CBO_PROFILE]);\r\n }else {\r\n this.router.navigate(['/']);\r\n }\r\n }\r\n}\r\n","
\r\n

Select a User to Impersonate\r\n \r\n

\r\n
\r\n
\r\n

Choose the type of user you need to act on behalf of to provide support or complete actions they are unable to perform.

\r\n \r\n \r\n
\r\n \r\n Job Seeker\r\n Employer\r\n Community Partner\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Select User\r\n \r\n \r\n \r\n {{ user.firstName }} {{ user.lastName }} {{ user?.email ? '(' + user.email + ')' : '' }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n Select Employer\r\n \r\n \r\n \r\n {{ employer.firstName }} {{ employer.lastName }} {{ employer?.email ? '(' + employer.email + ')' : '' }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n Select Community Partner\r\n \r\n \r\n \r\n {{ cp.firstName }} {{ cp.lastName }} {{ cp?.email ? '(' + cp.email + ')' : '' }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
"],"mappings":"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","names":["group","_c0","_c1","window"],"x_google_ignoreList":[0,1]}