{"version":3,"sources":["webpack:///../of-tree/src/index.ts","webpack:///../of-tree/src/lib/components/basic-tree/basic-tree.component.html","webpack:///../of-tree/src/lib/components/basic-tree/basic-tree.component.style.scss","webpack:///../of-tree/src/lib/components/basic-tree/basic-tree.component.ts","webpack:///../of-tree/src/lib/components/basic-tree/index.ts","webpack:///../of-tree/src/lib/components/index.ts","webpack:///../of-tree/src/lib/components/set-attrs.directive.ts","webpack:///../of-tree/src/lib/components/virtual-tree/index.ts","webpack:///../of-tree/src/lib/components/virtual-tree/virtual-tree.component.ts","webpack:///../of-tree/src/lib/components/virtual-tree/virtual-tree.model.ts","webpack:///../of-tree/src/lib/models/index.ts","webpack:///../of-tree/src/lib/models/node.ts","webpack:///../of-tree/src/lib/models/tree-query.ts","webpack:///../of-tree/src/lib/models/virtual-render-area.ts","webpack:///../of-tree/src/lib/of-tree.module.ts","webpack:///./$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/design/index.ts","webpack:///./src/app/components/design/loading.component.ts","webpack:///./src/app/components/design/toolbar.component.ts","webpack:///./src/app/components/index.ts","webpack:///./src/app/components/pages/demo-base.component.ts","webpack:///./src/app/components/pages/golden-tree.component.ts","webpack:///./src/app/components/pages/index.ts","webpack:///./src/app/components/pages/show-off-tree.component.ts","webpack:///./src/app/services/AppSettingsService.ts","webpack:///./src/app/services/OofficeDemoService.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["/*\r\n * Public API Surface of of-tree\r\n */\r\n\r\nexport * from './lib/models';\r\nexport * from './lib/components';\r\nexport * from './lib/of-tree.module';\r\n","module.exports = \"<of-virtual-tree [itemHeight]=\\\"itemHeight\\\" [model]=\\\"model\\\">\\r\\n <ng-template let-node>\\r\\n <div\\r\\n class=\\\"of-node\\\"\\r\\n [style.paddingLeft.rem]=\\\"1.5 * (node.depth + 1)\\\"\\r\\n [style.height.px]=\\\"itemHeight\\\"\\r\\n [ofSetAttrs]=\\\"getDomNodeAttr(node)\\\"\\r\\n (contextmenu)=\\\"handleContextMenu($event, node.item)\\\"\\r\\n >\\r\\n <i\\r\\n *ngIf=\\\"model.isExpandable(node.item) && !isFiltered\\\"\\r\\n (click)=\\\"model.toggle(node.item)\\\"\\r\\n [class]=\\\"getExpanderIcon(node.item)\\\"\\r\\n ></i>\\r\\n <div\\r\\n class=\\\"of-node-title\\\"\\r\\n [draggable]=\\\"canDrag(node.item)\\\"\\r\\n (dragstart)=\\\"handleDragstart($event, node)\\\"\\r\\n (click)=\\\"handleRowClick($event, node.item)\\\"\\r\\n >\\r\\n <i [class]=\\\"getIcon(node)\\\" (click)=\\\"iconClick.emit({ event: $event, item: node.item })\\\"></i>\\r\\n <div\\r\\n class=\\\"of-label\\\"\\r\\n (click)=\\\"labelClick.emit({ event: $event, item: node.item })\\\"\\r\\n [class.of-highlight]=\\\"model.isHighlighted(node.item)\\\"\\r\\n [class.of-selected]=\\\"model.isSelected(node.item)\\\"\\r\\n >\\r\\n {{ getName(node.item) }}\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </ng-template>\\r\\n <div #dragOverlay tree-before class=\\\"of-dragoverlay\\\" [style.display]=\\\"isDraggingOver ? 'block' : 'none'\\\"></div>\\r\\n</of-virtual-tree>\\r\\n\"","module.exports = \":host {\\n height: 100%;\\n display: block;\\n position: relative; }\\n\\n:host ::ng-deep .vt-container {\\n min-width: auto; }\\n\\n.of-node {\\n display: -webkit-box;\\n display: flex;\\n white-space: nowrap;\\n -webkit-box-align: center;\\n align-items: center; }\\n\\n.of-expander {\\n margin-left: -1.5rem;\\n width: 1.5rem;\\n cursor: pointer;\\n display: block;\\n height: 1rem;\\n background-size: contain;\\n background-position-x: 50%;\\n background-repeat: no-repeat; }\\n\\n.of-expander.of-expander-right {\\n background-image: url('data:image/svg+xml;utf8,<svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1152 896q0 26-19 45l-448 448q-19 19-45 19t-45-19-19-45v-896q0-26 19-45t45-19 45 19l448 448q19 19 19 45z\\\"/></svg>'); }\\n\\n.of-expander.of-expander-down {\\n background-image: url('data:image/svg+xml;utf8,<svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z\\\"/></svg>'); }\\n\\n.of-icon {\\n width: 1rem;\\n height: 1rem;\\n display: block;\\n background-size: contain;\\n background-position: 50%; }\\n\\n.of-icon.of-folder {\\n background-image: url('data:image/svg+xml;utf8,<svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1600 1312v-704q0-40-28-68t-68-28h-704q-40 0-68-28t-28-68v-64q0-40-28-68t-68-28h-320q-40 0-68 28t-28 68v960q0 40 28 68t68 28h1216q40 0 68-28t28-68zm128-704v704q0 92-66 158t-158 66h-1216q-92 0-158-66t-66-158v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h672q92 0 158 66t66 158z\\\"/></svg>'); }\\n\\n.of-icon.of-folder-open {\\n background-image: url('data:image/svg+xml;utf8,<svg width=\\\"2048\\\" height=\\\"1792\\\" viewBox=\\\"0 0 2048 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1845 931q0-35-53-35h-1088q-40 0-85.5 21.5t-71.5 52.5l-294 363q-18 24-18 40 0 35 53 35h1088q40 0 86-22t71-53l294-363q18-22 18-39zm-1141-163h768v-160q0-40-28-68t-68-28h-576q-40 0-68-28t-28-68v-64q0-40-28-68t-68-28h-320q-40 0-68 28t-28 68v853l256-315q44-53 116-87.5t140-34.5zm1269 163q0 62-46 120l-295 363q-43 53-116 87.5t-140 34.5h-1088q-92 0-158-66t-66-158v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h544q92 0 158 66t66 158v160h192q54 0 99 24.5t67 70.5q15 32 15 68z\\\"/></svg>'); }\\n\\n.of-icon.of-file-text {\\n background-image: url('data:image/svg+xml;utf8,<svg width=\\\"1792\\\" height=\\\"1792\\\" viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M1596 380q28 28 48 76t20 88v1152q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h896q40 0 88 20t76 48zm-444-244v376h376q-10-29-22-41l-313-313q-12-12-41-22zm384 1528v-1024h-416q-40 0-68-28t-28-68v-416h-768v1536h1280zm-1024-864q0-14 9-23t23-9h704q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64zm736 224q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704zm0 256q14 0 23 9t9 23v64q0 14-9 23t-23 9h-704q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h704z\\\"/></svg>'); }\\n\\n.of-node-title {\\n cursor: pointer;\\n display: -webkit-box;\\n display: flex;\\n -webkit-box-align: center;\\n align-items: center;\\n -webkit-box-flex: 1;\\n flex: 1 1 100%; }\\n\\n.of-label {\\n white-space: nowrap;\\n padding: 0 0.25rem;\\n line-height: 1.5rem; }\\n\\n.of-label:hover {\\n background: #c9def5; }\\n\\n.of-label.of-selected {\\n background: #88afd7; }\\n\\n.of-highlight {\\n outline: solid 1px orange; }\\n\\n.of-dragoverlay {\\n position: absolute;\\n background: #c9def5;\\n left: 0;\\n width: 100%; }\\n\\n.of-dragoverlay.of-dragoverlay-between:before {\\n content: '';\\n height: 2px;\\n margin-top: -1px;\\n top: 50%;\\n width: 100%;\\n background: #6899ce;\\n position: absolute; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3RzL29mLXRyZWUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2ljLXRyZWUvRDpcXGFcXDFcXHMvcHJvamVjdHNcXG9mLXRyZWVcXHNyY1xcbGliXFxjb21wb25lbnRzXFxiYXNpYy10cmVlXFxiYXNpYy10cmVlLmNvbXBvbmVudC5zdHlsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksYUFBWTtFQUNaLGVBQWM7RUFDZCxtQkFBa0IsRUFDckI7O0FBQ0Q7RUFDSSxnQkFBZSxFQUNsQjs7QUFFRDtFQUNJLHFCQUFhO0VBQWIsY0FBYTtFQUNiLG9CQUFtQjtFQUNuQiwwQkFBbUI7VUFBbkIsb0JBQW1CLEVBQ3RCOztBQUVEO0VBQ0kscUJBQW9CO0VBQ3BCLGNBQWE7RUFDYixnQkFBZTtFQUNmLGVBQWM7RUFDZCxhQUFZO0VBQ1oseUJBQXdCO0VBQ3hCLDJCQUEwQjtFQUMxQiw2QkFBNEIsRUFRL0I7O0FBaEJEO0lBV1EsdVFBQXNRLEVBQ3pROztBQVpMO0lBY1Esd1FBQXVRLEVBQzFROztBQUdMO0VBQ0ksWUFBVztFQUNYLGFBQVk7RUFDWixlQUFjO0VBQ2QseUJBQXdCO0VBQ3hCLHlCQUF3QixFQVczQjs7QUFoQkQ7SUFRUSx1YkFBc2IsRUFDemI7O0FBVEw7SUFXUSxzbkJBQXFuQixFQUN4bkI7O0FBWkw7SUFjUSxncEJBQStvQixFQUNscEI7O0FBRUw7RUFDSSxnQkFBZTtFQUNmLHFCQUFhO0VBQWIsY0FBYTtFQUNiLDBCQUFtQjtVQUFuQixvQkFBbUI7RUFDbkIsb0JBQWM7VUFBZCxlQUFjLEVBQ2pCOztBQUNEO0VBQ0ksb0JBQW1CO0VBQ25CLG1CQUFrQjtFQUNsQixvQkFBbUIsRUFPdEI7O0FBVkQ7SUFLUSxvQkFBbUIsRUFDdEI7O0FBTkw7SUFRUSxvQkFBbUIsRUFDdEI7O0FBR0w7RUFDSSwwQkFBeUIsRUFDNUI7O0FBRUQ7RUFDSSxtQkFBa0I7RUFDbEIsb0JBQW1CO0VBQ25CLFFBQU87RUFDUCxZQUFXLEVBVWQ7O0FBZEQ7SUFNUSxZQUFXO0lBQ1gsWUFBVztJQUNYLGlCQUFnQjtJQUNoQixTQUFRO0lBQ1IsWUFBVztJQUNYLG9CQUFtQjtJQUNuQixtQkFBa0IsRUFDckIiLCJmaWxlIjoicHJvamVjdHMvb2YtdHJlZS9zcmMvbGliL2NvbXBvbmVudHMvYmFzaWMtdHJlZS9iYXNpYy10cmVlLmNvbXBvbmVudC5zdHlsZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuOmhvc3QgOjpuZy1kZWVwIC52dC1jb250YWluZXIge1xyXG4gICAgbWluLXdpZHRoOiBhdXRvO1xyXG59XHJcblxyXG4ub2Ytbm9kZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5vZi1leHBhbmRlciB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuICAgIHdpZHRoOiAxLjVyZW07XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGhlaWdodDogMXJlbTtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogNTAlO1xyXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuXHJcbiAgICAmLm9mLWV4cGFuZGVyLXJpZ2h0IHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgd2lkdGg9XCIxNzkyXCIgaGVpZ2h0PVwiMTc5MlwiIHZpZXdCb3g9XCIwIDAgMTc5MiAxNzkyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTE1MiA4OTZxMCAyNi0xOSA0NWwtNDQ4IDQ0OHEtMTkgMTktNDUgMTl0LTQ1LTE5LTE5LTQ1di04OTZxMC0yNiAxOS00NXQ0NS0xOSA0NSAxOWw0NDggNDQ4cTE5IDE5IDE5IDQ1elwiLz48L3N2Zz4nKTtcclxuICAgIH1cclxuICAgICYub2YtZXhwYW5kZXItZG93biB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHdpZHRoPVwiMTc5MlwiIGhlaWdodD1cIjE3OTJcIiB2aWV3Qm94PVwiMCAwIDE3OTIgMTc5MlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE0MDggNzA0cTAgMjYtMTkgNDVsLTQ0OCA0NDhxLTE5IDE5LTQ1IDE5dC00NS0xOWwtNDQ4LTQ0OHEtMTktMTktMTktNDV0MTktNDUgNDUtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6XCIvPjwvc3ZnPicpO1xyXG4gICAgfVxyXG59XHJcblxyXG4ub2YtaWNvbiB7XHJcbiAgICB3aWR0aDogMXJlbTtcclxuICAgIGhlaWdodDogMXJlbTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xyXG5cclxuICAgICYub2YtZm9sZGVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgd2lkdGg9XCIxNzkyXCIgaGVpZ2h0PVwiMTc5MlwiIHZpZXdCb3g9XCIwIDAgMTc5MiAxNzkyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTYwMCAxMzEydi03MDRxMC00MC0yOC02OHQtNjgtMjhoLTcwNHEtNDAgMC02OC0yOHQtMjgtNjh2LTY0cTAtNDAtMjgtNjh0LTY4LTI4aC0zMjBxLTQwIDAtNjggMjh0LTI4IDY4djk2MHEwIDQwIDI4IDY4dDY4IDI4aDEyMTZxNDAgMCA2OC0yOHQyOC02OHptMTI4LTcwNHY3MDRxMCA5Mi02NiAxNTh0LTE1OCA2NmgtMTIxNnEtOTIgMC0xNTgtNjZ0LTY2LTE1OHYtOTYwcTAtOTIgNjYtMTU4dDE1OC02NmgzMjBxOTIgMCAxNTggNjZ0NjYgMTU4djMyaDY3MnE5MiAwIDE1OCA2NnQ2NiAxNTh6XCIvPjwvc3ZnPicpO1xyXG4gICAgfVxyXG4gICAgJi5vZi1mb2xkZXItb3BlbiB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHdpZHRoPVwiMjA0OFwiIGhlaWdodD1cIjE3OTJcIiB2aWV3Qm94PVwiMCAwIDIwNDggMTc5MlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE4NDUgOTMxcTAtMzUtNTMtMzVoLTEwODhxLTQwIDAtODUuNSAyMS41dC03MS41IDUyLjVsLTI5NCAzNjNxLTE4IDI0LTE4IDQwIDAgMzUgNTMgMzVoMTA4OHE0MCAwIDg2LTIydDcxLTUzbDI5NC0zNjNxMTgtMjIgMTgtMzl6bS0xMTQxLTE2M2g3Njh2LTE2MHEwLTQwLTI4LTY4dC02OC0yOGgtNTc2cS00MCAwLTY4LTI4dC0yOC02OHYtNjRxMC00MC0yOC02OHQtNjgtMjhoLTMyMHEtNDAgMC02OCAyOHQtMjggNjh2ODUzbDI1Ni0zMTVxNDQtNTMgMTE2LTg3LjV0MTQwLTM0LjV6bTEyNjkgMTYzcTAgNjItNDYgMTIwbC0yOTUgMzYzcS00MyA1My0xMTYgODcuNXQtMTQwIDM0LjVoLTEwODhxLTkyIDAtMTU4LTY2dC02Ni0xNTh2LTk2MHEwLTkyIDY2LTE1OHQxNTgtNjZoMzIwcTkyIDAgMTU4IDY2dDY2IDE1OHYzMmg1NDRxOTIgMCAxNTggNjZ0NjYgMTU4djE2MGgxOTJxNTQgMCA5OSAyNC41dDY3IDcwLjVxMTUgMzIgMTUgNjh6XCIvPjwvc3ZnPicpO1xyXG4gICAgfVxyXG4gICAgJi5vZi1maWxlLXRleHQge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB3aWR0aD1cIjE3OTJcIiBoZWlnaHQ9XCIxNzkyXCIgdmlld0JveD1cIjAgMCAxNzkyIDE3OTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNTk2IDM4MHEyOCAyOCA0OCA3NnQyMCA4OHYxMTUycTAgNDAtMjggNjh0LTY4IDI4aC0xMzQ0cS00MCAwLTY4LTI4dC0yOC02OHYtMTYwMHEwLTQwIDI4LTY4dDY4LTI4aDg5NnE0MCAwIDg4IDIwdDc2IDQ4em0tNDQ0LTI0NHYzNzZoMzc2cS0xMC0yOS0yMi00MWwtMzEzLTMxM3EtMTItMTItNDEtMjJ6bTM4NCAxNTI4di0xMDI0aC00MTZxLTQwIDAtNjgtMjh0LTI4LTY4di00MTZoLTc2OHYxNTM2aDEyODB6bS0xMDI0LTg2NHEwLTE0IDktMjN0MjMtOWg3MDRxMTQgMCAyMyA5dDkgMjN2NjRxMCAxNC05IDIzdC0yMyA5aC03MDRxLTE0IDAtMjMtOXQtOS0yM3YtNjR6bTczNiAyMjRxMTQgMCAyMyA5dDkgMjN2NjRxMCAxNC05IDIzdC0yMyA5aC03MDRxLTE0IDAtMjMtOXQtOS0yM3YtNjRxMC0xNCA5LTIzdDIzLTloNzA0em0wIDI1NnExNCAwIDIzIDl0OSAyM3Y2NHEwIDE0LTkgMjN0LTIzIDloLTcwNHEtMTQgMC0yMy05dC05LTIzdi02NHEwLTE0IDktMjN0MjMtOWg3MDR6XCIvPjwvc3ZnPicpO1xyXG4gICAgfVxyXG59XHJcbi5vZi1ub2RlLXRpdGxlIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZmxleDogMSAxIDEwMCU7XHJcbn1cclxuLm9mLWxhYmVsIHtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBwYWRkaW5nOiAwIDAuMjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2M5ZGVmNTtcclxuICAgIH1cclxuICAgICYub2Ytc2VsZWN0ZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICM4OGFmZDc7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5vZi1oaWdobGlnaHQge1xyXG4gICAgb3V0bGluZTogc29saWQgMXB4IG9yYW5nZTtcclxufVxyXG5cclxuLm9mLWRyYWdvdmVybGF5IHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJhY2tncm91bmQ6ICNjOWRlZjU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICAmLm9mLWRyYWdvdmVybGF5LWJldHdlZW46YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBoZWlnaHQ6IDJweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtMXB4O1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICM2ODk5Y2U7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== */\"","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ElementRef, HostListener } from '@angular/core';\r\nimport { OfVirtualTree, OfTreeConfig, OfVirtualTreeComponent } from '../virtual-tree';\r\nimport { Node } from '../../models';\r\n\r\nexport interface VtItemState<T> {\r\n isExpanded: (item: T) => boolean;\r\n isSelected: (item: T) => boolean;\r\n isHighlighted: (item: T) => boolean;\r\n isLoading: (item: any) => boolean;\r\n}\r\n\r\nexport interface VtBasicTreeConfig<T> extends OfTreeConfig<T> {\r\n filterThrottle: number;\r\n filterTextMinLength: number;\r\n itemIcon: string;\r\n getIcon(item: T, node: Node<T>, state: VtItemState<T>): string;\r\n getName(item: T, state: VtItemState<T>): string;\r\n getDomNodeAttr(item: T, node: Node<T>, state: VtItemState<T>): { [attr: string]: any } | undefined;\r\n canDrag(item: T): boolean;\r\n canDrop(args: DragArgs<T>): boolean;\r\n move(args: DragArgs<T>): Promise<void>;\r\n getDragData(item: T): string;\r\n}\r\n\r\nexport enum DefaultIcons {\r\n file = 'of-file-text',\r\n folder = 'of-folder',\r\n folderOpen = 'of-folder-open'\r\n}\r\n\r\ntype DragPos = 'before' | 'on' | 'after';\r\n\r\ninterface DragArgs<T> {\r\n itemNode?: Node<T>;\r\n parentNode: Node<T>;\r\n item: T | any;\r\n parent?: T;\r\n index?: number;\r\n}\r\n\r\n@Component({\r\n selector: 'of-basic-tree',\r\n templateUrl: `./basic-tree.component.html`,\r\n styleUrls: [`./basic-tree.component.style.scss`]\r\n})\r\nexport class OfBasicTreeComponent implements AfterViewInit, OnDestroy {\r\n private disposers: (() => void)[] = [];\r\n private filterTextThrottle: any;\r\n private _filterText: string | undefined = '';\r\n private loadingItems = new Set<any>();\r\n private ownId = Math.random().toString();\r\n private ownDragItem?: Node<any>;\r\n private dragExpand: { item?: Node<any>; timeout?: number } = {};\r\n private stateProvider = Object.seal({\r\n isExpanded: (item: any) => this.model.isExpanded(item),\r\n isSelected: (item: any) => this.model.isSelected(item),\r\n isHighlighted: (item: any) => this.model.isHighlighted(item),\r\n isLoading: (item: any) => this.isItemLoading(item)\r\n }) as VtItemState<any>;\r\n private _model: OfVirtualTree<any>;\r\n private _config = {\r\n childAccessor: (item: any) => this.getChildren(item),\r\n getIcon: (item: any) =>\r\n (item.type !== 'd' && item.type !== 'Folder') ? item.icon || this.config.itemIcon : this.model.isExpanded(item) ? DefaultIcons.folderOpen : DefaultIcons.folder,\r\n getName: (item: any) => item.name,\r\n getDomNodeAttr: () => undefined,\r\n itemIcon: DefaultIcons.file,\r\n filterThrottle: 500,\r\n filterTextMinLength: 2,\r\n lazyLoad: true,\r\n canDrag: () => false,\r\n canDrop: () => false,\r\n move: () => Promise.resolve(),\r\n getDragData: () => '{}'\r\n } as VtBasicTreeConfig<any>;\r\n private hostBox?: ClientRect;\r\n\r\n /**\r\n * @ignore\r\n */\r\n @ViewChild(OfVirtualTreeComponent)\r\n public tree!: OfVirtualTreeComponent;\r\n\r\n /**\r\n * Fires on change of the selected item, [selection]\r\n */\r\n @Output()\r\n public selectionChange = new EventEmitter<any>();\r\n\r\n /**\r\n * ContextMenu event on tree rows, allows custom right-click menus\r\n */\r\n @Output()\r\n public itemContextMenu = new EventEmitter<{ event: MouseEvent; item: any }>();\r\n\r\n /**\r\n * Click event that fires on click of the icon portion of a tree row\r\n */\r\n @Output()\r\n public iconClick = new EventEmitter<{ event: MouseEvent; item: any }>();\r\n\r\n /**\r\n * Click event that fires on click of the label portion of a tree row\r\n */\r\n @Output()\r\n public labelClick = new EventEmitter<{ event: MouseEvent; item: any }>();\r\n\r\n /**\r\n * Click event that fires on click of any part of a tree row\r\n */\r\n @Output()\r\n public rowClick = new EventEmitter<{ event: MouseEvent; item: any }>();\r\n\r\n /**\r\n * Height in pixels of each row in the tree\r\n */\r\n @Input()\r\n public itemHeight: number;\r\n\r\n /**\r\n * @ignore\r\n */\r\n public isDraggingOver = false;\r\n\r\n /**\r\n * @ignore\r\n */\r\n @ViewChild('dragOverlay')\r\n public dragOverlay?: ElementRef<HTMLDivElement>;\r\n\r\n private childAccessor = (item: any) => item.children;\r\n\r\n /**\r\n * Allows applying an arbitrary filter to the tree. This overrides filterText\r\n */\r\n @Input()\r\n public set filter(value: ((item: any) => boolean) | undefined) {\r\n this.model.setFilter(value);\r\n }\r\n\r\n /**\r\n * Filter the tree with default text filter, case insenstive contains on item names\r\n */\r\n @Input()\r\n public set filterText(value: string | undefined) {\r\n this.handleFilterTextChange(value);\r\n }\r\n\r\n /**\r\n * The config for the tree\r\n */\r\n @Input()\r\n public set config(value: Partial<VtBasicTreeConfig<any>>) {\r\n this.childAccessor = value.childAccessor || this.childAccessor;\r\n this._config = { ...this._config, ...value, childAccessor: this.config.childAccessor };\r\n this.model.updateConfig(this.config);\r\n }\r\n public get config() {\r\n return this._config;\r\n }\r\n\r\n /**\r\n * returns true if filterText or a filter function is applied\r\n */\r\n public get isFiltered() {\r\n return this.model.isFiltered();\r\n }\r\n\r\n /**\r\n * Get the current model or set a custom model for the tree\r\n */\r\n @Input()\r\n public set model(value: OfVirtualTree<any>) {\r\n this._model = value;\r\n this.bindModelEvents();\r\n }\r\n public get model() {\r\n return this._model;\r\n }\r\n\r\n /**\r\n * Input for loading data into the tree\r\n */\r\n @Input()\r\n public set data(items: any[]) {\r\n this.model.load(items);\r\n }\r\n\r\n /**\r\n * Input for the selected item\r\n */\r\n @Input()\r\n public set selection(value: any) {\r\n if (!this.model.isSelected(value)) {\r\n this.model.select(value);\r\n this.navigateToSelection();\r\n }\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n this._model = new OfVirtualTree<any>(this.config);\r\n this.bindModelEvents();\r\n this.itemHeight = 1.5 * parseFloat(window.getComputedStyle(document.body).fontSize || '16');\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.tree.invalidateSize();\r\n this.model.invalidateData();\r\n }, 1);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.disposeSubscriptions();\r\n }\r\n\r\n /** @ignore */\r\n public handleContextMenu(evt: MouseEvent, item: any) {\r\n this.itemContextMenu.emit({ event: evt, item });\r\n }\r\n\r\n /** @ignore */\r\n public handleRowClick(evt: MouseEvent, item: any) {\r\n this.model.selectAndHighlight(item);\r\n this.rowClick.emit({ event: evt, item });\r\n }\r\n\r\n /**\r\n * Scrolls and expands nodes so that the selected item is visible in the tree\r\n */\r\n public navigateToSelection() {\r\n this.model.expandToSelectedItem();\r\n return this.tree.scrollToSelected();\r\n }\r\n\r\n /**\r\n * Scrolls and expands nodes so that the passed item is visible in the tree\r\n */\r\n public navigateToItem(item: any) {\r\n this.model.expandToItem(item);\r\n return this.tree.scrollToItem(item);\r\n }\r\n\r\n /** @ignore */\r\n public getIcon(node: Node<any>) {\r\n return `of-icon ${this.config.getIcon!(node.item, node, this.stateProvider)}`;\r\n }\r\n\r\n /** @ignore */\r\n public getDomNodeAttr(node: Node<any>) {\r\n return this.config.getDomNodeAttr ? this.config.getDomNodeAttr(node.item, node, this.stateProvider) : undefined;\r\n }\r\n\r\n /** @ignore */\r\n public getName(item: any) {\r\n return this.config.getName!(item, this.stateProvider) || '';\r\n }\r\n\r\n /** @ignore */\r\n public getExpanderIcon(item: any) {\r\n const iconType = this.model.isExpanded(item) ? 'down' : 'right';\r\n return `of-expander of-expander-${iconType}`;\r\n }\r\n\r\n /** @ignore */\r\n public handleDragstart(evt: DragEvent, node: Node<any>) {\r\n this.ownDragItem = node;\r\n if (this.canDrag(node.item)) {\r\n if (evt.dataTransfer) {\r\n evt.dataTransfer.dropEffect = 'move';\r\n evt.dataTransfer.setData('application/json.of-tree-item', this.getDragData(node.item));\r\n evt.dataTransfer.setData(`text/plain.${this.ownId}`, '{}');\r\n }\r\n }\r\n }\r\n\r\n /** @ignore */\r\n @HostListener('dragover', ['$event'])\r\n public handleDragover(evt: DragEvent) {\r\n this.isDraggingOver = true;\r\n if (evt.dataTransfer && evt.dataTransfer.types.includes('application/json.of-tree-item')) {\r\n const dropInfo = this.getDropInfo(evt, false);\r\n if (dropInfo.canDrop()) {\r\n this.adjustDragOverlay(dropInfo);\r\n evt.preventDefault();\r\n }\r\n if (dropInfo.draggedItem !== dropInfo.parent) {\r\n this.tryDragExpand(dropInfo);\r\n }\r\n }\r\n }\r\n\r\n /** @ignore */\r\n @HostListener('dragleave')\r\n public handleDragleave() {\r\n this.isDraggingOver = false;\r\n }\r\n\r\n /** @ignore */\r\n @HostListener('drop', ['$event'])\r\n public handleDrop(evt: DragEvent) {\r\n this.isDraggingOver = false;\r\n if (evt.dataTransfer && evt.dataTransfer.types.includes('application/json.of-tree-item')) {\r\n const dropInfo = this.getDropInfo(evt, true);\r\n if (dropInfo.canDrop()) {\r\n this.move(dropInfo.draggedItem, dropInfo.parent!, dropInfo.index);\r\n }\r\n }\r\n }\r\n\r\n /** @ignore */\r\n public canDrag(item: any) {\r\n return this.config.canDrag!(item);\r\n }\r\n\r\n private tryDragExpand(dropInfo: { parent?: Node<any>; area: DragPos }) {\r\n if (dropInfo.area !== 'on' || this.dragExpand.item !== dropInfo.parent) {\r\n clearTimeout(this.dragExpand.timeout);\r\n }\r\n if (this.dragExpand.item !== dropInfo.parent && dropInfo.parent && dropInfo.area === 'on') {\r\n this.dragExpand.item = dropInfo.parent;\r\n this.dragExpand.timeout = window.setTimeout(() => {\r\n this.model.setExpanded(dropInfo.parent!.item, true);\r\n this.model.invalidateData();\r\n }, 600);\r\n }\r\n }\r\n\r\n private async move(item: any, parent: Node<any>, index: number | undefined) {\r\n if (this.config.move) {\r\n const itemNode = item instanceof Node ? item : undefined,\r\n itemData = itemNode ? itemNode.item : item,\r\n parentItem = parent ? parent.item : undefined,\r\n fromParent = itemNode && itemNode.parent ? itemNode.parent.item : undefined;\r\n\r\n await this.config.move({\r\n itemNode,\r\n parentNode: parent,\r\n item: itemData,\r\n parent: parentItem,\r\n index\r\n });\r\n\r\n this.model.invalidateItem(fromParent);\r\n this.model.invalidateItem(parent.item);\r\n }\r\n }\r\n\r\n private getDropInfo(evt: DragEvent, readExternalData: boolean) {\r\n const box = this.getHostBox(),\r\n boxY = box ? box.top : 0,\r\n yPos = evt.pageY - boxY,\r\n target = this.getItemPosition(yPos),\r\n draggedItem = evt.dataTransfer!.types.includes(`text/plain.${this.ownId}`)\r\n ? this.ownDragItem\r\n : readExternalData && evt.dataTransfer\r\n ? JSON.parse(evt.dataTransfer.getData('application/json.oce-tree-item'))\r\n : undefined;\r\n\r\n return {\r\n draggedItem,\r\n index: target.itemIndex,\r\n parent: target.item,\r\n flatIndex: target.flatIndex,\r\n area: target.area,\r\n canDrop: () => {\r\n const item = draggedItem instanceof Node ? draggedItem.item : draggedItem,\r\n itemNode = this.model.getTreeNode(item),\r\n parentNode = target.item!,\r\n parent = target.item ? target.item.item : undefined,\r\n index = target.itemIndex;\r\n\r\n return this.canDrop(itemNode, parentNode, item, parent, index);\r\n }\r\n };\r\n }\r\n\r\n private getItemPosition(yPos: number) {\r\n const scroll = this.tree.getScrollPos(),\r\n flatIndex = Math.floor((yPos + scroll) / this.itemHeight),\r\n itemPos = flatIndex * this.itemHeight - scroll,\r\n buffer = this.itemHeight / 4,\r\n area: DragPos = itemPos + buffer > yPos ? 'before' : itemPos + this.itemHeight - buffer < yPos ? 'after' : 'on',\r\n itemAtIndex = this.model.items[flatIndex],\r\n itemIndex =\r\n !itemAtIndex || !itemAtIndex.parent\r\n ? undefined\r\n : area === 'before'\r\n ? itemAtIndex.index\r\n : area === 'after'\r\n ? itemAtIndex.index + 1\r\n : undefined,\r\n item = !itemAtIndex ? undefined : area === 'on' ? itemAtIndex : itemAtIndex.parent;\r\n\r\n return { flatIndex, itemIndex, item, area };\r\n }\r\n\r\n private getHostBox() {\r\n if (!this.hostBox && this.host.nativeElement) {\r\n this.hostBox = this.host.nativeElement.getBoundingClientRect();\r\n setTimeout(() => (this.hostBox = undefined), 1000);\r\n }\r\n\r\n return this.hostBox;\r\n }\r\n\r\n private getDragData(item: any) {\r\n return this.config.getDragData!(item);\r\n }\r\n\r\n private canDrop(itemNode: Node<any> | undefined, parentNode: Node<any>, item: any, parent: any, index: number | undefined) {\r\n if (this.config.canDrop) {\r\n return this.config.canDrop({ itemNode, parentNode, item, parent, index });\r\n }\r\n return false;\r\n }\r\n\r\n private adjustDragOverlay(dropInfo: { flatIndex: number; index: number | undefined; area: DragPos } | undefined) {\r\n if (this.dragOverlay && this.dragOverlay.nativeElement) {\r\n const el = this.dragOverlay.nativeElement;\r\n if (dropInfo) {\r\n const buffer = this.itemHeight / 4,\r\n baseY = dropInfo.flatIndex * this.itemHeight,\r\n y = dropInfo.area === 'before' ? baseY - buffer : dropInfo.area === 'after' ? baseY + this.itemHeight - buffer : baseY,\r\n h = dropInfo.area === 'on' ? this.itemHeight : buffer * 2;\r\n\r\n el.style.top = y + 'px';\r\n el.style.height = h + 'px';\r\n if (dropInfo.area === 'on') {\r\n el.classList.remove('vbt-dragoverlay-between');\r\n } else {\r\n el.classList.add('vbt-dragoverlay-between');\r\n }\r\n } else {\r\n el.style.height = '0px';\r\n }\r\n }\r\n }\r\n\r\n private getChildren(item: any) {\r\n const result = this.childAccessor(item);\r\n if (result instanceof Promise) {\r\n this.loadChildren(item, result);\r\n return undefined;\r\n }\r\n return result;\r\n }\r\n\r\n private async loadChildren(item: any, childrenPromise: Promise<any>) {\r\n this.loadingItems.add(item);\r\n try {\r\n await childrenPromise;\r\n this.model.invalidateItem(item);\r\n } finally {\r\n this.loadingItems.delete(item);\r\n }\r\n }\r\n\r\n private isItemLoading(item: any) {\r\n return this.loadingItems.has(item);\r\n }\r\n\r\n private bindModelEvents() {\r\n const selectionHandler = (item: any) => this.selectionChange.emit(item),\r\n subscription = this.model.onSelectionChanged.subscribe(selectionHandler);\r\n\r\n this.disposeSubscriptions();\r\n this.disposers.push(() => subscription.unsubscribe());\r\n }\r\n\r\n private disposeSubscriptions() {\r\n this.disposers.forEach(d => d());\r\n }\r\n\r\n private handleFilterTextChange(value: string | undefined) {\r\n if (value && value.length > this.config.filterTextMinLength!) {\r\n this.setTextFilter(value);\r\n } else {\r\n this.clearTextFilter();\r\n }\r\n this._filterText = value;\r\n }\r\n\r\n private setTextFilter(value: string) {\r\n const text = value.toLowerCase();\r\n\r\n clearTimeout(this.filterTextThrottle);\r\n this.filterTextThrottle = setTimeout(\r\n () =>\r\n this.model.setFilter(\r\n item =>\r\n this.getName(item)\r\n .toLowerCase()\r\n .indexOf(text) >= 0\r\n ),\r\n this.config.filterThrottle\r\n );\r\n }\r\n\r\n private clearTextFilter() {\r\n if (this._filterText && this._filterText.length > this.config.filterTextMinLength!) {\r\n clearTimeout(this.filterTextThrottle);\r\n this.model.setFilter(undefined);\r\n this.model.expandToSelectedItem();\r\n this.tree.scrollToSelected();\r\n }\r\n }\r\n}\r\n","export * from './basic-tree.component';\r\n","export * from './virtual-tree';\r\nexport * from './basic-tree';\r\nexport * from './set-attrs.directive';\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\n\r\ntype Attributes = { [attr: string]: any } | undefined;\r\n\r\n@Directive({\r\n selector: '[ofSetAttrs]'\r\n})\r\nexport class SetAttrsDirective {\r\n private _attrs: Attributes = undefined;\r\n\r\n @Input('ofSetAttrs')\r\n public set attrs(value: Attributes) {\r\n this._attrs = value;\r\n this.applyAttributes();\r\n }\r\n\r\n constructor(private el: ElementRef) {\r\n this.applyAttributes();\r\n }\r\n\r\n private applyAttributes() {\r\n const attrs = this._attrs,\r\n el = this.el.nativeElement;\r\n\r\n if (attrs && el) {\r\n for (const name of Object.keys(attrs)) {\r\n el.setAttribute(name, attrs[name]);\r\n }\r\n }\r\n }\r\n}\r\n","export * from './virtual-tree.component';\r\nexport * from './virtual-tree.model';\r\n","import {\r\n Component,\r\n TemplateRef,\r\n Input,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n HostListener,\r\n HostBinding,\r\n ElementRef,\r\n AfterViewInit\r\n} from '@angular/core';\r\nimport { OfVirtualTree } from './virtual-tree.model';\r\nimport { VirtualRenderArea } from '../../models';\r\n\r\n@Component({\r\n selector: 'of-virtual-tree',\r\n template: `\r\n <ng-content select=\"[tree-before]\"></ng-content>\r\n <div class=\"vt-bottom-space\" [style.top.px]=\"totalHeight\"></div>\r\n <div class=\"vt-container\" [style.top.px]=\"topBuffer\">\r\n <ng-template ngFor [ngForOf]=\"visibleItems\" [ngForTemplate]=\"template\"></ng-template>\r\n </div>\r\n <ng-content select=\"[tree-after]\"></ng-content>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n outline: none;\r\n display: block;\r\n height: 100%;\r\n overflow: auto;\r\n position: relative;\r\n }\r\n .vt-container {\r\n min-width: 100%;\r\n }\r\n .vt-container,\r\n .vt-bottom-space {\r\n position: absolute;\r\n }\r\n .vt-bottom-space {\r\n width: 1px;\r\n height: 1px;\r\n }\r\n `\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class OfVirtualTreeComponent implements OnDestroy, AfterViewInit {\r\n private disposers: (() => void)[] = [];\r\n private _model!: OfVirtualTree<any>;\r\n private renderArea = new VirtualRenderArea();\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostBinding('tabIndex')\r\n public tabIndex = 0;\r\n\r\n /**\r\n * @ignore\r\n */\r\n public visibleItems: any[] = [];\r\n\r\n /**\r\n * @ignore\r\n */\r\n @ContentChild(TemplateRef)\r\n public template!: TemplateRef<any>;\r\n\r\n /**\r\n * An instance of an OfVirtualTree<T> configured to your dataset\r\n */\r\n @Input()\r\n public set model(value: OfVirtualTree<any>) {\r\n this._model = value;\r\n this.listenForDataChange(value);\r\n }\r\n public get model() {\r\n return this._model;\r\n }\r\n\r\n /**\r\n * Height each item in the tree\r\n */\r\n @Input()\r\n public set itemHeight(value: number) {\r\n this.renderArea.itemHeight = value;\r\n }\r\n public get itemHeight() {\r\n return this.renderArea.itemHeight;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public get topBuffer() {\r\n return this.renderArea.topBuffer;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public get totalHeight() {\r\n return this.renderArea.totalHeight;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private element: ElementRef<HTMLDivElement>) {}\r\n\r\n /**\r\n * @ignore\r\n */\r\n public ngAfterViewInit() {\r\n this.handleDataChange();\r\n this.invalidateSize();\r\n this.syncScrollPos();\r\n }\r\n /**\r\n * @ignore\r\n */\r\n public ngOnDestroy() {\r\n this.dispose();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostListener('keydown', ['$event'])\r\n public handleKeydown(evt: KeyboardEvent) {\r\n if (evt.key === 'Enter') {\r\n this.model.selectHighlightedItem();\r\n } else if (evt.key.startsWith('Arrow')) {\r\n const direction = evt.key.replace('Arrow', ''),\r\n nextHighlightedIndex = this.model.navigate(direction);\r\n\r\n if (nextHighlightedIndex !== undefined) {\r\n this.scrollToIndex(nextHighlightedIndex);\r\n }\r\n evt.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostListener('scroll')\r\n public handleScrollChange() {\r\n if (this.element.nativeElement) {\r\n this.renderArea.scrollPos = this.element.nativeElement.scrollTop;\r\n this.updateVisibleItems();\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n @HostListener('window:resize')\r\n public handleWindowResize() {\r\n this.invalidateSize();\r\n }\r\n\r\n /**\r\n * Fix issues occurring from tree container's height has changed\r\n */\r\n public invalidateSize() {\r\n if (this.element.nativeElement) {\r\n const bounds = this.element.nativeElement.getBoundingClientRect();\r\n this.renderArea.viewerHeight = bounds.height;\r\n if (this.renderArea.itemCount !== this.visibleItems.length) {\r\n this.updateVisibleItems();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Scroll the container until the selected item is in view. If the selected item is already in view, do nothing.\r\n */\r\n public scrollToSelected() {\r\n const selectedIndex = this.model.getSelectedIndex();\r\n if (typeof selectedIndex === 'number') {\r\n this.scrollToIndex(selectedIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Scroll to a certain position\r\n * @param offset In pixels, the scroll position to jump to\r\n */\r\n public scrollTo(offset: number) {\r\n const { nativeElement } = this.element;\r\n if (nativeElement) {\r\n nativeElement.scrollTop = offset;\r\n }\r\n }\r\n\r\n /**\r\n * Scroll the container until the item is in view. If the item is already in view, do nothing.\r\n */\r\n public scrollToItem(item: any) {\r\n const selectedIndex = this.model.getItemIndex(item);\r\n if (typeof selectedIndex === 'number' && selectedIndex > -1) {\r\n this.scrollToIndex(selectedIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Scroll the container until the item at the index is in view. If the item at the index is already in view, do nothing.\r\n */\r\n public scrollToIndex(index: number) {\r\n const { nativeElement } = this.element;\r\n if (nativeElement) {\r\n const { viewerHeight, itemHeight } = this.renderArea,\r\n itemTop = index * itemHeight,\r\n itemBottom = itemTop + itemHeight;\r\n\r\n if (itemTop < nativeElement.scrollTop) {\r\n nativeElement.scrollTop = itemTop;\r\n } else if (itemBottom > nativeElement.scrollTop + viewerHeight) {\r\n nativeElement.scrollTop = itemBottom - viewerHeight;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the current scroll offset, pixels\r\n */\r\n public getScrollPos() {\r\n return this.renderArea.scrollPos;\r\n }\r\n\r\n /**\r\n * Adjust the DOM scroll position to match the VirtualRenderArea scroll postion, and vice versa.\r\n * This can fix some issues that occur after DOM height changes\r\n */\r\n public syncScrollPos() {\r\n const { nativeElement } = this.element;\r\n if (nativeElement) {\r\n if (nativeElement.scrollTop !== this.renderArea.scrollPos) {\r\n nativeElement.scrollTop = this.renderArea.scrollPos;\r\n this.renderArea.scrollPos = nativeElement.scrollTop;\r\n }\r\n }\r\n }\r\n\r\n private listenForDataChange(model: OfVirtualTree<any>) {\r\n this.dispose();\r\n const subscription = model.onDataInvalidated.subscribe(() => this.handleDataChange());\r\n this.disposers.push(() => subscription.unsubscribe());\r\n }\r\n\r\n private dispose() {\r\n for (const disposer of this.disposers) {\r\n disposer();\r\n }\r\n }\r\n\r\n private handleDataChange() {\r\n this.renderArea.itemCount = this.model.items.length;\r\n this.updateVisibleItems();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private updateVisibleItems() {\r\n this.visibleItems = this.model.items.slice(\r\n this.renderArea.visibleStart,\r\n this.renderArea.visibleStart + this.renderArea.visibleCount\r\n );\r\n }\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\nimport { Node, TreeQuery, TreeConfig } from '../../models';\r\n\r\nexport interface OfTreeConfig<ItemType> {\r\n canExpand?: (item: ItemType) => boolean;\r\n childAccessor?: (item: ItemType) => ItemType[] | undefined;\r\n lazyLoad?: boolean;\r\n}\r\n\r\nexport class OfVirtualTree<ItemType> {\r\n private expandedItems = new Set<ItemType>();\r\n private highlighted?: ItemType;\r\n private selectedItem?: ItemType;\r\n private _query: TreeQuery<ItemType>;\r\n private filter?: (item: ItemType) => boolean;\r\n\r\n public onDataInvalidated = new EventEmitter();\r\n public onSelectionChanged = new EventEmitter<ItemType>();\r\n public onHighlightChanged = new EventEmitter<ItemType>();\r\n\r\n public items: Node<ItemType>[] = [];\r\n\r\n public get query() {\r\n return this._query;\r\n }\r\n\r\n constructor(private config: OfTreeConfig<ItemType>, query?: TreeQuery<ItemType>) {\r\n if (query) {\r\n this._query = query;\r\n } else {\r\n this._query = new TreeConfig<ItemType>(this.config.childAccessor, !this.config.lazyLoad).query([]);\r\n }\r\n }\r\n\r\n public updateConfig(value: OfTreeConfig<ItemType>) {\r\n this.config = value;\r\n }\r\n\r\n public isFiltered() {\r\n return this.filter !== undefined;\r\n }\r\n\r\n public isSelected(item: ItemType) {\r\n return this.selectedItem === item;\r\n }\r\n\r\n public isExpanded(item: ItemType) {\r\n return this.expandedItems.has(item);\r\n }\r\n\r\n public isHighlighted(item: ItemType) {\r\n return this.highlighted === item;\r\n }\r\n\r\n public highlightByIndex(index: number | undefined) {\r\n const item = index === undefined || this.items[index] === undefined ? undefined : this.items[index].item;\r\n this.highlight(item);\r\n }\r\n\r\n public getSelectedIndex() {\r\n const selectedNode = this.selectedItem ? this.query.findNode(this.selectedItem) : undefined,\r\n result = selectedNode ? this.items.indexOf(selectedNode) : undefined;\r\n return result;\r\n }\r\n\r\n public getItemIndex(item: ItemType) {\r\n const node = this.query.findNode(item);\r\n return node ? this.items.indexOf(node) : -1;\r\n }\r\n\r\n /**\r\n * Get the TreeQuery's node for the passed item\r\n * @param item item for which to get the node\r\n */\r\n public getTreeNode(item: ItemType) {\r\n return this.query.findNode(item);\r\n }\r\n\r\n /**\r\n * Set the currently highlighted item\r\n * @param item item to select\r\n */\r\n public select(item: ItemType) {\r\n if (this.selectedItem !== item) {\r\n this.selectedItem = item;\r\n this.onSelectionChanged.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Set the currently highlighted item\r\n * @param item item to highlight, undefined to unset the highlighted item\r\n */\r\n public highlight(item: ItemType | undefined) {\r\n if (this.highlighted !== item) {\r\n this.highlighted = item;\r\n this.onHighlightChanged.emit(item);\r\n }\r\n }\r\n\r\n /**\r\n * Set the passed item as the currently selected and highlighted item\r\n * @param item item to select & highlight\r\n */\r\n public selectAndHighlight(item: ItemType) {\r\n this.select(item);\r\n this.highlight(item);\r\n }\r\n\r\n /**\r\n * Get the item that is currently selected\r\n */\r\n public getSelectedItem() {\r\n return this.selectedItem;\r\n }\r\n\r\n /**\r\n * Get the item that is currently highlighted\r\n */\r\n public getHighlightedItem() {\r\n return this.highlighted;\r\n }\r\n\r\n /**\r\n * Selects the highlighted node, and toggles its expand state\r\n */\r\n public selectHighlightedItem() {\r\n let didChange = false;\r\n if (this.highlighted) {\r\n this.toggle(this.highlighted);\r\n didChange = this.selectedItem !== this.highlighted;\r\n this.select(this.highlighted);\r\n }\r\n\r\n return didChange;\r\n }\r\n\r\n /**\r\n * Expand all ancestry of the currently selected item\r\n */\r\n public expandToSelectedItem() {\r\n if (this.selectedItem) {\r\n this.expandToItem(this.selectedItem);\r\n this.invalidateData();\r\n }\r\n }\r\n\r\n /**\r\n * Expand all ancestry of the passed item\r\n * @param item item to expand to\r\n */\r\n public expandToItem(item: ItemType) {\r\n const node = this.query.findNode(item);\r\n if (node) {\r\n for (const parent of node.ancestors()) {\r\n if (!parent.isRoot) {\r\n this.expandedItems.add(parent.item);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggle the expanded state of the passed item\r\n * @param item item to toggle\r\n */\r\n public toggle(item: ItemType) {\r\n if (this.isExpandable(item)) {\r\n if (this.isExpanded(item)) {\r\n this.expandedItems.delete(item);\r\n } else {\r\n this.expandedItems.add(item);\r\n }\r\n this.invalidateData();\r\n }\r\n }\r\n\r\n /**\r\n * Set the expanded state of an item. This does nothing if the item is not expandable or already in the desired state\r\n * This does not update the UI. Expect to call invalidateData/invalidateItem to see the effect.\r\n * @param item item to expanded or collapse\r\n * @param expanded true to expand, false to collapse\r\n */\r\n public setExpanded(item: ItemType, expanded: boolean) {\r\n if (this.isExpandable(item)) {\r\n const isExpanded = this.isExpanded(item);\r\n if (isExpanded && !expanded) {\r\n this.expandedItems.delete(item);\r\n } else if (!isExpanded && expanded) {\r\n this.expandedItems.add(item);\r\n }\r\n }\r\n }\r\n\r\n public expandAll() {\r\n for (const node of this.query) {\r\n if (this.isExpandable(node.item)) {\r\n this.expandedItems.add(node.item);\r\n }\r\n }\r\n this.invalidateData();\r\n }\r\n\r\n public collapseAll() {\r\n this.expandedItems.clear();\r\n this.invalidateData();\r\n }\r\n\r\n /**\r\n * Apply a filter that ignore expand state and makes visible all nodes that either\r\n * match the predicate or contain a child that matches the predicate\r\n * @param filter predicate, true to make a node visible\r\n */\r\n public setFilter(filter: undefined | ((item: ItemType) => boolean)) {\r\n this.filter = filter;\r\n this.invalidateData();\r\n }\r\n\r\n /**\r\n * Returns true if the passed item is expandable\r\n * @param item item to check\r\n */\r\n public isExpandable(item: ItemType) {\r\n let result = false;\r\n\r\n if (!this.filter && this.config.canExpand) {\r\n result = this.config.canExpand(item);\r\n } else {\r\n const node = this.query.findNode(item);\r\n result = !!node && node.hasChildren;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Update data from the root\r\n * @param items Data to load\r\n */\r\n public load(items: ItemType[]) {\r\n this._query = new TreeConfig<ItemType>(this.config.childAccessor, !this.config.lazyLoad).query(items);\r\n this.invalidateData();\r\n }\r\n\r\n /**\r\n * Signal children to be reloaded for a particular node.\r\n * Has no effect if the passed parent has not been loaded\r\n * @param parent item to reload\r\n */\r\n public reloadChildren(parent: ItemType) {\r\n const node = parent ? this.query.findNode(parent) : this.query.getRootNode();\r\n if (node) {\r\n node.invalidateChildren(!this.config.lazyLoad);\r\n this.invalidateData();\r\n }\r\n }\r\n\r\n /**\r\n * Signal the tree to reload all data\r\n */\r\n public reloadTree() {\r\n const root = this.query.getRootNode();\r\n root.invalidateChildren(!this.config.lazyLoad);\r\n this.invalidateData();\r\n }\r\n\r\n /**\r\n * Change the highlighted node by the given direction.\r\n * 'Left' will collapse before navigation.\r\n * 'Right' will expand before navigation.\r\n * @param direction 'Left' | 'Up' | 'Down' | 'Right'\r\n */\r\n public navigate(direction: string | 'Left' | 'Right' | 'Up' | 'Down') {\r\n const selectedNode = this.highlighted ? this.query.findNode(this.highlighted) : undefined,\r\n index = selectedNode ? this.items.indexOf(selectedNode) : undefined;\r\n let nextSelectedIndex;\r\n\r\n if (direction === 'Up') {\r\n nextSelectedIndex = index === undefined ? this.items.length - 1 : index === 0 ? undefined : index - 1;\r\n } else if (\r\n direction === 'Down' ||\r\n (direction === 'Right' && this.highlighted && (!this.isExpandable(this.highlighted) || this.isExpanded(this.highlighted)))\r\n ) {\r\n nextSelectedIndex = index === undefined ? 0 : index === this.items.length - 1 ? undefined : index + 1;\r\n } else if (direction === 'Left' && selectedNode) {\r\n if (this.highlighted && this.isExpanded(this.highlighted)) {\r\n this.toggle(this.highlighted);\r\n nextSelectedIndex = index;\r\n } else if (selectedNode.parent) {\r\n nextSelectedIndex = this.items.indexOf(selectedNode.parent);\r\n }\r\n } else if (direction === 'Right') {\r\n if (this.highlighted && !this.isExpanded(this.highlighted)) {\r\n this.toggle(this.highlighted);\r\n nextSelectedIndex = index;\r\n }\r\n }\r\n\r\n this.highlightByIndex(nextSelectedIndex);\r\n return nextSelectedIndex;\r\n }\r\n\r\n /**\r\n * Signal that the state has changed and the tree needs to be revisited\r\n */\r\n public invalidateData() {\r\n if (this.filter) {\r\n this.items = this.query\r\n .descend()\r\n .hasDescendant(this.filter)\r\n .toArray();\r\n } else {\r\n this.items = this.query\r\n .forwardOverride((curr, fallback) =>\r\n !curr.isRoot && !this.isExpanded(curr.item) ? curr.next || curr.ancestorForward() : fallback()\r\n )\r\n .whereNode(n => this.isExpanded(n.parent!.item) || n.parent!.isRoot)\r\n .toArray();\r\n }\r\n\r\n this.onDataInvalidated.emit();\r\n }\r\n\r\n /**\r\n * Signal that the children of a node have changed and the node needs to have the children reloaded\r\n * @param item item whose children should be reloaded\r\n * @param reloadImmediately true to update children immediate, not on-demand\r\n */\r\n public invalidateItem(item: ItemType, reloadImmediately = true) {\r\n if (item) {\r\n const node = this.getTreeNode(item);\r\n if (node) {\r\n node.invalidateChildren(reloadImmediately);\r\n this.invalidateData();\r\n }\r\n }\r\n }\r\n}\r\n","export * from './node';\r\nexport * from './tree-query';\r\nexport * from './virtual-render-area';\r\n","/**\r\n * Node wraps each item in a hierarchy of data, providing relationship info about the items place in the hierarchy\r\n */\r\nexport class Node<T> {\r\n private _next?: Node<T>;\r\n private _childrenAccessor: () => Node<T>[];\r\n private _children?: Node<T>[];\r\n\r\n /**\r\n * The forward sibling to this node\r\n */\r\n public get next() {\r\n return this._next;\r\n }\r\n /**\r\n * Check whether lazy loaded children have been loaded\r\n */\r\n public get childrenLoaded() {\r\n return !!this._children;\r\n }\r\n /**\r\n * The children of this node\r\n */\r\n public get children(): ReadonlyArray<Node<T>> {\r\n return this._children ? this._children : (this._children = this._childrenAccessor());\r\n }\r\n /**\r\n * Bool indicating whether this node has children\r\n */\r\n public get hasChildren() {\r\n return !!this.children.length;\r\n }\r\n /**\r\n * Bool indicating whether this is the last among its siblings\r\n */\r\n public get isLastChild() {\r\n return !this.next;\r\n }\r\n /**\r\n * Bool indicating whether this is the first among its siblings\r\n */\r\n public get isFirstChild() {\r\n return !this.prev;\r\n }\r\n /**\r\n * Bool indicating if this is a root node\r\n */\r\n public get isRoot() {\r\n return !this.parent;\r\n }\r\n /**\r\n * Gets the first of this node's children\r\n */\r\n public get firstChild(): Node<T> | undefined {\r\n return this.children[0];\r\n }\r\n /**\r\n * Gets the last of this node's children\r\n */\r\n public get lastChild(): Node<T> | undefined {\r\n return this.children[this.children.length - 1];\r\n }\r\n /**\r\n * Creates an iterator of this node's ancestors nearest first\r\n */\r\n public ancestors(): IterableIterator<Node<T>> {\r\n const self = this;\r\n return (function*() {\r\n let current: Node<T> | undefined = self;\r\n while ((current = current.parent) !== undefined) {\r\n yield current;\r\n }\r\n })();\r\n }\r\n\r\n /**\r\n * Get the root node of this node\r\n */\r\n public getRoot() {\r\n let node: Node<T> | undefined = this;\r\n while (node && !node.isRoot) {\r\n node = node.parent;\r\n }\r\n return node;\r\n }\r\n\r\n /**\r\n * Get the nearest next sibling among ancestor nodes\r\n */\r\n public ancestorForward() {\r\n let result;\r\n for (const ancestor of this.ancestors()) {\r\n if (ancestor.next) {\r\n result = ancestor.next;\r\n break;\r\n } else if (ancestor.isRoot) {\r\n result = ancestor;\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Get the nearest next node.\r\n * If this is the last of its siblings, the nearest ancestor's next sibling is returned.\r\n * If wrap is true and if this is the last node of the tree, the root is next.\r\n * If wrap is false and if this is the last node of the tree, undefined is next.\r\n * If next is this node, then undefined is returned.\r\n * @param wrap if true, then the root node is returned for the last node of the tree\r\n */\r\n public forwardNode(wrap?: boolean): Node<T> | undefined {\r\n let next: Node<T> | undefined = this.firstChild || this.next;\r\n\r\n if (!next) {\r\n next = this.ancestorForward();\r\n }\r\n\r\n if (next && next.isRoot && !wrap) {\r\n next = undefined;\r\n }\r\n\r\n return next === this ? undefined : next;\r\n }\r\n\r\n public reverseNode(wrap?: boolean): Node<T> | undefined {\r\n let next: Node<T> | undefined = this.prev ? this.prev.lastDescendant() : this.parent;\r\n if (!next && wrap) {\r\n const root = this.getRoot();\r\n next = root ? root.lastDescendant() : undefined;\r\n }\r\n\r\n return next === this ? undefined : next;\r\n }\r\n\r\n public lastDescendant(): Node<T> | undefined {\r\n let result: Node<T> | undefined = this,\r\n current: Node<T> | undefined = this;\r\n while ((current = current.lastChild) !== undefined) {\r\n result = current;\r\n }\r\n return result;\r\n }\r\n\r\n public invalidateChildren(reloadNow: boolean) {\r\n this._children = undefined;\r\n if (reloadNow) {\r\n this._children = this._childrenAccessor();\r\n }\r\n }\r\n\r\n public visitSubtree(visitor: (node: Node<T>) => void) {\r\n visitor(this);\r\n if (this.childrenLoaded) {\r\n for (const child of this.children) {\r\n child.visitSubtree(visitor);\r\n }\r\n }\r\n }\r\n\r\n constructor(\r\n /**\r\n * The previous sibling of this node\r\n */\r\n public readonly prev: Node<T> | undefined,\r\n /**\r\n * The parent node of this node\r\n */\r\n public readonly parent: Node<T> | undefined,\r\n /**\r\n * The depth of this node or the number of its ancestors\r\n */\r\n public readonly depth: number,\r\n /**\r\n * The data item which this node wraps\r\n */\r\n public readonly item: T,\r\n /**\r\n * Index relative to the parent\r\n */\r\n public readonly index: number,\r\n children: () => Node<T>[]\r\n ) {\r\n if (prev) {\r\n prev._next = this;\r\n }\r\n this._childrenAccessor = children;\r\n }\r\n}\r\n","import { Node } from './node';\r\n\r\n/**\r\n * Wraps arbitrary hierarchical data in a tree structure with depth, parent, children\r\n * sibling properties, normalizing hierarchical data so that it can be traversed and\r\n * queried easily.\r\n */\r\nexport class TreeQuery<T> implements Iterable<Node<T>> {\r\n private rootNode!: Node<T>;\r\n private nodeLookup = new Map<T, Node<T>>();\r\n private iterate: () => IterableIterator<Node<T>>;\r\n\r\n /**\r\n * Create a tree query, starting with an arbitrary data set, and a delegate for loading child items\r\n * @param items Any arbitrary array of data\r\n * @param childAccessor A delegate which, given an arbitrary data item, should return that items children, or undefined if the item has no children\r\n * @param eagerLoad If true, will descend the entire items hierarchy immediately\r\n */\r\n public static init<T>(items: T[], childAccessor?: (item: T) => T[] | undefined, eagerLoad: boolean = true) {\r\n const query = new TreeQuery<T>(),\r\n rootItem = { items } as any,\r\n accessor = childAccessor || (() => [] as T[]);\r\n\r\n const createNode = (item: T, depth: number, parent?: Node<T>, prev?: Node<T>, index?: number): Node<T> => {\r\n let providedChildren: Node<T>[] = [];\r\n const childProvider = () => {\r\n const childItems = item === rootItem ? rootItem.items : accessor(item),\r\n children = [];\r\n\r\n query.cleanLookup(providedChildren);\r\n\r\n if (childItems) {\r\n let previous: Node<T> | undefined;\r\n for (let i = 0; i < childItems.length; i++) {\r\n const childItem = childItems[i],\r\n // tslint:disable-next-line: no-use-before-declare\r\n child = createNode(childItem, depth + 1, result, previous, i);\r\n\r\n children.push(child);\r\n previous = child;\r\n }\r\n }\r\n\r\n return (providedChildren = children);\r\n },\r\n result = new Node<T>(prev, parent, depth, item, index || 0, childProvider);\r\n\r\n query.nodeLookup.set(item, result);\r\n result.invalidateChildren(eagerLoad);\r\n\r\n return result;\r\n };\r\n\r\n query.rootNode = createNode(rootItem, -1);\r\n\r\n return query;\r\n }\r\n\r\n private customMove: (current: Node<T>, defaultNext: () => Node<T> | undefined) => Node<T> | undefined = (_current, def) => def();\r\n\r\n private constructor(iterator?: () => IterableIterator<Node<T>>) {\r\n this.iterate = iterator ? iterator : this.forwardIterator();\r\n }\r\n\r\n private extend(iterator: () => IterableIterator<Node<T>>): TreeQuery<T> {\r\n const result = new TreeQuery<T>(iterator);\r\n result.rootNode = this.rootNode;\r\n result.nodeLookup = this.nodeLookup;\r\n return result;\r\n }\r\n\r\n /**\r\n * Pagination-like, skip past a number of items. Iterarting will not yield that number of items\r\n * @param count Number of items to skip through\r\n */\r\n public skip(count: number) {\r\n const iterator = this.iterate;\r\n return this.extend(function*() {\r\n let i = 0;\r\n for (const node of iterator()) {\r\n if (i >= count) {\r\n yield node;\r\n }\r\n i++;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Pagination-like, iterate through an exact number of items. Iteration ends after that number is reached\r\n * @param count Number of items to iterate through\r\n */\r\n public take(count: number) {\r\n const iterator = this.iterate;\r\n return this.extend(function*() {\r\n let i = 0;\r\n for (const node of iterator()) {\r\n if (i >= count) {\r\n break;\r\n }\r\n yield node;\r\n i++;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Apply filter by node, so that only nodes passing the filter are yielded during iteration\r\n * @param filter A delegate returning bool, true if the node should be iterable\r\n */\r\n public whereNode(filter: (node: Node<T>) => boolean) {\r\n const iterator = this.iterate;\r\n return this.extend(function*() {\r\n for (const node of iterator()) {\r\n if (filter(node)) {\r\n yield node;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Apply a filter by item which yields the nodes which have descendants matching the filter\r\n * @param filter A delegate returning bool, true if its ancestors should be iterable\r\n * @param excludeMatch False to yield items that match the filter\r\n */\r\n public hasDescendant(filter: (item: T) => boolean, excludeMatch: boolean = false) {\r\n return this.hasDescendantNode(n => filter(n.item), excludeMatch);\r\n }\r\n\r\n /**\r\n * Apply a filter by node which yields the nodes which have descendants matching the filter\r\n * @param filter A delegate returning bool, true if its ancestors should be iterable\r\n * @param excludeMatch False to yield items that match the filter\r\n */\r\n public hasDescendantNode(filter: (node: Node<T>) => boolean, excludeMatch: boolean = false) {\r\n const iterator = this.iterate,\r\n self = this;\r\n\r\n return this.extend(function*() {\r\n const matches = new Set<Node<T>>();\r\n for (const node of self.ascend()) {\r\n if (!matches.has(node) && filter(node)) {\r\n if (!excludeMatch) {\r\n matches.add(node);\r\n }\r\n for (const p of node.ancestors()) {\r\n matches.add(p);\r\n }\r\n }\r\n }\r\n\r\n for (const node of iterator()) {\r\n if (matches.has(node)) {\r\n yield node;\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get the number of items in the hierarchy\r\n */\r\n public count() {\r\n let result = 0;\r\n for (const _node of this.iterate()) {\r\n result++;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Get a single item at the given index\r\n * @param n The overall index of the item in the hierarchy\r\n */\r\n public nth(n: number) {\r\n const result = this.skip(n)\r\n .take(1)\r\n .toArray()\r\n .find(() => true);\r\n return result;\r\n }\r\n\r\n /**\r\n * Apply filter by item, so that only items passing the filter are yielded during iteration\r\n * @param filter A delegate returning bool, true if the node should be iterable\r\n */\r\n public where(filter: (item: T) => boolean) {\r\n return this.whereNode(n => filter(n.item));\r\n }\r\n\r\n /**\r\n * Get the first item\r\n */\r\n public first() {\r\n for (const result of this) {\r\n return result.item;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Visit items in the hierarchy in order from top to bottom regardless of depth\r\n * @param from Where to start ascending from\r\n * @param wrap True to start back at the last item after reach the root 0th item\r\n */\r\n public ascend(from?: T, wrap?: boolean) {\r\n const node = (from && this.findNode(from)) || undefined;\r\n return this.extend(this.reverseIterator(node, wrap));\r\n }\r\n\r\n /**\r\n * Depth first, visit items in the hierarchy in order from top to bottom\r\n * @param from Where to start descending from\r\n * @param wrap True to start back at the root 0th item after reaching the last item\r\n */\r\n public descend(from?: T, wrap?: boolean) {\r\n const node = (from && this.findNode(from)) || undefined;\r\n return this.extend(this.forwardIterator(node, wrap));\r\n }\r\n\r\n /**\r\n * Control descend behavior and skip iterating branches\r\n * @param provider A delegate which accepts the current node and should return the node to follow\r\n */\r\n public provideNext(provider: (current: Node<T>, defaultNext: () => Node<T> | undefined) => undefined | Node<T>) {\r\n this.customMove = provider;\r\n return this;\r\n }\r\n /**\r\n * Control descend behavior and override any preexisting descend behavior\r\n * @param provider A delegate which accepts the current node and should return the node to follow\r\n */\r\n public forwardOverride(provider: (current: Node<T>, defaultNext: () => Node<T> | undefined) => undefined | Node<T>) {\r\n return this.descend()\r\n .provideNext(provider)\r\n .descend();\r\n }\r\n\r\n /**\r\n * Convenience method for iterating and returning the iterated items as an array\r\n */\r\n public toArray() {\r\n const result = [];\r\n for (const item of this) {\r\n result.push(item);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n public [Symbol.iterator](): Iterator<Node<T>> {\r\n return this.iterate();\r\n }\r\n\r\n /**\r\n * Get the root node of this tree. The root node is a container of other nodes.\r\n */\r\n public getRootNode() {\r\n return this.rootNode;\r\n }\r\n\r\n /**\r\n * O(1) return the node of the passed item, or undefined if the item is not loaded in this hierarchy\r\n * @param item\r\n */\r\n public findNode(item: T) {\r\n return this.nodeLookup.get(item);\r\n }\r\n\r\n private reverseIterator(from?: Node<T>, wrap?: boolean) {\r\n const self = this;\r\n return function*() {\r\n const start = from || self.rootNode.lastDescendant();\r\n let current: Node<T> | undefined = start,\r\n defaultNext: Node<T> | undefined;\r\n const nextAccessor = () => defaultNext || (defaultNext = current!.reverseNode(wrap));\r\n\r\n while (!!current) {\r\n if (!current.isRoot) {\r\n yield current;\r\n }\r\n current = self.customMove(current, nextAccessor);\r\n defaultNext = undefined;\r\n if (current === start) {\r\n break;\r\n }\r\n }\r\n };\r\n }\r\n\r\n private forwardIterator(from?: Node<T>, wrap?: boolean) {\r\n const self = this;\r\n return function*() {\r\n const start = from || self.rootNode;\r\n let current: Node<T> | undefined = start,\r\n defaultNext: Node<T> | undefined;\r\n const nextAccessor = () => defaultNext || (defaultNext = current!.forwardNode(wrap));\r\n\r\n while (!!current) {\r\n if (!current.isRoot) {\r\n yield current;\r\n }\r\n current = self.customMove(current, nextAccessor);\r\n defaultNext = undefined;\r\n if (current === start) {\r\n break;\r\n }\r\n }\r\n };\r\n }\r\n\r\n private cleanLookup(nodes: Node<T>[]) {\r\n for (const node of nodes) {\r\n node.visitSubtree(n => this.nodeLookup.delete(n.item));\r\n }\r\n }\r\n}\r\n\r\n/** @ignore */\r\nexport class TreeConfig<T> {\r\n constructor(public readonly childAccessor?: (item: T) => T[] | undefined, public eagerLoad = true) {}\r\n public query(items: T[]) {\r\n return TreeQuery.init<T>(items, this.childAccessor, this.eagerLoad);\r\n }\r\n}\r\n","/**\r\n * Simple calculator for a virtual render area\r\n */\r\nexport class VirtualRenderArea {\r\n private _scrollPos = 0;\r\n private _viewerHeight = 0;\r\n private _itemCount = 0;\r\n private _itemHeight = 0;\r\n private _visibleCount = 0;\r\n private _visibleStart = 0;\r\n private _topBuffer = 0;\r\n private _totalHeight = 0;\r\n\r\n public set itemHeight(value: number) {\r\n if (this._itemHeight !== value) {\r\n this._itemHeight = value;\r\n this.invalidateViewRange();\r\n this.invalidateTotalHeight();\r\n this.invalidateScrollPos();\r\n }\r\n }\r\n public get itemHeight() {\r\n return this._itemHeight;\r\n }\r\n\r\n public set itemCount(value: number) {\r\n if (this._itemCount !== value) {\r\n this._itemCount = value;\r\n this.invalidateViewRange();\r\n this.invalidateTotalHeight();\r\n }\r\n }\r\n public get itemCount() {\r\n return this._itemCount;\r\n }\r\n\r\n public set scrollPos(value: number) {\r\n if (this._scrollPos !== value) {\r\n this._scrollPos = value;\r\n this.invalidateViewRange();\r\n }\r\n }\r\n public get scrollPos() {\r\n return this._scrollPos;\r\n }\r\n\r\n public set viewerHeight(value: number) {\r\n if (this._viewerHeight !== value) {\r\n this._viewerHeight = value;\r\n this.invalidateViewRange();\r\n this.invalidateScrollPos();\r\n }\r\n }\r\n public get viewerHeight() {\r\n return this._viewerHeight;\r\n }\r\n\r\n public get visibleCount() {\r\n return this._visibleCount;\r\n }\r\n public get visibleStart() {\r\n return this._visibleStart;\r\n }\r\n public get topBuffer() {\r\n return this._topBuffer;\r\n }\r\n public get totalHeight() {\r\n return this._totalHeight;\r\n }\r\n\r\n private invalidateViewRange() {\r\n const maxItems = Math.ceil(this._viewerHeight / this._itemHeight) + 1;\r\n\r\n this._visibleStart = Math.floor(this._scrollPos / this._itemHeight);\r\n this._visibleCount = Math.min(this._itemCount - this._visibleStart, maxItems);\r\n this._topBuffer = this._visibleStart * this._itemHeight;\r\n }\r\n\r\n private invalidateTotalHeight() {\r\n this._totalHeight = this._itemHeight * this._itemCount;\r\n }\r\n\r\n private invalidateScrollPos() {\r\n this._scrollPos = Math.min(Math.max(0, this._totalHeight - this._viewerHeight), this._scrollPos);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport * as C from './components';\r\n\r\n@NgModule({\r\n declarations: [C.OfVirtualTreeComponent, C.OfBasicTreeComponent, C.SetAttrsDirective],\r\n imports: [CommonModule],\r\n exports: [C.OfVirtualTreeComponent, C.OfBasicTreeComponent]\r\n})\r\nexport class OfVirtualTreeModule {}\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { Component, OnInit } from '@angular/core';\r\nimport { AppSettingsService } from './services/AppSettingsService';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n template: `\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"ready\">\r\n <app-show-off-tree></app-show-off-tree>\r\n <app-golden-tree></app-golden-tree>\r\n </ng-container>\r\n <ng-container *ngIf=\"!ready\">loading</ng-container>\r\n `\r\n})\r\nexport class AppComponent implements OnInit {\r\n public ready: boolean = false;\r\n\r\n constructor(private settingsService: AppSettingsService) {}\r\n\r\n public ngOnInit(): void {\r\n this.start();\r\n }\r\n\r\n private async start() {\r\n await this.settingsService.init();\r\n\r\n this.ready = true;\r\n }\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgModule, Component } from '@angular/core';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { OfVirtualTreeModule } from 'of-tree';\r\nimport { AppSettingsService } from './services/AppSettingsService';\r\nimport { OofficeDemoService } from './services/OofficeDemoService';\r\nimport * as Components from './components';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n Components.GoldenTreeComponent,\r\n Components.GoldenTreeLineComponent,\r\n Components.LoadingComponent,\r\n Components.ShowOffTreeComponent,\r\n Components.ToolbarComponent\r\n ],\r\n imports: [BrowserModule, FormsModule, OfVirtualTreeModule],\r\n providers: [AppSettingsService, OofficeDemoService],\r\n bootstrap: [Components.GoldenTreeComponent, Components.ShowOffTreeComponent]\r\n})\r\nexport class AppModule {}\r\n","export * from './loading.component';\r\nexport * from './toolbar.component';\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loading',\r\n template: `\r\n <div *ngIf=\"show\" class=\"overlay\">\r\n <svg\r\n version=\"1.1\"\r\n id=\"L2\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100\"\r\n height=\"100\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 100 100\"\r\n enable-background=\"new 0 0 100 100\"\r\n xml:space=\"preserve\"\r\n >\r\n <circle fill=\"none\" stroke=\"#000\" stroke-width=\"4\" stroke-miterlimit=\"10\" cx=\"50\" cy=\"50\" r=\"48\"></circle>\r\n <line\r\n fill=\"none\"\r\n stroke-linecap=\"round\"\r\n stroke=\"#000\"\r\n stroke-width=\"4\"\r\n stroke-miterlimit=\"10\"\r\n x1=\"50\"\r\n y1=\"50\"\r\n x2=\"85\"\r\n y2=\"50.5\"\r\n transform=\"rotate(233.59 50 50)\"\r\n >\r\n <animateTransform\r\n attributeName=\"transform\"\r\n dur=\"2s\"\r\n type=\"rotate\"\r\n from=\"0 50 50\"\r\n to=\"360 50 50\"\r\n repeatCount=\"indefinite\"\r\n ></animateTransform>\r\n </line>\r\n <line\r\n fill=\"none\"\r\n stroke-linecap=\"round\"\r\n stroke=\"#000\"\r\n stroke-width=\"4\"\r\n stroke-miterlimit=\"10\"\r\n x1=\"50\"\r\n y1=\"50\"\r\n x2=\"49.5\"\r\n y2=\"74\"\r\n transform=\"rotate(55.1453 50 50)\"\r\n >\r\n <animateTransform\r\n attributeName=\"transform\"\r\n dur=\"15s\"\r\n type=\"rotate\"\r\n from=\"0 50 50\"\r\n to=\"360 50 50\"\r\n repeatCount=\"indefinite\"\r\n ></animateTransform>\r\n </line>\r\n </svg>\r\n <div class=\"text\"><ng-content></ng-content></div>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .overlay {\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n width: 100%;\r\n background: #fff8;\r\n z-index: 1;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n flex-direction: column;\r\n }\r\n .text {\r\n line-height: 4rem;\r\n font-size: 1.2rem;\r\n color: #000b;\r\n }\r\n `\r\n ]\r\n})\r\nexport class LoadingComponent {\r\n @Input()\r\n public show: boolean;\r\n\r\n @Input()\r\n public message: string;\r\n}\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-toolbar',\r\n template: ``\r\n})\r\nexport class ToolbarComponent {\r\n\r\n}\r\n","export * from './design';\r\nexport * from './pages';\r\n","import { OnInit } from '@angular/core';\r\nimport { AppSettingsService } from '../../services/AppSettingsService';\r\n\r\nexport class DemoBaseComponent implements OnInit {\r\n constructor(private settingsService: AppSettingsService) {}\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n protected async init() {\r\n await this.settingsService.init();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ITreeItem, OofficeDemoService } from '../../services/OofficeDemoService';\r\nimport { Node, OfVirtualTree } from 'of-tree';\r\nimport { DemoBaseComponent } from './demo-base.component';\r\nimport { AppSettingsService } from '../../services/AppSettingsService';\r\n\r\n@Component({\r\n selector: 'app-golden-tree',\r\n template: `\r\n <div class=\"header\">\r\n <div class=\"col-1\"><div>Package Name</div></div>\r\n <div class=\"col-2\">No. of Children</div>\r\n <div class=\"col-3\"></div>\r\n </div>\r\n <div class=\"tree-container\">\r\n <app-loading [show]=\"loading\">downloading a bunch of data</app-loading>\r\n <of-virtual-tree [itemHeight]=\"25\" [model]=\"treeModel\">\r\n <ng-template let-node>\r\n <div class=\"tree-item\" [class.app-highlight]=\"treeModel.isHighlighted(node.item)\">\r\n <div class=\"col-1\" (click)=\"treeModel.selectAndHighlight(node.item)\">\r\n <app-golden-line\r\n (click)=\"treeModel.toggle(node.item)\"\r\n [node]=\"node\"\r\n [canExpand]=\"treeModel.isExpandable(node.item)\"\r\n [expanded]=\"treeModel.isExpanded(node.item)\"\r\n ></app-golden-line>\r\n <div class=\"icon\" (click)=\"treeModel.toggle(node.item)\">\r\n <i\r\n class=\"fa\"\r\n [class.fa-box]=\"isPackage(node)\"\r\n [class.fa-folder]=\"isFolder(node)\"\r\n [class.fa-file]=\"isFile(node.item)\"\r\n ></i>\r\n </div>\r\n <div class=\"label\">\r\n {{ node.item.name }}\r\n </div>\r\n </div>\r\n <div class=\"col-2\">\r\n {{ node.item.children.length }}\r\n </div>\r\n <div class=\"col-3\">\r\n <a *ngIf=\"isPackage(node)\" target=\"_blank\" [attr.href]=\"'https://www.npmjs.com/package/' + getPackagePath(node)\"\r\n ><i class=\"fa fa-external-link-alt\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </of-virtual-tree>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .header,\r\n .tree-item {\r\n height: 25px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n .header {\r\n font-weight: bold;\r\n width: calc(100% - 17px);\r\n }\r\n .tree-item:hover {\r\n background: #bb42;\r\n }\r\n .broccoli {\r\n filter: hue-rotate(281deg) brightness(1.5);\r\n }\r\n .col-1 {\r\n flex: 1 1 auto;\r\n width: 100%;\r\n overflow: hidden;\r\n }\r\n .header .col-1 {\r\n padding-left: 25px;\r\n box-sizing: border-box;\r\n }\r\n .tree-item .col-1 {\r\n cursor: pointer;\r\n display: flex;\r\n height: 100%;\r\n align-items: center;\r\n }\r\n .tree-item.app-highlight {\r\n background: #0bf4;\r\n }\r\n .col-2 {\r\n flex: 0 0 20%;\r\n line-height: 25px;\r\n }\r\n .header .col-2 {\r\n text-align: center;\r\n }\r\n .tree-item .col-2 {\r\n background: #0001;\r\n border: solid 0px #0002;\r\n border-width: 0 1px;\r\n text-align: right;\r\n box-sizing: border-box;\r\n padding-right: 0.5rem;\r\n }\r\n .col-3 {\r\n flex: 0 0 20%;\r\n text-align: center;\r\n }\r\n .tree-item .label {\r\n white-space: nowrap;\r\n }\r\n .fa-folder {\r\n color: #e7c9a9;\r\n }\r\n .fa-file {\r\n color: #888;\r\n }\r\n .fa-box {\r\n color: #d60000b0;\r\n }\r\n .tree-container {\r\n height: 400px;\r\n border: solid 1px #0003;\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class GoldenTreeComponent extends DemoBaseComponent {\r\n public loading: boolean = false;\r\n\r\n public treeModel: OfVirtualTree<ITreeItem> = new OfVirtualTree<ITreeItem>({\r\n canExpand: item => item.children && item.children.length > 0,\r\n childAccessor: item => item.children\r\n });\r\n\r\n constructor(private demoService: OofficeDemoService, settings: AppSettingsService) {\r\n super(settings);\r\n }\r\n\r\n public async init() {\r\n await super.init();\r\n await this.load();\r\n }\r\n\r\n public isPackage(node: Node<ITreeItem>) {\r\n return (\r\n (node.depth === 0 && node.item.name !== '.bin' && !node.item.name.startsWith('@')) ||\r\n (node.depth === 1 && node.parent.item.name.startsWith('@'))\r\n );\r\n }\r\n\r\n public isFolder(node: Node<ITreeItem>) {\r\n return !this.isPackage(node) && node.item.type === 'd';\r\n }\r\n\r\n public isFile(item: ITreeItem) {\r\n return item.type === 'f';\r\n }\r\n\r\n public getPackagePath(node: Node<ITreeItem>) {\r\n return node.depth === 1 ? node.parent.item.name + '/' + node.item.name : node.item.name;\r\n }\r\n\r\n private async load() {\r\n this.loading = true;\r\n try {\r\n const result = await this.demoService.getDemoTreeData('node_modules');\r\n this.treeModel.load(result);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-golden-line',\r\n template: `\r\n <ng-container *ngFor=\"let item of getComponents()\">\r\n <svg viewBox=\"0 0 120 120\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path [attr.d]=\"getPath(item)\" />\r\n </svg>\r\n </ng-container>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n }\r\n svg {\r\n width: 25px;\r\n height: 25px;\r\n }\r\n path {\r\n stroke: #000;\r\n fill: #0000;\r\n stroke-width: 4px;\r\n }\r\n `\r\n ]\r\n})\r\nexport class GoldenTreeLineComponent {\r\n private components: string[] = [];\r\n private _expanded = false;\r\n private _canExpand = false;\r\n private paths: { [key: string]: string } = {\r\n 'n-e-ex': 'M 60, 0 V 30 M 90, 60 H 120 M 31, 31 h 58 v 58 h -58 v -59 M 60, 41 v 38 M 41, 60 h 38 Z',\r\n 'n-e-nx': 'M 60, 0 V 30 M 90, 60 H 120 M 31, 31 h 58 v 58 h -58 v -59 M 41, 60 h 38 Z',\r\n 'n-s-e-ex': 'M 60, 0 V 30 M 90, 60 H 120 M 31, 31 h 58 v 58 h -58 v -59 M 60, 41 v 38 M 41, 60 h 38 M 60, 90 V 120 Z',\r\n 'n-s-e-nx': 'M 60, 0 V 30 M 90, 60 H 120 M 31, 31 h 58 v 58 h -58 v -59 M 41, 60 h 38 M 60, 90 V 120 Z',\r\n 'n-s': 'M 60, 0 V 120 Z',\r\n 'n-e': 'M 60, 0 V 60 M 60, 60 H 120 Z',\r\n 'n-s-e': 'M 60,0 V 120 M 60, 60 H 120 Z'\r\n };\r\n\r\n @Input()\r\n public node!: Node<any>;\r\n\r\n @Input()\r\n public set canExpand(value: boolean) {\r\n this._canExpand = value;\r\n this.components = undefined;\r\n }\r\n\r\n @Input()\r\n public set expanded(value: boolean) {\r\n this._expanded = value;\r\n this.components = undefined;\r\n }\r\n\r\n public getComponents() {\r\n if (!this.components) {\r\n this.components = [...this.getParents(), this.getTerminal()];\r\n }\r\n\r\n return this.components;\r\n }\r\n\r\n public getPath(item: string) {\r\n return this.paths[item];\r\n }\r\n\r\n private getParents() {\r\n const result = [],\r\n nonRootParents = [...this.node.ancestors()].reverse().slice(1);\r\n\r\n for (const parent of nonRootParents) {\r\n result.push(parent.isLastChild ? '' : 'n-s');\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getTerminal() {\r\n let result = this.node.isLastChild ? 'n-e' : 'n-s-e';\r\n if (this._canExpand) {\r\n result += this._expanded ? '-nx' : '-ex';\r\n }\r\n return result;\r\n }\r\n}\r\n","export * from './golden-tree.component';\r\nexport * from './show-off-tree.component';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ITreeItem, OofficeDemoService } from '../../services/OofficeDemoService';\r\nimport { Node } from 'of-tree';\r\nimport { DemoBaseComponent } from './demo-base.component';\r\nimport { AppSettingsService } from '../../services/AppSettingsService';\r\n\r\n@Component({\r\n selector: 'app-show-off-tree',\r\n template: `\r\n <div class=\"tree\">\r\n <div class=\"toolbar\">\r\n <a (click)=\"tree.model.expandAll()\"><i class=\"fas fa-plus-square\" title=\"Expand All\"></i></a>\r\n <a (click)=\"tree.model.collapseAll()\"><i class=\"fas fa-minus-square\" title=\"Collapse All\"></i></a>\r\n <a (click)=\"tree.navigateToSelection()\"><i class=\"fas fa-location-arrow\" title=\"Scroll + Expand to Selection\"></i></a>\r\n <input type=\"search\" [(ngModel)]=\"filterText\" />\r\n </div>\r\n <div class=\"tree-container\">\r\n <app-loading [show]=\"loading\">downloading a bunch of data</app-loading>\r\n <of-basic-tree #tree [config]=\"config\" [filterText]=\"filterText\" [(selection)]=\"selected\" [data]=\"treeData\"></of-basic-tree>\r\n </div>\r\n <p>Selected Path: {{ getPath(tree.model.getTreeNode(selected)) }}</p>\r\n <p>\r\n Total Items: <strong>{{ tree.model.query.count().toLocaleString() }}</strong>\r\n </p>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .toolbar {\r\n display: flex;\r\n }\r\n .toolbar a {\r\n text-decoration: none;\r\n color: #000b;\r\n cursor: pointer;\r\n display: block;\r\n width: 1.5rem;\r\n height: 1.5rem;\r\n line-height: 1.5rem;\r\n text-align: center;\r\n }\r\n .toolbar a:hover {\r\n text-decoration: none;\r\n background-color: #228b2244;\r\n }\r\n .tree-container {\r\n height: 400px;\r\n border: solid 1px #0003;\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class ShowOffTreeComponent extends DemoBaseComponent {\r\n public loading: boolean = false;\r\n\r\n public treeData: ITreeItem[] = [];\r\n public selected: any;\r\n public filterText: string = '';\r\n public config = {\r\n filterThrottle: 1,\r\n filterTextMinLength: 0\r\n };\r\n\r\n constructor(private demoService: OofficeDemoService, settingService: AppSettingsService) {\r\n super(settingService);\r\n }\r\n\r\n protected async init() {\r\n await super.init();\r\n await this.load();\r\n }\r\n\r\n public getPath(node: Node<any>) {\r\n let result = '[Nothing]';\r\n\r\n if (node && node.item) {\r\n const path = [node.item.name];\r\n for (const parent of node.ancestors()) {\r\n if (parent.item && parent.item.name) {\r\n path.unshift(parent.item.name);\r\n }\r\n }\r\n result = '/' + path.join('/');\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private async load() {\r\n this.loading = true;\r\n try {\r\n const result = await this.demoService.getDemoTreeData('node_modules');\r\n this.treeData = result;\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\ninterface IAppSettings {\r\n apiRoot: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppSettingsService {\r\n private appSettings?: IAppSettings;\r\n\r\n public get() {\r\n return this.appSettings;\r\n }\r\n\r\n public async init() {\r\n const response = await fetch('/assets/appsettings.json', { method: 'get' }),\r\n result = await response.json();\r\n\r\n this.appSettings = result as IAppSettings;\r\n }\r\n}\r\n","import { AppSettingsService } from './AppSettingsService';\r\nimport { Injectable } from '@angular/core';\r\n\r\ntype TreeDemoDataName = 'node_modules';\r\n\r\nexport interface ITreeItem {\r\n name: string;\r\n type: 'f' | 'd';\r\n children: ITreeItem[];\r\n}\r\n\r\n@Injectable()\r\nexport class OofficeDemoService {\r\n constructor(private appSettingsService: AppSettingsService) {}\r\n\r\n public getDemoTreeData(name: TreeDemoDataName) {\r\n return this.request<ITreeItem[]>('get', `Service?name=${name}`);\r\n }\r\n\r\n private async request<T>(method: 'get' | 'post', path: string, body?: any): Promise<T> {\r\n const response = await fetch(`${this.appSettingsService.get().apiRoot}api/${path}`, { method, body }),\r\n result = await response.json();\r\n\r\n return result as T;\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""}