{"version":3,"file":"390.37d714540c37457e.js","mappings":"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","names":["MAT_RADIO_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","MAT_RADIO_DEFAULT_OPTIONS_FACTORY","color","nextUniqueId","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","MatRadioGroup","multi","MatRadioChange","constructor","source","value","this","MAT_RADIO_GROUP","_MatRadioGroupBase","_changeDetector","_value","_name","_selected","_isInitialized","_labelPosition","_disabled","_required","_controlValueAccessorChangeFn","onTouched","change","EventEmitter","name","_updateRadioButtonNames","labelPosition","v","_markRadiosForCheck","newValue","_updateSelectedRadioFromValue","_checkSelectedRadioButton","checked","selected","disabled","coerceBooleanProperty","required","ngAfterContentInit","_touch","_radios","forEach","radio","_markForCheck","_emitChangeEvent","emit","writeValue","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","ɵfac","i0","ɵdir","inputs","t","selectors","dirIndex","MatRadioButton","_t","ctx","MatRadioButtonBase","_elementRef","_MatRadioButtonMixinBase","mixinDisableRipple","mixinTabIndex","_MatRadioButtonBase","radioGroup","elementRef","_focusMonitor","_radioDispatcher","animationMode","_providerOverride","tabIndex","super","_uniqueId","id","_checked","_removeUniqueSelectionListener","_noopAnimations","coerceNumberProperty","listen","newCheckedState","notify","_setDisabled","_color","inputId","focus","options","origin","focusVia","_inputElement","nativeElement","ngOnInit","ngDoCheck","_updateTabIndex","ngAfterViewInit","monitor","subscribe","focusOrigin","ngOnDestroy","stopMonitoring","_isRippleDisabled","disableRipple","_onInputClick","event","stopPropagation","_onInputInteraction","groupValueChanged","_a","group","_previousTabIndex","input","setAttribute","viewQuery","_c0","changeDetector","focusMonitor","radioDispatcher","providerOverride","i1","i2","ANIMATION_MODULE_TYPE","ɵcmp","ngContentSelectors","i3","styles","MatRadioModule","ɵmod","ɵinj","MatRippleModule","MatCommonModule"],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/material/fesm2015/radio.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, Directive, Output, Input, ContentChildren, ViewChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Attribute, NgModule } from '@angular/core';\nimport * as i3 from '@angular/material/core';\nimport { mixinDisableRipple, mixinTabIndex, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i2 from '@angular/cdk/collections';\n\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// Increasing integer for generating unique ids for radio components.\nlet nextUniqueId = 0;\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/** Change event object emitted by MatRadio and MatRadioGroup. */\nclass MatRadioChange {\n constructor(\n /** The MatRadioButton that emits the change event. */\n source, \n /** The value of the MatRadioButton. */\n value) {\n this.source = source;\n this.value = value;\n }\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');\n/**\n * Base class with all of the `MatRadioGroup` functionality.\n * @docs-private\n */\nclass _MatRadioGroupBase {\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 /** 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 = coerceBooleanProperty(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 = coerceBooleanProperty(value);\n this._markRadiosForCheck();\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 }\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}\n_MatRadioGroupBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatRadioGroupBase, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatRadioGroupBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatRadioGroupBase, inputs: { color: \"color\", name: \"name\", labelPosition: \"labelPosition\", value: \"value\", selected: \"selected\", disabled: \"disabled\", required: \"required\" }, outputs: { change: \"change\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatRadioGroupBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { change: [{\n type: Output\n }], color: [{\n type: Input\n }], name: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], value: [{\n type: Input\n }], selected: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }] } });\n/**\n * A group of radio buttons. May contain one or more `` elements.\n */\nclass MatRadioGroup extends _MatRadioGroupBase {\n}\nMatRadioGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioGroup, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatRadioGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatRadioGroup, selector: \"mat-radio-group\", host: { attributes: { \"role\": \"radiogroup\" }, classAttribute: \"mat-radio-group\" }, providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n { provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup },\n ], queries: [{ propertyName: \"_radios\", predicate: i0.forwardRef(function () { return MatRadioButton; }), descendants: true }], exportAs: [\"matRadioGroup\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioGroup, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [\n MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR,\n { provide: MAT_RADIO_GROUP, useExisting: MatRadioGroup },\n ],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-radio-group',\n },\n }]\n }], propDecorators: { _radios: [{\n type: ContentChildren,\n args: [forwardRef(() => MatRadioButton), { descendants: true }]\n }] } });\n// Boilerplate for applying mixins to MatRadioButton.\n/** @docs-private */\nclass MatRadioButtonBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatRadioButtonMixinBase = mixinDisableRipple(mixinTabIndex(MatRadioButtonBase));\n/**\n * Base class with all of the `MatRadioButton` functionality.\n * @docs-private\n */\nclass _MatRadioButtonBase extends _MatRadioButtonMixinBase {\n constructor(radioGroup, elementRef, _changeDetector, _focusMonitor, _radioDispatcher, animationMode, _providerOverride, tabIndex) {\n super(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 /**\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 = coerceNumberProperty(tabIndex, 0);\n }\n this._removeUniqueSelectionListener = _radioDispatcher.listen((id, name) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n /** Whether this radio button is checked. */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n const newCheckedState = coerceBooleanProperty(value);\n if (this._checked !== newCheckedState) {\n this._checked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n }\n else if (!newCheckedState && 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 (newCheckedState) {\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(coerceBooleanProperty(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 = coerceBooleanProperty(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 ||\n (this.radioGroup && this.radioGroup.color) ||\n (this._providerOverride && this._providerOverride.color) ||\n '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 /** Focuses the radio button. */\n focus(options, origin) {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n }\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 }\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 /** 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 var _a;\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 }\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 = (_a = this._inputElement) === null || _a === void 0 ? void 0 : _a.nativeElement;\n if (input) {\n input.setAttribute('tabindex', value + '');\n this._previousTabIndex = value;\n }\n }\n }\n}\n_MatRadioButtonBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatRadioButtonBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\n_MatRadioButtonBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatRadioButtonBase, inputs: { id: \"id\", name: \"name\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"], checked: \"checked\", value: \"value\", labelPosition: \"labelPosition\", disabled: \"disabled\", required: \"required\", color: \"color\" }, outputs: { change: \"change\" }, viewQueries: [{ propertyName: \"_inputElement\", first: true, predicate: [\"input\"], descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatRadioButtonBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: _MatRadioGroupBase }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.UniqueSelectionDispatcher }, { type: undefined }, { type: undefined }, { type: undefined }]; }, propDecorators: { id: [{\n type: Input\n }], name: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], checked: [{\n type: Input\n }], value: [{\n type: Input\n }], labelPosition: [{\n type: Input\n }], disabled: [{\n type: Input\n }], required: [{\n type: Input\n }], color: [{\n type: Input\n }], change: [{\n type: Output\n }], _inputElement: [{\n type: ViewChild,\n args: ['input']\n }] } });\n/**\n * A Material design radio-button. Typically placed inside of `` elements.\n */\nclass MatRadioButton extends _MatRadioButtonBase {\n constructor(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher, animationMode, providerOverride, tabIndex) {\n super(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher, animationMode, providerOverride, tabIndex);\n }\n}\nMatRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioButton, deps: [{ token: MAT_RADIO_GROUP, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.UniqueSelectionDispatcher }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_RADIO_DEFAULT_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component });\nMatRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatRadioButton, selector: \"mat-radio-button\", inputs: { disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, host: { listeners: { \"focus\": \"_inputElement.nativeElement.focus()\" }, properties: { \"class.mat-radio-checked\": \"checked\", \"class.mat-radio-disabled\": \"disabled\", \"class._mat-animation-noopable\": \"_noopAnimations\", \"class.mat-primary\": \"color === \\\"primary\\\"\", \"class.mat-accent\": \"color === \\\"accent\\\"\", \"class.mat-warn\": \"color === \\\"warn\\\"\", \"attr.tabindex\": \"null\", \"attr.id\": \"id\", \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"attr.aria-describedby\": \"null\" }, classAttribute: \"mat-radio-button\" }, exportAs: [\"matRadioButton\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\", styles: [\".mat-radio-button{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-radio-label{-webkit-user-select:none;user-select:none;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}._mat-animation-noopable .mat-radio-outer-circle{transition:none}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;opacity:0;transition:transform ease 280ms,background-color ease 280ms,opacity linear 1ms 280ms;width:20px;transform:scale(0.001);-webkit-print-color-adjust:exact;color-adjust:exact}.mat-radio-checked .mat-radio-inner-circle{transform:scale(0.5);opacity:1;transition:transform ease 280ms,background-color ease 280ms}.cdk-high-contrast-active .mat-radio-checked .mat-radio-inner-circle{border:solid 10px}._mat-animation-noopable .mat-radio-inner-circle{transition:none}.mat-radio-label-content{-webkit-user-select:auto;user-select:auto;display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-button .mat-radio-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-radio-button .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple){opacity:.16}.mat-radio-persistent-ripple{width:100%;height:100%;transform:none;top:0;left:0}.mat-radio-container:hover .mat-radio-persistent-ripple{opacity:.04}.mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-persistent-ripple,.mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-persistent-ripple{opacity:.12}.mat-radio-persistent-ripple,.mat-radio-disabled .mat-radio-container:hover .mat-radio-persistent-ripple{opacity:0}@media(hover: none){.mat-radio-container:hover .mat-radio-persistent-ripple{display:none}}.mat-radio-input{opacity:0;position:absolute;top:0;left:0;margin:0;width:100%;height:100%;cursor:inherit;z-index:-1}.mat-radio-input:focus~.mat-focus-indicator::before{content:\\\"\\\"}.cdk-high-contrast-active .mat-radio-disabled{opacity:.5}\"], dependencies: [{ kind: \"directive\", type: i3.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioButton, decorators: [{\n type: Component,\n args: [{ selector: 'mat-radio-button', inputs: ['disableRipple', 'tabIndex'], encapsulation: ViewEncapsulation.None, exportAs: 'matRadioButton', host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[class._mat-animation-noopable]': '_noopAnimations',\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n // Needs to be removed since it causes some a11y issues (see #21266).\n '[attr.tabindex]': 'null',\n '[attr.id]': 'id',\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 }, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n\\n\", styles: [\".mat-radio-button{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-radio-label{-webkit-user-select:none;user-select:none;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle;width:100%}.mat-radio-container{box-sizing:border-box;display:inline-block;position:relative;width:20px;height:20px;flex-shrink:0}.mat-radio-outer-circle{box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;transition:border-color ease 280ms;width:20px;border-width:2px;border-style:solid;border-radius:50%}._mat-animation-noopable .mat-radio-outer-circle{transition:none}.mat-radio-inner-circle{border-radius:50%;box-sizing:border-box;display:block;height:20px;left:0;position:absolute;top:0;opacity:0;transition:transform ease 280ms,background-color ease 280ms,opacity linear 1ms 280ms;width:20px;transform:scale(0.001);-webkit-print-color-adjust:exact;color-adjust:exact}.mat-radio-checked .mat-radio-inner-circle{transform:scale(0.5);opacity:1;transition:transform ease 280ms,background-color ease 280ms}.cdk-high-contrast-active .mat-radio-checked .mat-radio-inner-circle{border:solid 10px}._mat-animation-noopable .mat-radio-inner-circle{transition:none}.mat-radio-label-content{-webkit-user-select:auto;user-select:auto;display:inline-block;order:0;line-height:inherit;padding-left:8px;padding-right:0}[dir=rtl] .mat-radio-label-content{padding-right:8px;padding-left:0}.mat-radio-label-content.mat-radio-label-before{order:-1;padding-left:0;padding-right:8px}[dir=rtl] .mat-radio-label-content.mat-radio-label-before{padding-right:0;padding-left:8px}.mat-radio-disabled,.mat-radio-disabled .mat-radio-label{cursor:default}.mat-radio-button .mat-radio-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-radio-button .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple){opacity:.16}.mat-radio-persistent-ripple{width:100%;height:100%;transform:none;top:0;left:0}.mat-radio-container:hover .mat-radio-persistent-ripple{opacity:.04}.mat-radio-button:not(.mat-radio-disabled).cdk-keyboard-focused .mat-radio-persistent-ripple,.mat-radio-button:not(.mat-radio-disabled).cdk-program-focused .mat-radio-persistent-ripple{opacity:.12}.mat-radio-persistent-ripple,.mat-radio-disabled .mat-radio-container:hover .mat-radio-persistent-ripple{opacity:0}@media(hover: none){.mat-radio-container:hover .mat-radio-persistent-ripple{display:none}}.mat-radio-input{opacity:0;position:absolute;top:0;left:0;margin:0;width:100%;height:100%;cursor:inherit;z-index:-1}.mat-radio-input:focus~.mat-focus-indicator::before{content:\\\"\\\"}.cdk-high-contrast-active .mat-radio-disabled{opacity:.5}\"] }]\n }], ctorParameters: function () {\n return [{ type: MatRadioGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_GROUP]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.UniqueSelectionDispatcher }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RADIO_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatRadioModule {\n}\nMatRadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioModule, declarations: [MatRadioGroup, MatRadioButton], imports: [MatRippleModule, MatCommonModule], exports: [MatRadioGroup, MatRadioButton, MatCommonModule] });\nMatRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioModule, imports: [MatRippleModule, MatCommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRadioModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n declarations: [MatRadioGroup, MatRadioButton],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\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, _MatRadioButtonBase, _MatRadioGroupBase };\n"],"x_google_ignoreList":[0]}