blob: 761d0ca5dacd7999c9fa2aa8ad76c9dd0da1f244 [file] [log] [blame]
{"version":3,"file":"material-tree.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/material/tree/outlet.ts","../../src/material/tree/node.ts","../../src/material/tree/padding.ts","../../src/material/tree/tree.ts","../../src/material/tree/toggle.ts","../../src/material/tree/tree-module.ts","../../src/material/tree/data-source/flat-data-source.ts","../../src/material/tree/data-source/nested-data-source.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\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 */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {\n Directive,\n Inject,\n Optional,\n ViewContainerRef,\n} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]'\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any) {}\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\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Attribute,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n IterableDiffers,\n OnDestroy,\n QueryList,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material/core';\n\nimport {MatTreeNodeOutlet} from './outlet';\n\nconst _MatTreeNodeMixinBase: HasTabIndexCtor & CanDisableCtor & typeof CdkTreeNode =\n mixinTabIndex(mixinDisabled(CdkTreeNode));\n\nconst _MatNestedTreeNodeMixinBase:\n HasTabIndexCtor & CanDisableCtor & typeof CdkNestedTreeNode =\n mixinTabIndex(mixinDisabled(CdkNestedTreeNode));\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['disabled', 'tabIndex'],\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.aria-level]': 'role === \"treeitem\" ? level : null',\n '[attr.role]': 'role',\n 'class': 'mat-tree-node'\n },\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}]\n})\nexport class MatTreeNode<T> extends _MatTreeNodeMixinBase<T>\n implements CanDisable, HasTabIndex {\n @Input() role: 'treeitem' | 'group' = 'treeitem';\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree);\n\n this.tabIndex = Number(tabIndex) || 0;\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: [\n 'when: matTreeNodeDefWhen'\n ],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}]\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.role]': 'role',\n 'class': 'mat-nested-tree-node',\n },\n inputs: ['disabled', 'tabIndex'],\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode}\n ]\n})\nexport class MatNestedTreeNode<T> extends _MatNestedTreeNodeMixinBase<T> implements\n AfterContentInit, CanDisable, HasTabIndex, OnDestroy {\n @Input('matNestedTreeNode') node: T;\n\n /** The children node placeholder. */\n @ContentChildren(MatTreeNodeOutlet, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n })\n nodeOutlet: QueryList<MatTreeNodeOutlet>;\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n protected _differs: IterableDiffers,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree, _differs);\n\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #23091 is fixed\n ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\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 */\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}]\n})\nexport class MatTreeNodePadding<T> extends CdkTreeNodePadding<T> {\n\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input('matTreeNodePadding') level: number;\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent') indent: number;\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\nimport {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n },\n styleUrls: ['tree.css'],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}]\n})\nexport class MatTree<T> extends CdkTree<T> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n @ViewChild(MatTreeNodeOutlet, {static: true}) _nodeOutlet: MatTreeNodeOutlet;\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\nimport {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}]\n})\nexport class MatTreeNodeToggle<T> extends CdkTreeNodeToggle<T> {\n @Input('matTreeNodeToggleRecursive') recursive: boolean = false;\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\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet\n];\n\n@NgModule({\n imports: [CdkTreeModule, CommonModule, MatCommonModule],\n exports: MAT_TREE_DIRECTIVES,\n declarations: MAT_TREE_DIRECTIVES,\n})\nexport class MatTreeModule {}\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\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nexport class MatTreeFlattener<T, F> {\n\n constructor(public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) =>\n Observable<T[]> | T[] | undefined | null) {}\n\n _flattenNode(node: T, level: number,\n resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number,\n resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nexport class MatTreeFlatDataSource<T, F> extends DataSource<F> {\n _flattenedData = new BehaviorSubject<F[]>([]);\n\n _expandedData = new BehaviorSubject<F[]>([]);\n\n _data: BehaviorSubject<T[]>;\n get data() { return this._data.value; }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n\n constructor(private _treeControl: FlatTreeControl<F>,\n private _treeFlattener: MatTreeFlattener<T, F>,\n initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n const changes = [\n collectionViewer.viewChange,\n this._treeControl.expansionModel.onChange,\n this._flattenedData\n ];\n return merge(...changes).pipe(map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));\n return this._expandedData.value;\n }));\n }\n\n disconnect() {\n // no op\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\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n _data = new BehaviorSubject<T[]>([]);\n\n /**\n * Data for the nested tree\n */\n get data() { return this._data.value; }\n set data(value: T[]) { this._data.next(value); }\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...[collectionViewer.viewChange, this._data])\n .pipe(map(() => {\n return this.data;\n }));\n }\n\n disconnect() {\n // no op\n }\n}\n\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","setPrototypeOf","__proto__","Array","p","hasOwnProperty","MatTreeNodeOutlet","viewContainer","_node","type","Directive","args","selector","ViewContainerRef","undefined","decorators","Inject","CDK_TREE_NODE_OUTLET_NODE","Optional","_MatTreeNodeMixinBase","mixinTabIndex","mixinDisabled","CdkTreeNode","_MatNestedTreeNodeMixinBase","CdkNestedTreeNode","MatTreeNode","_super","_elementRef","_tree","tabIndex","_this","call","role","Number","tslib_1.__extends","exportAs","inputs","host","[attr.aria-expanded]","[attr.aria-level]","[attr.role]","class","providers","provide","useExisting","ElementRef","CdkTree","String","Attribute","Input","MatTreeNodeDef","CdkTreeNodeDef","data","MatNestedTreeNode","_differs","ngAfterContentInit","ngOnDestroy","IterableDiffers","node","nodeOutlet","ContentChildren","descendants","MatTreeNodePadding","CdkTreeNodePadding","level","indent","MatTree","Component","template","styles","encapsulation","ViewEncapsulation","None","propDecorators","MatTreeNodeToggle","apply","arguments","recursive","CdkTreeNodeToggle","MAT_TREE_DIRECTIVES","MatTreeModule","NgModule","imports","CdkTreeModule","CommonModule","MatCommonModule","exports","declarations","MatTreeFlattener","transformFunction","getLevel","isExpandable","getChildren","_flattenNode","resultNodes","parentMap","flatNode","push","childrenNodes","isArray","_flattenChildren","pipe","take","subscribe","children","forEach","child","index","childParentMap","slice","length","flattenNodes","structuredData","expandFlattenedNodes","nodes","treeControl","results","currentExpand","expand","i","isExpanded","MatTreeFlatDataSource","_treeControl","_treeFlattener","initialData","_flattenedData","BehaviorSubject","_expandedData","_data","defineProperty","value","next","dataNodes","connect","collectionViewer","changes","viewChange","expansionModel","onChange","merge","map","disconnect","DataSource","MatTreeNestedDataSource"],"mappings":"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"}