{"version":3,"file":"default-node_modules_angular_cdk_fesm2020_collections_mjs-node_modules_angular_material_fesm2-af0825.4b9b871cf920a260.js","mappings":"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","names":["DataSource","isDataSource","value","connect","_DisposeViewRepeaterStrategy","applyChanges","changes","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","currentIndex","view","operation","previousIndex","insertContext","createEmbeddedView","templateRef","context","index","remove","get","move","detach","_RecycleViewRepeaterStrategy","constructor","this","viewCacheSize","_viewCache","_insertView","_detachAndCacheView","_moveView","destroy","viewArgsFactory","cachedView","_insertViewFromCache","$implicit","viewArgs","detachedView","_maybeCacheView","length","push","indexOf","pop","insert","SelectionModel","_multiple","initiallySelectedValues","_emitChanges","compareWith","_selection","Set","_deselectedToEmit","_selectedToEmit","changed","Subject","forEach","_markSelected","selected","_selected","Array","from","values","select","_verifyValueAssignment","_hasQueuedChanges","_emitChangeEvent","deselect","_unmarkSelected","setSelection","oldValues","newSelectedSet","filter","has","toggle","isSelected","clear","flushEvent","_unmarkAll","otherValue","isEmpty","size","hasValue","sort","predicate","isMultipleSelection","next","source","added","removed","add","delete","UniqueSelectionDispatcher","_listeners","notify","id","name","listener","listen","registered","ngOnDestroy","ɵfac","ɵprov","i0","factory","_VIEW_REPEATER_STRATEGY","InjectionToken","MatDivider","_vertical","_inset","vertical","coerceBooleanProperty","inset","ɵcmp","selectors","MatDividerModule","ɵmod","ɵinj","MatCommonModule"],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/cdk/fesm2020/collections.mjs","./node_modules/@angular/material/fesm2020/divider.mjs"],"sourcesContent":["import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\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 DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource.\n return value && typeof value.connect === 'function';\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/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\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 * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* _ViewRepeaterOperation.INSERTED */;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* _ViewRepeaterOperation.REMOVED */;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* _ViewRepeaterOperation.MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\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 * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* _ViewRepeaterOperation.INSERTED */ : 0 /* _ViewRepeaterOperation.REPLACED */;\n }\n else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* _ViewRepeaterOperation.REMOVED */;\n }\n else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* _ViewRepeaterOperation.MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\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 * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n this.compareWith = compareWith;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(...values) {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n values.forEach(value => this._markSelected(value));\n oldValues\n .filter(value => !newSelectedSet.has(value))\n .forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true) {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n if (this.compareWith) {\n for (const otherValue of this._selection) {\n if (this.compareWith(otherValue, value)) {\n return true;\n }\n }\n return false;\n }\n return this._selection.has(value);\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n /** Whether there are queued up change to be emitted. */\n _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\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 * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n}\nUniqueSelectionDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\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 * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\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 { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule } from '@angular/material/core';\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 MatDivider {\n constructor() {\n this._vertical = false;\n this._inset = false;\n }\n /** Whether the divider is vertically aligned. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** Whether the divider is an inset divider. */\n get inset() {\n return this._inset;\n }\n set inset(value) {\n this._inset = coerceBooleanProperty(value);\n }\n}\nMatDivider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: MatDivider, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatDivider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0-rc.0\", type: MatDivider, selector: \"mat-divider\", inputs: { vertical: \"vertical\", inset: \"inset\" }, host: { attributes: { \"role\": \"separator\" }, properties: { \"attr.aria-orientation\": \"vertical ? \\\"vertical\\\" : \\\"horizontal\\\"\", \"class.mat-divider-vertical\": \"vertical\", \"class.mat-divider-horizontal\": \"!vertical\", \"class.mat-divider-inset\": \"inset\" }, classAttribute: \"mat-divider\" }, ngImport: i0, template: '', isInline: true, styles: [\".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: MatDivider, decorators: [{\n type: Component,\n args: [{ selector: 'mat-divider', host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-horizontal]': '!vertical',\n '[class.mat-divider-inset]': 'inset',\n 'class': 'mat-divider',\n }, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\"] }]\n }], propDecorators: { vertical: [{\n type: Input\n }], inset: [{\n type: Input\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 MatDividerModule {\n}\nMatDividerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: MatDividerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatDividerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: MatDividerModule, declarations: [MatDivider], imports: [MatCommonModule], exports: [MatDivider, MatCommonModule] });\nMatDividerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: MatDividerModule, imports: [MatCommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0-rc.0\", ngImport: i0, type: MatDividerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatDivider, MatCommonModule],\n declarations: [MatDivider],\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 { MatDivider, MatDividerModule };\n"],"x_google_ignoreList":[0,1]}