UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

240 lines 25.4 kB
/** * @fileoverview added by tsickle * Generated from: tree.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, EventEmitter, Input, Output, TemplateRef, ViewChildren, QueryList } from '@angular/core'; import { TreeFactory } from './tree-factory.class'; import { TreeMaskService } from './tree-mask.service'; import { I18nService } from '@duoduo-oba/ng-devui/i18n'; var TreeComponent = /** @class */ (function () { function TreeComponent(i18n) { var _this = this; this.i18n = i18n; this.treeNodeTitleKey = 'title'; this.checkboxDisabledKey = 'disabled'; this.nodeSelected = new EventEmitter(); this.nodeDblClicked = new EventEmitter(); this.nodeToggled = new EventEmitter(); this.i18nCommonText = this.i18n.getI18nText().common; this.i18nSubscription = this.i18n.langChange().subscribe((/** * @param {?} data * @return {?} */ function (data) { _this.i18nCommonText = data.common; })); } /** * @return {?} */ TreeComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.treeFactory = TreeFactory.fromTree({ treeItems: this.tree, treeNodeChildrenKey: this.treeNodeChildrenKey, treeNodeIdKey: this.treeNodeIdKey, treeNodeTitleKey: this.treeNodeTitleKey, checkboxDisabledKey: this.checkboxDisabledKey }); }; /** * @param {?} changes * @return {?} */ TreeComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes && changes.tree) { this.treeFactory = TreeFactory.fromTree({ treeItems: this.tree, treeNodeChildrenKey: this.treeNodeChildrenKey, treeNodeIdKey: this.treeNodeIdKey, treeNodeTitleKey: this.treeNodeTitleKey, checkboxDisabledKey: this.checkboxDisabledKey }); } }; /** * @return {?} */ TreeComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { this.elementAsMask = TreeMaskService.creatMaskElement(); }; /** * @param {?} e * @return {?} */ TreeComponent.prototype.addBackGround = /** * @param {?} e * @return {?} */ function (e) { e.stopPropagation(); TreeMaskService.addMask(e.target, this.elementAsMask, TreeMaskService.calcWidth(this.treeNodeContent, 0)); }; /** * @param {?} e * @return {?} */ TreeComponent.prototype.removeBackGround = /** * @param {?} e * @return {?} */ function (e) { e.stopPropagation(); TreeMaskService.removeMask(e.target, this.elementAsMask); }; /** * @param {?} event * @param {?} treeNode * @return {?} */ TreeComponent.prototype.selectNode = /** * @param {?} event * @param {?} treeNode * @return {?} */ function (event, treeNode) { this.nodeSelected.emit(treeNode); this.treeFactory.activeNodeById(treeNode.id); }; /** * @param {?} event * @param {?} treeNode * @return {?} */ TreeComponent.prototype.toggleNode = /** * @param {?} event * @param {?} treeNode * @return {?} */ function (event, treeNode) { this.treeFactory.toggleNodeById(treeNode.id); this.nodeToggled.emit(treeNode); }; /** * @param {?} treeItems * @param {?} parentId * @return {?} */ TreeComponent.prototype.appendTreeItems = /** * @param {?} treeItems * @param {?} parentId * @return {?} */ function (treeItems, parentId) { if (!this.treeFactory.nodes[parentId]) { throw new Error('parent node does not exist.'); } this.treeFactory.mapTreeItems({ treeItems: treeItems, parentId: parentId, treeNodeChildrenKey: this.treeNodeChildrenKey, treeNodeIdKey: this.treeNodeIdKey, treeNodeTitleKey: this.treeNodeTitleKey, checkboxDisabledKey: this.checkboxDisabledKey }); }; /** * @param {?} event * @param {?} node * @return {?} */ TreeComponent.prototype.nodeDblClick = /** * @param {?} event * @param {?} node * @return {?} */ function (event, node) { this.nodeDblClicked.emit(node); }; /** * @return {?} */ TreeComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.i18nSubscription) { this.i18nSubscription.unsubscribe(); } }; TreeComponent.decorators = [ { type: Component, args: [{ selector: 'd-tree', template: "<d-tree-nodes [treeList]=\"treeFactory.treeRoot\" [treeNodesRef]=\"treeNodesRef ? treeNodesRef : default\" [treeFactory]=\"treeFactory\">\r\n</d-tree-nodes>\r\n\r\n<ng-template #default let-treeNode=\"treeNode\" let-treeFactory=\"treeFactory\">\r\n <div class=\"devui-tree-node\" #treeNodeContent>\r\n <div\r\n class=\"devui-tree-node__content\"\r\n [class.devui-tree-node--parent]=\"(treeNode.data.children || []).length > 0\"\r\n (mouseenter)=\"addBackGround($event)\"\r\n (mouseleave)=\"removeBackGround($event)\"\r\n >\r\n <div class=\"devui-tree-node__content--value-wrapper\" [class.isMatch]=\"treeNode.data.isMatch\">\r\n <span\r\n (click)=\"toggleNode($event, treeNode)\"\r\n *ngIf=\"(treeNode.data.children || []).length > 0 || treeNode.data.isParent\"\r\n class=\"devui-tree-node__folder\"\r\n >\r\n <span *ngIf=\"iconParentClose && !treeNode.data.isOpen\" [innerHTML]=\"iconParentClose\"></span>\r\n <span *ngIf=\"iconParentOpen && treeNode.data.isOpen\" [innerHTML]=\"iconParentOpen\"></span>\r\n <span *ngIf=\"!iconParentClose && !treeNode.data.isOpen\">\r\n <svg\r\n class=\"svg-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <g id=\"\u56FE\u6807\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"fold\">\r\n <rect id=\"Rectangle-175\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\r\n <path\r\n d=\"M14,6 L14,5 L7.58578644,5 L5.58578644,3 L2,3 L2,6 L14,6 Z M14,7 L2,7 L2,13 L14,13 L14,7 Z M1,2 L6,2 L8,4 L15,4 L15,14 L1,14 L1,2 Z\"\r\n id=\"\u5F62\u72B6\"\r\n fill-rule=\"nonzero\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"!iconParentOpen && treeNode.data.isOpen\">\r\n <svg\r\n class=\"svg-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <g id=\"\u56FE\u6807\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"fold-copy-3\">\r\n <rect id=\"Rectangle-175\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\r\n <path\r\n d=\"M14,5 L14,4 L7.58578644,4 L5.58578644,2 L2,2 L2,5 L1,5 L1,1 L6,1 L8,3 L15,3 L15,5 L14,5 Z M1.28077641,7 L2.78077641,13 L13.2192236,13 L14.7192236,7 L1.28077641,7 Z M0,6 L16,6 L14,14 L2,14 L0,6 Z\"\r\n id=\"\u5F62\u72B6\"\r\n fill-rule=\"nonzero\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"devui-tree-node__leaf\" *ngIf=\"(treeNode.data.children || []).length === 0 && !treeNode.data.isParent\">\r\n <span *ngIf=\"!iconLeaf\">\r\n <svg\r\n class=\"svg-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <g id=\"\u56FE\u6807\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"\u6587\u4EF6\">\r\n <rect id=\"Rectangle-175\" x=\"0\" y=\"0\" width=\"16\" height=\"16\" />\r\n <path\r\n d=\"M13,6 L9,6 L9,2 L3,2 L3,14 L13,14 L13,6 Z M12.5857864,5 L10,2.41421356 L10,5 L12.5857864,5 Z M2,1 L10,1 L14,5 L14,15 L2,15 L2,1 Z\"\r\n id=\"\u5F62\u72B6\"\r\n fill-rule=\"nonzero\"\r\n />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"iconLeaf\" [innerHTML]=\"iconLeaf\"></span>\r\n </span>\r\n <span\r\n (click)=\"selectNode($event, treeNode)\"\r\n (dblclick)=\"nodeDblClick($event, treeNode)\"\r\n class=\"devui-tree-node__title\"\r\n [class.active]=\"treeNode.data.isActive\"\r\n title=\"{{ treeNode.data.title }}\"\r\n >{{ treeNode.data.title }}</span\r\n >\r\n <span dLoading [showLoading]=\"treeNode.data.loading\" [loadingTemplateRef]=\"customizedLoadingRef\"> </span>\r\n </div>\r\n </div>\r\n <div class=\"devui-tree-node__children\" *ngIf=\"treeNode.data.isOpen\">\r\n <d-tree-nodes [treeList]=\"treeNode.data.children || []\" [treeNodesRef]=\"default\" [treeFactory]=\"treeFactory\"> </d-tree-nodes>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #customizedLoadingRef>\r\n <span class=\"devui-loading-children\">{{ i18nCommonText?.loading }}</span>\r\n</ng-template>\r\n", styles: [":host{display:block}.devui-tree-node{color:#575d6c;line-height:1;white-space:nowrap;position:relative}.devui-tree-node .devui-tree-node__content{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;font-size:14px}.devui-tree-node .devui-tree-node__content--value-wrapper{display:-webkit-inline-box;display:inline-flex;-webkit-box-align:center;align-items:center;padding:.1em;margin:.3em 0}.devui-tree-node .devui-tree-node__content--value-wrapper.isMatch{color:#5e7ce0;border:1px solid #dfe1e6;border-radius:.2em}.devui-tree-node .devui-tree-node__children{padding-left:.8em}.devui-tree-node .devui-tree-node__children:first-child{border-left-color:transparent}.devui-tree-node .devui-tree-node__children .devui-tree-node{margin-left:1.2em;content:'';position:relative}.devui-tree-node .devui-tree-node__children .devui-tree-node:last-child{border-left-color:transparent}.devui-tree-node .devui-tree-node__title{margin-left:.4em;padding:.1em;display:inline-block;border:1px dashed transparent;border-radius:2px;cursor:pointer}.devui-tree-node .devui-tree-node__title.active{background-color:#f2f5fc;color:#5e7ce0;text-decoration:none;border-color:transparent}.devui-tree-node .devui-tree-node__edit{margin-left:.4em;padding:.1em}.devui-tree-node .devui-tree-node__edit>.devui-input-sm{height:26px}.devui-tree-node .devui-tree-node__edit>.devui-input-sm.error,.devui-tree-node .devui-tree-node__edit>.devui-input-sm.error:focus,.devui-tree-node .devui-tree-node__edit>.devui-input-sm.error:hover{border-color:#f66f6a}.devui-tree-node .devui-tree-node__leaf{cursor:default}.devui-tree-node .devui-tree-node__leaf .devui-tree-node__leaf--default{color:#f2a71f}.devui-tree-node .devui-tree-node__folder{display:inline-block;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.devui-tree-node .devui-tree-node__folder .devui-tree-node__folder--default{color:#f2b806}.devui-tree-node .devui-loading-children{display:inline-block;vertical-align:middle;margin-left:.5em;margin-top:.15em;color:#5e7ce0;font-style:italic;font-size:1em;-webkit-animation-name:devui-loading-children;animation-name:devui-loading-children;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes devui-loading-children{0%,12.5%{color:#627fe1}25%{color:#617fe1}37.5%{color:#617ee1}50%,62.5%{color:#607ee0}75%{color:#5f7de0}100%,87.5%{color:#5e7ce0}}@keyframes devui-loading-children{0%,12.5%{color:#627fe1}25%{color:#617fe1}37.5%{color:#617ee1}50%,62.5%{color:#607ee0}75%{color:#5f7de0}100%,87.5%{color:#5e7ce0}}.devui-tree-node svg.svg-icon>g>g>path{fill:#575d6c}::ng-deep .devui-tree-mask{background:#f2f5fc}"] }] } ]; /** @nocollapse */ TreeComponent.ctorParameters = function () { return [ { type: I18nService } ]; }; TreeComponent.propDecorators = { tree: [{ type: Input }], treeNodesRef: [{ type: Input }], treeNodeIdKey: [{ type: Input }], treeNodeChildrenKey: [{ type: Input }], iconParentOpen: [{ type: Input }], iconParentClose: [{ type: Input }], iconLeaf: [{ type: Input }], treeNodeTitleKey: [{ type: Input }], checkboxDisabledKey: [{ type: Input }], nodeSelected: [{ type: Output }], nodeDblClicked: [{ type: Output }], nodeToggled: [{ type: Output }], treeNodeContent: [{ type: ViewChildren, args: ['treeNodeContent',] }] }; return TreeComponent; }()); export { TreeComponent }; if (false) { /** @type {?} */ TreeComponent.prototype.treeFactory; /** @type {?} */ TreeComponent.prototype.tree; /** @type {?} */ TreeComponent.prototype.treeNodesRef; /** @type {?} */ TreeComponent.prototype.treeNodeIdKey; /** @type {?} */ TreeComponent.prototype.treeNodeChildrenKey; /** @type {?} */ TreeComponent.prototype.iconParentOpen; /** @type {?} */ TreeComponent.prototype.iconParentClose; /** @type {?} */ TreeComponent.prototype.iconLeaf; /** @type {?} */ TreeComponent.prototype.treeNodeTitleKey; /** @type {?} */ TreeComponent.prototype.checkboxDisabledKey; /** @type {?} */ TreeComponent.prototype.nodeSelected; /** @type {?} */ TreeComponent.prototype.nodeDblClicked; /** @type {?} */ TreeComponent.prototype.nodeToggled; /** @type {?} */ TreeComponent.prototype.treeNodeContent; /** @type {?} */ TreeComponent.prototype.elementAsMask; /** @type {?} */ TreeComponent.prototype.i18nCommonText; /** @type {?} */ TreeComponent.prototype.i18nSubscription; /** * @type {?} * @private */ TreeComponent.prototype.i18n; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS90cmVlLyIsInNvdXJjZXMiOlsidHJlZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFJWCxZQUFZLEVBQ1osU0FBUyxFQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxXQUFXLEVBRVosTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFM0Q7SUF1QkUsdUJBQW9CLElBQWlCO1FBQXJDLGlCQUtDO1FBTG1CLFNBQUksR0FBSixJQUFJLENBQWE7UUFUNUIscUJBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQzNCLHdCQUFtQixHQUFHLFVBQVUsQ0FBQztRQUNoQyxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU01RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFDLElBQUk7WUFDNUQsS0FBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELGdDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztZQUN0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QUFXOzs7SUFBWDtRQUNFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUVyQztJQUNILENBQUM7O2dCQWpHRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLDZ2S0FBb0M7O2lCQUVyQzs7OztnQkFOUSxXQUFXOzs7dUJBU2pCLEtBQUs7K0JBQ0wsS0FBSztnQ0FDTCxLQUFLO3NDQUNMLEtBQUs7aUNBQ0wsS0FBSztrQ0FDTCxLQUFLOzJCQUNMLEtBQUs7bUNBQ0wsS0FBSztzQ0FDTCxLQUFLOytCQUNMLE1BQU07aUNBQ04sTUFBTTs4QkFDTixNQUFNO2tDQUNOLFlBQVksU0FBQyxpQkFBaUI7O0lBK0VqQyxvQkFBQztDQUFBLEFBbEdELElBa0dDO1NBN0ZZLGFBQWE7OztJQUN4QixvQ0FBeUI7O0lBQ3pCLDZCQUFnQzs7SUFDaEMscUNBQXdDOztJQUN4QyxzQ0FBK0I7O0lBQy9CLDRDQUFxQzs7SUFDckMsdUNBQWdDOztJQUNoQyx3Q0FBaUM7O0lBQ2pDLGlDQUEwQjs7SUFDMUIseUNBQW9DOztJQUNwQyw0Q0FBMEM7O0lBQzFDLHFDQUErRDs7SUFDL0QsdUNBQWlFOztJQUNqRSxvQ0FBOEQ7O0lBQzlELHdDQUF3RTs7SUFDeEUsc0NBQW1COztJQUNuQix1Q0FBd0M7O0lBQ3hDLHlDQUErQjs7Ozs7SUFDbkIsNkJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBPbkNoYW5nZXMsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25EZXN0cm95XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSVRyZWVJdGVtLFxyXG4gIFRyZWVGYWN0b3J5LFxyXG4gIFRyZWVOb2RlXHJcbn0gZnJvbSAnLi90cmVlLWZhY3RvcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBUcmVlTWFza1NlcnZpY2UgfSBmcm9tICcuL3RyZWUtbWFzay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UsIEkxOG5JbnRlcmZhY2UgfSBmcm9tICduZy1kZXZ1aS9pMThuJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC10cmVlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHRyZWVGYWN0b3J5OiBUcmVlRmFjdG9yeTtcclxuICBASW5wdXQoKSB0cmVlOiBBcnJheTxJVHJlZUl0ZW0+O1xyXG4gIEBJbnB1dCgpIHRyZWVOb2Rlc1JlZjogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSB0cmVlTm9kZUlkS2V5OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdHJlZU5vZGVDaGlsZHJlbktleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGljb25QYXJlbnRPcGVuOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaWNvblBhcmVudENsb3NlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaWNvbkxlYWY6IHN0cmluZztcclxuICBASW5wdXQoKSB0cmVlTm9kZVRpdGxlS2V5ID0gJ3RpdGxlJztcclxuICBASW5wdXQoKSBjaGVja2JveERpc2FibGVkS2V5ID0gJ2Rpc2FibGVkJztcclxuICBAT3V0cHV0KCkgbm9kZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbm9kZURibENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBub2RlVG9nZ2xlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZHJlbigndHJlZU5vZGVDb250ZW50JykgdHJlZU5vZGVDb250ZW50OiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47IC8vIOiOt+WPlmNvbnRlbnTku6Xlj5blvpd0cmVl5a695bqmXHJcbiAgZWxlbWVudEFzTWFzazogYW55O1xyXG4gIGkxOG5Db21tb25UZXh0OiBJMThuSW50ZXJmYWNlWydjb21tb24nXTtcclxuICBpMThuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThuOiBJMThuU2VydmljZSkge1xyXG4gICAgdGhpcy5pMThuQ29tbW9uVGV4dCA9IHRoaXMuaTE4bi5nZXRJMThuVGV4dCgpLmNvbW1vbjtcclxuICAgIHRoaXMuaTE4blN1YnNjcmlwdGlvbiA9IHRoaXMuaTE4bi5sYW5nQ2hhbmdlKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSBkYXRhLmNvbW1vbjtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyZWVGYWN0b3J5ID0gVHJlZUZhY3RvcnkuZnJvbVRyZWUoe1xyXG4gICAgICB0cmVlSXRlbXM6IHRoaXMudHJlZSxcclxuICAgICAgdHJlZU5vZGVDaGlsZHJlbktleTogdGhpcy50cmVlTm9kZUNoaWxkcmVuS2V5LFxyXG4gICAgICB0cmVlTm9kZUlkS2V5OiB0aGlzLnRyZWVOb2RlSWRLZXksXHJcbiAgICAgIHRyZWVOb2RlVGl0bGVLZXk6IHRoaXMudHJlZU5vZGVUaXRsZUtleSxcclxuICAgICAgY2hlY2tib3hEaXNhYmxlZEtleTogdGhpcy5jaGVja2JveERpc2FibGVkS2V5XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMudHJlZSkge1xyXG4gICAgICB0aGlzLnRyZWVGYWN0b3J5ID0gVHJlZUZhY3RvcnkuZnJvbVRyZWUoe1xyXG4gICAgICAgIHRyZWVJdGVtczogdGhpcy50cmVlLFxyXG4gICAgICAgIHRyZWVOb2RlQ2hpbGRyZW5LZXk6IHRoaXMudHJlZU5vZGVDaGlsZHJlbktleSxcclxuICAgICAgICB0cmVlTm9kZUlkS2V5OiB0aGlzLnRyZWVOb2RlSWRLZXksXHJcbiAgICAgICAgdHJlZU5vZGVUaXRsZUtleTogdGhpcy50cmVlTm9kZVRpdGxlS2V5LFxyXG4gICAgICAgIGNoZWNrYm94RGlzYWJsZWRLZXk6IHRoaXMuY2hlY2tib3hEaXNhYmxlZEtleVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZWxlbWVudEFzTWFzayA9IFRyZWVNYXNrU2VydmljZS5jcmVhdE1hc2tFbGVtZW50KCk7XHJcbiAgfVxyXG5cclxuICBhZGRCYWNrR3JvdW5kKGUpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBUcmVlTWFza1NlcnZpY2UuYWRkTWFzayhlLnRhcmdldCwgdGhpcy5lbGVtZW50QXNNYXNrLCBUcmVlTWFza1NlcnZpY2UuY2FsY1dpZHRoKHRoaXMudHJlZU5vZGVDb250ZW50LCAwKSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVCYWNrR3JvdW5kKGUpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBUcmVlTWFza1NlcnZpY2UucmVtb3ZlTWFzayhlLnRhcmdldCwgdGhpcy5lbGVtZW50QXNNYXNrKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdE5vZGUoZXZlbnQsIHRyZWVOb2RlOiBUcmVlTm9kZSkge1xyXG4gICAgdGhpcy5ub2RlU2VsZWN0ZWQuZW1pdCh0cmVlTm9kZSk7XHJcbiAgICB0aGlzLnRyZWVGYWN0b3J5LmFjdGl2ZU5vZGVCeUlkKHRyZWVOb2RlLmlkKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU5vZGUoZXZlbnQsIHRyZWVOb2RlOiBUcmVlTm9kZSkge1xyXG4gICAgdGhpcy50cmVlRmFjdG9yeS50b2dnbGVOb2RlQnlJZCh0cmVlTm9kZS5pZCk7XHJcbiAgICB0aGlzLm5vZGVUb2dnbGVkLmVtaXQodHJlZU5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGVuZFRyZWVJdGVtcyh0cmVlSXRlbXM6IEFycmF5PElUcmVlSXRlbT4sIHBhcmVudElkKSB7XHJcbiAgICBpZiAoIXRoaXMudHJlZUZhY3Rvcnkubm9kZXNbcGFyZW50SWRdKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGFyZW50IG5vZGUgZG9lcyBub3QgZXhpc3QuJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyZWVGYWN0b3J5Lm1hcFRyZWVJdGVtcyh7XHJcbiAgICAgIHRyZWVJdGVtczogdHJlZUl0ZW1zLFxyXG4gICAgICBwYXJlbnRJZDogcGFyZW50SWQsXHJcbiAgICAgIHRyZWVOb2RlQ2hpbGRyZW5LZXk6IHRoaXMudHJlZU5vZGVDaGlsZHJlbktleSxcclxuICAgICAgdHJlZU5vZGVJZEtleTogdGhpcy50cmVlTm9kZUlkS2V5LFxyXG4gICAgICB0cmVlTm9kZVRpdGxlS2V5OiB0aGlzLnRyZWVOb2RlVGl0bGVLZXksXHJcbiAgICAgIGNoZWNrYm94RGlzYWJsZWRLZXk6IHRoaXMuY2hlY2tib3hEaXNhYmxlZEtleVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBub2RlRGJsQ2xpY2soZXZlbnQsIG5vZGUpIHtcclxuICAgIHRoaXMubm9kZURibENsaWNrZWQuZW1pdChub2RlKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5pMThuU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuaTE4blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19