@abp/ng.components 5.0.0-rc.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/abp-ng.components.d.ts +5 -5
  2. package/bundles/abp-ng.components-chart.js.umd.js +141 -141
  3. package/bundles/abp-ng.components-page.umd.js +542 -542
  4. package/bundles/abp-ng.components-tree.umd.js +557 -557
  5. package/bundles/abp-ng.components.umd.js +2 -2
  6. package/chart.js/abp-ng.components-chart.js.d.ts +5 -5
  7. package/chart.js/chart.component.d.ts +30 -30
  8. package/chart.js/chart.module.d.ts +8 -8
  9. package/chart.js/public-api.d.ts +3 -3
  10. package/chart.js/widget-utils.d.ts +1 -1
  11. package/esm2015/abp-ng.components.js +4 -4
  12. package/esm2015/chart.js/abp-ng.components-chart.js.js +4 -4
  13. package/esm2015/chart.js/chart.component.js +114 -114
  14. package/esm2015/chart.js/chart.module.js +18 -18
  15. package/esm2015/chart.js/public-api.js +3 -3
  16. package/esm2015/chart.js/widget-utils.js +10 -10
  17. package/esm2015/page/abp-ng.components-page.js +4 -4
  18. package/esm2015/page/page-part.directive.js +78 -78
  19. package/esm2015/page/page-parts.component.js +44 -44
  20. package/esm2015/page/page.component.js +60 -60
  21. package/esm2015/page/page.module.js +37 -37
  22. package/esm2015/page/public-api.js +4 -4
  23. package/esm2015/public-api.js +4 -4
  24. package/esm2015/tree/abp-ng.components-tree.js +4 -4
  25. package/esm2015/tree/lib/components/tree.component.js +100 -100
  26. package/esm2015/tree/lib/templates/expanded-icon-template.directive.js +15 -15
  27. package/esm2015/tree/lib/templates/tree-node-template.directive.js +15 -15
  28. package/esm2015/tree/lib/tree.module.js +24 -24
  29. package/esm2015/tree/lib/utils/nz-tree-adapter.js +91 -91
  30. package/esm2015/tree/public-api.js +5 -5
  31. package/fesm2015/abp-ng.components-chart.js.js +135 -135
  32. package/fesm2015/abp-ng.components-page.js +196 -196
  33. package/fesm2015/abp-ng.components-tree.js +219 -219
  34. package/fesm2015/abp-ng.components.js +4 -4
  35. package/package.json +4 -4
  36. package/page/abp-ng.components-page.d.ts +5 -5
  37. package/page/page-part.directive.d.ts +31 -31
  38. package/page/page-parts.component.d.ts +18 -18
  39. package/page/page.component.d.ts +21 -21
  40. package/page/page.module.d.ts +13 -13
  41. package/page/public-api.d.ts +4 -4
  42. package/public-api.d.ts +1 -1
  43. package/tree/abp-ng.components-tree.d.ts +5 -5
  44. package/tree/lib/components/tree.component.d.ts +39 -39
  45. package/tree/lib/templates/expanded-icon-template.directive.d.ts +8 -8
  46. package/tree/lib/templates/tree-node-template.directive.d.ts +8 -8
  47. package/tree/lib/tree.module.d.ts +13 -13
  48. package/tree/lib/utils/nz-tree-adapter.d.ts +39 -39
  49. package/tree/public-api.d.ts +5 -5
