| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569 |
- /**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs'), require('@angular/core')) :
- typeof define === 'function' && define.amd ? define('@angular/cdk/collections', ['exports', 'rxjs', '@angular/core'], factory) :
- (factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || {}, global.ng.cdk.collections = {}),global.rxjs,global.ng.core));
- }(this, (function (exports,rxjs,core) { 'use strict';
- /*! *****************************************************************************
- Copyright (c) Microsoft Corporation. All rights reserved.
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of the
- License at http://www.apache.org/licenses/LICENSE-2.0
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
- MERCHANTABLITY OR NON-INFRINGEMENT.
- See the Apache Version 2.0 License for specific language governing permissions
- and limitations under the License.
- ***************************************************************************** */
- /* global Reflect, Promise */
- var extendStatics = function(d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- function __extends(d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * @abstract
- * @template T
- */
- var /**
- * @abstract
- * @template T
- */
- DataSource = /** @class */ (function () {
- function DataSource() {
- }
- return DataSource;
- }());
- /**
- * Checks whether an object is a data source.
- * @param {?} value
- * @return {?}
- */
- function isDataSource(value) {
- // Check if the value is a DataSource by observing if it has a connect function. Cannot
- // be checked as an `instanceof DataSource` since people could create their own sources
- // that match the interface, but don't extend DataSource.
- return value && typeof value.connect === 'function';
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * DataSource wrapper for a native array.
- * @template T
- */
- var /**
- * DataSource wrapper for a native array.
- * @template T
- */
- ArrayDataSource = /** @class */ (function (_super) {
- __extends(ArrayDataSource, _super);
- function ArrayDataSource(_data) {
- var _this = _super.call(this) || this;
- _this._data = _data;
- return _this;
- }
- /**
- * @return {?}
- */
- ArrayDataSource.prototype.connect = /**
- * @return {?}
- */
- function () {
- return this._data instanceof rxjs.Observable ? this._data : rxjs.of(this._data);
- };
- /**
- * @return {?}
- */
- ArrayDataSource.prototype.disconnect = /**
- * @return {?}
- */
- function () { };
- return ArrayDataSource;
- }(DataSource));
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Class to be used to power selecting one or more options from a list.
- * @template T
- */
- var /**
- * Class to be used to power selecting one or more options from a list.
- * @template T
- */
- SelectionModel = /** @class */ (function () {
- function SelectionModel(_multiple, initiallySelectedValues, _emitChanges) {
- var _this = this;
- if (_multiple === void 0) { _multiple = false; }
- if (_emitChanges === void 0) { _emitChanges = true; }
- this._multiple = _multiple;
- this._emitChanges = _emitChanges;
- /**
- * Currently-selected values.
- */
- this._selection = new Set();
- /**
- * Keeps track of the deselected options that haven't been emitted by the change event.
- */
- this._deselectedToEmit = [];
- /**
- * Keeps track of the selected options that haven't been emitted by the change event.
- */
- this._selectedToEmit = [];
- /**
- * Event emitted when the value has changed.
- */
- this.changed = new rxjs.Subject();
- /**
- * Event emitted when the value has changed.
- * @deprecated Use `changed` instead.
- * \@breaking-change 8.0.0 To be changed to `changed`
- */
- this.onChange = this.changed;
- if (initiallySelectedValues && initiallySelectedValues.length) {
- if (_multiple) {
- initiallySelectedValues.forEach((/**
- * @param {?} value
- * @return {?}
- */
- function (value) { return _this._markSelected(value); }));
- }
- else {
- this._markSelected(initiallySelectedValues[0]);
- }
- // Clear the array in order to avoid firing the change event for preselected values.
- this._selectedToEmit.length = 0;
- }
- }
- Object.defineProperty(SelectionModel.prototype, "selected", {
- /** Selected values. */
- get: /**
- * Selected values.
- * @return {?}
- */
- function () {
- if (!this._selected) {
- this._selected = Array.from(this._selection.values());
- }
- return this._selected;
- },
- enumerable: true,
- configurable: true
- });
- /**
- * Selects a value or an array of values.
- */
- /**
- * Selects a value or an array of values.
- * @param {...?} values
- * @return {?}
- */
- SelectionModel.prototype.select = /**
- * Selects a value or an array of values.
- * @param {...?} values
- * @return {?}
- */
- function () {
- var _this = this;
- var values = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- values[_i] = arguments[_i];
- }
- this._verifyValueAssignment(values);
- values.forEach((/**
- * @param {?} value
- * @return {?}
- */
- function (value) { return _this._markSelected(value); }));
- this._emitChangeEvent();
- };
- /**
- * Deselects a value or an array of values.
- */
- /**
- * Deselects a value or an array of values.
- * @param {...?} values
- * @return {?}
- */
- SelectionModel.prototype.deselect = /**
- * Deselects a value or an array of values.
- * @param {...?} values
- * @return {?}
- */
- function () {
- var _this = this;
- var values = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- values[_i] = arguments[_i];
- }
- this._verifyValueAssignment(values);
- values.forEach((/**
- * @param {?} value
- * @return {?}
- */
- function (value) { return _this._unmarkSelected(value); }));
- this._emitChangeEvent();
- };
- /**
- * Toggles a value between selected and deselected.
- */
- /**
- * Toggles a value between selected and deselected.
- * @param {?} value
- * @return {?}
- */
- SelectionModel.prototype.toggle = /**
- * Toggles a value between selected and deselected.
- * @param {?} value
- * @return {?}
- */
- function (value) {
- this.isSelected(value) ? this.deselect(value) : this.select(value);
- };
- /**
- * Clears all of the selected values.
- */
- /**
- * Clears all of the selected values.
- * @return {?}
- */
- SelectionModel.prototype.clear = /**
- * Clears all of the selected values.
- * @return {?}
- */
- function () {
- this._unmarkAll();
- this._emitChangeEvent();
- };
- /**
- * Determines whether a value is selected.
- */
- /**
- * Determines whether a value is selected.
- * @param {?} value
- * @return {?}
- */
- SelectionModel.prototype.isSelected = /**
- * Determines whether a value is selected.
- * @param {?} value
- * @return {?}
- */
- function (value) {
- return this._selection.has(value);
- };
- /**
- * Determines whether the model does not have a value.
- */
- /**
- * Determines whether the model does not have a value.
- * @return {?}
- */
- SelectionModel.prototype.isEmpty = /**
- * Determines whether the model does not have a value.
- * @return {?}
- */
- function () {
- return this._selection.size === 0;
- };
- /**
- * Determines whether the model has a value.
- */
- /**
- * Determines whether the model has a value.
- * @return {?}
- */
- SelectionModel.prototype.hasValue = /**
- * Determines whether the model has a value.
- * @return {?}
- */
- function () {
- return !this.isEmpty();
- };
- /**
- * Sorts the selected values based on a predicate function.
- */
- /**
- * Sorts the selected values based on a predicate function.
- * @param {?=} predicate
- * @return {?}
- */
- SelectionModel.prototype.sort = /**
- * Sorts the selected values based on a predicate function.
- * @param {?=} predicate
- * @return {?}
- */
- function (predicate) {
- if (this._multiple && this.selected) {
- (/** @type {?} */ (this._selected)).sort(predicate);
- }
- };
- /**
- * Gets whether multiple values can be selected.
- */
- /**
- * Gets whether multiple values can be selected.
- * @return {?}
- */
- SelectionModel.prototype.isMultipleSelection = /**
- * Gets whether multiple values can be selected.
- * @return {?}
- */
- function () {
- return this._multiple;
- };
- /** Emits a change event and clears the records of selected and deselected values. */
- /**
- * Emits a change event and clears the records of selected and deselected values.
- * @private
- * @return {?}
- */
- SelectionModel.prototype._emitChangeEvent = /**
- * Emits a change event and clears the records of selected and deselected values.
- * @private
- * @return {?}
- */
- function () {
- // Clear the selected values so they can be re-cached.
- this._selected = null;
- if (this._selectedToEmit.length || this._deselectedToEmit.length) {
- this.changed.next({
- source: this,
- added: this._selectedToEmit,
- removed: this._deselectedToEmit
- });
- this._deselectedToEmit = [];
- this._selectedToEmit = [];
- }
- };
- /** Selects a value. */
- /**
- * Selects a value.
- * @private
- * @param {?} value
- * @return {?}
- */
- SelectionModel.prototype._markSelected = /**
- * Selects a value.
- * @private
- * @param {?} value
- * @return {?}
- */
- function (value) {
- if (!this.isSelected(value)) {
- if (!this._multiple) {
- this._unmarkAll();
- }
- this._selection.add(value);
- if (this._emitChanges) {
- this._selectedToEmit.push(value);
- }
- }
- };
- /** Deselects a value. */
- /**
- * Deselects a value.
- * @private
- * @param {?} value
- * @return {?}
- */
- SelectionModel.prototype._unmarkSelected = /**
- * Deselects a value.
- * @private
- * @param {?} value
- * @return {?}
- */
- function (value) {
- if (this.isSelected(value)) {
- this._selection.delete(value);
- if (this._emitChanges) {
- this._deselectedToEmit.push(value);
- }
- }
- };
- /** Clears out the selected values. */
- /**
- * Clears out the selected values.
- * @private
- * @return {?}
- */
- SelectionModel.prototype._unmarkAll = /**
- * Clears out the selected values.
- * @private
- * @return {?}
- */
- function () {
- var _this = this;
- if (!this.isEmpty()) {
- this._selection.forEach((/**
- * @param {?} value
- * @return {?}
- */
- function (value) { return _this._unmarkSelected(value); }));
- }
- };
- /**
- * Verifies the value assignment and throws an error if the specified value array is
- * including multiple values while the selection model is not supporting multiple values.
- */
- /**
- * Verifies the value assignment and throws an error if the specified value array is
- * including multiple values while the selection model is not supporting multiple values.
- * @private
- * @param {?} values
- * @return {?}
- */
- SelectionModel.prototype._verifyValueAssignment = /**
- * Verifies the value assignment and throws an error if the specified value array is
- * including multiple values while the selection model is not supporting multiple values.
- * @private
- * @param {?} values
- * @return {?}
- */
- function (values) {
- if (values.length > 1 && !this._multiple) {
- throw getMultipleValuesInSingleSelectionError();
- }
- };
- return SelectionModel;
- }());
- /**
- * Returns an error that reports that multiple values are passed into a selection model
- * with a single value.
- * \@docs-private
- * @return {?}
- */
- function getMultipleValuesInSingleSelectionError() {
- return Error('Cannot pass multiple values into SelectionModel with single-value mode.');
- }
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- /**
- * Class to coordinate unique selection based on name.
- * Intended to be consumed as an Angular service.
- * This service is needed because native radio change events are only fired on the item currently
- * being selected, and we still need to uncheck the previous selection.
- *
- * This service does not *store* any IDs and names because they may change at any time, so it is
- * less error-prone if they are simply passed through when the events occur.
- */
- var UniqueSelectionDispatcher = /** @class */ (function () {
- function UniqueSelectionDispatcher() {
- this._listeners = [];
- }
- /**
- * Notify other items that selection for the given name has been set.
- * @param id ID of the item.
- * @param name Name of the item.
- */
- /**
- * Notify other items that selection for the given name has been set.
- * @param {?} id ID of the item.
- * @param {?} name Name of the item.
- * @return {?}
- */
- UniqueSelectionDispatcher.prototype.notify = /**
- * Notify other items that selection for the given name has been set.
- * @param {?} id ID of the item.
- * @param {?} name Name of the item.
- * @return {?}
- */
- function (id, name) {
- for (var _i = 0, _a = this._listeners; _i < _a.length; _i++) {
- var listener = _a[_i];
- listener(id, name);
- }
- };
- /**
- * Listen for future changes to item selection.
- * @return Function used to deregister listener
- */
- /**
- * Listen for future changes to item selection.
- * @param {?} listener
- * @return {?} Function used to deregister listener
- */
- UniqueSelectionDispatcher.prototype.listen = /**
- * Listen for future changes to item selection.
- * @param {?} listener
- * @return {?} Function used to deregister listener
- */
- function (listener) {
- var _this = this;
- this._listeners.push(listener);
- return (/**
- * @return {?}
- */
- function () {
- _this._listeners = _this._listeners.filter((/**
- * @param {?} registered
- * @return {?}
- */
- function (registered) {
- return listener !== registered;
- }));
- });
- };
- /**
- * @return {?}
- */
- UniqueSelectionDispatcher.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this._listeners = [];
- };
- UniqueSelectionDispatcher.decorators = [
- { type: core.Injectable, args: [{ providedIn: 'root' },] },
- ];
- /** @nocollapse */ UniqueSelectionDispatcher.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function UniqueSelectionDispatcher_Factory() { return new UniqueSelectionDispatcher(); }, token: UniqueSelectionDispatcher, providedIn: "root" });
- return UniqueSelectionDispatcher;
- }());
- exports.UniqueSelectionDispatcher = UniqueSelectionDispatcher;
- exports.ArrayDataSource = ArrayDataSource;
- exports.isDataSource = isDataSource;
- exports.DataSource = DataSource;
- exports.getMultipleValuesInSingleSelectionError = getMultipleValuesInSingleSelectionError;
- exports.SelectionModel = SelectionModel;
- Object.defineProperty(exports, '__esModule', { value: true });
- })));
- //# sourceMappingURL=cdk-collections.umd.js.map
|