{"version":3,"file":"radio.js","sources":["../../packages/material/radio/radio.js","../../packages/material/radio/radio-module.js","../../packages/material/radio/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. 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 */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, forwardRef, Input, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRipple, mixinColor, mixinDisabled, mixinDisableRipple, } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UniqueSelectionDispatcher } from '@angular/cdk/collections';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n// Increasing integer for generating unique ids for radio components.\nlet /** @type {?} */ 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 */\nexport const MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatRadioGroup),\n multi: true\n};\n/**\n * Change event object emitted by MatRadio and MatRadioGroup.\n */\nexport class MatRadioChange {\n}\nfunction MatRadioChange_tsickle_Closure_declarations() {\n /**\n * The MatRadioButton that emits the change event.\n * @type {?}\n */\n MatRadioChange.prototype.source;\n /**\n * The value of the MatRadioButton.\n * @type {?}\n */\n MatRadioChange.prototype.value;\n}\n/**\n * \\@docs-private\n */\nexport class MatRadioGroupBase {\n}\nexport const /** @type {?} */ _MatRadioGroupMixinBase = mixinDisabled(MatRadioGroupBase);\n/**\n * A group of radio buttons. May contain one or more `` elements.\n */\nexport class MatRadioGroup extends _MatRadioGroupMixinBase {\n /**\n * @param {?} _changeDetector\n */\n constructor(_changeDetector) {\n super();\n this._changeDetector = _changeDetector;\n /**\n * Selected value for 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 this._value = null;\n /**\n * The HTML name attribute applied to radio buttons in this group.\n */\n this._name = `mat-radio-group-${nextUniqueId++}`;\n /**\n * The currently selected radio button. Should match value.\n */\n this._selected = null;\n /**\n * Whether the `value` has been set to its initial value.\n */\n this._isInitialized = false;\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n */\n this._labelPosition = 'after';\n /**\n * Whether the radio group is disabled.\n */\n this._disabled = false;\n /**\n * Whether the radio group is required.\n */\n this._required = false;\n /**\n * The method to be called in order to update ngModel\n */\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 * Name of the radio button group. All radio buttons inside this group will use this name.\n * @return {?}\n */\n get name() { return this._name; }\n /**\n * @param {?} value\n * @return {?}\n */\n set name(value) {\n this._name = value;\n this._updateRadioButtonNames();\n }\n /**\n * Alignment of the radio-buttons relative to their labels. Can be 'before' or 'after'.\n * @deprecated\n * @return {?}\n */\n get align() {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n }\n /**\n * @param {?} v\n * @return {?}\n */\n set align(v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n }\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n * @return {?}\n */\n get labelPosition() {\n return this._labelPosition;\n }\n /**\n * @param {?} v\n * @return {?}\n */\n set labelPosition(v) {\n this._labelPosition = (v == 'before') ? 'before' : 'after';\n this._markRadiosForCheck();\n }\n /**\n * Value of the radio button.\n * @return {?}\n */\n get value() { return this._value; }\n /**\n * @param {?} newValue\n * @return {?}\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 /**\n * @return {?}\n */\n _checkSelectedRadioButton() {\n if (this._selected && !this._selected.checked) {\n this._selected.checked = true;\n }\n }\n /**\n * Whether the radio button is selected.\n * @return {?}\n */\n get selected() { return this._selected; }\n /**\n * @param {?} selected\n * @return {?}\n */\n set selected(selected) {\n this._selected = selected;\n this.value = selected ? selected.value : null;\n this._checkSelectedRadioButton();\n }\n /**\n * Whether the radio group is disabled\n * @return {?}\n */\n get disabled() { return this._disabled; }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._markRadiosForCheck();\n }\n /**\n * Whether the radio group is required\n * @return {?}\n */\n get required() { return this._required; }\n /**\n * @param {?} value\n * @return {?}\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 * @return {?}\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 * @return {?}\n */\n _touch() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n /**\n * @return {?}\n */\n _updateRadioButtonNames() {\n if (this._radios) {\n this._radios.forEach(radio => {\n radio.name = this.name;\n });\n }\n }\n /**\n * Updates the `selected` radio button from the internal _value state.\n * @return {?}\n */\n _updateSelectedRadioFromValue() {\n // If the value already matches the selected radio, do nothing.\n const /** @type {?} */ isAlreadySelected = this._selected != null && this._selected.value == this._value;\n if (this._radios != null && !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 /**\n * Dispatch change event with current selection and group value.\n * @return {?}\n */\n _emitChangeEvent() {\n if (this._isInitialized) {\n const /** @type {?} */ event = new MatRadioChange();\n event.source = this._selected;\n event.value = this._value;\n this.change.emit(event);\n }\n }\n /**\n * @return {?}\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 * @return {?}\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 * @return {?}\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 * @return {?}\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 * @return {?}\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetector.markForCheck();\n }\n}\nMatRadioGroup.decorators = [\n { type: Directive, args: [{\n selector: 'mat-radio-group',\n exportAs: 'matRadioGroup',\n providers: [MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR],\n host: {\n 'role': 'radiogroup',\n 'class': 'mat-radio-group',\n },\n inputs: ['disabled'],\n },] },\n];\n/**\n * @nocollapse\n */\nMatRadioGroup.ctorParameters = () => [\n { type: ChangeDetectorRef, },\n];\nMatRadioGroup.propDecorators = {\n 'change': [{ type: Output },],\n '_radios': [{ type: ContentChildren, args: [forwardRef(() => MatRadioButton),] },],\n 'name': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'value': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'required': [{ type: Input },],\n};\nfunction MatRadioGroup_tsickle_Closure_declarations() {\n /** @type {?} */\n MatRadioGroup.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatRadioGroup.ctorParameters;\n /** @type {?} */\n MatRadioGroup.propDecorators;\n /**\n * Selected value for 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 * @type {?}\n */\n MatRadioGroup.prototype._value;\n /**\n * The HTML name attribute applied to radio buttons in this group.\n * @type {?}\n */\n MatRadioGroup.prototype._name;\n /**\n * The currently selected radio button. Should match value.\n * @type {?}\n */\n MatRadioGroup.prototype._selected;\n /**\n * Whether the `value` has been set to its initial value.\n * @type {?}\n */\n MatRadioGroup.prototype._isInitialized;\n /**\n * Whether the labels should appear after or before the radio-buttons. Defaults to 'after'\n * @type {?}\n */\n MatRadioGroup.prototype._labelPosition;\n /**\n * Whether the radio group is disabled.\n * @type {?}\n */\n MatRadioGroup.prototype._disabled;\n /**\n * Whether the radio group is required.\n * @type {?}\n */\n MatRadioGroup.prototype._required;\n /**\n * The method to be called in order to update ngModel\n * @type {?}\n */\n MatRadioGroup.prototype._controlValueAccessorChangeFn;\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * \\@docs-private\n * @type {?}\n */\n MatRadioGroup.prototype.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 * @type {?}\n */\n MatRadioGroup.prototype.change;\n /**\n * Child radio buttons.\n * @type {?}\n */\n MatRadioGroup.prototype._radios;\n /** @type {?} */\n MatRadioGroup.prototype._changeDetector;\n}\n/**\n * \\@docs-private\n */\nexport class MatRadioButtonBase {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n}\nfunction MatRadioButtonBase_tsickle_Closure_declarations() {\n /** @type {?} */\n MatRadioButtonBase.prototype._renderer;\n /** @type {?} */\n MatRadioButtonBase.prototype._elementRef;\n}\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\nexport const /** @type {?} */ _MatRadioButtonMixinBase = mixinColor(mixinDisableRipple(MatRadioButtonBase), 'accent');\n/**\n * A radio-button. May be inside of\n */\nexport class MatRadioButton extends _MatRadioButtonMixinBase {\n /**\n * @param {?} radioGroup\n * @param {?} elementRef\n * @param {?} renderer\n * @param {?} _changeDetector\n * @param {?} _focusMonitor\n * @param {?} _radioDispatcher\n */\n constructor(radioGroup, elementRef, renderer, _changeDetector, _focusMonitor, _radioDispatcher) {\n super(renderer, elementRef);\n this._changeDetector = _changeDetector;\n this._focusMonitor = _focusMonitor;\n this._radioDispatcher = _radioDispatcher;\n this._uniqueId = `mat-radio-${++nextUniqueId}`;\n /**\n * The unique ID for the radio button.\n */\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 /**\n * Whether this radio is checked.\n */\n this._checked = false;\n /**\n * Value assigned to this radio.\n */\n this._value = null;\n /**\n * Unregister function for _radioDispatcher *\n */\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._removeUniqueSelectionListener =\n _radioDispatcher.listen((id, name) => {\n if (id != this.id && name == this.name) {\n this.checked = false;\n }\n });\n }\n /**\n * Whether this radio button is checked.\n * @return {?}\n */\n get checked() {\n return this._checked;\n }\n /**\n * @param {?} newCheckedState\n * @return {?}\n */\n set checked(newCheckedState) {\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 /**\n * The value of this radio button.\n * @return {?}\n */\n get value() {\n return this._value;\n }\n /**\n * @param {?} value\n * @return {?}\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 /**\n * Whether or not the radio-button should appear before or after the label.\n * @deprecated\n * @return {?}\n */\n get align() {\n // align refers to the checkbox relative to the label, while labelPosition refers to the\n // label relative to the checkbox. As such, they are inverted.\n return this.labelPosition == 'after' ? 'start' : 'end';\n }\n /**\n * @param {?} v\n * @return {?}\n */\n set align(v) {\n this.labelPosition = (v == 'start') ? 'after' : 'before';\n }\n /**\n * Whether the label should appear after or before the radio button. Defaults to 'after'\n * @return {?}\n */\n get labelPosition() {\n return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set labelPosition(value) {\n this._labelPosition = value;\n }\n /**\n * Whether the radio button is disabled.\n * @return {?}\n */\n get disabled() {\n return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the radio button is required.\n * @return {?}\n */\n get required() {\n return this._required || (this.radioGroup && this.radioGroup.required);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /**\n * ID of the native input element inside ``\n * @return {?}\n */\n get inputId() { return `${this.id || this._uniqueId}-input`; }\n /**\n * Focuses the radio button.\n * @return {?}\n */\n focus() {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\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 * @return {?}\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 /**\n * @return {?}\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 // Copy name from parent radio group\n this.name = this.radioGroup.name;\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(focusOrigin => this._onInputFocusChange(focusOrigin));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n this._removeUniqueSelectionListener();\n }\n /**\n * Dispatch change event with current value.\n * @return {?}\n */\n _emitChangeEvent() {\n const /** @type {?} */ event = new MatRadioChange();\n event.source = this;\n event.value = this._value;\n this.change.emit(event);\n }\n /**\n * @return {?}\n */\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n /**\n * @param {?} event\n * @return {?}\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 /**\n * Triggered when the radio button received a click or the input recognized any change.\n * Clicking on a label element, will trigger a change event on the associated input.\n * @param {?} event\n * @return {?}\n */\n _onInputChange(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 const /** @type {?} */ 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 this.radioGroup._touch();\n if (groupValueChanged) {\n this.radioGroup._emitChangeEvent();\n }\n }\n }\n /**\n * Function is called whenever the focus changes for the input element.\n * @param {?} focusOrigin\n * @return {?}\n */\n _onInputFocusChange(focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n if (this.radioGroup) {\n this.radioGroup._touch();\n }\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n }\n }\n}\nMatRadioButton.decorators = [\n { type: Component, args: [{selector: 'mat-radio-button',\n template: \"\",\n styles: [\".mat-radio-button{display:inline-block}.mat-radio-label{cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;vertical-align:middle}.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;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-radio-inner-circle{border-radius:50%;box-sizing:border-box;height:20px;left:0;position:absolute;top:0;transition:transform ease 280ms,background-color ease 280ms;width:20px;transform:scale(.001)}.mat-radio-checked .mat-radio-inner-circle{transform:scale(.5)}.mat-radio-label-content{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-ripple{position:absolute;left:-15px;top:-15px;right:-15px;bottom:-15px;border-radius:50%;z-index:1;pointer-events:none}\"],\n inputs: ['color', 'disableRipple'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n exportAs: 'matRadioButton',\n host: {\n 'class': 'mat-radio-button',\n '[class.mat-radio-checked]': 'checked',\n '[class.mat-radio-disabled]': 'disabled',\n '[attr.id]': 'id',\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 changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatRadioButton.ctorParameters = () => [\n { type: MatRadioGroup, decorators: [{ type: Optional },] },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ChangeDetectorRef, },\n { type: FocusMonitor, },\n { type: UniqueSelectionDispatcher, },\n];\nMatRadioButton.propDecorators = {\n 'id': [{ type: Input },],\n 'name': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'checked': [{ type: Input },],\n 'value': [{ type: Input },],\n 'align': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'required': [{ type: Input },],\n 'change': [{ type: Output },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n};\nfunction MatRadioButton_tsickle_Closure_declarations() {\n /** @type {?} */\n MatRadioButton.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatRadioButton.ctorParameters;\n /** @type {?} */\n MatRadioButton.propDecorators;\n /** @type {?} */\n MatRadioButton.prototype._uniqueId;\n /**\n * The unique ID for the radio button.\n * @type {?}\n */\n MatRadioButton.prototype.id;\n /**\n * Analog to HTML 'name' attribute used to group radios for unique selection.\n * @type {?}\n */\n MatRadioButton.prototype.name;\n /**\n * Used to set the 'aria-label' attribute on the underlying input element.\n * @type {?}\n */\n MatRadioButton.prototype.ariaLabel;\n /**\n * The 'aria-labelledby' attribute takes precedence as the element's text alternative.\n * @type {?}\n */\n MatRadioButton.prototype.ariaLabelledby;\n /** @type {?} */\n MatRadioButton.prototype._labelPosition;\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 * @type {?}\n */\n MatRadioButton.prototype.change;\n /**\n * The parent radio group. May or may not be present.\n * @type {?}\n */\n MatRadioButton.prototype.radioGroup;\n /**\n * Whether this radio is checked.\n * @type {?}\n */\n MatRadioButton.prototype._checked;\n /**\n * Whether this radio is disabled.\n * @type {?}\n */\n MatRadioButton.prototype._disabled;\n /**\n * Whether this radio is required.\n * @type {?}\n */\n MatRadioButton.prototype._required;\n /**\n * Value assigned to this radio.\n * @type {?}\n */\n MatRadioButton.prototype._value;\n /**\n * The child ripple instance.\n * @type {?}\n */\n MatRadioButton.prototype._ripple;\n /**\n * Reference to the current focus ripple.\n * @type {?}\n */\n MatRadioButton.prototype._focusRipple;\n /**\n * Unregister function for _radioDispatcher *\n * @type {?}\n */\n MatRadioButton.prototype._removeUniqueSelectionListener;\n /**\n * The native `` element\n * @type {?}\n */\n MatRadioButton.prototype._inputElement;\n /** @type {?} */\n MatRadioButton.prototype._changeDetector;\n /** @type {?} */\n MatRadioButton.prototype._focusMonitor;\n /** @type {?} */\n MatRadioButton.prototype._radioDispatcher;\n}\n//# sourceMappingURL=radio.js.map","/**\n * @license\n * Copyright Google Inc. 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 */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VIEWPORT_RULER_PROVIDER } from '@angular/cdk/overlay';\nimport { MatRippleModule, MatCommonModule, } from '@angular/material/core';\nimport { MatRadioGroup, MatRadioButton } from './radio';\nimport { UNIQUE_SELECTION_DISPATCHER_PROVIDER } from '@angular/cdk/collections';\nimport { A11yModule } from '@angular/cdk/a11y';\nexport class MatRadioModule {\n}\nMatRadioModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatRippleModule, MatCommonModule, A11yModule],\n exports: [MatRadioGroup, MatRadioButton, MatCommonModule],\n providers: [UNIQUE_SELECTION_DISPATCHER_PROVIDER, VIEWPORT_RULER_PROVIDER],\n declarations: [MatRadioGroup, MatRadioButton],\n },] },\n];\n/**\n * @nocollapse\n */\nMatRadioModule.ctorParameters = () => [];\nfunction MatRadioModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatRadioModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatRadioModule.ctorParameters;\n}\n//# sourceMappingURL=radio-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatRadioModule, MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, MatRadioChange, MatRadioGroupBase, _MatRadioGroupMixinBase, MatRadioGroup, MatRadioButtonBase, _MatRadioButtonMixinBase, MatRadioButton } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}