{"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":""}