@@ -1,101 +1,101 @@
1
- import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation, } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';
4
- import { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "ng-zorro-antd/tree";
7
- import * as i2 from "ng-zorro-antd/core/no-animation";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@ng-bootstrap/ng-bootstrap";
10
- import * as i5 from "@abp/ng.core";
11
- export class TreeComponent {
12
- constructor() {
13
- this.dropdowns = {};
14
- this.checkedKeysChange = new EventEmitter();
15
- this.expandedKeysChange = new EventEmitter();
16
- this.selectedNodeChange = new EventEmitter();
17
- this.dropOver = new EventEmitter();
18
- this.noAnimation = true;
19
- this.checkedKeys = [];
20
- this.nodes = [];
21
- this.expandedKeys = [];
22
- this.isNodeSelected = node => { var _a; return ((_a = this.selectedNode) === null || _a === void 0 ? void 0 : _a.id) === node.key; };
23
- this.beforeDrop = (event) => {
24
- this.dropPosition = event.pos;
25
- return of(false);
26
- };
27
- }
28
- onSelectedNodeChange(node) {
29
- this.selectedNode = node.origin.entity;
30
- this.selectedNodeChange.emit(node.origin.entity);
31
- }
32
- onCheckboxChange(event) {
33
- this.checkedKeys = [...event.keys];
34
- this.checkedKeysChange.emit(event.keys);
35
- }
36
- onExpandedKeysChange(event) {
37
- this.expandedKeys = [...event.keys];
38
- this.expandedKeysChange.emit(event.keys);
39
- }
40
- onDrop(event) {
41
- event.event.stopPropagation();
42
- event.event.preventDefault();
43
- event.pos = this.dropPosition;
44
- this.dropOver.emit(event);
45
- }
46
- initDropdown(key, dropdown) {
47
- this.dropdowns[key] = dropdown;
48
- }
49
- }
50
- TreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
- TreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TreeComponent, selector: "abp-tree", inputs: { noAnimation: "noAnimation", draggable: "draggable", checkable: "checkable", checkStrictly: "checkStrictly", checkedKeys: "checkedKeys", nodes: "nodes", expandedKeys: "expandedKeys", selectedNode: "selectedNode", isNodeSelected: "isNodeSelected", beforeDrop: "beforeDrop" }, outputs: { checkedKeysChange: "checkedKeysChange", expandedKeysChange: "expandedKeysChange", selectedNodeChange: "selectedNodeChange", dropOver: "dropOver" }, queries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "customNodeTemplate", first: true, predicate: TreeNodeTemplateDirective, descendants: true }, { propertyName: "expandedIconTemplate", first: true, predicate: ExpandedIconTemplateDirective, descendants: true }], ngImport: i0, template: "<nz-tree\n [nzBeforeDrop]=\"beforeDrop\"\n [nzDraggable]=\"draggable\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzCheckable]=\"checkable\"\n [nzCheckedKeys]=\"checkedKeys\"\n [nzData]=\"nodes\"\n [nzTreeTemplate]=\"treeTemplate\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzExpandedIcon]=\"expandedIconTemplate?.template || defaultIconTemplate\"\n (nzExpandChange)=\"onExpandedKeysChange($event)\"\n (nzCheckBoxChange)=\"onCheckboxChange($event)\"\n (nzOnDrop)=\"onDrop($event)\"\n [nzNoAnimation]=\"noAnimation\"\n (nzContextMenu)=\"dropdowns[$event.node?.key]?.toggle()\"\n></nz-tree>\n<ng-template #treeTemplate let-node>\n <div\n class=\"node-wrapper\"\n [class.selected]=\"isNodeSelected(node)\"\n [title]=\"node.title\"\n (click)=\"onSelectedNodeChange(node)\"\n >\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $implicit: node }\"></ng-container>\n\n <ng-template #nodeTemplate let-node>\n <div class=\"d-inline-block\">\n <ng-container\n *ngTemplateOutlet=\"\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\n context: { $implicit: node }\n \"\n ></ng-container>\n </div>\n\n <div\n #dropdown=\"ngbDropdown\"\n *ngIf=\"menu\"\n class=\"d-inline-block ms-1\"\n ngbDropdown\n placement=\"bottom\"\n container=\"body\"\n (abpInit)=\"initDropdown(node.key, dropdown)\"\n >\n <i\n class=\"fas fa-caret-down text-muted\"\n ngbDropdownToggle\n [class.dropdown-toggle]=\"false\"\n ></i>\n <div ngbDropdownMenu>\n <ng-template *ngTemplateOutlet=\"menu; context: { $implicit: node }\"></ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-template #defaultNodeTemplate let-node>\n <span>{{ node.title }}</span>\n </ng-template>\n </div>\n</ng-template>\n\n<ng-template #defaultIconTemplate let-node let-origin=\"origin\">\n <i style=\"line-height: 28px\" aria-hidden=\"true\">\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container\n ></i>\n</ng-template>\n\n<ng-template #minusIcon>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n >\n <path\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\"\n />\n </svg>\n</ng-template>\n\n<ng-template #plusIcon>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n >\n <path\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\"\n />\n </svg>\n</ng-template>\n", styles: [".ant-tree-checkbox,.ant-tree-checkbox-wrapper{font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:\"tnum\",\"tnum\"}@-webkit-keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}.ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:14px!important}.ant-tree.ant-tree-directory .ant-tree-treenode{position:relative}.ant-tree.ant-tree-directory .ant-tree-treenode:before{position:absolute;top:0;right:0;bottom:4px;left:0;transition:background-color .3s;content:\"\";pointer-events:none}.ant-tree.ant-tree-directory .ant-tree-treenode:hover:before{background:#f5f5f5}.ant-tree.ant-tree-directory .ant-tree-treenode>*{z-index:1}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher{transition:color .3s}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper{border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background:0 0}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected{color:#fff;background:0 0}.ant-tree.ant-tree-directory .ant-tree-treenode-selected:before,.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover:before{background:#1890ff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{color:#fff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper{color:#fff;background:0 0}.ant-tree-checkbox{box-sizing:border-box;padding:0;color:#000000d9;position:relative;line-height:1;white-space:nowrap;outline:0;cursor:pointer}.ant-tree-checkbox-input:focus+.ant-tree-checkbox-inner,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,.ant-tree-checkbox:hover .ant-tree-checkbox-inner{border-color:#1890ff}.ant-tree-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;-webkit-animation:antCheckboxEffect .36s ease-in-out;animation:antCheckboxEffect .36s ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;content:\"\"}.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after,.ant-tree-checkbox:hover:after{visibility:visible}.ant-tree-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-tree-checkbox-inner:after{position:absolute;top:50%;left:22%;display:table;width:5.71px;height:9.14px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:\" \"}.ant-tree-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-tree-checkbox-disabled,.ant-tree-checkbox-disabled .ant-tree-checkbox-input,.ant-tree-checkbox-disabled+span{cursor:not-allowed}.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:\" \"}.ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#00000040;-webkit-animation-name:none;animation-name:none}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;-webkit-animation-name:none;animation-name:none}.ant-tree-checkbox-disabled+span{color:#00000040}.ant-tree-checkbox-disabled:hover:after,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled:after{visibility:hidden}.ant-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:\"\\a0\"}.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled{cursor:not-allowed}.ant-tree-checkbox-wrapper+.ant-tree-checkbox-wrapper{margin-left:8px}.ant-tree-checkbox+span{padding-right:8px;padding-left:8px}.ant-tree,.ant-tree-checkbox-group{box-sizing:border-box;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:\"tnum\",\"tnum\"}.ant-tree-checkbox-group{margin:0;display:inline-block}.ant-tree-checkbox-group-item{margin-right:8px}.ant-tree-checkbox-group-item:last-child{margin-right:0}.ant-tree-checkbox-group-item+.ant-tree-checkbox-group-item{margin-left:0}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:\" \"}.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-tree{margin:0;background:#fff;border-radius:2px;transition:background-color .3s}.ant-tree-focused:not(:hover):not(.ant-tree-active-focused){background:#e6f7ff}.ant-tree-list-holder-inner{align-items:flex-start}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner{align-items:stretch}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper{flex:auto}.ant-tree .ant-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px;outline:0}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:#00000040;cursor:not-allowed}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover{background:0 0}.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper{background:#f5f5f5}.ant-tree .ant-tree-treenode:not(.ant-tree .ant-tree-treenode-disabled).filter-node .ant-tree-title{color:inherit;font-weight:500}.ant-tree-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-indent-unit{display:inline-block;width:24px}.ant-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-switcher .ant-select-tree-switcher-icon,.ant-tree-switcher .ant-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline}.ant-tree-switcher .ant-select-tree-switcher-icon svg,.ant-tree-switcher .ant-tree-switcher-icon svg{transition:transform .3s}.ant-tree-switcher-noop{cursor:default}.ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(-90deg)}.ant-tree-switcher-loading-icon{color:#1890ff}.ant-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%}.ant-tree-switcher-leaf-line:after,.ant-tree-switcher-leaf-line:before{position:absolute;margin-left:-1px;content:\" \"}.ant-tree-switcher-leaf-line:before{top:0;bottom:-4px;border-left:1px solid #d9d9d9}.ant-tree-switcher-leaf-line:after{width:10px;height:14px;border-bottom:1px solid #d9d9d9}.ant-tree-checkbox{top:auto;top:initial;margin:4px 8px 0 0}.ant-tree .ant-tree-node-content-wrapper{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:0 0;border-radius:2px;cursor:pointer;transition:all .3s,border 0s,line-height 0s,box-shadow 0s}.ant-tree .ant-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:#bae7ff}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty,.ant-tree-show-line .ant-tree-indent-unit-end:before{display:none}.ant-tree-unselectable .ant-tree-node-content-wrapper:hover{background-color:transparent}.ant-tree-node-content-wrapper[draggable=true]{line-height:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#1890ff;border-radius:1px;pointer-events:none}.ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator:after{position:absolute;top:-3px;left:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #1890ff;border-radius:50%;content:\"\"}.ant-tree .ant-tree-treenode.drop-container>[draggable]{box-shadow:0 0 0 2px #1890ff}.ant-tree-show-line .ant-tree-indent-unit{position:relative;height:100%}.ant-tree-show-line .ant-tree-indent-unit:before{position:absolute;top:0;right:12px;bottom:-4px;border-right:1px solid #d9d9d9;content:\"\"}.ant-tree-show-line .ant-tree-switcher{background:#fff}.ant-tree-show-line .ant-tree-switcher-line-icon{vertical-align:-.225em}.ant-tree-rtl{direction:rtl}.ant-tree-rtl .ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator:after{right:-6px;left:unset}.ant-tree .ant-tree-treenode-rtl{direction:rtl}.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(90deg)}.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit:before{right:auto;left:-13px;border-right:none;border-left:1px solid #d9d9d9}.ant-tree-rtl.ant-tree-checkbox,.ant-tree-select-dropdown-rtl .ant-select-tree-checkbox{margin:4px 0 0 8px}.font-highlight{color:#ff4d4f}.ant-tree-child-tree{overflow:hidden}nz-tree{display:block}\n", ".ant-tree{color:inherit}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}.ant-tree .ant-tree-switcher{line-height:17px}.ant-tree .ant-tree-node-content-wrapper{width:100%;padding:0}.ant-tree .node-wrapper{width:100%;position:relative;display:inline-block;margin:0;line-height:30px;text-decoration:none;vertical-align:top;border-radius:2px;cursor:pointer;padding:0 5px 0 8px;border:1px solid transparent}.ant-tree .ellipsis{position:absolute;right:8px;top:1px;cursor:pointer}\n"], components: [{ type: i1.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzExpandedIcon", "nzTreeTemplate", "nzBeforeDrop", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckBoxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }], directives: [{ type: i2.NzNoAnimationDirective, selector: "[nzNoAnimation]", inputs: ["nzNoAnimation"], exportAs: ["nzNoAnimation"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i5.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }], encapsulation: i0.ViewEncapsulation.None });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeComponent, decorators: [{
53
- type: Component,
54
- args: [{
55
- selector: 'abp-tree',
56
- templateUrl: 'tree.component.html',
57
- styleUrls: [
58
- '../../../../../../node_modules/ng-zorro-antd/tree/style/index.min.css',
59
- 'tree.component.scss',
60
- ],
61
- encapsulation: ViewEncapsulation.None,
62
- }]
63
- }], propDecorators: { menu: [{
64
- type: ContentChild,
65
- args: ['menu']
66
- }], customNodeTemplate: [{
67
- type: ContentChild,
68
- args: [TreeNodeTemplateDirective]
69
- }], expandedIconTemplate: [{
70
- type: ContentChild,
71
- args: [ExpandedIconTemplateDirective]
72
- }], checkedKeysChange: [{
73
- type: Output
74
- }], expandedKeysChange: [{
75
- type: Output
76
- }], selectedNodeChange: [{
77
- type: Output
78
- }], dropOver: [{
79
- type: Output
80
- }], noAnimation: [{
81
- type: Input
82
- }], draggable: [{
83
- type: Input
84
- }], checkable: [{
85
- type: Input
86
- }], checkStrictly: [{
87
- type: Input
88
- }], checkedKeys: [{
89
- type: Input
90
- }], nodes: [{
91
- type: Input
92
- }], expandedKeys: [{
93
- type: Input
94
- }], selectedNode: [{
95
- type: Input
96
- }], isNodeSelected: [{
97
- type: Input
98
- }], beforeDrop: [{
99
- type: Input
100
- }] } });
1
+ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation, } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { TreeNodeTemplateDirective } from '../templates/tree-node-template.directive';
4
+ import { ExpandedIconTemplateDirective } from '../templates/expanded-icon-template.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "ng-zorro-antd/tree";
7
+ import * as i2 from "ng-zorro-antd/core/no-animation";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
10
+ import * as i5 from "@abp/ng.core";
11
+ export class TreeComponent {
12
+ constructor() {
13
+ this.dropdowns = {};
14
+ this.checkedKeysChange = new EventEmitter();
15
+ this.expandedKeysChange = new EventEmitter();
16
+ this.selectedNodeChange = new EventEmitter();
17
+ this.dropOver = new EventEmitter();
18
+ this.noAnimation = true;
19
+ this.checkedKeys = [];
20
+ this.nodes = [];
21
+ this.expandedKeys = [];
22
+ this.isNodeSelected = node => { var _a; return ((_a = this.selectedNode) === null || _a === void 0 ? void 0 : _a.id) === node.key; };
23
+ this.beforeDrop = (event) => {
24
+ this.dropPosition = event.pos;
25
+ return of(false);
26
+ };
27
+ }
28
+ onSelectedNodeChange(node) {
29
+ this.selectedNode = node.origin.entity;
30
+ this.selectedNodeChange.emit(node.origin.entity);
31
+ }
32
+ onCheckboxChange(event) {
33
+ this.checkedKeys = [...event.keys];
34
+ this.checkedKeysChange.emit(event.keys);
35
+ }
36
+ onExpandedKeysChange(event) {
37
+ this.expandedKeys = [...event.keys];
38
+ this.expandedKeysChange.emit(event.keys);
39
+ }
40
+ onDrop(event) {
41
+ event.event.stopPropagation();
42
+ event.event.preventDefault();
43
+ event.pos = this.dropPosition;
44
+ this.dropOver.emit(event);
45
+ }
46
+ initDropdown(key, dropdown) {
47
+ this.dropdowns[key] = dropdown;
48
+ }
49
+ }
50
+ TreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
51
+ TreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TreeComponent, selector: "abp-tree", inputs: { noAnimation: "noAnimation", draggable: "draggable", checkable: "checkable", checkStrictly: "checkStrictly", checkedKeys: "checkedKeys", nodes: "nodes", expandedKeys: "expandedKeys", selectedNode: "selectedNode", isNodeSelected: "isNodeSelected", beforeDrop: "beforeDrop" }, outputs: { checkedKeysChange: "checkedKeysChange", expandedKeysChange: "expandedKeysChange", selectedNodeChange: "selectedNodeChange", dropOver: "dropOver" }, queries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "customNodeTemplate", first: true, predicate: TreeNodeTemplateDirective, descendants: true }, { propertyName: "expandedIconTemplate", first: true, predicate: ExpandedIconTemplateDirective, descendants: true }], ngImport: i0, template: "<nz-tree\n [nzBeforeDrop]=\"beforeDrop\"\n [nzDraggable]=\"draggable\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzCheckable]=\"checkable\"\n [nzCheckedKeys]=\"checkedKeys\"\n [nzData]=\"nodes\"\n [nzTreeTemplate]=\"treeTemplate\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzExpandedIcon]=\"expandedIconTemplate?.template || defaultIconTemplate\"\n (nzExpandChange)=\"onExpandedKeysChange($event)\"\n (nzCheckBoxChange)=\"onCheckboxChange($event)\"\n (nzOnDrop)=\"onDrop($event)\"\n [nzNoAnimation]=\"noAnimation\"\n (nzContextMenu)=\"dropdowns[$event.node?.key]?.toggle()\"\n></nz-tree>\n<ng-template #treeTemplate let-node>\n <div\n class=\"node-wrapper\"\n [class.selected]=\"isNodeSelected(node)\"\n [title]=\"node.title\"\n (click)=\"onSelectedNodeChange(node)\"\n >\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $implicit: node }\"></ng-container>\n\n <ng-template #nodeTemplate let-node>\n <div class=\"d-inline-block\">\n <ng-container\n *ngTemplateOutlet=\"\n customNodeTemplate ? customNodeTemplate?.template : defaultNodeTemplate;\n context: { $implicit: node }\n \"\n ></ng-container>\n </div>\n\n <div\n #dropdown=\"ngbDropdown\"\n *ngIf=\"menu\"\n class=\"d-inline-block ms-1\"\n ngbDropdown\n placement=\"bottom\"\n container=\"body\"\n (abpInit)=\"initDropdown(node.key, dropdown)\"\n >\n <i\n class=\"fas fa-caret-down text-muted\"\n ngbDropdownToggle\n [class.dropdown-toggle]=\"false\"\n ></i>\n <div ngbDropdownMenu>\n <ng-template *ngTemplateOutlet=\"menu; context: { $implicit: node }\"></ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-template #defaultNodeTemplate let-node>\n <span>{{ node.title }}</span>\n </ng-template>\n </div>\n</ng-template>\n\n<ng-template #defaultIconTemplate let-node let-origin=\"origin\">\n <i style=\"line-height: 28px\" aria-hidden=\"true\">\n <ng-container *ngTemplateOutlet=\"node.isExpanded ? minusIcon : plusIcon\"></ng-container\n ></i>\n</ng-template>\n\n<ng-template #minusIcon>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n >\n <path\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm-6.5 10h13v1h-13v-1z\"\n />\n </svg>\n</ng-template>\n\n<ng-template #plusIcon>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n >\n <path\n d=\"M11.5 0c6.347 0 11.5 5.153 11.5 11.5s-5.153 11.5-11.5 11.5-11.5-5.153-11.5-11.5 5.153-11.5 11.5-11.5zm0 1c5.795 0 10.5 4.705 10.5 10.5s-4.705 10.5-10.5 10.5-10.5-4.705-10.5-10.5 4.705-10.5 10.5-10.5zm.5 10h6v1h-6v6h-1v-6h-6v-1h6v-6h1v6z\"\n />\n </svg>\n</ng-template>\n", styles: [".ant-tree-checkbox,.ant-tree-checkbox-wrapper{font-size:14px;font-variant:tabular-nums;list-style:none;font-feature-settings:\"tnum\",\"tnum\"}@-webkit-keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}@keyframes antCheckboxEffect{0%{transform:scale(1);opacity:.5}to{transform:scale(1.6);opacity:0}}.ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line:before{top:auto!important;bottom:auto!important;height:14px!important}.ant-tree.ant-tree-directory .ant-tree-treenode{position:relative}.ant-tree.ant-tree-directory .ant-tree-treenode:before{position:absolute;top:0;right:0;bottom:4px;left:0;transition:background-color .3s;content:\"\";pointer-events:none}.ant-tree.ant-tree-directory .ant-tree-treenode:hover:before{background:#f5f5f5}.ant-tree.ant-tree-directory .ant-tree-treenode>*{z-index:1}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher{transition:color .3s}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper{border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover{background:0 0}.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected{color:#fff;background:0 0}.ant-tree.ant-tree-directory .ant-tree-treenode-selected:before,.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover:before{background:#1890ff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{color:#fff}.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper{color:#fff;background:0 0}.ant-tree-checkbox{box-sizing:border-box;padding:0;color:#000000d9;position:relative;line-height:1;white-space:nowrap;outline:0;cursor:pointer}.ant-tree-checkbox-input:focus+.ant-tree-checkbox-inner,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,.ant-tree-checkbox:hover .ant-tree-checkbox-inner{border-color:#1890ff}.ant-tree-checkbox-checked:after{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #1890ff;border-radius:2px;visibility:hidden;-webkit-animation:antCheckboxEffect .36s ease-in-out;animation:antCheckboxEffect .36s ease-in-out;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;content:\"\"}.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox:after,.ant-tree-checkbox:hover:after{visibility:visible}.ant-tree-checkbox-inner{position:relative;top:0;left:0;display:block;width:16px;height:16px;direction:ltr;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;border-collapse:separate;transition:all .3s}.ant-tree-checkbox-inner:after{position:absolute;top:50%;left:21.5%;display:table;width:5.71px;height:9.14px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(0) translate(-50%,-50%);opacity:0;transition:all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;content:\" \"}.ant-tree-checkbox-input{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;height:100%;cursor:pointer;opacity:0}.ant-tree-checkbox-disabled,.ant-tree-checkbox-disabled .ant-tree-checkbox-input,.ant-tree-checkbox-disabled+span{cursor:not-allowed}.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{position:absolute;display:table;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(45deg) scale(1) translate(-50%,-50%);opacity:1;transition:all .2s cubic-bezier(.12,.4,.29,1.46) .1s;content:\" \"}.ant-tree-checkbox-checked .ant-tree-checkbox-inner{background-color:#1890ff;border-color:#1890ff}.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#00000040;-webkit-animation-name:none;animation-name:none}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner{background-color:#f5f5f5;border-color:#d9d9d9!important}.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{border-color:#f5f5f5;border-collapse:separate;-webkit-animation-name:none;animation-name:none}.ant-tree-checkbox-disabled+span{color:#00000040}.ant-tree-checkbox-disabled:hover:after,.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled:after{visibility:hidden}.ant-tree-checkbox-wrapper{box-sizing:border-box;margin:0;padding:0;color:#000000d9;display:inline-flex;align-items:baseline;line-height:unset;cursor:pointer}.ant-tree-checkbox-wrapper:after{display:inline-block;width:0;overflow:hidden;content:\"\\a0\"}.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled{cursor:not-allowed}.ant-tree-checkbox-wrapper+.ant-tree-checkbox-wrapper{margin-left:8px}.ant-tree-checkbox+span{padding-right:8px;padding-left:8px}.ant-tree,.ant-tree-checkbox-group{box-sizing:border-box;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:\"tnum\",\"tnum\"}.ant-tree-checkbox-group{margin:0;display:inline-block}.ant-tree-checkbox-group-item{margin-right:8px}.ant-tree-checkbox-group-item:last-child{margin-right:0}.ant-tree-checkbox-group-item+.ant-tree-checkbox-group-item{margin-left:0}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner{background-color:#fff;border-color:#d9d9d9}.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner:after{top:50%;left:50%;width:8px;height:8px;background-color:#1890ff;border:0;transform:translate(-50%,-50%) scale(1);opacity:1;content:\" \"}.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner:after{background-color:#00000040;border-color:#00000040}.ant-tree{margin:0;background:#fff;border-radius:2px;transition:background-color .3s}.ant-tree-focused:not(:hover):not(.ant-tree-active-focused){background:#e6f7ff}.ant-tree-list-holder-inner{align-items:flex-start}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner{align-items:stretch}.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper{flex:auto}.ant-tree .ant-tree-treenode{display:flex;align-items:flex-start;padding:0 0 4px;outline:0}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper{color:#00000040;cursor:not-allowed}.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover{background:0 0}.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper{background:#f5f5f5}.ant-tree .ant-tree-treenode:not(.ant-tree .ant-tree-treenode-disabled).filter-node .ant-tree-title{color:inherit;font-weight:500}.ant-tree-indent{align-self:stretch;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-indent-unit{display:inline-block;width:24px}.ant-tree-switcher{position:relative;flex:none;align-self:stretch;width:24px;margin:0;line-height:24px;text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-switcher .ant-select-tree-switcher-icon,.ant-tree-switcher .ant-tree-switcher-icon{display:inline-block;font-size:10px;vertical-align:baseline}.ant-tree-switcher .ant-select-tree-switcher-icon svg,.ant-tree-switcher .ant-tree-switcher-icon svg{transition:transform .3s}.ant-tree-switcher-noop{cursor:default}.ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(-90deg)}.ant-tree-switcher-loading-icon{color:#1890ff}.ant-tree-switcher-leaf-line{position:relative;z-index:1;display:inline-block;width:100%;height:100%}.ant-tree-switcher-leaf-line:after,.ant-tree-switcher-leaf-line:before{position:absolute;margin-left:-1px;content:\" \"}.ant-tree-switcher-leaf-line:before{top:0;bottom:-4px;border-left:1px solid #d9d9d9}.ant-tree-switcher-leaf-line:after{width:10px;height:14px;border-bottom:1px solid #d9d9d9}.ant-tree-checkbox{top:auto;top:initial;margin:4px 8px 0 0}.ant-tree .ant-tree-node-content-wrapper{position:relative;z-index:auto;min-height:24px;margin:0;padding:0 4px;color:inherit;line-height:24px;background:0 0;border-radius:2px;cursor:pointer;transition:all .3s,border 0s,line-height 0s,box-shadow 0s}.ant-tree .ant-tree-node-content-wrapper:hover{background-color:#f5f5f5}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:#bae7ff}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle{display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;vertical-align:top}.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty,.ant-tree-show-line .ant-tree-indent-unit-end:before{display:none}.ant-tree-unselectable .ant-tree-node-content-wrapper:hover{background-color:transparent}.ant-tree-node-content-wrapper[draggable=true]{line-height:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator{position:absolute;z-index:1;height:2px;background-color:#1890ff;border-radius:1px;pointer-events:none}.ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator:after{position:absolute;top:-3px;left:-6px;width:8px;height:8px;background-color:transparent;border:2px solid #1890ff;border-radius:50%;content:\"\"}.ant-tree .ant-tree-treenode.drop-container>[draggable]{box-shadow:0 0 0 2px #1890ff}.ant-tree-show-line .ant-tree-indent-unit{position:relative;height:100%}.ant-tree-show-line .ant-tree-indent-unit:before{position:absolute;top:0;right:12px;bottom:-4px;border-right:1px solid #d9d9d9;content:\"\"}.ant-tree-show-line .ant-tree-switcher{background:#fff}.ant-tree-show-line .ant-tree-switcher-line-icon{vertical-align:-.225em}.ant-tree-rtl{direction:rtl}.ant-tree-rtl .ant-tree-node-content-wrapper[draggable=true] .ant-tree-drop-indicator:after{right:-6px;left:unset}.ant-tree .ant-tree-treenode-rtl{direction:rtl}.ant-tree-rtl .ant-tree-switcher_close .ant-tree-switcher-icon svg{transform:rotate(90deg)}.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit:before{right:auto;left:-13px;border-right:none;border-left:1px solid #d9d9d9}.ant-tree-rtl.ant-tree-checkbox,.ant-tree-select-dropdown-rtl .ant-select-tree-checkbox{margin:4px 0 0 8px}.font-highlight{color:#ff4d4f}.ant-tree-child-tree{overflow:hidden}nz-tree{display:block}\n", ".ant-tree{color:inherit}.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}.ant-tree .ant-tree-switcher{line-height:17px}.ant-tree .ant-tree-node-content-wrapper{width:100%;padding:0}.ant-tree .node-wrapper{width:100%;position:relative;display:inline-block;margin:0;line-height:30px;text-decoration:none;vertical-align:top;border-radius:2px;cursor:pointer;padding:0 5px 0 8px;border:1px solid transparent}.ant-tree .ellipsis{position:absolute;right:8px;top:1px;cursor:pointer}\n"], components: [{ type: i1.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzExpandedIcon", "nzTreeTemplate", "nzBeforeDrop", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckBoxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }], directives: [{ type: i2.NzNoAnimationDirective, selector: "[nzNoAnimation]", inputs: ["nzNoAnimation"], exportAs: ["nzNoAnimation"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i5.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }], encapsulation: i0.ViewEncapsulation.None });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeComponent, decorators: [{
53
+ type: Component,
54
+ args: [{
55
+ selector: 'abp-tree',
56
+ templateUrl: 'tree.component.html',
57
+ styleUrls: [
58
+ '../../../../../../node_modules/ng-zorro-antd/tree/style/index.min.css',
59
+ 'tree.component.scss',
60
+ ],
61
+ encapsulation: ViewEncapsulation.None,
62
+ }]
63
+ }], propDecorators: { menu: [{
64
+ type: ContentChild,
65
+ args: ['menu']
66
+ }], customNodeTemplate: [{
67
+ type: ContentChild,
68
+ args: [TreeNodeTemplateDirective]
69
+ }], expandedIconTemplate: [{
70
+ type: ContentChild,
71
+ args: [ExpandedIconTemplateDirective]
72
+ }], checkedKeysChange: [{
73
+ type: Output
74
+ }], expandedKeysChange: [{
75
+ type: Output
76
+ }], selectedNodeChange: [{
77
+ type: Output
78
+ }], dropOver: [{
79
+ type: Output
80
+ }], noAnimation: [{
81
+ type: Input
82
+ }], draggable: [{
83
+ type: Input
84
+ }], checkable: [{
85
+ type: Input
86
+ }], checkStrictly: [{
87
+ type: Input
88
+ }], checkedKeys: [{
89
+ type: Input
90
+ }], nodes: [{
91
+ type: Input
92
+ }], expandedKeys: [{
93
+ type: Input
94
+ }], selectedNode: [{
95
+ type: Input
96
+ }], isNodeSelected: [{
97
+ type: Input
98
+ }], beforeDrop: [{
99
+ type: Input
100
+ }] } });
101
101
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90cmVlL3NyYy9saWIvY29tcG9uZW50cy90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQWM5RixNQUFNLE9BQU8sYUFBYTtJQVQxQjtRQVlFLGNBQVMsR0FBRyxFQUFvQyxDQUFDO1FBSzlCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNsRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBQ25ELGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBSW5CLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUU1QixtQkFBYyxHQUFHLElBQUksQ0FBQyxFQUFFLFdBQUMsT0FBQSxDQUFBLE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsRUFBRSxNQUFLLElBQUksQ0FBQyxHQUFHLENBQUEsRUFBQSxDQUFDO1FBQzVELGVBQVUsR0FBRyxDQUFDLEtBQThCLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDO0tBNEJIO0lBMUJDLG9CQUFvQixDQUFDLElBQUk7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUs7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFLO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWdCO1FBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QixLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFXLEVBQUUsUUFBcUI7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDakMsQ0FBQzs7MkdBbkRVLGFBQWE7K0ZBQWIsYUFBYSwwbUJBTVYseUJBQXlCLHVGQUN6Qiw2QkFBNkIsZ0RDakM3QyxvbEdBZ0dBOzRGRHRFYSxhQUFhO2tCQVR6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxTQUFTLEVBQUU7d0JBQ1QsdUVBQXVFO3dCQUN2RSxxQkFBcUI7cUJBQ3RCO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs4QkFNdUIsSUFBSTtzQkFBekIsWUFBWTt1QkFBQyxNQUFNO2dCQUNxQixrQkFBa0I7c0JBQTFELFlBQVk7dUJBQUMseUJBQXlCO2dCQUNNLG9CQUFvQjtzQkFBaEUsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBQ3hCLGlCQUFpQjtzQkFBbkMsTUFBTTtnQkFDWSxrQkFBa0I7c0JBQXBDLE1BQU07Z0JBQ1ksa0JBQWtCO3NCQUFwQyxNQUFNO2dCQUNZLFFBQVE7c0JBQTFCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE56Rm9ybWF0RW1pdEV2ZW50LCBOekZvcm1hdEJlZm9yZURyb3BFdmVudCB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJlZU5vZGVUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL3RlbXBsYXRlcy90cmVlLW5vZGUtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vdGVtcGxhdGVzL2V4cGFuZGVkLWljb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5leHBvcnQgdHlwZSBEcm9wRXZlbnQgPSBOekZvcm1hdEVtaXRFdmVudCAmIHsgcG9zOiBudW1iZXIgfTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJ3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25nLXpvcnJvLWFudGQvdHJlZS9zdHlsZS9pbmRleC5taW4uY3NzJyxcbiAgICAndHJlZS5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQge1xuICBkcm9wUG9zaXRpb246IG51bWJlcjtcblxuICBkcm9wZG93bnMgPSB7fSBhcyB7IFtrZXk6IHN0cmluZ106IE5nYkRyb3Bkb3duIH07XG5cbiAgQENvbnRlbnRDaGlsZCgnbWVudScpIG1lbnU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoVHJlZU5vZGVUZW1wbGF0ZURpcmVjdGl2ZSkgY3VzdG9tTm9kZVRlbXBsYXRlOiBUcmVlTm9kZVRlbXBsYXRlRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlKSBleHBhbmRlZEljb25UZW1wbGF0ZTogRXhwYW5kZWRJY29uVGVtcGxhdGVEaXJlY3RpdmU7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGVja2VkS2V5c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGV4cGFuZGVkS2V5c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3RlZE5vZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBkcm9wT3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcEV2ZW50PigpO1xuICBASW5wdXQoKSBub0FuaW1hdGlvbiA9IHRydWU7XG4gIEBJbnB1dCgpIGRyYWdnYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgY2hlY2thYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBjaGVja1N0cmljdGx5OiBib29sZWFuO1xuICBASW5wdXQoKSBjaGVja2VkS2V5cyA9IFtdO1xuICBASW5wdXQoKSBub2RlcyA9IFtdO1xuICBASW5wdXQoKSBleHBhbmRlZEtleXM6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGVkTm9kZTogYW55O1xuICBASW5wdXQoKSBpc05vZGVTZWxlY3RlZCA9IG5vZGUgPT4gdGhpcy5zZWxlY3RlZE5vZGU/LmlkID09PSBub2RlLmtleTtcbiAgQElucHV0KCkgYmVmb3JlRHJvcCA9IChldmVudDogTnpGb3JtYXRCZWZvcmVEcm9wRXZlbnQpID0+IHtcbiAgICB0aGlzLmRyb3BQb3NpdGlvbiA9IGV2ZW50LnBvcztcbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9O1xuXG4gIG9uU2VsZWN0ZWROb2RlQ2hhbmdlKG5vZGUpIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGUub3JpZ2luLmVudGl0eTtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZUNoYW5nZS5lbWl0KG5vZGUub3JpZ2luLmVudGl0eSk7XG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5jaGVja2VkS2V5cyA9IFsuLi5ldmVudC5rZXlzXTtcbiAgICB0aGlzLmNoZWNrZWRLZXlzQ2hhbmdlLmVtaXQoZXZlbnQua2V5cyk7XG4gIH1cblxuICBvbkV4cGFuZGVkS2V5c0NoYW5nZShldmVudCkge1xuICAgIHRoaXMuZXhwYW5kZWRLZXlzID0gWy4uLmV2ZW50LmtleXNdO1xuICAgIHRoaXMuZXhwYW5kZWRLZXlzQ2hhbmdlLmVtaXQoZXZlbnQua2V5cyk7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyb3BFdmVudCkge1xuICAgIGV2ZW50LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQucG9zID0gdGhpcy5kcm9wUG9zaXRpb247XG5cbiAgICB0aGlzLmRyb3BPdmVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgaW5pdERyb3Bkb3duKGtleTogc3RyaW5nLCBkcm9wZG93bjogTmdiRHJvcGRvd24pIHtcbiAgICB0aGlzLmRyb3Bkb3duc1trZXldID0gZHJvcGRvd247XG4gIH1cbn1cbiIsIjxuei10cmVlXG4gIFtuekJlZm9yZURyb3BdPVwiYmVmb3JlRHJvcFwiXG4gIFtuekRyYWdnYWJsZV09XCJkcmFnZ2FibGVcIlxuICBbbnpDaGVja1N0cmljdGx5XT1cImNoZWNrU3RyaWN0bHlcIlxuICBbbnpDaGVja2FibGVdPVwiY2hlY2thYmxlXCJcbiAgW256Q2hlY2tlZEtleXNdPVwiY2hlY2tlZEtleXNcIlxuICBbbnpEYXRhXT1cIm5vZGVzXCJcbiAgW256VHJlZVRlbXBsYXRlXT1cInRyZWVUZW1wbGF0ZVwiXG4gIFtuekV4cGFuZGVkS2V5c109XCJleHBhbmRlZEtleXNcIlxuICBbbnpFeHBhbmRlZEljb25dPVwiZXhwYW5kZWRJY29uVGVtcGxhdGU/LnRlbXBsYXRlIHx8IGRlZmF1bHRJY29uVGVtcGxhdGVcIlxuICAobnpFeHBhbmRDaGFuZ2UpPVwib25FeHBhbmRlZEtleXNDaGFuZ2UoJGV2ZW50KVwiXG4gIChuekNoZWNrQm94Q2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50KVwiXG4gIChuek9uRHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gIFtuek5vQW5pbWF0aW9uXT1cIm5vQW5pbWF0aW9uXCJcbiAgKG56Q29udGV4dE1lbnUpPVwiZHJvcGRvd25zWyRldmVudC5ub2RlPy5rZXldPy50b2dnbGUoKVwiXG4+PC9uei10cmVlPlxuPG5nLXRlbXBsYXRlICN0cmVlVGVtcGxhdGUgbGV0LW5vZGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm5vZGUtd3JhcHBlclwiXG4gICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzTm9kZVNlbGVjdGVkKG5vZGUpXCJcbiAgICBbdGl0bGVdPVwibm9kZS50aXRsZVwiXG4gICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWROb2RlQ2hhbmdlKG5vZGUpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbm9kZVRlbXBsYXRlIGxldC1ub2RlPlxuICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgY3VzdG9tTm9kZVRlbXBsYXRlID8gY3VzdG9tTm9kZVRlbXBsYXRlPy50ZW1wbGF0ZSA6IGRlZmF1bHROb2RlVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogbm9kZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI2Ryb3Bkb3duPVwibmdiRHJvcGRvd25cIlxuICAgICAgICAqbmdJZj1cIm1lbnVcIlxuICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrIG1zLTFcIlxuICAgICAgICBuZ2JEcm9wZG93blxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgKGFicEluaXQpPVwiaW5pdERyb3Bkb3duKG5vZGUua2V5LCBkcm9wZG93bilcIlxuICAgICAgPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLWNhcmV0LWRvd24gdGV4dC1tdXRlZFwiXG4gICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICBbY2xhc3MuZHJvcGRvd24tdG9nZ2xlXT1cImZhbHNlXCJcbiAgICAgICAgPjwvaT5cbiAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5vZGVUZW1wbGF0ZSBsZXQtbm9kZT5cbiAgICAgIDxzcGFuPnt7IG5vZGUudGl0bGUgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJY29uVGVtcGxhdGUgbGV0LW5vZGUgbGV0LW9yaWdpbj1cIm9yaWdpblwiPlxuICA8aSBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyOHB4XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGUuaXNFeHBhbmRlZCA/IG1pbnVzSWNvbiA6IHBsdXNJY29uXCI+PC9uZy1jb250YWluZXJcbiAgPjwvaT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWludXNJY29uPlxuICA8c3ZnXG4gICAgd2lkdGg9XCIxNVwiXG4gICAgaGVpZ2h0PVwiMTVcIlxuICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICA+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTEuNSAwYzYuMzQ3IDAgMTEuNSA1LjE1MyAxMS41IDExLjVzLTUuMTUzIDExLjUtMTEuNSAxMS41LTExLjUtNS4xNTMtMTEuNS0xMS41IDUuMTUzLTExLjUgMTEuNS0xMS41em0wIDFjNS43OTUgMCAxMC41IDQuNzA1IDEwLjUgMTAuNXMtNC43MDUgMTAuNS0xMC41IDEwLjUtMTAuNS00LjcwNS0xMC41LTEwLjUgNC43MDUtMTAuNSAxMC41LTEwLjV6bS02LjUgMTBoMTN2MWgtMTN2LTF6XCJcbiAgICAvPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGx1c0ljb24+XG4gIDxzdmdcbiAgICB3aWR0aD1cIjE1XCJcbiAgICBoZWlnaHQ9XCIxNVwiXG4gICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gID5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMS41IDBjNi4zNDcgMCAxMS41IDUuMTUzIDExLjUgMTEuNXMtNS4xNTMgMTEuNS0xMS41IDExLjUtMTEuNS01LjE1My0xMS41LTExLjUgNS4xNTMtMTEuNSAxMS41LTExLjV6bTAgMWM1Ljc5NSAwIDEwLjUgNC43MDUgMTAuNSAxMC41cy00LjcwNSAxMC41LTEwLjUgMTAuNS0xMC41LTQuNzA1LTEwLjUtMTAuNSA0LjcwNS0xMC41IDEwLjUtMTAuNXptLjUgMTBoNnYxaC02djZoLTF2LTZoLTZ2LTFoNnYtNmgxdjZ6XCJcbiAgICAvPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,16 +1,16 @@
1
- import { Directive, TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ExpandedIconTemplateDirective {
4
- constructor(template) {
5
- this.template = template;
6
- }
7
- }
8
- ExpandedIconTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExpandedIconTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
- ExpandedIconTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ExpandedIconTemplateDirective, selector: "[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]", ngImport: i0 });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExpandedIconTemplateDirective, decorators: [{
11
- type: Directive,
12
- args: [{
13
- selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',
14
- }]
15
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
1
+ import { Directive, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ExpandedIconTemplateDirective {
4
+ constructor(template) {
5
+ this.template = template;
6
+ }
7
+ }
8
+ ExpandedIconTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExpandedIconTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ ExpandedIconTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ExpandedIconTemplateDirective, selector: "[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ExpandedIconTemplateDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[abpTreeExpandedIconTemplate],[abp-tree-expanded-icon-template]',
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
16
16
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kZWQtaWNvbi10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90ZW1wbGF0ZXMvZXhwYW5kZWQtaWNvbi10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3ZELE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBRyxDQUFDOzsySEFEdEMsNkJBQTZCOytHQUE3Qiw2QkFBNkI7NEZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUVBQWlFO2lCQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FicFRyZWVFeHBhbmRlZEljb25UZW1wbGF0ZV0sW2FicC10cmVlLWV4cGFuZGVkLWljb24tdGVtcGxhdGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgRXhwYW5kZWRJY29uVGVtcGxhdGVEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG59XG4iXX0=
@@ -1,16 +1,16 @@
1
- import { Directive, TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TreeNodeTemplateDirective {
4
- constructor(template) {
5
- this.template = template;
6
- }
7
- }
8
- TreeNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeNodeTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
- TreeNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: TreeNodeTemplateDirective, selector: "[abpTreeNodeTemplate],[abp-tree-node-template]", ngImport: i0 });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeNodeTemplateDirective, decorators: [{
11
- type: Directive,
12
- args: [{
13
- selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',
14
- }]
15
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
1
+ import { Directive, TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TreeNodeTemplateDirective {
4
+ constructor(template) {
5
+ this.template = template;
6
+ }
7
+ }
8
+ TreeNodeTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeNodeTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ TreeNodeTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: TreeNodeTemplateDirective, selector: "[abpTreeNodeTemplate],[abp-tree-node-template]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeNodeTemplateDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[abpTreeNodeTemplate],[abp-tree-node-template]',
14
+ }]
15
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
16
16
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdHJlZS9zcmMvbGliL3RlbXBsYXRlcy90cmVlLW5vZGUtdGVtcGxhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt2RCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQW1CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQzs7dUhBRHRDLHlCQUF5QjsyR0FBekIseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdEQUFnRDtpQkFDM0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thYnBUcmVlTm9kZVRlbXBsYXRlXSxbYWJwLXRyZWUtbm9kZS10ZW1wbGF0ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlTm9kZVRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuIl19
@@ -1,25 +1,25 @@
1
- import { CoreModule } from '@abp/ng.core';
2
- import { NgModule } from '@angular/core';
3
- import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
4
- import { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';
5
- import { NzTreeModule } from 'ng-zorro-antd/tree';
6
- import { TreeComponent } from './components/tree.component';
7
- import { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';
8
- import { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';
9
- import * as i0 from "@angular/core";
10
- const templates = [TreeNodeTemplateDirective, ExpandedIconTemplateDirective];
11
- const exported = [...templates, TreeComponent];
12
- export class TreeModule {
13
- }
14
- TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, declarations: [TreeNodeTemplateDirective, ExpandedIconTemplateDirective, TreeComponent], imports: [CoreModule, NzTreeModule, NgbDropdownModule, NzNoAnimationModule], exports: [TreeNodeTemplateDirective, ExpandedIconTemplateDirective, TreeComponent] });
16
- TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, imports: [[CoreModule, NzTreeModule, NgbDropdownModule, NzNoAnimationModule]] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, decorators: [{
18
- type: NgModule,
19
- args: [{
20
- imports: [CoreModule, NzTreeModule, NgbDropdownModule, NzNoAnimationModule],
21
- exports: [...exported],
22
- declarations: [...exported],
23
- }]
24
- }] });
1
+ import { CoreModule } from '@abp/ng.core';
2
+ import { NgModule } from '@angular/core';
3
+ import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
4
+ import { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';
5
+ import { NzTreeModule } from 'ng-zorro-antd/tree';
6
+ import { TreeComponent } from './components/tree.component';
7
+ import { ExpandedIconTemplateDirective } from './templates/expanded-icon-template.directive';
8
+ import { TreeNodeTemplateDirective } from './templates/tree-node-template.directive';
9
+ import * as i0 from "@angular/core";
10
+ const templates = [TreeNodeTemplateDirective, ExpandedIconTemplateDirective];
11
+ const exported = [...templates, TreeComponent];
12
+ export class TreeModule {
13
+ }
14
+ TreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ TreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, declarations: [TreeNodeTemplateDirective, ExpandedIconTemplateDirective, TreeComponent], imports: [CoreModule, NzTreeModule, NgbDropdownModule, NzNoAnimationModule], exports: [TreeNodeTemplateDirective, ExpandedIconTemplateDirective, TreeComponent] });
16
+ TreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, imports: [[CoreModule, NzTreeModule, NgbDropdownModule, NzNoAnimationModule]] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TreeModule, decorators: [{
18
+ type: NgModule,
19
+ args: [{
20
+ imports: [CoreModule, NzTreeModule, NgbDropdownModule, NzNoAnimationModule],
21
+ exports: [...exported],
22
+ declarations: [...exported],
23
+ }]
24
+ }] });
25
25
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFckYsTUFBTSxTQUFTLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFPL0MsTUFBTSxPQUFPLFVBQVU7O3dHQUFWLFVBQVU7eUdBQVYsVUFBVSxpQkFUSix5QkFBeUIsRUFBRSw2QkFBNkIsRUFFM0MsYUFBYSxhQUdqQyxVQUFVLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixhQUx6RCx5QkFBeUIsRUFBRSw2QkFBNkIsRUFFM0MsYUFBYTt5R0FPaEMsVUFBVSxZQUpaLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQzs0RkFJaEUsVUFBVTtrQkFMdEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDO29CQUMzRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztvQkFDdEIsWUFBWSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOek5vQW5pbWF0aW9uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL25vLWFuaW1hdGlvbic7XG5pbXBvcnQgeyBOelRyZWVNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUnO1xuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHBhbmRlZEljb25UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vdGVtcGxhdGVzL2V4cGFuZGVkLWljb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRyZWVOb2RlVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3RlbXBsYXRlcy90cmVlLW5vZGUtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuY29uc3QgdGVtcGxhdGVzID0gW1RyZWVOb2RlVGVtcGxhdGVEaXJlY3RpdmUsIEV4cGFuZGVkSWNvblRlbXBsYXRlRGlyZWN0aXZlXTtcblxuY29uc3QgZXhwb3J0ZWQgPSBbLi4udGVtcGxhdGVzLCBUcmVlQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIE56VHJlZU1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGUsIE56Tm9BbmltYXRpb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbLi4uZXhwb3J0ZWRdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5leHBvcnRlZF0sXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVNb2R1bGUge31cbiJdfQ==
@@ -1,92 +1,92 @@
1
- export class BaseNode {
2
- constructor(id, parentId) {
3
- this.id = id;
4
- this.parentId = parentId;
5
- }
6
- }
7
- class TreeNode extends BaseNode {
8
- constructor(entity, nameResolver = ent => ent.displayName || ent.name) {
9
- super(entity.id, entity.parentId);
10
- this.entity = entity;
11
- this.nameResolver = nameResolver;
12
- this.icon = null;
13
- this.children = [];
14
- this.isLeaf = true;
15
- this.checked = false;
16
- this.selected = false;
17
- this.expanded = false;
18
- this.selectable = true;
19
- this.disabled = false;
20
- this.disableCheckbox = false;
21
- this.key = entity.id;
22
- this.title = nameResolver(entity);
23
- }
24
- }
25
- export class TreeAdapter {
26
- constructor(list = []) {
27
- this.list = list;
28
- this.tree = createTreeFromList(this.list);
29
- }
30
- getList() {
31
- return this.list;
32
- }
33
- getTree() {
34
- return this.tree;
35
- }
36
- handleDrop({ key, parentNode }) {
37
- const index = this.list.findIndex(({ id }) => id === key);
38
- this.list[index].parentId = parentNode ? parentNode.key : null;
39
- this.tree = createTreeFromList(this.list);
40
- }
41
- handleRemove({ key }) {
42
- this.updateTreeFromList(this.list.filter(item => item.id !== key));
43
- }
44
- handleUpdate({ key, children }) {
45
- /**
46
- * When we need to update a node with new children, first we need to remove any descendant nodes.
47
- * If we remove immediate children and create a new tree, any other descendant nodes will be removed
48
- * and we won't need to recursively remove sub children.
49
- * Then, you simply add back the new children and create a new tree.
50
- */
51
- const listWithDescendantNodesRemoved = this.updateTreeFromList(this.list.filter(item => item.parentId !== key));
52
- this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));
53
- }
54
- updateTreeFromList(list) {
55
- this.tree = createTreeFromList(list);
56
- this.list = createListFromTree(this.tree);
57
- return this.list;
58
- }
59
- }
60
- // UTILITY FUNCTIONS
61
- function createTreeFromList(list) {
62
- const map = createMapFromList(list);
63
- const tree = [];
64
- list.forEach(row => {
65
- const parentId = row.parentId;
66
- const node = map.get(row.id);
67
- if (parentId) {
68
- const parent = map.get(parentId);
69
- if (!parent)
70
- return;
71
- parent.children.push(node);
72
- parent.isLeaf = false;
73
- }
74
- else {
75
- tree.push(node);
76
- }
77
- });
78
- return tree;
79
- }
80
- function createListFromTree(tree, list = []) {
81
- tree.forEach(node => {
82
- list.push(Object.assign(Object.assign({}, node.entity), { parentId: node.parentId }));
83
- if (node.children)
84
- createListFromTree(node.children, list);
85
- });
86
- return list;
87
- }
88
- function createMapFromList(list, map = new Map()) {
89
- list.forEach(row => map.set(row.id, new TreeNode(row)));
90
- return map;
91
- }
1
+ export class BaseNode {
2
+ constructor(id, parentId) {
3
+ this.id = id;
4
+ this.parentId = parentId;
5
+ }
6
+ }
7
+ class TreeNode extends BaseNode {
8
+ constructor(entity, nameResolver = ent => ent.displayName || ent.name) {
9
+ super(entity.id, entity.parentId);
10
+ this.entity = entity;
11
+ this.nameResolver = nameResolver;
12
+ this.icon = null;
13
+ this.children = [];
14
+ this.isLeaf = true;
15
+ this.checked = false;
16
+ this.selected = false;
17
+ this.expanded = false;
18
+ this.selectable = true;
19
+ this.disabled = false;
20
+ this.disableCheckbox = false;
21
+ this.key = entity.id;
22
+ this.title = nameResolver(entity);
23
+ }
24
+ }
25
+ export class TreeAdapter {
26
+ constructor(list = []) {
27
+ this.list = list;
28
+ this.tree = createTreeFromList(this.list);
29
+ }
30
+ getList() {
31
+ return this.list;
32
+ }
33
+ getTree() {
34
+ return this.tree;
35
+ }
36
+ handleDrop({ key, parentNode }) {
37
+ const index = this.list.findIndex(({ id }) => id === key);
38
+ this.list[index].parentId = parentNode ? parentNode.key : null;
39
+ this.tree = createTreeFromList(this.list);
40
+ }
41
+ handleRemove({ key }) {
42
+ this.updateTreeFromList(this.list.filter(item => item.id !== key));
43
+ }
44
+ handleUpdate({ key, children }) {
45
+ /**
46
+ * When we need to update a node with new children, first we need to remove any descendant nodes.
47
+ * If we remove immediate children and create a new tree, any other descendant nodes will be removed
48
+ * and we won't need to recursively remove sub children.
49
+ * Then, you simply add back the new children and create a new tree.
50
+ */
51
+ const listWithDescendantNodesRemoved = this.updateTreeFromList(this.list.filter(item => item.parentId !== key));
52
+ this.updateTreeFromList(listWithDescendantNodesRemoved.concat(children));
53
+ }
54
+ updateTreeFromList(list) {
55
+ this.tree = createTreeFromList(list);
56
+ this.list = createListFromTree(this.tree);
57
+ return this.list;
58
+ }
59
+ }
60
+ // UTILITY FUNCTIONS
61
+ function createTreeFromList(list) {
62
+ const map = createMapFromList(list);
63
+ const tree = [];
64
+ list.forEach(row => {
65
+ const parentId = row.parentId;
66
+ const node = map.get(row.id);
67
+ if (parentId) {
68
+ const parent = map.get(parentId);
69
+ if (!parent)
70
+ return;
71
+ parent.children.push(node);
72
+ parent.isLeaf = false;
73
+ }
74
+ else {
75
+ tree.push(node);
76
+ }
77
+ });
78
+ return tree;
79
+ }
80
+ function createListFromTree(tree, list = []) {
81
+ tree.forEach(node => {
82
+ list.push(Object.assign(Object.assign({}, node.entity), { parentId: node.parentId }));
83
+ if (node.children)
84
+ createListFromTree(node.children, list);
85
+ });
86
+ return list;
87
+ }
88
+ function createMapFromList(list, map = new Map()) {
89
+ list.forEach(row => map.set(row.id, new TreeNode(row)));
90
+ return map;
91
+ }
92
92
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotdHJlZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy90cmVlL3NyYy9saWIvdXRpbHMvbnotdHJlZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBZ0IsUUFBUTtJQUk1QixZQUFtQixFQUFVLEVBQVMsUUFBdUI7UUFBMUMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQWU7SUFBRyxDQUFDO0NBQ2xFO0FBRUQsTUFBTSxRQUE2QixTQUFRLFFBQVE7SUFjakQsWUFBbUIsTUFBUyxFQUFVLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxJQUFJO1FBQ3JGLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFHO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXFDO1FBWHZGLFNBQUksR0FBa0IsSUFBSSxDQUFDO1FBQzNCLGFBQVEsR0FBa0IsRUFBRSxDQUFDO1FBQzdCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFLdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQW9CLE9BQVksRUFBRTtRQUFkLFNBQUksR0FBSixJQUFJLENBQVU7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQWU7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBZTtRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWtDO1FBQzVEOzs7OztXQUtHO1FBQ0gsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FDaEQsQ0FBQztRQUNGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFRCxvQkFBb0I7QUFFcEIsU0FBUyxrQkFBa0IsQ0FBcUIsSUFBUztJQUN2RCxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxNQUFNLElBQUksR0FBa0IsRUFBRSxDQUFDO0lBRS9CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLFFBQVEsRUFBRTtZQUNaLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUN2QjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQjtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBcUIsSUFBbUIsRUFBRSxPQUFZLEVBQUU7SUFDakYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNsQixJQUFJLENBQUMsSUFBSSxpQ0FBTSxJQUFJLENBQUMsTUFBTSxLQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFHLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixJQUFTLEVBQ1QsTUFBTSxJQUFJLEdBQUcsRUFBdUI7SUFFcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VOb2RlIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBwYXJlbnRJZDogc3RyaW5nIHwgbnVsbCkge31cbn1cblxuY2xhc3MgVHJlZU5vZGU8VCBleHRlbmRzIEJhc2VOb2RlPiBleHRlbmRzIEJhc2VOb2RlIHtcbiAgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAga2V5OiBzdHJpbmc7XG4gIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjaGlsZHJlbjogVHJlZU5vZGU8VD5bXSA9IFtdO1xuICBpc0xlYWYgPSB0cnVlO1xuICBjaGVja2VkID0gZmFsc2U7XG4gIHNlbGVjdGVkID0gZmFsc2U7XG4gIGV4cGFuZGVkID0gZmFsc2U7XG4gIHNlbGVjdGFibGUgPSB0cnVlO1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBkaXNhYmxlQ2hlY2tib3ggPSBmYWxzZTtcbiAgcGFyZW50Tm9kZT86IFRyZWVOb2RlPFQ+IHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW50aXR5OiBULCBwcml2YXRlIG5hbWVSZXNvbHZlciA9IGVudCA9PiBlbnQuZGlzcGxheU5hbWUgfHwgZW50Lm5hbWUpIHtcbiAgICBzdXBlcihlbnRpdHkuaWQsIGVudGl0eS5wYXJlbnRJZCk7XG4gICAgdGhpcy5rZXkgPSBlbnRpdHkuaWQ7XG4gICAgdGhpcy50aXRsZSA9IG5hbWVSZXNvbHZlcihlbnRpdHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmVlQWRhcHRlcjxUIGV4dGVuZHMgQmFzZU5vZGUgPSBCYXNlTm9kZT4ge1xuICBwcml2YXRlIHRyZWU6IFRyZWVOb2RlPFQ+W107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsaXN0OiBUW10gPSBbXSkge1xuICAgIHRoaXMudHJlZSA9IGNyZWF0ZVRyZWVGcm9tTGlzdCh0aGlzLmxpc3QpO1xuICB9XG5cbiAgZ2V0TGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0O1xuICB9XG5cbiAgZ2V0VHJlZSgpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlO1xuICB9XG5cbiAgaGFuZGxlRHJvcCh7IGtleSwgcGFyZW50Tm9kZSB9OiBUcmVlTm9kZTxUPikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5saXN0LmZpbmRJbmRleCgoeyBpZCB9KSA9PiBpZCA9PT0ga2V5KTtcbiAgICB0aGlzLmxpc3RbaW5kZXhdLnBhcmVudElkID0gcGFyZW50Tm9kZSA/IHBhcmVudE5vZGUua2V5IDogbnVsbDtcbiAgICB0aGlzLnRyZWUgPSBjcmVhdGVUcmVlRnJvbUxpc3QodGhpcy5saXN0KTtcbiAgfVxuXG4gIGhhbmRsZVJlbW92ZSh7IGtleSB9OiBUcmVlTm9kZTxUPikge1xuICAgIHRoaXMudXBkYXRlVHJlZUZyb21MaXN0KHRoaXMubGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBrZXkpKTtcbiAgfVxuXG4gIGhhbmRsZVVwZGF0ZSh7IGtleSwgY2hpbGRyZW4gfTogeyBrZXk6IHN0cmluZzsgY2hpbGRyZW46IFRbXSB9KSB7XG4gICAgLyoqXG4gICAgICogV2hlbiB3ZSBuZWVkIHRvIHVwZGF0ZSBhIG5vZGUgd2l0aCBuZXcgY2hpbGRyZW4sIGZpcnN0IHdlIG5lZWQgdG8gcmVtb3ZlIGFueSBkZXNjZW5kYW50IG5vZGVzLlxuICAgICAqIElmIHdlIHJlbW92ZSBpbW1lZGlhdGUgY2hpbGRyZW4gYW5kIGNyZWF0ZSBhIG5ldyB0cmVlLCBhbnkgb3RoZXIgZGVzY2VuZGFudCBub2RlcyB3aWxsIGJlIHJlbW92ZWRcbiAgICAgKiBhbmQgd2Ugd29uJ3QgbmVlZCB0byByZWN1cnNpdmVseSByZW1vdmUgc3ViIGNoaWxkcmVuLlxuICAgICAqIFRoZW4sIHlvdSBzaW1wbHkgYWRkIGJhY2sgdGhlIG5ldyBjaGlsZHJlbiBhbmQgY3JlYXRlIGEgbmV3IHRyZWUuXG4gICAgICovXG4gICAgY29uc3QgbGlzdFdpdGhEZXNjZW5kYW50Tm9kZXNSZW1vdmVkID0gdGhpcy51cGRhdGVUcmVlRnJvbUxpc3QoXG4gICAgICB0aGlzLmxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wYXJlbnRJZCAhPT0ga2V5KSxcbiAgICApO1xuICAgIHRoaXMudXBkYXRlVHJlZUZyb21MaXN0KGxpc3RXaXRoRGVzY2VuZGFudE5vZGVzUmVtb3ZlZC5jb25jYXQoY2hpbGRyZW4pKTtcbiAgfVxuXG4gIHVwZGF0ZVRyZWVGcm9tTGlzdChsaXN0OiBUW10pIHtcbiAgICB0aGlzLnRyZWUgPSBjcmVhdGVUcmVlRnJvbUxpc3QobGlzdCk7XG4gICAgdGhpcy5saXN0ID0gY3JlYXRlTGlzdEZyb21UcmVlKHRoaXMudHJlZSk7XG4gICAgcmV0dXJuIHRoaXMubGlzdDtcbiAgfVxufVxuXG4vLyBVVElMSVRZIEZVTkNUSU9OU1xuXG5mdW5jdGlvbiBjcmVhdGVUcmVlRnJvbUxpc3Q8VCBleHRlbmRzIEJhc2VOb2RlPihsaXN0OiBUW10pOiBUcmVlTm9kZTxUPltdIHtcbiAgY29uc3QgbWFwID0gY3JlYXRlTWFwRnJvbUxpc3QobGlzdCk7XG4gIGNvbnN0IHRyZWU6IFRyZWVOb2RlPFQ+W10gPSBbXTtcblxuICBsaXN0LmZvckVhY2gocm93ID0+IHtcbiAgICBjb25zdCBwYXJlbnRJZCA9IHJvdy5wYXJlbnRJZDtcbiAgICBjb25zdCBub2RlID0gbWFwLmdldChyb3cuaWQpO1xuICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gbWFwLmdldChwYXJlbnRJZCk7XG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuO1xuICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICBwYXJlbnQuaXNMZWFmID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyZWUucHVzaChub2RlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0cmVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMaXN0RnJvbVRyZWU8VCBleHRlbmRzIEJhc2VOb2RlPih0cmVlOiBUcmVlTm9kZTxUPltdLCBsaXN0OiBUW10gPSBbXSk6IFRbXSB7XG4gIHRyZWUuZm9yRWFjaChub2RlID0+IHtcbiAgICBsaXN0LnB1c2goeyAuLi5ub2RlLmVudGl0eSwgcGFyZW50SWQ6IG5vZGUucGFyZW50SWQgfSk7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIGNyZWF0ZUxpc3RGcm9tVHJlZShub2RlLmNoaWxkcmVuLCBsaXN0KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGxpc3Q7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hcEZyb21MaXN0PFQgZXh0ZW5kcyBCYXNlTm9kZT4oXG4gIGxpc3Q6IFRbXSxcbiAgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFRyZWVOb2RlPFQ+PigpLFxuKTogTWFwPHN0cmluZywgVHJlZU5vZGU8VD4+IHtcbiAgbGlzdC5mb3JFYWNoKHJvdyA9PiBtYXAuc2V0KHJvdy5pZCwgbmV3IFRyZWVOb2RlKHJvdykpKTtcblxuICByZXR1cm4gbWFwO1xufVxuIl19