{"version":3,"file":"24.2c24dbbc5c8b2e70.js","mappings":"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","names":["_c0","_c1","_c2","MAT_CHECKBOX_DEFAULT_OPTIONS","InjectionToken","providedIn","factory","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","color","clickAction","disabledInteractive","TransitionCheckState","Init","Checked","Unchecked","Indeterminate","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","MatCheckbox","multi","MatCheckboxChange","nextUniqueId","defaults","_MatCheckbox","focus","this","_inputElement","nativeElement","_createChangeEvent","isChecked","event","source","checked","_getAnimationTargetElement","_this$_inputElement","inputId","id","_uniqueId","constructor","_elementRef","_changeDetectorRef","_ngZone","tabIndex","_animationMode","_options","_options$disabledInte","_animationClasses","uncheckedToChecked","uncheckedToIndeterminate","checkedToUnchecked","checkedToIndeterminate","indeterminateToChecked","indeterminateToUnchecked","ariaLabel","ariaLabelledby","labelPosition","name","change","EventEmitter","indeterminateChange","_onTouched","_currentAnimationClass","_currentCheckState","_controlValueAccessorChangeFn","_validatorChangeFn","_checked","_disabled","_indeterminate","parseInt","ngOnChanges","changes","required","ngAfterViewInit","_syncIndeterminate","value","markForCheck","disabled","indeterminate","changed","_transitionCheckState","emit","_isRippleDisabled","disableRipple","_onLabelTextChange","detectChanges","writeValue","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","newState","oldState","element","classList","remove","_getAnimationClassForCheckStateTransition","length","add","animationClass","runOutsideAngular","setTimeout","_emitChangeEvent","toggle","_handleInputClick","_this$_options","Promise","resolve","then","_onInteractionEvent","stopPropagation","_onBlur","nativeCheckbox","_onInputClick","_onTouchTargetClick","_preventBubblingFromLabel","target","_labelElement","contains","ɵfac","__ngFactoryType__","i0","ANIMATION_MODULE_TYPE","ɵcmp","type","selectors","viewQuery","rf","ctx","MatRipple","_t","first","ripple","hostAttrs","hostVars","hostBindings","inputs","ariaDescribedby","booleanAttribute","undefined","numberAttribute","outputs","exportAs","standalone","features","NG_VALIDATORS","ngContentSelectors","decls","vars","consts","template","_r1","$event","checkbox_r2","dependencies","_MatInternalFormField","styles","encapsulation","changeDetection","MatCheckboxModule","_MatCheckboxModule","ɵmod","ɵinj","imports","MatCommonModule"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/material/fesm2022/checkbox.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, EventEmitter, ANIMATION_MODULE_TYPE, booleanAttribute, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Attribute, Optional, Inject, Input, Output, ViewChild, Directive, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxRequiredValidator } from '@angular/forms';\nimport { MatRipple, _MatInternalFormField, MatCommonModule } from '@angular/material/core';\n\n/** Injection token to be used to override the default options for `mat-checkbox`. */\nconst MAT_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken('mat-checkbox-default-options', {\n providedIn: 'root',\n factory: MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY() {\n return {\n color: 'accent',\n clickAction: 'check-indeterminate',\n disabledInteractive: false,\n };\n}\n\n/**\n * Represents the different states that require custom transitions between them.\n * @docs-private\n */\nvar TransitionCheckState;\n(function (TransitionCheckState) {\n /** The initial state of the component before any user interaction. */\n TransitionCheckState[TransitionCheckState[\"Init\"] = 0] = \"Init\";\n /** The state representing the component when it's becoming checked. */\n TransitionCheckState[TransitionCheckState[\"Checked\"] = 1] = \"Checked\";\n /** The state representing the component when it's becoming unchecked. */\n TransitionCheckState[TransitionCheckState[\"Unchecked\"] = 2] = \"Unchecked\";\n /** The state representing the component when it's becoming indeterminate. */\n TransitionCheckState[TransitionCheckState[\"Indeterminate\"] = 3] = \"Indeterminate\";\n})(TransitionCheckState || (TransitionCheckState = {}));\n/**\n * @deprecated Will stop being exported.\n * @breaking-change 19.0.0\n */\nconst MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatCheckbox),\n multi: true,\n};\n/** Change event object emitted by checkbox. */\nclass MatCheckboxChange {\n}\n// Increasing integer for generating unique ids for checkbox components.\nlet nextUniqueId = 0;\n// Default checkbox configuration.\nconst defaults = MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY();\nclass MatCheckbox {\n /** Focuses the checkbox. */\n focus() {\n this._inputElement.nativeElement.focus();\n }\n /** Creates the change event that will be emitted by the checkbox. */\n _createChangeEvent(isChecked) {\n const event = new MatCheckboxChange();\n event.source = this;\n event.checked = isChecked;\n return event;\n }\n /** Gets the element on which to add the animation CSS classes. */\n _getAnimationTargetElement() {\n return this._inputElement?.nativeElement;\n }\n /** Returns the unique id for the visual hidden input. */\n get inputId() {\n return `${this.id || this._uniqueId}-input`;\n }\n constructor(_elementRef, _changeDetectorRef, _ngZone, tabIndex, _animationMode, _options) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._options = _options;\n /** CSS classes to add when transitioning between the different checkbox states. */\n this._animationClasses = {\n uncheckedToChecked: 'mdc-checkbox--anim-unchecked-checked',\n uncheckedToIndeterminate: 'mdc-checkbox--anim-unchecked-indeterminate',\n checkedToUnchecked: 'mdc-checkbox--anim-checked-unchecked',\n checkedToIndeterminate: 'mdc-checkbox--anim-checked-indeterminate',\n indeterminateToChecked: 'mdc-checkbox--anim-indeterminate-checked',\n indeterminateToUnchecked: 'mdc-checkbox--anim-indeterminate-unchecked',\n };\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n this.ariaLabel = '';\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n this.ariaLabelledby = null;\n /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n this.labelPosition = 'after';\n /** Name value will be applied to the input element if present */\n this.name = null;\n /** Event emitted when the checkbox's `checked` value changes. */\n this.change = new EventEmitter();\n /** Event emitted when the checkbox's `indeterminate` value changes. */\n this.indeterminateChange = new EventEmitter();\n /**\n * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n * @docs-private\n */\n this._onTouched = () => { };\n this._currentAnimationClass = '';\n this._currentCheckState = TransitionCheckState.Init;\n this._controlValueAccessorChangeFn = () => { };\n this._validatorChangeFn = () => { };\n this._checked = false;\n this._disabled = false;\n this._indeterminate = false;\n this._options = this._options || defaults;\n this.color = this._options.color || defaults.color;\n this.tabIndex = parseInt(tabIndex) || 0;\n this.id = this._uniqueId = `mat-mdc-checkbox-${++nextUniqueId}`;\n this.disabledInteractive = _options?.disabledInteractive ?? false;\n }\n ngOnChanges(changes) {\n if (changes['required']) {\n this._validatorChangeFn();\n }\n }\n ngAfterViewInit() {\n this._syncIndeterminate(this._indeterminate);\n }\n /** Whether the checkbox is checked. */\n get checked() {\n return this._checked;\n }\n set checked(value) {\n if (value != this.checked) {\n this._checked = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the checkbox is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n if (value !== this.disabled) {\n this._disabled = value;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n get indeterminate() {\n return this._indeterminate;\n }\n set indeterminate(value) {\n const changed = value != this._indeterminate;\n this._indeterminate = value;\n if (changed) {\n if (this._indeterminate) {\n this._transitionCheckState(TransitionCheckState.Indeterminate);\n }\n else {\n this._transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n this.indeterminateChange.emit(this._indeterminate);\n }\n this._syncIndeterminate(this._indeterminate);\n }\n _isRippleDisabled() {\n return this.disableRipple || this.disabled;\n }\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n // component will be only marked for check, but no actual change detection runs automatically.\n // Instead of going back into the zone in order to trigger a change detection which causes\n // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n // an explicit change detection for the checkbox view and its children.\n this._changeDetectorRef.detectChanges();\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this.checked = !!value;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = 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.disabled = isDisabled;\n }\n // Implemented as a part of Validator.\n validate(control) {\n return this.required && control.value !== true ? { 'required': true } : null;\n }\n // Implemented as a part of Validator.\n registerOnValidatorChange(fn) {\n this._validatorChangeFn = fn;\n }\n _transitionCheckState(newState) {\n let oldState = this._currentCheckState;\n let element = this._getAnimationTargetElement();\n if (oldState === newState || !element) {\n return;\n }\n if (this._currentAnimationClass) {\n element.classList.remove(this._currentAnimationClass);\n }\n this._currentAnimationClass = this._getAnimationClassForCheckStateTransition(oldState, newState);\n this._currentCheckState = newState;\n if (this._currentAnimationClass.length > 0) {\n element.classList.add(this._currentAnimationClass);\n // Remove the animation class to avoid animation when the checkbox is moved between containers\n const animationClass = this._currentAnimationClass;\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n element.classList.remove(animationClass);\n }, 1000);\n });\n }\n }\n _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.checked);\n this.change.emit(this._createChangeEvent(this.checked));\n // Assigning the value again here is redundant, but we have to do it in case it was\n // changed inside the `change` listener which will cause the input to be out of sync.\n if (this._inputElement) {\n this._inputElement.nativeElement.checked = this.checked;\n }\n }\n /** Toggles the `checked` state of the checkbox. */\n toggle() {\n this.checked = !this.checked;\n this._controlValueAccessorChangeFn(this.checked);\n }\n _handleInputClick() {\n const clickAction = this._options?.clickAction;\n // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n if (!this.disabled && clickAction !== 'noop') {\n // When user manually click on the checkbox, `indeterminate` is set to false.\n if (this.indeterminate && clickAction !== 'check') {\n Promise.resolve().then(() => {\n this._indeterminate = false;\n this.indeterminateChange.emit(this._indeterminate);\n });\n }\n this._checked = !this._checked;\n this._transitionCheckState(this._checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this._emitChangeEvent();\n }\n else if ((this.disabled && this.disabledInteractive) ||\n (!this.disabled && clickAction === 'noop')) {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `mat-checkbox`.\n this._inputElement.nativeElement.checked = this.checked;\n this._inputElement.nativeElement.indeterminate = this.indeterminate;\n }\n }\n _onInteractionEvent(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 }\n _onBlur() {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n _getAnimationClassForCheckStateTransition(oldState, newState) {\n // Don't transition if animations are disabled.\n if (this._animationMode === 'NoopAnimations') {\n return '';\n }\n switch (oldState) {\n case TransitionCheckState.Init:\n // Handle edge case where user interacts with checkbox that does not have [(ngModel)] or\n // [checked] bound to it.\n if (newState === TransitionCheckState.Checked) {\n return this._animationClasses.uncheckedToChecked;\n }\n else if (newState == TransitionCheckState.Indeterminate) {\n return this._checked\n ? this._animationClasses.checkedToIndeterminate\n : this._animationClasses.uncheckedToIndeterminate;\n }\n break;\n case TransitionCheckState.Unchecked:\n return newState === TransitionCheckState.Checked\n ? this._animationClasses.uncheckedToChecked\n : this._animationClasses.uncheckedToIndeterminate;\n case TransitionCheckState.Checked:\n return newState === TransitionCheckState.Unchecked\n ? this._animationClasses.checkedToUnchecked\n : this._animationClasses.checkedToIndeterminate;\n case TransitionCheckState.Indeterminate:\n return newState === TransitionCheckState.Checked\n ? this._animationClasses.indeterminateToChecked\n : this._animationClasses.indeterminateToUnchecked;\n }\n return '';\n }\n /**\n * Syncs the indeterminate value with the checkbox DOM node.\n *\n * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n * property is supported on an element boils down to `if (propName in element)`. Domino's\n * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n * server-side rendering.\n */\n _syncIndeterminate(value) {\n const nativeCheckbox = this._inputElement;\n if (nativeCheckbox) {\n nativeCheckbox.nativeElement.indeterminate = value;\n }\n }\n _onInputClick() {\n this._handleInputClick();\n }\n _onTouchTargetClick() {\n this._handleInputClick();\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 /**\n * Prevent click events that come from the `