ngx-vflow 1.13.1 → 1.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/vflow/components/node/node.component.mjs +3 -3
- package/esm2022/lib/vflow/directives/node-resize-controller.directive.mjs +6 -7
- package/esm2022/lib/vflow/models/node.model.mjs +8 -3
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +5 -1
- package/esm2022/testing/component-mocks/resizable-mock.component.mjs +3 -1
- package/fesm2022/ngx-vflow-testing.mjs +2 -0
- package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
- package/fesm2022/ngx-vflow.mjs +17 -9
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/models/node.model.d.ts +5 -0
- package/lib/vflow/public-components/resizable/resizable.component.d.ts +3 -2
- package/package.json +1 -1
- package/testing/component-mocks/resizable-mock.component.d.ts +3 -2
|
@@ -85,7 +85,7 @@ export class NodeComponent {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NodeComponent, isStandalone: true, selector: "g[node]", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: true, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null }, nodeSvgTemplate: { classPropertyName: "nodeSvgTemplate", publicName: "nodeSvgTemplate", isSignal: true, isRequired: false, transformFunction: null }, groupNodeTemplate: { classPropertyName: "groupNodeTemplate", publicName: "groupNodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "vflow-node" }, providers: [HandleService, NodeAccessorService], ngImport: i0, template: "<!-- Default node -->\n@if (model().rawNode.type === 'default') {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode(); selectNode()\">\n <default-node\n nodeHandlesController\n [selected]=\"model().selected()\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\"\n [style.max-width]=\"model().styleWidth()\"\n [style.max-height]=\"model().styleHeight()\">\n <div [outerHTML]=\"model().text()\"></div>\n\n <handle type=\"source\" position=\"right\" />\n <handle type=\"target\" position=\"left\" />\n </default-node>\n </svg:foreignObject>\n}\n\n<!-- HTML Template node -->\n@if (model().rawNode.type === 'html-template' && nodeTemplate()) {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode()\">\n <div
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NodeComponent, isStandalone: true, selector: "g[node]", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: true, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null }, nodeSvgTemplate: { classPropertyName: "nodeSvgTemplate", publicName: "nodeSvgTemplate", isSignal: true, isRequired: false, transformFunction: null }, groupNodeTemplate: { classPropertyName: "groupNodeTemplate", publicName: "groupNodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "vflow-node" }, providers: [HandleService, NodeAccessorService], ngImport: i0, template: "<!-- Default node -->\n@if (model().rawNode.type === 'default') {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode(); selectNode()\">\n <default-node\n nodeHandlesController\n [selected]=\"model().selected()\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\"\n [style.max-width]=\"model().styleWidth()\"\n [style.max-height]=\"model().styleHeight()\">\n <div [outerHTML]=\"model().text()\"></div>\n\n <handle type=\"source\" position=\"right\" />\n <handle type=\"target\" position=\"left\" />\n </default-node>\n </svg:foreignObject>\n}\n\n<!-- HTML Template node -->\n@if (model().rawNode.type === 'html-template' && nodeTemplate()) {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode()\">\n <div\n nodeHandlesController\n nodeResizeController\n class=\"wrapper\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\">\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate() ?? null\"\n [ngTemplateOutletContext]=\"model().context\"\n [ngTemplateOutletInjector]=\"injector\" />\n </div>\n </svg:foreignObject>\n}\n\n<!-- SVG Template node -->\n@if (model().rawNode.type === 'svg-template' && nodeSvgTemplate()) {\n <svg:g class=\"selectable\" nodeHandlesController (click)=\"pullNode()\">\n <ng-container\n [ngTemplateOutlet]=\"nodeSvgTemplate() ?? null\"\n [ngTemplateOutletContext]=\"model().context\"\n [ngTemplateOutletInjector]=\"injector\" />\n </svg:g>\n}\n\n<!-- Component node -->\n@if (model().isComponentType) {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode()\">\n <div\n nodeHandlesController\n nodeResizeController\n class=\"wrapper\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\">\n <ng-container\n [ngComponentOutlet]=\"$any(model().rawNode.type)\"\n [ngComponentOutletInputs]=\"model().componentTypeInputs\"\n [ngComponentOutletInjector]=\"injector\" />\n </div>\n </svg:foreignObject>\n}\n\n<!-- Default group node -->\n@if (model().rawNode.type === 'default-group') {\n <svg:rect\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [resizable]=\"model().resizable()\"\n [gap]=\"3\"\n [resizerColor]=\"model().color()\"\n [class.default-group-node_selected]=\"model().selected()\"\n [attr.width]=\"model().size().width\"\n [attr.height]=\"model().size().height\"\n [style.stroke]=\"model().color()\"\n [style.fill]=\"model().color()\"\n (click)=\"pullNode(); selectNode()\" />\n}\n\n<!-- Template group node -->\n@if (model().rawNode.type === 'template-group' && groupNodeTemplate()) {\n <svg:g class=\"selectable\" nodeHandlesController (click)=\"pullNode()\">\n <ng-container\n [ngTemplateOutlet]=\"groupNodeTemplate() ?? null\"\n [ngTemplateOutletContext]=\"model().context\"\n [ngTemplateOutletInjector]=\"injector\" />\n </svg:g>\n}\n\n<!-- Resizer -->\n@if (model().resizerTemplate(); as template) {\n @if (model().resizable()) {\n <ng-template [ngTemplateOutlet]=\"template\" />\n }\n}\n\n<!-- Handles -->\n@for (handle of model().handles(); track handle) {\n @if (handle.template === undefined) {\n <svg:circle\n class=\"default-handle\"\n r=\"5\"\n [attr.cx]=\"handle.hostOffset().x\"\n [attr.cy]=\"handle.hostOffset().y\"\n [attr.stroke-width]=\"handle.strokeWidth\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection()\" />\n }\n\n @if (handle.template === null) {\n <svg:g\n [handleSizeController]=\"handle\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection()\" />\n }\n\n @if (handle.template) {\n <svg:g\n [handleSizeController]=\"handle\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection()\">\n <ng-container *ngTemplateOutlet=\"handle.template; context: handle.templateContext\" />\n </svg:g>\n }\n\n @if (showMagnet()) {\n <svg:circle\n class=\"magnet\"\n [attr.r]=\"model().magnetRadius\"\n [attr.cx]=\"handle.hostOffset().x\"\n [attr.cy]=\"handle.hostOffset().y\"\n (pointerEnd)=\"endConnection(); resetValidateConnection(handle)\"\n (pointerOver)=\"validateConnection(handle)\"\n (pointerOut)=\"resetValidateConnection(handle)\" />\n }\n}\n\n<!-- Toolbar -->\n@for (toolbar of toolbars(); track toolbar) {\n <svg:foreignObject\n [attr.width]=\"toolbar.size().width\"\n [attr.height]=\"toolbar.size().height\"\n [attr.transform]=\"toolbar.transform()\">\n <ng-container [ngTemplateOutlet]=\"toolbar.template()\" />\n </svg:foreignObject>\n}\n", styles: [".magnet{opacity:0}.wrapper{display:table-cell}.default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}.default-handle{stroke:#fff;fill:#1b262c}\n"], dependencies: [{ kind: "directive", type: PointerDirective, selector: "[pointerStart], [pointerEnd], [pointerOver], [pointerOut]", outputs: ["pointerOver", "pointerOut", "pointerStart", "pointerEnd"] }, { kind: "component", type: DefaultNodeComponent, selector: "default-node", inputs: ["selected"] }, { kind: "component", type: HandleComponent, selector: "handle", inputs: ["position", "type", "id", "template", "offsetX", "offsetY"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: ResizableComponent, selector: "[resizable]", inputs: ["resizable", "resizerColor", "gap"] }, { kind: "directive", type: HandleSizeControllerDirective, selector: "[handleSizeController]", inputs: ["handleSizeController"] }, { kind: "directive", type: NodeHandlesControllerDirective, selector: "[nodeHandlesController]" }, { kind: "directive", type: NodeResizeControllerDirective, selector: "[nodeResizeController]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
89
89
|
}
|
|
90
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeComponent, decorators: [{
|
|
91
91
|
type: Component,
|
|
@@ -101,6 +101,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
101
101
|
HandleSizeControllerDirective,
|
|
102
102
|
NodeHandlesControllerDirective,
|
|
103
103
|
NodeResizeControllerDirective,
|
|
104
|
-
], template: "<!-- Default node -->\n@if (model().rawNode.type === 'default') {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode(); selectNode()\">\n <default-node\n nodeHandlesController\n [selected]=\"model().selected()\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\"\n [style.max-width]=\"model().styleWidth()\"\n [style.max-height]=\"model().styleHeight()\">\n <div [outerHTML]=\"model().text()\"></div>\n\n <handle type=\"source\" position=\"right\" />\n <handle type=\"target\" position=\"left\" />\n </default-node>\n </svg:foreignObject>\n}\n\n<!-- HTML Template node -->\n@if (model().rawNode.type === 'html-template' && nodeTemplate()) {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode()\">\n <div
|
|
104
|
+
], template: "<!-- Default node -->\n@if (model().rawNode.type === 'default') {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode(); selectNode()\">\n <default-node\n nodeHandlesController\n [selected]=\"model().selected()\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\"\n [style.max-width]=\"model().styleWidth()\"\n [style.max-height]=\"model().styleHeight()\">\n <div [outerHTML]=\"model().text()\"></div>\n\n <handle type=\"source\" position=\"right\" />\n <handle type=\"target\" position=\"left\" />\n </default-node>\n </svg:foreignObject>\n}\n\n<!-- HTML Template node -->\n@if (model().rawNode.type === 'html-template' && nodeTemplate()) {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode()\">\n <div\n nodeHandlesController\n nodeResizeController\n class=\"wrapper\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\">\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate() ?? null\"\n [ngTemplateOutletContext]=\"model().context\"\n [ngTemplateOutletInjector]=\"injector\" />\n </div>\n </svg:foreignObject>\n}\n\n<!-- SVG Template node -->\n@if (model().rawNode.type === 'svg-template' && nodeSvgTemplate()) {\n <svg:g class=\"selectable\" nodeHandlesController (click)=\"pullNode()\">\n <ng-container\n [ngTemplateOutlet]=\"nodeSvgTemplate() ?? null\"\n [ngTemplateOutletContext]=\"model().context\"\n [ngTemplateOutletInjector]=\"injector\" />\n </svg:g>\n}\n\n<!-- Component node -->\n@if (model().isComponentType) {\n <svg:foreignObject\n class=\"selectable\"\n [attr.width]=\"model().foWidth()\"\n [attr.height]=\"model().foHeight()\"\n (click)=\"pullNode()\">\n <div\n nodeHandlesController\n nodeResizeController\n class=\"wrapper\"\n [style.width]=\"model().styleWidth()\"\n [style.height]=\"model().styleHeight()\">\n <ng-container\n [ngComponentOutlet]=\"$any(model().rawNode.type)\"\n [ngComponentOutletInputs]=\"model().componentTypeInputs\"\n [ngComponentOutletInjector]=\"injector\" />\n </div>\n </svg:foreignObject>\n}\n\n<!-- Default group node -->\n@if (model().rawNode.type === 'default-group') {\n <svg:rect\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [resizable]=\"model().resizable()\"\n [gap]=\"3\"\n [resizerColor]=\"model().color()\"\n [class.default-group-node_selected]=\"model().selected()\"\n [attr.width]=\"model().size().width\"\n [attr.height]=\"model().size().height\"\n [style.stroke]=\"model().color()\"\n [style.fill]=\"model().color()\"\n (click)=\"pullNode(); selectNode()\" />\n}\n\n<!-- Template group node -->\n@if (model().rawNode.type === 'template-group' && groupNodeTemplate()) {\n <svg:g class=\"selectable\" nodeHandlesController (click)=\"pullNode()\">\n <ng-container\n [ngTemplateOutlet]=\"groupNodeTemplate() ?? null\"\n [ngTemplateOutletContext]=\"model().context\"\n [ngTemplateOutletInjector]=\"injector\" />\n </svg:g>\n}\n\n<!-- Resizer -->\n@if (model().resizerTemplate(); as template) {\n @if (model().resizable()) {\n <ng-template [ngTemplateOutlet]=\"template\" />\n }\n}\n\n<!-- Handles -->\n@for (handle of model().handles(); track handle) {\n @if (handle.template === undefined) {\n <svg:circle\n class=\"default-handle\"\n r=\"5\"\n [attr.cx]=\"handle.hostOffset().x\"\n [attr.cy]=\"handle.hostOffset().y\"\n [attr.stroke-width]=\"handle.strokeWidth\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection()\" />\n }\n\n @if (handle.template === null) {\n <svg:g\n [handleSizeController]=\"handle\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection()\" />\n }\n\n @if (handle.template) {\n <svg:g\n [handleSizeController]=\"handle\"\n (pointerStart)=\"startConnection($event, handle)\"\n (pointerEnd)=\"endConnection()\">\n <ng-container *ngTemplateOutlet=\"handle.template; context: handle.templateContext\" />\n </svg:g>\n }\n\n @if (showMagnet()) {\n <svg:circle\n class=\"magnet\"\n [attr.r]=\"model().magnetRadius\"\n [attr.cx]=\"handle.hostOffset().x\"\n [attr.cy]=\"handle.hostOffset().y\"\n (pointerEnd)=\"endConnection(); resetValidateConnection(handle)\"\n (pointerOver)=\"validateConnection(handle)\"\n (pointerOut)=\"resetValidateConnection(handle)\" />\n }\n}\n\n<!-- Toolbar -->\n@for (toolbar of toolbars(); track toolbar) {\n <svg:foreignObject\n [attr.width]=\"toolbar.size().width\"\n [attr.height]=\"toolbar.size().height\"\n [attr.transform]=\"toolbar.transform()\">\n <ng-container [ngTemplateOutlet]=\"toolbar.template()\" />\n </svg:foreignObject>\n}\n", styles: [".magnet{opacity:0}.wrapper{display:table-cell}.default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}.default-handle{stroke:#fff;fill:#1b262c}\n"] }]
|
|
105
105
|
}] });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvY29tcG9uZW50cy9ub2RlL25vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvbm9kZS9ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixRQUFRLEVBSVIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFD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LElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQzsrR0F0RlUsYUFBYTttR0FBYixhQUFhLGdxQkFoQmIsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsMEJDNUNqRCxtMUpBb0pBLHlQRG5HSSxnQkFBZ0IsNEtBQ2hCLG9CQUFvQiwrRUFDcEIsZUFBZSx5SEFDZixnQkFBZ0Isb0pBQ2hCLGlCQUFpQixvUEFDakIsa0JBQWtCLHNHQUNsQiw2QkFBNkIscUdBQzdCLDhCQUE4QixvRUFDOUIsNkJBQTZCOzs0RkFHcEIsYUFBYTtrQkF0QnpCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFNBQVMsbUJBR0YsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsWUFBWTtxQkFDcEIsV0FDUTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQiw2QkFBNkI7d0JBQzdCLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3FCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJhZ2dhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RyYWdnYWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBIYW5kbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IE5vZGVSZW5kZXJpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1yZW5kZXJpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IE92ZXJsYXlzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlU2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2hhbmRsZS1zaXplLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlZmF1bHROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGVmYXVsdC1ub2RlL2RlZmF1bHQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcG9pbnRlci5kaXJlY3RpdmUnO1xuXG4vLyBUT0RPOiBmaXggbG9hZGluZyBvZiB0aGVzZSBieSBAZGVmZXIgKHNob3VsZCB3b3JrIGluIEFuZ3VsYXIgMTgrKVxuLy8gcHVibGljIGNvbXBvbmVudHMgdGhhdCB1c2VzIGluIGRlZmF1bHQgbm9kZSAobG9hZGVkIGJ5IGRlZmVyKVxuaW1wb3J0IHsgUmVzaXphYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcHVibGljLWNvbXBvbmVudHMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFuZGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcHVibGljLWNvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUhhbmRsZXNDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ub2RlLWhhbmRsZXMtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTm9kZVJlc2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25vZGUtcmVzaXplLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgSGFuZGxlU3RhdGUgPSAndmFsaWQnIHwgJ2ludmFsaWQnIHwgJ2lkbGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdnW25vZGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtIYW5kbGVTZXJ2aWNlLCBOb2RlQWNjZXNzb3JTZXJ2aWNlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAndmZsb3ctbm9kZScsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBQb2ludGVyRGlyZWN0aXZlLFxuICAgIERlZmF1bHROb2RlQ29tcG9uZW50LFxuICAgIEhhbmRsZUNvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIFJlc2l6YWJsZUNvbXBvbmVudCxcbiAgICBIYW5kbGVTaXplQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgICBOb2RlSGFuZGxlc0NvbnRyb2xsZXJEaXJlY3RpdmUsXG4gICAgTm9kZVJlc2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgaGFuZGxlU2VydmljZSA9IGluamVjdChIYW5kbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkcmFnZ2FibGVTZXJ2aWNlID0gaW5qZWN0KERyYWdnYWJsZVNlcnZpY2UpO1xuICBwcml2YXRlIGZsb3dTdGF0dXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dTdGF0dXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBub2RlUmVuZGVyaW5nU2VydmljZSA9IGluamVjdChOb2RlUmVuZGVyaW5nU2VydmljZSk7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFNlbGVjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGhvc3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgbm9kZUFjY2Vzc29yID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpO1xuICBwcml2YXRlIG92ZXJsYXlzU2VydmljZSA9IGluamVjdChPdmVybGF5c1NlcnZpY2UpO1xuXG4gIC8vIFRPRE8gcmVtb3ZlIGRlcGVuZGVuY3kgZnJvbSB0aGlzIGRpcmVjdGl2ZVxuICBwcml2YXRlIGNvbm5lY3Rpb25Db250cm9sbGVyID0gaW5qZWN0KENvbm5lY3Rpb25Db250cm9sbGVyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHB1YmxpYyBtb2RlbCA9IGlucHV0LnJlcXVpcmVkPE5vZGVNb2RlbD4oKTtcblxuICBwdWJsaWMgbm9kZVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICBwdWJsaWMgbm9kZVN2Z1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICBwdWJsaWMgZ3JvdXBOb2RlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXG4gIHByb3RlY3RlZCBzaG93TWFnbmV0ID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuZmxvd1N0YXR1c1NlcnZpY2Uuc3RhdHVzKCkuc3RhdGUgPT09ICdjb25uZWN0aW9uLXN0YXJ0JyB8fFxuICAgICAgdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKS5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicgfHxcbiAgICAgIHRoaXMuZmxvd1N0YXR1c1NlcnZpY2Uuc3RhdHVzKCkuc3RhdGUgPT09ICdyZWNvbm5lY3Rpb24tc3RhcnQnIHx8XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnN0YXR1cygpLnN0YXRlID09PSAncmVjb25uZWN0aW9uLXZhbGlkYXRpb24nLFxuICApO1xuXG4gIHByb3RlY3RlZCB0b29sYmFycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3ZlcmxheXNTZXJ2aWNlLm5vZGVUb29sYmFyc01hcCgpLmdldCh0aGlzLm1vZGVsKCkpKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tb2RlbCgpLmlzVmlzaWJsZS5zZXQodHJ1ZSk7XG5cbiAgICB0aGlzLm5vZGVBY2Nlc3Nvci5tb2RlbC5zZXQodGhpcy5tb2RlbCgpKTtcbiAgICB0aGlzLmhhbmRsZVNlcnZpY2Uubm9kZS5zZXQodGhpcy5tb2RlbCgpKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWwoKS5kcmFnZ2FibGUoKSkge1xuICAgICAgICAgIHRoaXMuZHJhZ2dhYmxlU2VydmljZS5lbmFibGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMubW9kZWwoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kcmFnZ2FibGVTZXJ2aWNlLmRpc2FibGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCgpLmlzVmlzaWJsZS5zZXQoZmFsc2UpO1xuXG4gICAgdGhpcy5kcmFnZ2FibGVTZXJ2aWNlLmRlc3Ryb3kodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXJ0Q29ubmVjdGlvbihldmVudDogRXZlbnQsIGhhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICAvLyBpZ25vcmUgZHJhZyBieSBzdG9wcGluZyBwcm9wYWdhdGlvblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uQ29udHJvbGxlcj8uc3RhcnRDb25uZWN0aW9uKGhhbmRsZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVDb25uZWN0aW9uKGhhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25Db250cm9sbGVyPy52YWxpZGF0ZUNvbm5lY3Rpb24oaGFuZGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldFZhbGlkYXRlQ29ubmVjdGlvbih0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uQ29udHJvbGxlcj8ucmVzZXRWYWxpZGF0ZUNvbm5lY3Rpb24odGFyZ2V0SGFuZGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmRDb25uZWN0aW9uKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbkNvbnRyb2xsZXI/LmVuZENvbm5lY3Rpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdWxsTm9kZSgpIHtcbiAgICBpZiAodGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVsZXZhdGVOb2Rlc09uU2VsZWN0KCkpIHtcbiAgICAgIHRoaXMubm9kZVJlbmRlcmluZ1NlcnZpY2UucHVsbE5vZGUodGhpcy5tb2RlbCgpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0Tm9kZSgpIHtcbiAgICBpZiAodGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KHRoaXMubW9kZWwoKSk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIERlZmF1bHQgbm9kZSAtLT5cbkBpZiAobW9kZWwoKS5yYXdOb2RlLnR5cGUgPT09ICdkZWZhdWx0Jykge1xuICA8c3ZnOmZvcmVpZ25PYmplY3RcbiAgICBjbGFzcz1cInNlbGVjdGFibGVcIlxuICAgIFthdHRyLndpZHRoXT1cIm1vZGVsKCkuZm9XaWR0aCgpXCJcbiAgICBbYXR0ci5oZWlnaHRdPVwibW9kZWwoKS5mb0hlaWdodCgpXCJcbiAgICAoY2xpY2spPVwicHVsbE5vZGUoKTsgc2VsZWN0Tm9kZSgpXCI+XG4gICAgPGRlZmF1bHQtbm9kZVxuICAgICAgbm9kZUhhbmRsZXNDb250cm9sbGVyXG4gICAgICBbc2VsZWN0ZWRdPVwibW9kZWwoKS5zZWxlY3RlZCgpXCJcbiAgICAgIFtzdHlsZS53aWR0aF09XCJtb2RlbCgpLnN0eWxlV2lkdGgoKVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cIm1vZGVsKCkuc3R5bGVIZWlnaHQoKVwiXG4gICAgICBbc3R5bGUubWF4LXdpZHRoXT1cIm1vZGVsKCkuc3R5bGVXaWR0aCgpXCJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1vZGVsKCkuc3R5bGVIZWlnaHQoKVwiPlxuICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cIm1vZGVsKCkudGV4dCgpXCI+PC9kaXY+XG5cbiAgICAgIDxoYW5kbGUgdHlwZT1cInNvdXJjZVwiIHBvc2l0aW9uPVwicmlnaHRcIiAvPlxuICAgICAgPGhhbmRsZSB0eXBlPVwidGFyZ2V0XCIgcG9zaXRpb249XCJsZWZ0XCIgLz5cbiAgICA8L2RlZmF1bHQtbm9kZT5cbiAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbn1cblxuPCEtLSBIVE1MIFRlbXBsYXRlIG5vZGUgLS0+XG5AaWYgKG1vZGVsKCkucmF3Tm9kZS50eXBlID09PSAnaHRtbC10ZW1wbGF0ZScgJiYgbm9kZVRlbXBsYXRlKCkpIHtcbiAgPHN2Zzpmb3JlaWduT2JqZWN0XG4gICAgY2xhc3M9XCJzZWxlY3RhYmxlXCJcbiAgICBbYXR0ci53aWR0aF09XCJtb2RlbCgpLmZvV2lkdGgoKVwiXG4gICAgW2F0dHIuaGVpZ2h0XT1cIm1vZGVsKCkuZm9IZWlnaHQoKVwiXG4gICAgKGNsaWNrKT1cInB1bGxOb2RlKClcIj5cbiAgICA8ZGl2IG5vZGVIYW5kbGVzQ29udHJvbGxlciBub2RlUmVzaXplQ29udHJvbGxlciBjbGFzcz1cIndyYXBwZXJcIiBbc3R5bGUud2lkdGhdPVwibW9kZWwoKS5zdHlsZVdpZHRoKClcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlKCkgPz8gbnVsbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJtb2RlbCgpLmNvbnRleHRcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbn1cblxuPCEtLSBTVkcgVGVtcGxhdGUgbm9kZSAtLT5cbkBpZiAobW9kZWwoKS5yYXdOb2RlLnR5cGUgPT09ICdzdmctdGVtcGxhdGUnICYmIG5vZGVTdmdUZW1wbGF0ZSgpKSB7XG4gIDxzdmc6ZyBjbGFzcz1cInNlbGVjdGFibGVcIiBub2RlSGFuZGxlc0NvbnRyb2xsZXIgKGNsaWNrKT1cInB1bGxOb2RlKClcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlU3ZnVGVtcGxhdGUoKSA/PyBudWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJtb2RlbCgpLmNvbnRleHRcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJpbmplY3RvclwiIC8+XG4gIDwvc3ZnOmc+XG59XG5cbjwhLS0gQ29tcG9uZW50IG5vZGUgLS0+XG5AaWYgKG1vZGVsKCkuaXNDb21wb25lbnRUeXBlKSB7XG4gIDxzdmc6Zm9yZWlnbk9iamVjdFxuICAgIGNsYXNzPVwic2VsZWN0YWJsZVwiXG4gICAgW2F0dHIud2lkdGhdPVwibW9kZWwoKS5mb1dpZHRoKClcIlxuICAgIFthdHRyLmhlaWdodF09XCJtb2RlbCgpLmZvSGVpZ2h0KClcIlxuICAgIChjbGljayk9XCJwdWxsTm9kZSgpXCI+XG4gICAgPGRpdiBub2RlSGFuZGxlc0NvbnRyb2xsZXIgbm9kZVJlc2l6ZUNvbnRyb2xsZXIgY2xhc3M9XCJ3cmFwcGVyXCIgW3N0eWxlLndpZHRoXT1cIm1vZGVsKCkuc3R5bGVXaWR0aCgpXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ0NvbXBvbmVudE91dGxldF09XCIkYW55KG1vZGVsKCkucmF3Tm9kZS50eXBlKVwiXG4gICAgICAgIFtuZ0NvbXBvbmVudE91dGxldElucHV0c109XCJtb2RlbCgpLmNvbXBvbmVudFR5cGVJbnB1dHNcIlxuICAgICAgICBbbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcl09XCJpbmplY3RvclwiIC8+XG4gICAgPC9kaXY+XG4gIDwvc3ZnOmZvcmVpZ25PYmplY3Q+XG59XG5cbjwhLS0gRGVmYXVsdCBncm91cCBub2RlIC0tPlxuQGlmIChtb2RlbCgpLnJhd05vZGUudHlwZSA9PT0gJ2RlZmF1bHQtZ3JvdXAnKSB7XG4gIDxzdmc6cmVjdFxuICAgIGNsYXNzPVwiZGVmYXVsdC1ncm91cC1ub2RlXCJcbiAgICByeD1cIjVcIlxuICAgIHJ5PVwiNVwiXG4gICAgW3Jlc2l6YWJsZV09XCJtb2RlbCgpLnJlc2l6YWJsZSgpXCJcbiAgICBbZ2FwXT1cIjNcIlxuICAgIFtyZXNpemVyQ29sb3JdPVwibW9kZWwoKS5jb2xvcigpXCJcbiAgICBbY2xhc3MuZGVmYXVsdC1ncm91cC1ub2RlX3NlbGVjdGVkXT1cIm1vZGVsKCkuc2VsZWN0ZWQoKVwiXG4gICAgW2F0dHIud2lkdGhdPVwibW9kZWwoKS5zaXplKCkud2lkdGhcIlxuICAgIFthdHRyLmhlaWdodF09XCJtb2RlbCgpLnNpemUoKS5oZWlnaHRcIlxuICAgIFtzdHlsZS5zdHJva2VdPVwibW9kZWwoKS5jb2xvcigpXCJcbiAgICBbc3R5bGUuZmlsbF09XCJtb2RlbCgpLmNvbG9yKClcIlxuICAgIChjbGljayk9XCJwdWxsTm9kZSgpOyBzZWxlY3ROb2RlKClcIiAvPlxufVxuXG48IS0tIFRlbXBsYXRlIGdyb3VwIG5vZGUgIC0tPlxuQGlmIChtb2RlbCgpLnJhd05vZGUudHlwZSA9PT0gJ3RlbXBsYXRlLWdyb3VwJyAmJiBncm91cE5vZGVUZW1wbGF0ZSgpKSB7XG4gIDxzdmc6ZyBjbGFzcz1cInNlbGVjdGFibGVcIiBub2RlSGFuZGxlc0NvbnRyb2xsZXIgKGNsaWNrKT1cInB1bGxOb2RlKClcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cE5vZGVUZW1wbGF0ZSgpID8/IG51bGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIm1vZGVsKCkuY29udGV4dFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldEluamVjdG9yXT1cImluamVjdG9yXCIgLz5cbiAgPC9zdmc6Zz5cbn1cblxuPCEtLSBSZXNpemVyIC0tPlxuQGlmIChtb2RlbCgpLnJlc2l6ZXJUZW1wbGF0ZSgpOyBhcyB0ZW1wbGF0ZSkge1xuICBAaWYgKG1vZGVsKCkucmVzaXphYmxlKCkpIHtcbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVtcGxhdGVcIiAvPlxuICB9XG59XG5cbjwhLS0gSGFuZGxlcyAtLT5cbkBmb3IgKGhhbmRsZSBvZiBtb2RlbCgpLmhhbmRsZXMoKTsgdHJhY2sgaGFuZGxlKSB7XG4gIEBpZiAoaGFuZGxlLnRlbXBsYXRlID09PSB1bmRlZmluZWQpIHtcbiAgICA8c3ZnOmNpcmNsZVxuICAgICAgY2xhc3M9XCJkZWZhdWx0LWhhbmRsZVwiXG4gICAgICByPVwiNVwiXG4gICAgICBbYXR0ci5jeF09XCJoYW5kbGUuaG9zdE9mZnNldCgpLnhcIlxuICAgICAgW2F0dHIuY3ldPVwiaGFuZGxlLmhvc3RPZmZzZXQoKS55XCJcbiAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJoYW5kbGUuc3Ryb2tlV2lkdGhcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydENvbm5lY3Rpb24oJGV2ZW50LCBoYW5kbGUpXCJcbiAgICAgIChwb2ludGVyRW5kKT1cImVuZENvbm5lY3Rpb24oKVwiIC8+XG4gIH1cblxuICBAaWYgKGhhbmRsZS50ZW1wbGF0ZSA9PT0gbnVsbCkge1xuICAgIDxzdmc6Z1xuICAgICAgW2hhbmRsZVNpemVDb250cm9sbGVyXT1cImhhbmRsZVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0Q29ubmVjdGlvbigkZXZlbnQsIGhhbmRsZSlcIlxuICAgICAgKHBvaW50ZXJFbmQpPVwiZW5kQ29ubmVjdGlvbigpXCIgLz5cbiAgfVxuXG4gIEBpZiAoaGFuZGxlLnRlbXBsYXRlKSB7XG4gICAgPHN2ZzpnXG4gICAgICBbaGFuZGxlU2l6ZUNvbnRyb2xsZXJdPVwiaGFuZGxlXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRDb25uZWN0aW9uKCRldmVudCwgaGFuZGxlKVwiXG4gICAgICAocG9pbnRlckVuZCk9XCJlbmRDb25uZWN0aW9uKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoYW5kbGUudGVtcGxhdGU7IGNvbnRleHQ6IGhhbmRsZS50ZW1wbGF0ZUNvbnRleHRcIiAvPlxuICAgIDwvc3ZnOmc+XG4gIH1cblxuICBAaWYgKHNob3dNYWduZXQoKSkge1xuICAgIDxzdmc6Y2lyY2xlXG4gICAgICBjbGFzcz1cIm1hZ25ldFwiXG4gICAgICBbYXR0ci5yXT1cIm1vZGVsKCkubWFnbmV0UmFkaXVzXCJcbiAgICAgIFthdHRyLmN4XT1cImhhbmRsZS5ob3N0T2Zmc2V0KCkueFwiXG4gICAgICBbYXR0ci5jeV09XCJoYW5kbGUuaG9zdE9mZnNldCgpLnlcIlxuICAgICAgKHBvaW50ZXJFbmQpPVwiZW5kQ29ubmVjdGlvbigpOyByZXNldFZhbGlkYXRlQ29ubmVjdGlvbihoYW5kbGUpXCJcbiAgICAgIChwb2ludGVyT3Zlcik9XCJ2YWxpZGF0ZUNvbm5lY3Rpb24oaGFuZGxlKVwiXG4gICAgICAocG9pbnRlck91dCk9XCJyZXNldFZhbGlkYXRlQ29ubmVjdGlvbihoYW5kbGUpXCIgLz5cbiAgfVxufVxuXG48IS0tIFRvb2xiYXIgLS0+XG5AZm9yICh0b29sYmFyIG9mIHRvb2xiYXJzKCk7IHRyYWNrIHRvb2xiYXIpIHtcbiAgPHN2Zzpmb3JlaWduT2JqZWN0XG4gICAgW2F0dHIud2lkdGhdPVwidG9vbGJhci5zaXplKCkud2lkdGhcIlxuICAgIFthdHRyLmhlaWdodF09XCJ0b29sYmFyLnNpemUoKS5oZWlnaHRcIlxuICAgIFthdHRyLnRyYW5zZm9ybV09XCJ0b29sYmFyLnRyYW5zZm9ybSgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sYmFyLnRlbXBsYXRlKClcIiAvPlxuICA8L3N2Zzpmb3JlaWduT2JqZWN0PlxufVxuIl19
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvY29tcG9uZW50cy9ub2RlL25vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2NvbXBvbmVudHMvbm9kZS9ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixRQUFRLEVBSVIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFD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LElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQzsrR0F0RlUsYUFBYTttR0FBYixhQUFhLGdxQkFoQmIsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsMEJDNUNqRCwyK0pBOEpBLHlQRDdHSSxnQkFBZ0IsNEtBQ2hCLG9CQUFvQiwrRUFDcEIsZUFBZSx5SEFDZixnQkFBZ0Isb0pBQ2hCLGlCQUFpQixvUEFDakIsa0JBQWtCLHNHQUNsQiw2QkFBNkIscUdBQzdCLDhCQUE4QixvRUFDOUIsNkJBQTZCOzs0RkFHcEIsYUFBYTtrQkF0QnpCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFNBQVMsbUJBR0YsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsWUFBWTtxQkFDcEIsV0FDUTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQiw2QkFBNkI7d0JBQzdCLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3FCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJhZ2dhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RyYWdnYWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBIYW5kbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IE5vZGVSZW5kZXJpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1yZW5kZXJpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQ29udHJvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IE92ZXJsYXlzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlU2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2hhbmRsZS1zaXplLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQsIE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlZmF1bHROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGVmYXVsdC1ub2RlL2RlZmF1bHQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcG9pbnRlci5kaXJlY3RpdmUnO1xuXG4vLyBUT0RPOiBmaXggbG9hZGluZyBvZiB0aGVzZSBieSBAZGVmZXIgKHNob3VsZCB3b3JrIGluIEFuZ3VsYXIgMTgrKVxuLy8gcHVibGljIGNvbXBvbmVudHMgdGhhdCB1c2VzIGluIGRlZmF1bHQgbm9kZSAobG9hZGVkIGJ5IGRlZmVyKVxuaW1wb3J0IHsgUmVzaXphYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcHVibGljLWNvbXBvbmVudHMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGFuZGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcHVibGljLWNvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUhhbmRsZXNDb250cm9sbGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9ub2RlLWhhbmRsZXMtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTm9kZVJlc2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25vZGUtcmVzaXplLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgSGFuZGxlU3RhdGUgPSAndmFsaWQnIHwgJ2ludmFsaWQnIHwgJ2lkbGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdnW25vZGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtIYW5kbGVTZXJ2aWNlLCBOb2RlQWNjZXNzb3JTZXJ2aWNlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAndmZsb3ctbm9kZScsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBQb2ludGVyRGlyZWN0aXZlLFxuICAgIERlZmF1bHROb2RlQ29tcG9uZW50LFxuICAgIEhhbmRsZUNvbXBvbmVudCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIFJlc2l6YWJsZUNvbXBvbmVudCxcbiAgICBIYW5kbGVTaXplQ29udHJvbGxlckRpcmVjdGl2ZSxcbiAgICBOb2RlSGFuZGxlc0NvbnRyb2xsZXJEaXJlY3RpdmUsXG4gICAgTm9kZVJlc2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgaGFuZGxlU2VydmljZSA9IGluamVjdChIYW5kbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkcmFnZ2FibGVTZXJ2aWNlID0gaW5qZWN0KERyYWdnYWJsZVNlcnZpY2UpO1xuICBwcml2YXRlIGZsb3dTdGF0dXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dTdGF0dXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBub2RlUmVuZGVyaW5nU2VydmljZSA9IGluamVjdChOb2RlUmVuZGVyaW5nU2VydmljZSk7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KFNlbGVjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGhvc3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgbm9kZUFjY2Vzc29yID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpO1xuICBwcml2YXRlIG92ZXJsYXlzU2VydmljZSA9IGluamVjdChPdmVybGF5c1NlcnZpY2UpO1xuXG4gIC8vIFRPRE8gcmVtb3ZlIGRlcGVuZGVuY3kgZnJvbSB0aGlzIGRpcmVjdGl2ZVxuICBwcml2YXRlIGNvbm5lY3Rpb25Db250cm9sbGVyID0gaW5qZWN0KENvbm5lY3Rpb25Db250cm9sbGVyRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHB1YmxpYyBtb2RlbCA9IGlucHV0LnJlcXVpcmVkPE5vZGVNb2RlbD4oKTtcblxuICBwdWJsaWMgbm9kZVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICBwdWJsaWMgbm9kZVN2Z1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICBwdWJsaWMgZ3JvdXBOb2RlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXG4gIHByb3RlY3RlZCBzaG93TWFnbmV0ID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuZmxvd1N0YXR1c1NlcnZpY2Uuc3RhdHVzKCkuc3RhdGUgPT09ICdjb25uZWN0aW9uLXN0YXJ0JyB8fFxuICAgICAgdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKS5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicgfHxcbiAgICAgIHRoaXMuZmxvd1N0YXR1c1NlcnZpY2Uuc3RhdHVzKCkuc3RhdGUgPT09ICdyZWNvbm5lY3Rpb24tc3RhcnQnIHx8XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnN0YXR1cygpLnN0YXRlID09PSAncmVjb25uZWN0aW9uLXZhbGlkYXRpb24nLFxuICApO1xuXG4gIHByb3RlY3RlZCB0b29sYmFycyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3ZlcmxheXNTZXJ2aWNlLm5vZGVUb29sYmFyc01hcCgpLmdldCh0aGlzLm1vZGVsKCkpKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tb2RlbCgpLmlzVmlzaWJsZS5zZXQodHJ1ZSk7XG5cbiAgICB0aGlzLm5vZGVBY2Nlc3Nvci5tb2RlbC5zZXQodGhpcy5tb2RlbCgpKTtcbiAgICB0aGlzLmhhbmRsZVNlcnZpY2Uubm9kZS5zZXQodGhpcy5tb2RlbCgpKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubW9kZWwoKS5kcmFnZ2FibGUoKSkge1xuICAgICAgICAgIHRoaXMuZHJhZ2dhYmxlU2VydmljZS5lbmFibGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMubW9kZWwoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kcmFnZ2FibGVTZXJ2aWNlLmRpc2FibGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCgpLmlzVmlzaWJsZS5zZXQoZmFsc2UpO1xuXG4gICAgdGhpcy5kcmFnZ2FibGVTZXJ2aWNlLmRlc3Ryb3kodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXJ0Q29ubmVjdGlvbihldmVudDogRXZlbnQsIGhhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICAvLyBpZ25vcmUgZHJhZyBieSBzdG9wcGluZyBwcm9wYWdhdGlvblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uQ29udHJvbGxlcj8uc3RhcnRDb25uZWN0aW9uKGhhbmRsZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVDb25uZWN0aW9uKGhhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25Db250cm9sbGVyPy52YWxpZGF0ZUNvbm5lY3Rpb24oaGFuZGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldFZhbGlkYXRlQ29ubmVjdGlvbih0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uQ29udHJvbGxlcj8ucmVzZXRWYWxpZGF0ZUNvbm5lY3Rpb24odGFyZ2V0SGFuZGxlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmRDb25uZWN0aW9uKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbkNvbnRyb2xsZXI/LmVuZENvbm5lY3Rpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdWxsTm9kZSgpIHtcbiAgICBpZiAodGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVsZXZhdGVOb2Rlc09uU2VsZWN0KCkpIHtcbiAgICAgIHRoaXMubm9kZVJlbmRlcmluZ1NlcnZpY2UucHVsbE5vZGUodGhpcy5tb2RlbCgpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0Tm9kZSgpIHtcbiAgICBpZiAodGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KHRoaXMubW9kZWwoKSk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIERlZmF1bHQgbm9kZSAtLT5cbkBpZiAobW9kZWwoKS5yYXdOb2RlLnR5cGUgPT09ICdkZWZhdWx0Jykge1xuICA8c3ZnOmZvcmVpZ25PYmplY3RcbiAgICBjbGFzcz1cInNlbGVjdGFibGVcIlxuICAgIFthdHRyLndpZHRoXT1cIm1vZGVsKCkuZm9XaWR0aCgpXCJcbiAgICBbYXR0ci5oZWlnaHRdPVwibW9kZWwoKS5mb0hlaWdodCgpXCJcbiAgICAoY2xpY2spPVwicHVsbE5vZGUoKTsgc2VsZWN0Tm9kZSgpXCI+XG4gICAgPGRlZmF1bHQtbm9kZVxuICAgICAgbm9kZUhhbmRsZXNDb250cm9sbGVyXG4gICAgICBbc2VsZWN0ZWRdPVwibW9kZWwoKS5zZWxlY3RlZCgpXCJcbiAgICAgIFtzdHlsZS53aWR0aF09XCJtb2RlbCgpLnN0eWxlV2lkdGgoKVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cIm1vZGVsKCkuc3R5bGVIZWlnaHQoKVwiXG4gICAgICBbc3R5bGUubWF4LXdpZHRoXT1cIm1vZGVsKCkuc3R5bGVXaWR0aCgpXCJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1vZGVsKCkuc3R5bGVIZWlnaHQoKVwiPlxuICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cIm1vZGVsKCkudGV4dCgpXCI+PC9kaXY+XG5cbiAgICAgIDxoYW5kbGUgdHlwZT1cInNvdXJjZVwiIHBvc2l0aW9uPVwicmlnaHRcIiAvPlxuICAgICAgPGhhbmRsZSB0eXBlPVwidGFyZ2V0XCIgcG9zaXRpb249XCJsZWZ0XCIgLz5cbiAgICA8L2RlZmF1bHQtbm9kZT5cbiAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbn1cblxuPCEtLSBIVE1MIFRlbXBsYXRlIG5vZGUgLS0+XG5AaWYgKG1vZGVsKCkucmF3Tm9kZS50eXBlID09PSAnaHRtbC10ZW1wbGF0ZScgJiYgbm9kZVRlbXBsYXRlKCkpIHtcbiAgPHN2Zzpmb3JlaWduT2JqZWN0XG4gICAgY2xhc3M9XCJzZWxlY3RhYmxlXCJcbiAgICBbYXR0ci53aWR0aF09XCJtb2RlbCgpLmZvV2lkdGgoKVwiXG4gICAgW2F0dHIuaGVpZ2h0XT1cIm1vZGVsKCkuZm9IZWlnaHQoKVwiXG4gICAgKGNsaWNrKT1cInB1bGxOb2RlKClcIj5cbiAgICA8ZGl2XG4gICAgICBub2RlSGFuZGxlc0NvbnRyb2xsZXJcbiAgICAgIG5vZGVSZXNpemVDb250cm9sbGVyXG4gICAgICBjbGFzcz1cIndyYXBwZXJcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIm1vZGVsKCkuc3R5bGVXaWR0aCgpXCJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwibW9kZWwoKS5zdHlsZUhlaWdodCgpXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZSgpID8/IG51bGxcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwibW9kZWwoKS5jb250ZXh0XCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJpbmplY3RvclwiIC8+XG4gICAgPC9kaXY+XG4gIDwvc3ZnOmZvcmVpZ25PYmplY3Q+XG59XG5cbjwhLS0gU1ZHIFRlbXBsYXRlIG5vZGUgLS0+XG5AaWYgKG1vZGVsKCkucmF3Tm9kZS50eXBlID09PSAnc3ZnLXRlbXBsYXRlJyAmJiBub2RlU3ZnVGVtcGxhdGUoKSkge1xuICA8c3ZnOmcgY2xhc3M9XCJzZWxlY3RhYmxlXCIgbm9kZUhhbmRsZXNDb250cm9sbGVyIChjbGljayk9XCJwdWxsTm9kZSgpXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVN2Z1RlbXBsYXRlKCkgPz8gbnVsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwibW9kZWwoKS5jb250ZXh0XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIiAvPlxuICA8L3N2ZzpnPlxufVxuXG48IS0tIENvbXBvbmVudCBub2RlIC0tPlxuQGlmIChtb2RlbCgpLmlzQ29tcG9uZW50VHlwZSkge1xuICA8c3ZnOmZvcmVpZ25PYmplY3RcbiAgICBjbGFzcz1cInNlbGVjdGFibGVcIlxuICAgIFthdHRyLndpZHRoXT1cIm1vZGVsKCkuZm9XaWR0aCgpXCJcbiAgICBbYXR0ci5oZWlnaHRdPVwibW9kZWwoKS5mb0hlaWdodCgpXCJcbiAgICAoY2xpY2spPVwicHVsbE5vZGUoKVwiPlxuICAgIDxkaXZcbiAgICAgIG5vZGVIYW5kbGVzQ29udHJvbGxlclxuICAgICAgbm9kZVJlc2l6ZUNvbnRyb2xsZXJcbiAgICAgIGNsYXNzPVwid3JhcHBlclwiXG4gICAgICBbc3R5bGUud2lkdGhdPVwibW9kZWwoKS5zdHlsZVdpZHRoKClcIlxuICAgICAgW3N0eWxlLmhlaWdodF09XCJtb2RlbCgpLnN0eWxlSGVpZ2h0KClcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0XT1cIiRhbnkobW9kZWwoKS5yYXdOb2RlLnR5cGUpXCJcbiAgICAgICAgW25nQ29tcG9uZW50T3V0bGV0SW5wdXRzXT1cIm1vZGVsKCkuY29tcG9uZW50VHlwZUlucHV0c1wiXG4gICAgICAgIFtuZ0NvbXBvbmVudE91dGxldEluamVjdG9yXT1cImluamVjdG9yXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9zdmc6Zm9yZWlnbk9iamVjdD5cbn1cblxuPCEtLSBEZWZhdWx0IGdyb3VwIG5vZGUgLS0+XG5AaWYgKG1vZGVsKCkucmF3Tm9kZS50eXBlID09PSAnZGVmYXVsdC1ncm91cCcpIHtcbiAgPHN2ZzpyZWN0XG4gICAgY2xhc3M9XCJkZWZhdWx0LWdyb3VwLW5vZGVcIlxuICAgIHJ4PVwiNVwiXG4gICAgcnk9XCI1XCJcbiAgICBbcmVzaXphYmxlXT1cIm1vZGVsKCkucmVzaXphYmxlKClcIlxuICAgIFtnYXBdPVwiM1wiXG4gICAgW3Jlc2l6ZXJDb2xvcl09XCJtb2RlbCgpLmNvbG9yKClcIlxuICAgIFtjbGFzcy5kZWZhdWx0LWdyb3VwLW5vZGVfc2VsZWN0ZWRdPVwibW9kZWwoKS5zZWxlY3RlZCgpXCJcbiAgICBbYXR0ci53aWR0aF09XCJtb2RlbCgpLnNpemUoKS53aWR0aFwiXG4gICAgW2F0dHIuaGVpZ2h0XT1cIm1vZGVsKCkuc2l6ZSgpLmhlaWdodFwiXG4gICAgW3N0eWxlLnN0cm9rZV09XCJtb2RlbCgpLmNvbG9yKClcIlxuICAgIFtzdHlsZS5maWxsXT1cIm1vZGVsKCkuY29sb3IoKVwiXG4gICAgKGNsaWNrKT1cInB1bGxOb2RlKCk7IHNlbGVjdE5vZGUoKVwiIC8+XG59XG5cbjwhLS0gVGVtcGxhdGUgZ3JvdXAgbm9kZSAgLS0+XG5AaWYgKG1vZGVsKCkucmF3Tm9kZS50eXBlID09PSAndGVtcGxhdGUtZ3JvdXAnICYmIGdyb3VwTm9kZVRlbXBsYXRlKCkpIHtcbiAgPHN2ZzpnIGNsYXNzPVwic2VsZWN0YWJsZVwiIG5vZGVIYW5kbGVzQ29udHJvbGxlciAoY2xpY2spPVwicHVsbE5vZGUoKVwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwTm9kZVRlbXBsYXRlKCkgPz8gbnVsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwibW9kZWwoKS5jb250ZXh0XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiaW5qZWN0b3JcIiAvPlxuICA8L3N2ZzpnPlxufVxuXG48IS0tIFJlc2l6ZXIgLS0+XG5AaWYgKG1vZGVsKCkucmVzaXplclRlbXBsYXRlKCk7IGFzIHRlbXBsYXRlKSB7XG4gIEBpZiAobW9kZWwoKS5yZXNpemFibGUoKSkge1xuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiIC8+XG4gIH1cbn1cblxuPCEtLSBIYW5kbGVzIC0tPlxuQGZvciAoaGFuZGxlIG9mIG1vZGVsKCkuaGFuZGxlcygpOyB0cmFjayBoYW5kbGUpIHtcbiAgQGlmIChoYW5kbGUudGVtcGxhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgIDxzdmc6Y2lyY2xlXG4gICAgICBjbGFzcz1cImRlZmF1bHQtaGFuZGxlXCJcbiAgICAgIHI9XCI1XCJcbiAgICAgIFthdHRyLmN4XT1cImhhbmRsZS5ob3N0T2Zmc2V0KCkueFwiXG4gICAgICBbYXR0ci5jeV09XCJoYW5kbGUuaG9zdE9mZnNldCgpLnlcIlxuICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cImhhbmRsZS5zdHJva2VXaWR0aFwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0Q29ubmVjdGlvbigkZXZlbnQsIGhhbmRsZSlcIlxuICAgICAgKHBvaW50ZXJFbmQpPVwiZW5kQ29ubmVjdGlvbigpXCIgLz5cbiAgfVxuXG4gIEBpZiAoaGFuZGxlLnRlbXBsYXRlID09PSBudWxsKSB7XG4gICAgPHN2ZzpnXG4gICAgICBbaGFuZGxlU2l6ZUNvbnRyb2xsZXJdPVwiaGFuZGxlXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRDb25uZWN0aW9uKCRldmVudCwgaGFuZGxlKVwiXG4gICAgICAocG9pbnRlckVuZCk9XCJlbmRDb25uZWN0aW9uKClcIiAvPlxuICB9XG5cbiAgQGlmIChoYW5kbGUudGVtcGxhdGUpIHtcbiAgICA8c3ZnOmdcbiAgICAgIFtoYW5kbGVTaXplQ29udHJvbGxlcl09XCJoYW5kbGVcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydENvbm5lY3Rpb24oJGV2ZW50LCBoYW5kbGUpXCJcbiAgICAgIChwb2ludGVyRW5kKT1cImVuZENvbm5lY3Rpb24oKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhhbmRsZS50ZW1wbGF0ZTsgY29udGV4dDogaGFuZGxlLnRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgPC9zdmc6Zz5cbiAgfVxuXG4gIEBpZiAoc2hvd01hZ25ldCgpKSB7XG4gICAgPHN2ZzpjaXJjbGVcbiAgICAgIGNsYXNzPVwibWFnbmV0XCJcbiAgICAgIFthdHRyLnJdPVwibW9kZWwoKS5tYWduZXRSYWRpdXNcIlxuICAgICAgW2F0dHIuY3hdPVwiaGFuZGxlLmhvc3RPZmZzZXQoKS54XCJcbiAgICAgIFthdHRyLmN5XT1cImhhbmRsZS5ob3N0T2Zmc2V0KCkueVwiXG4gICAgICAocG9pbnRlckVuZCk9XCJlbmRDb25uZWN0aW9uKCk7IHJlc2V0VmFsaWRhdGVDb25uZWN0aW9uKGhhbmRsZSlcIlxuICAgICAgKHBvaW50ZXJPdmVyKT1cInZhbGlkYXRlQ29ubmVjdGlvbihoYW5kbGUpXCJcbiAgICAgIChwb2ludGVyT3V0KT1cInJlc2V0VmFsaWRhdGVDb25uZWN0aW9uKGhhbmRsZSlcIiAvPlxuICB9XG59XG5cbjwhLS0gVG9vbGJhciAtLT5cbkBmb3IgKHRvb2xiYXIgb2YgdG9vbGJhcnMoKTsgdHJhY2sgdG9vbGJhcikge1xuICA8c3ZnOmZvcmVpZ25PYmplY3RcbiAgICBbYXR0ci53aWR0aF09XCJ0b29sYmFyLnNpemUoKS53aWR0aFwiXG4gICAgW2F0dHIuaGVpZ2h0XT1cInRvb2xiYXIuc2l6ZSgpLmhlaWdodFwiXG4gICAgW2F0dHIudHJhbnNmb3JtXT1cInRvb2xiYXIudHJhbnNmb3JtKClcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2xiYXIudGVtcGxhdGUoKVwiIC8+XG4gIDwvc3ZnOmZvcmVpZ25PYmplY3Q+XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DestroyRef, Directive, ElementRef, inject, NgZone } from '@angular/core';
|
|
2
2
|
import { resizable } from '../utils/resizable';
|
|
3
3
|
import { NodeAccessorService } from '../services/node-accessor.service';
|
|
4
|
-
import { filter, startWith, tap } from 'rxjs';
|
|
4
|
+
import { filter, merge, startWith, tap } from 'rxjs';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
@@ -16,12 +16,11 @@ export class NodeResizeControllerDirective {
|
|
|
16
16
|
}
|
|
17
17
|
ngOnInit() {
|
|
18
18
|
const model = this.nodeAccessor.model();
|
|
19
|
-
|
|
19
|
+
const host = this.hostElementRef.nativeElement;
|
|
20
|
+
merge(resizable([host], this.zone))
|
|
20
21
|
.pipe(startWith(null), filter(() => !model.resizing()), tap(() => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
model.width.set(width);
|
|
24
|
-
model.height.set(height);
|
|
22
|
+
model.width.set(host.clientWidth);
|
|
23
|
+
model.height.set(host.clientHeight);
|
|
25
24
|
}), takeUntilDestroyed(this.destroyRef))
|
|
26
25
|
.subscribe();
|
|
27
26
|
}
|
|
@@ -35,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
35
34
|
standalone: true,
|
|
36
35
|
}]
|
|
37
36
|
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1yZXNpemUtY29udHJvbGxlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9ub2RlLXJlc2l6ZS1jb250cm9sbGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEU7O0dBRUc7QUFLSCxNQUFNLE9BQU8sNkJBQTZCO0lBSjFDO1FBS1UsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQXNCLFVBQVUsQ0FBQyxDQUFDO0tBbUJsRTtJQWpCUSxRQUFRO1FBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUcsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUUvQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hDLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQy9CLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDcEM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOytHQXRCVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgTmdab25lLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc2l6YWJsZSB9IGZyb20gJy4uL3V0aWxzL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm9kZS1hY2Nlc3Nvci5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciwgbWVyZ2UsIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogT25seSBzdWl0YWJsZSBmb3IgSFRNTCBub2Rlc1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbm9kZVJlc2l6ZUNvbnRyb2xsZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTm9kZVJlc2l6ZUNvbnRyb2xsZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIG5vZGVBY2Nlc3NvciA9IGluamVjdChOb2RlQWNjZXNzb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBob3N0RWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLm5vZGVBY2Nlc3Nvci5tb2RlbCgpITtcblxuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmhvc3RFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBtZXJnZShyZXNpemFibGUoW2hvc3RdLCB0aGlzLnpvbmUpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgZmlsdGVyKCgpID0+ICFtb2RlbC5yZXNpemluZygpKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBtb2RlbC53aWR0aC5zZXQoaG9zdC5jbGllbnRXaWR0aCk7XG4gICAgICAgICAgbW9kZWwuaGVpZ2h0LnNldChob3N0LmNsaWVudEhlaWdodCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -19,8 +19,12 @@ export class NodeModel {
|
|
|
19
19
|
* @deprecated use width or height signals
|
|
20
20
|
*/
|
|
21
21
|
this.size = computed(() => ({ width: this.width(), height: this.height() }));
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
/**
|
|
23
|
+
* If resizer is used, the node size fully depends on the resizer
|
|
24
|
+
* Otherwise it calculates the size based on the content
|
|
25
|
+
*/
|
|
26
|
+
this.styleWidth = computed(() => (this.controlledByResizer() ? `${this.width()}px` : '100%'));
|
|
27
|
+
this.styleHeight = computed(() => (this.controlledByResizer() ? `${this.height()}px` : '100%'));
|
|
24
28
|
this.foWidth = computed(() => this.width() + MAGIC_NUMBER_TO_FIX_GLITCH_IN_CHROME);
|
|
25
29
|
this.foHeight = computed(() => this.height() + MAGIC_NUMBER_TO_FIX_GLITCH_IN_CHROME);
|
|
26
30
|
this.renderOrder = signal(0);
|
|
@@ -54,6 +58,7 @@ export class NodeModel {
|
|
|
54
58
|
this.parent = computed(() => this.entitiesService.nodes().find((n) => n.rawNode.id === this.parentId()) ?? null);
|
|
55
59
|
this.children = computed(() => this.entitiesService.nodes().filter((n) => n.parentId() === this.rawNode.id));
|
|
56
60
|
this.color = signal(NodeModel.defaultColor);
|
|
61
|
+
this.controlledByResizer = signal(false);
|
|
57
62
|
this.resizable = signal(false);
|
|
58
63
|
this.resizing = signal(false);
|
|
59
64
|
this.resizerTemplate = signal(null);
|
|
@@ -129,4 +134,4 @@ export class NodeModel {
|
|
|
129
134
|
this.point.set(point);
|
|
130
135
|
}
|
|
131
136
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFxQixzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUdsSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJekQsTUFBTSxPQUFPLFNBQVM7YUFHTCxpQkFBWSxHQUFHLEdBQUcsQUFBTixDQUFPO2FBQ25CLGtCQUFhLEdBQUcsRUFBRSxBQUFMLENBQU07YUFDbkIsaUJBQVksR0FBRyxTQUFTLEFBQVosQ0FBYTtJQTRGeEMsWUFBbUIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUExRjVDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixVQUFLLEdBQUcsTUFBTSxDQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUd0QyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUd2QyxXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUdoRDs7V0FF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QkFBZ0IsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUc7Z0JBQ2IsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxPQUFPO29CQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07aUJBQ3BCO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFZO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljTm9kZSwgTm9kZSwgaXNDb21wb25lbnREeW5hbWljTm9kZSwgaXNDb21wb25lbnRTdGF0aWNOb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4vaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTUFHSUNfTlVNQkVSX1RPX0ZJWF9HTElUQ0hfSU5fQ0hST01FIH0gZnJvbSAnLi4vY29uc3RhbnRzL21hZ2ljLW51bWJlci10by1maXgtZ2xpdGNoLWluLWNocm9tZS5jb25zdGFudCc7XG5pbXBvcnQgeyBDb250ZXh0YWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGV4dGFibGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyb3VwTm9kZUNvbnRleHQsIE5vZGVDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyB0b1VuaWZpZWROb2RlIH0gZnJvbSAnLi4vdXRpbHMvdG8tdW5pZmllZC1ub2RlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVQcmV2aWV3IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLXByZXZpZXcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIE5vZGVNb2RlbDxUID0gdW5rbm93bj5cbiAgaW1wbGVtZW50cyBGbG93RW50aXR5LCBDb250ZXh0YWJsZTxOb2RlQ29udGV4dCB8IEdyb3VwTm9kZUNvbnRleHQgfCB7ICRpbXBsaWNpdDogb2JqZWN0IH0+XG57XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRXaWR0aCA9IDEwMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdEhlaWdodCA9IDUwO1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0Q29sb3IgPSAnIzFiMjYyYyc7XG5cbiAgcHJpdmF0ZSBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHBvaW50ID0gc2lnbmFsPFBvaW50Pih7IHg6IDAsIHk6IDAgfSk7XG4gIHB1YmxpYyBwb2ludCQ6IE9ic2VydmFibGU8UG9pbnQ+O1xuXG4gIHB1YmxpYyB3aWR0aCA9IHNpZ25hbChOb2RlTW9kZWwuZGVmYXVsdFdpZHRoKTtcbiAgcHVibGljIHdpZHRoJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIHB1YmxpYyBoZWlnaHQgPSBzaWduYWwoTm9kZU1vZGVsLmRlZmF1bHRIZWlnaHQpO1xuICBwdWJsaWMgaGVpZ2h0JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2lkdGggb3IgaGVpZ2h0IHNpZ25hbHNcbiAgICovXG4gIHB1YmxpYyBzaXplID0gY29tcHV0ZWQoKCkgPT4gKHsgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpIH0pKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aWR0aCQgb3IgaGVpZ2h0JFxuICAgKi9cbiAgcHVibGljIHNpemUkOiBPYnNlcnZhYmxlPHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfT47XG5cbiAgcHVibGljIHN0eWxlV2lkdGggPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLndpZHRoKCl9cHhgKTtcbiAgcHVibGljIHN0eWxlSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5oZWlnaHQoKX1weGApO1xuXG4gIHB1YmxpYyBmb1dpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy53aWR0aCgpICsgTUFHSUNfTlVNQkVSX1RPX0ZJWF9HTElUQ0hfSU5fQ0hST01FKTtcbiAgcHVibGljIGZvSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5oZWlnaHQoKSArIE1BR0lDX05VTUJFUl9UT19GSVhfR0xJVENIX0lOX0NIUk9NRSk7XG5cbiAgcHVibGljIHJlbmRlck9yZGVyID0gc2lnbmFsKDApO1xuXG4gIHB1YmxpYyBzZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBzZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHVibGljIHByZXZpZXcgPSBzaWduYWw8Tm9kZVByZXZpZXc+KHsgc3R5bGU6IHt9IH0pO1xuXG4gIHB1YmxpYyBnbG9iYWxQb2ludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5wYXJlbnQoKTtcbiAgICBsZXQgeCA9IHRoaXMucG9pbnQoKS54O1xuICAgIGxldCB5ID0gdGhpcy5wb2ludCgpLnk7XG5cbiAgICB3aGlsZSAocGFyZW50ICE9PSBudWxsKSB7XG4gICAgICB4ICs9IHBhcmVudC5wb2ludCgpLng7XG4gICAgICB5ICs9IHBhcmVudC5wb2ludCgpLnk7XG5cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB4LCB5IH07XG4gIH0pO1xuXG4gIHB1YmxpYyBwb2ludFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IGB0cmFuc2xhdGUoJHt0aGlzLmdsb2JhbFBvaW50KCkueH0sICR7dGhpcy5nbG9iYWxQb2ludCgpLnl9KWApO1xuXG4gIHB1YmxpYyBoYW5kbGVzID0gc2lnbmFsPEhhbmRsZU1vZGVsW10+KFtdKTtcbiAgcHVibGljIGhhbmRsZXMkOiBPYnNlcnZhYmxlPEhhbmRsZU1vZGVsW10+O1xuXG4gIHB1YmxpYyBkcmFnZ2FibGUgPSBzaWduYWwodHJ1ZSk7XG5cbiAgcHVibGljIGRyYWdIYW5kbGVzQ291bnQgPSBzaWduYWwoMCk7XG5cbiAgLy8gZGlzYWJsZWQgZm9yIGNvbmZpZ3VyYXRpb24gZm9yIG5vd1xuICBwdWJsaWMgcmVhZG9ubHkgbWFnbmV0UmFkaXVzID0gMjA7XG5cbiAgLy8gVE9ETzogbm90IHN1cmUgaWYgd2UgbmVlZCB0byBzdGF0aWNhbGx5IHN0b3JlIGl0XG4gIHB1YmxpYyBpc0NvbXBvbmVudFR5cGUgPVxuICAgIGlzQ29tcG9uZW50U3RhdGljTm9kZSh0aGlzLnJhd05vZGUgYXMgTm9kZSkgfHwgaXNDb21wb25lbnREeW5hbWljTm9kZSh0aGlzLnJhd05vZGUgYXMgRHluYW1pY05vZGUpO1xuXG4gIC8vIERlZmF1bHQgbm9kZSBzcGVjaWZpYyB0aGluZ1xuICBwdWJsaWMgdGV4dCA9IHNpZ25hbCgnJyk7XG5cbiAgLy8gQ29tcG9uZW50IG5vZGUgc3BlY2lmaWMgdGhpbmdcbiAgcHVibGljIGNvbXBvbmVudFR5cGVJbnB1dHMgPSB7XG4gICAgbm9kZTogdGhpcy5yYXdOb2RlLFxuICB9O1xuXG4gIHB1YmxpYyBwYXJlbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpLmZpbmQoKG4pID0+IG4ucmF3Tm9kZS5pZCA9PT0gdGhpcy5wYXJlbnRJZCgpKSA/PyBudWxsKTtcblxuICBwdWJsaWMgY2hpbGRyZW4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpLmZpbHRlcigobikgPT4gbi5wYXJlbnRJZCgpID09PSB0aGlzLnJhd05vZGUuaWQpKTtcblxuICBwdWJsaWMgY29sb3IgPSBzaWduYWwoTm9kZU1vZGVsLmRlZmF1bHRDb2xvcik7XG5cbiAgcHVibGljIHJlc2l6YWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZXNpemluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZXNpemVyVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgY29udGV4dCA9IHtcbiAgICAkaW1wbGljaXQ6IHt9LFxuICB9O1xuXG4gIHByaXZhdGUgcGFyZW50SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJhd05vZGU6IE5vZGU8VD4gfCBEeW5hbWljTm9kZTxUPikge1xuICAgIGNvbnN0IGludGVybmFsTm9kZSA9IHRvVW5pZmllZE5vZGUocmF3Tm9kZSk7XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnBvaW50KSB7XG4gICAgICB0aGlzLnBvaW50ID0gaW50ZXJuYWxOb2RlLnBvaW50O1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbE5vZGUud2lkdGgpIHtcbiAgICAgIHRoaXMud2lkdGggPSBpbnRlcm5hbE5vZGUud2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS5oZWlnaHQpIHtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaW50ZXJuYWxOb2RlLmhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLmRyYWdnYWJsZSkge1xuICAgICAgdGhpcy5kcmFnZ2FibGUgPSBpbnRlcm5hbE5vZGUuZHJhZ2dhYmxlO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbE5vZGUucGFyZW50SWQpIHtcbiAgICAgIHRoaXMucGFyZW50SWQgPSBpbnRlcm5hbE5vZGUucGFyZW50SWQ7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS5wcmV2aWV3KSB7XG4gICAgICB0aGlzLnByZXZpZXcgPSBpbnRlcm5hbE5vZGUucHJldmlldztcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnR5cGUgPT09ICdkZWZhdWx0LWdyb3VwJyAmJiBpbnRlcm5hbE5vZGUuY29sb3IpIHtcbiAgICAgIHRoaXMuY29sb3IgPSBpbnRlcm5hbE5vZGUuY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS50eXBlID09PSAnZGVmYXVsdC1ncm91cCcgJiYgaW50ZXJuYWxOb2RlLnJlc2l6YWJsZSkge1xuICAgICAgdGhpcy5yZXNpemFibGUgPSBpbnRlcm5hbE5vZGUucmVzaXphYmxlO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbE5vZGUudHlwZSA9PT0gJ2RlZmF1bHQnICYmIGludGVybmFsTm9kZS50ZXh0KSB7XG4gICAgICB0aGlzLnRleHQgPSBpbnRlcm5hbE5vZGUudGV4dDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnR5cGUgPT09ICdodG1sLXRlbXBsYXRlJykge1xuICAgICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICBub2RlOiByYXdOb2RlLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnR5cGUgPT09ICdzdmctdGVtcGxhdGUnKSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgIG5vZGU6IHJhd05vZGUsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS50eXBlID09PSAndGVtcGxhdGUtZ3JvdXAnKSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgIG5vZGU6IHJhd05vZGUsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQuYXNSZWFkb25seSgpLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgT2JzZXJ2YWJsZXMgYWZ0ZXIgYWxsIHNpZ25hbCBhc3NpZ25tZW50c1xuICAgIHRoaXMucG9pbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMucG9pbnQpO1xuICAgIHRoaXMud2lkdGgkID0gdG9PYnNlcnZhYmxlKHRoaXMud2lkdGgpO1xuICAgIHRoaXMuaGVpZ2h0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhlaWdodCk7XG4gICAgdGhpcy5zaXplJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNpemUpO1xuICAgIHRoaXMuc2VsZWN0ZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMuaGFuZGxlcyQgPSB0b09ic2VydmFibGUodGhpcy5oYW5kbGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQb2ludChwb2ludDogUG9pbnQpIHtcbiAgICB0aGlzLnBvaW50LnNldChwb2ludCk7XG4gIH1cbn1cbiJdfQ==
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFxQixzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUdsSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJekQsTUFBTSxPQUFPLFNBQVM7YUFHTCxpQkFBWSxHQUFHLEdBQUcsQUFBTixDQUFPO2FBQ25CLGtCQUFhLEdBQUcsRUFBRSxBQUFMLENBQU07YUFDbkIsaUJBQVksR0FBRyxTQUFTLEFBQVosQ0FBYTtJQWlHeEMsWUFBbUIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUEvRjVDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixVQUFLLEdBQUcsTUFBTSxDQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUd0QyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUd2QyxXQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUdoRDs7V0FF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cnQgeyBUZW1wbGF0ZVJlZiwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljTm9kZSwgTm9kZSwgaXNDb21wb25lbnREeW5hbWljTm9kZSwgaXNDb21wb25lbnRTdGF0aWNOb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4vaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTUFHSUNfTlVNQkVSX1RPX0ZJWF9HTElUQ0hfSU5fQ0hST01FIH0gZnJvbSAnLi4vY29uc3RhbnRzL21hZ2ljLW51bWJlci10by1maXgtZ2xpdGNoLWluLWNocm9tZS5jb25zdGFudCc7XG5pbXBvcnQgeyBDb250ZXh0YWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGV4dGFibGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyb3VwTm9kZUNvbnRleHQsIE5vZGVDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyB0b1VuaWZpZWROb2RlIH0gZnJvbSAnLi4vdXRpbHMvdG8tdW5pZmllZC1ub2RlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5vZGVQcmV2aWV3IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLXByZXZpZXcuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIE5vZGVNb2RlbDxUID0gdW5rbm93bj5cbiAgaW1wbGVtZW50cyBGbG93RW50aXR5LCBDb250ZXh0YWJsZTxOb2RlQ29udGV4dCB8IEdyb3VwTm9kZUNvbnRleHQgfCB7ICRpbXBsaWNpdDogb2JqZWN0IH0+XG57XG4gIHByaXZhdGUgc3RhdGljIGRlZmF1bHRXaWR0aCA9IDEwMDtcbiAgcHJpdmF0ZSBzdGF0aWMgZGVmYXVsdEhlaWdodCA9IDUwO1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0Q29sb3IgPSAnIzFiMjYyYyc7XG5cbiAgcHJpdmF0ZSBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHBvaW50ID0gc2lnbmFsPFBvaW50Pih7IHg6IDAsIHk6IDAgfSk7XG4gIHB1YmxpYyBwb2ludCQ6IE9ic2VydmFibGU8UG9pbnQ+O1xuXG4gIHB1YmxpYyB3aWR0aCA9IHNpZ25hbChOb2RlTW9kZWwuZGVmYXVsdFdpZHRoKTtcbiAgcHVibGljIHdpZHRoJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIHB1YmxpYyBoZWlnaHQgPSBzaWduYWwoTm9kZU1vZGVsLmRlZmF1bHRIZWlnaHQpO1xuICBwdWJsaWMgaGVpZ2h0JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2lkdGggb3IgaGVpZ2h0IHNpZ25hbHNcbiAgICovXG4gIHB1YmxpYyBzaXplID0gY29tcHV0ZWQoKCkgPT4gKHsgd2lkdGg6IHRoaXMud2lkdGgoKSwgaGVpZ2h0OiB0aGlzLmhlaWdodCgpIH0pKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aWR0aCQgb3IgaGVpZ2h0JFxuICAgKi9cbiAgcHVibGljIHNpemUkOiBPYnNlcnZhYmxlPHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfT47XG5cbiAgLyoqXG4gICAqIElmIHJlc2l6ZXIgaXMgdXNlZCwgdGhlIG5vZGUgc2l6ZSBmdWxseSBkZXBlbmRzIG9uIHRoZSByZXNpemVyXG4gICAqIE90aGVyd2lzZSBpdCBjYWxjdWxhdGVzIHRoZSBzaXplIGJhc2VkIG9uIHRoZSBjb250ZW50XG4gICAqL1xuICBwdWJsaWMgc3R5bGVXaWR0aCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmNvbnRyb2xsZWRCeVJlc2l6ZXIoKSA/IGAke3RoaXMud2lkdGgoKX1weGAgOiAnMTAwJScpKTtcbiAgcHVibGljIHN0eWxlSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY29udHJvbGxlZEJ5UmVzaXplcigpID8gYCR7dGhpcy5oZWlnaHQoKX1weGAgOiAnMTAwJScpKTtcblxuICBwdWJsaWMgZm9XaWR0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMud2lkdGgoKSArIE1BR0lDX05VTUJFUl9UT19GSVhfR0xJVENIX0lOX0NIUk9NRSk7XG4gIHB1YmxpYyBmb0hlaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaGVpZ2h0KCkgKyBNQUdJQ19OVU1CRVJfVE9fRklYX0dMSVRDSF9JTl9DSFJPTUUpO1xuXG4gIHB1YmxpYyByZW5kZXJPcmRlciA9IHNpZ25hbCgwKTtcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwdWJsaWMgc2VsZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHB1YmxpYyBwcmV2aWV3ID0gc2lnbmFsPE5vZGVQcmV2aWV3Pih7IHN0eWxlOiB7fSB9KTtcblxuICBwdWJsaWMgZ2xvYmFsUG9pbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50KCk7XG4gICAgbGV0IHggPSB0aGlzLnBvaW50KCkueDtcbiAgICBsZXQgeSA9IHRoaXMucG9pbnQoKS55O1xuXG4gICAgd2hpbGUgKHBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgeCArPSBwYXJlbnQucG9pbnQoKS54O1xuICAgICAgeSArPSBwYXJlbnQucG9pbnQoKS55O1xuXG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgeCwgeSB9O1xuICB9KTtcblxuICBwdWJsaWMgcG9pbnRUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiBgdHJhbnNsYXRlKCR7dGhpcy5nbG9iYWxQb2ludCgpLnh9LCAke3RoaXMuZ2xvYmFsUG9pbnQoKS55fSlgKTtcblxuICBwdWJsaWMgaGFuZGxlcyA9IHNpZ25hbDxIYW5kbGVNb2RlbFtdPihbXSk7XG4gIHB1YmxpYyBoYW5kbGVzJDogT2JzZXJ2YWJsZTxIYW5kbGVNb2RlbFtdPjtcblxuICBwdWJsaWMgZHJhZ2dhYmxlID0gc2lnbmFsKHRydWUpO1xuXG4gIHB1YmxpYyBkcmFnSGFuZGxlc0NvdW50ID0gc2lnbmFsKDApO1xuXG4gIC8vIGRpc2FibGVkIGZvciBjb25maWd1cmF0aW9uIGZvciBub3dcbiAgcHVibGljIHJlYWRvbmx5IG1hZ25ldFJhZGl1cyA9IDIwO1xuXG4gIC8vIFRPRE86IG5vdCBzdXJlIGlmIHdlIG5lZWQgdG8gc3RhdGljYWxseSBzdG9yZSBpdFxuICBwdWJsaWMgaXNDb21wb25lbnRUeXBlID1cbiAgICBpc0NvbXBvbmVudFN0YXRpY05vZGUodGhpcy5yYXdOb2RlIGFzIE5vZGUpIHx8IGlzQ29tcG9uZW50RHluYW1pY05vZGUodGhpcy5yYXdOb2RlIGFzIER5bmFtaWNOb2RlKTtcblxuICAvLyBEZWZhdWx0IG5vZGUgc3BlY2lmaWMgdGhpbmdcbiAgcHVibGljIHRleHQgPSBzaWduYWwoJycpO1xuXG4gIC8vIENvbXBvbmVudCBub2RlIHNwZWNpZmljIHRoaW5nXG4gIHB1YmxpYyBjb21wb25lbnRUeXBlSW5wdXRzID0ge1xuICAgIG5vZGU6IHRoaXMucmF3Tm9kZSxcbiAgfTtcblxuICBwdWJsaWMgcGFyZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maW5kKChuKSA9PiBuLnJhd05vZGUuaWQgPT09IHRoaXMucGFyZW50SWQoKSkgPz8gbnVsbCk7XG5cbiAgcHVibGljIGNoaWxkcmVuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maWx0ZXIoKG4pID0+IG4ucGFyZW50SWQoKSA9PT0gdGhpcy5yYXdOb2RlLmlkKSk7XG5cbiAgcHVibGljIGNvbG9yID0gc2lnbmFsKE5vZGVNb2RlbC5kZWZhdWx0Q29sb3IpO1xuXG4gIHB1YmxpYyBjb250cm9sbGVkQnlSZXNpemVyID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlc2l6YWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZXNpemluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZXNpemVyVGVtcGxhdGUgPSBzaWduYWw8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgY29udGV4dCA9IHtcbiAgICAkaW1wbGljaXQ6IHt9LFxuICB9O1xuXG4gIHByaXZhdGUgcGFyZW50SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJhd05vZGU6IE5vZGU8VD4gfCBEeW5hbWljTm9kZTxUPikge1xuICAgIGNvbnN0IGludGVybmFsTm9kZSA9IHRvVW5pZmllZE5vZGUocmF3Tm9kZSk7XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnBvaW50KSB7XG4gICAgICB0aGlzLnBvaW50ID0gaW50ZXJuYWxOb2RlLnBvaW50O1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbE5vZGUud2lkdGgpIHtcbiAgICAgIHRoaXMud2lkdGggPSBpbnRlcm5hbE5vZGUud2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS5oZWlnaHQpIHtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gaW50ZXJuYWxOb2RlLmhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLmRyYWdnYWJsZSkge1xuICAgICAgdGhpcy5kcmFnZ2FibGUgPSBpbnRlcm5hbE5vZGUuZHJhZ2dhYmxlO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbE5vZGUucGFyZW50SWQpIHtcbiAgICAgIHRoaXMucGFyZW50SWQgPSBpbnRlcm5hbE5vZGUucGFyZW50SWQ7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS5wcmV2aWV3KSB7XG4gICAgICB0aGlzLnByZXZpZXcgPSBpbnRlcm5hbE5vZGUucHJldmlldztcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnR5cGUgPT09ICdkZWZhdWx0LWdyb3VwJyAmJiBpbnRlcm5hbE5vZGUuY29sb3IpIHtcbiAgICAgIHRoaXMuY29sb3IgPSBpbnRlcm5hbE5vZGUuY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS50eXBlID09PSAnZGVmYXVsdC1ncm91cCcgJiYgaW50ZXJuYWxOb2RlLnJlc2l6YWJsZSkge1xuICAgICAgdGhpcy5yZXNpemFibGUgPSBpbnRlcm5hbE5vZGUucmVzaXphYmxlO1xuICAgIH1cblxuICAgIGlmIChpbnRlcm5hbE5vZGUudHlwZSA9PT0gJ2RlZmF1bHQnICYmIGludGVybmFsTm9kZS50ZXh0KSB7XG4gICAgICB0aGlzLnRleHQgPSBpbnRlcm5hbE5vZGUudGV4dDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnR5cGUgPT09ICdodG1sLXRlbXBsYXRlJykge1xuICAgICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICBub2RlOiByYXdOb2RlLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxOb2RlLnR5cGUgPT09ICdzdmctdGVtcGxhdGUnKSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgIG5vZGU6IHJhd05vZGUsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFsTm9kZS50eXBlID09PSAndGVtcGxhdGUtZ3JvdXAnKSB7XG4gICAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgIG5vZGU6IHJhd05vZGUsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQuYXNSZWFkb25seSgpLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgT2JzZXJ2YWJsZXMgYWZ0ZXIgYWxsIHNpZ25hbCBhc3NpZ25tZW50c1xuICAgIHRoaXMucG9pbnQkID0gdG9PYnNlcnZhYmxlKHRoaXMucG9pbnQpO1xuICAgIHRoaXMud2lkdGgkID0gdG9PYnNlcnZhYmxlKHRoaXMud2lkdGgpO1xuICAgIHRoaXMuaGVpZ2h0JCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmhlaWdodCk7XG4gICAgdGhpcy5zaXplJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNpemUpO1xuICAgIHRoaXMuc2VsZWN0ZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMuaGFuZGxlcyQgPSB0b09ic2VydmFibGUodGhpcy5oYW5kbGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQb2ludChwb2ludDogUG9pbnQpIHtcbiAgICB0aGlzLnBvaW50LnNldChwb2ludCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -54,8 +54,12 @@ export class ResizableComponent {
|
|
|
54
54
|
}, { allowSignalWrites: true });
|
|
55
55
|
}
|
|
56
56
|
ngOnInit() {
|
|
57
|
+
this.model.controlledByResizer.set(true);
|
|
57
58
|
this.model.resizerTemplate.set(this.resizer());
|
|
58
59
|
}
|
|
60
|
+
ngOnDestroy() {
|
|
61
|
+
this.model.controlledByResizer.set(false);
|
|
62
|
+
}
|
|
59
63
|
ngAfterViewInit() {
|
|
60
64
|
this.minWidth = +getComputedStyle(this.hostRef.nativeElement).minWidth.replace('px', '') || 0;
|
|
61
65
|
this.minHeight = +getComputedStyle(this.hostRef.nativeElement).minHeight.replace('px', '') || 0;
|
|
@@ -265,4 +269,4 @@ function constrainRect(rect, model, side, minWidth, minHeight, maxWidth, maxHeig
|
|
|
265
269
|
height,
|
|
266
270
|
};
|
|
267
271
|
}
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUdOLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLHVCQUF1QixHQUN4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1C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Q0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0UsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLENBQUM7UUFDRCxDQUFDO1FBQ0QsS0FBSztRQUNMLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgaW5wdXQsXG4gIHZpZXdDaGlsZCxcbiAgZWZmZWN0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290UG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcm9vdC1wb2ludGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gJy4uLy4uL3V0aWxzL3JvdW5kJztcbmltcG9ydCB7IE1pY3JvdGFzayB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvbWljcm90YXNrLmRlY29yYXRvcic7XG5pbXBvcnQgeyBnZXROb2Rlc0JvdW5kcyB9IGZyb20gJy4uLy4uL3V0aWxzL25vZGVzJztcbmltcG9ydCB7IE5vZGVBY2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub2RlLWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgUmVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVjdCc7XG5pbXBvcnQgeyBQb2ludGVyRXZlbnQgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NwYWNlLXBvaW50LWNvbnRleHQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3BvaW50ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBhbGlnbiB9IGZyb20gJy4uLy4uL3V0aWxzL2FsaWduLW51bWJlcic7XG5cbnR5cGUgU2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3RvcC1yaWdodCcgfCAndG9wLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCcgfCAnYm90dG9tLWxlZnQnO1xuXG5pbnRlcmZhY2UgRGlzdGFuY2VUb0VkZ2Uge1xuICBsZWZ0OiBudW1iZXI7XG4gIHJpZ2h0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICBib3R0b206IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3Jlc2l6YWJsZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzaXphYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzaXphYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtQb2ludGVyRGlyZWN0aXZlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgbm9kZUFjY2Vzc29yID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvb3RQb2ludGVyID0gaW5qZWN0KFJvb3RQb2ludGVyRGlyZWN0aXZlKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzcGFjZVBvaW50Q29udGV4dCA9IGluamVjdChTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSk7XG4gIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuICBwcml2YXRlIGhvc3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgcHVibGljIHJlc2l6YWJsZSA9IGlucHV0PGJvb2xlYW4gfCAnJz4oKTtcblxuICBwdWJsaWMgcmVzaXplckNvbG9yID0gaW5wdXQoJyMyZTQxNGMnKTtcblxuICBwdWJsaWMgZ2FwID0gaW5wdXQoMS41KTtcblxuICBwcml2YXRlIHJlc2l6ZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdyZXNpemVyJyk7XG5cbiAgcHJvdGVjdGVkIGdldCBtb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlQWNjZXNzb3IubW9kZWwoKSE7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGluZUdhcCA9IDM7XG4gIHByb3RlY3RlZCBoYW5kbGVTaXplID0gNjtcblxuICBwcml2YXRlIHJlc2l6ZVNpZGU6IFNpZGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHpvb20gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0KCkuem9vbSA/PyAwKTtcblxuICBwcml2YXRlIG1pbldpZHRoID0gMDtcbiAgcHJpdmF0ZSBtaW5IZWlnaHQgPSAwO1xuICBwcml2YXRlIG1heFdpZHRoID0gSW5maW5pdHk7XG4gIHByaXZhdGUgbWF4SGVpZ2h0ID0gSW5maW5pdHk7XG5cbiAgLy8gVE9ETzogYWxsb3cgcmVzemllIGJlc2lkZSB0aGUgZmxvd1xuICBwcm90ZWN0ZWQgcmVzaXplT25HbG9iYWxNb3VzZU1vdmUgPSB0aGlzLnJvb3RQb2ludGVyLnBvaW50ZXJNb3ZlbWVudCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnJlc2l6ZVNpZGUgIT09IG51bGwpLFxuICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQubW92ZW1lbnRYICE9PSAwIHx8IGV2ZW50Lm1vdmVtZW50WSAhPT0gMCksXG4gICAgICB0YXAoKGV2ZW50KSA9PiB0aGlzLnJlc2l6ZShldmVudCkpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBwcm90ZWN0ZWQgZW5kUmVzaXplT25HbG9iYWxNb3VzZVVwID0gdGhpcy5yb290UG9pbnRlci5kb2N1bWVudFBvaW50ZXJFbmQkXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5lbmRSZXNpemUoKSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzaXphYmxlID0gdGhpcy5yZXNpemFibGUoKTtcblxuICAgICAgICBpZiAodHlwZW9mIHJlc2l6YWJsZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5yZXNpemFibGUuc2V0KHJlc2l6YWJsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5yZXNpemFibGUuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5yZXNpemVyVGVtcGxhdGUuc2V0KHRoaXMucmVzaXplcigpKTtcbiAgfVxuXG4gIEBNaWNyb3Rhc2tcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm1pbldpZHRoID0gK2dldENvbXB1dGVkU3R5bGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpLm1pbldpZHRoLnJlcGxhY2UoJ3B4JywgJycpIHx8IDA7XG4gICAgdGhpcy5taW5IZWlnaHQgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmhvc3RSZWYubmF0aXZlRWxlbWVudCkubWluSGVpZ2h0LnJlcGxhY2UoJ3B4JywgJycpIHx8IDA7XG4gICAgdGhpcy5tYXhXaWR0aCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KS5tYXhXaWR0aC5yZXBsYWNlKCdweCcsICcnKSB8fCBJbmZpbml0eTtcbiAgICB0aGlzLm1heEhlaWdodCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KS5tYXhIZWlnaHQucmVwbGFjZSgncHgnLCAnJykgfHwgSW5maW5pdHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhcnRSZXNpemUoc2lkZTogU2lkZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNpemVTaWRlID0gc2lkZTtcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNpemUoZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy5yZXNpemVTaWRlKSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXQgPSBjYWxjT2Zmc2V0KGV2ZW50Lm1vdmVtZW50WCwgZXZlbnQubW92ZW1lbnRZLCB0aGlzLnpvb20oKSk7XG5cbiAgICBjb25zdCByZXNpemVkID0gdGhpcy5hcHBseVJlc2l6ZSh0aGlzLnJlc2l6ZVNpZGUsIHRoaXMubW9kZWwsIG9mZnNldCwgdGhpcy5nZXREaXN0YW5jZVRvRWRnZShldmVudCkpO1xuXG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBjb25zdHJhaW5SZWN0KFxuICAgICAgcmVzaXplZCxcbiAgICAgIHRoaXMubW9kZWwsXG4gICAgICB0aGlzLnJlc2l6ZVNpZGUsXG4gICAgICB0aGlzLm1pbldpZHRoLFxuICAgICAgdGhpcy5taW5IZWlnaHQsXG4gICAgICB0aGlzLm1heFdpZHRoLFxuICAgICAgdGhpcy5tYXhIZWlnaHQsXG4gICAgKTtcblxuICAgIHRoaXMubW9kZWwuc2V0UG9pbnQoeyB4LCB5IH0pO1xuICAgIHRoaXMubW9kZWwud2lkdGguc2V0KHdpZHRoKTtcbiAgICB0aGlzLm1vZGVsLmhlaWdodC5zZXQoaGVpZ2h0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVTaWRlID0gbnVsbDtcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERpc3RhbmNlVG9FZGdlKGV2ZW50OiBQb2ludGVyRXZlbnQpOiBEaXN0YW5jZVRvRWRnZSB7XG4gICAgY29uc3QgZmxvd1BvaW50ID0gdGhpcy5zcGFjZVBvaW50Q29udGV4dC5kb2N1bWVudFBvaW50VG9GbG93UG9pbnQoeyB4OiBldmVudC54LCB5OiBldmVudC55IH0pO1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5tb2RlbC5nbG9iYWxQb2ludCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxlZnQ6IGZsb3dQb2ludC54IC0geCxcbiAgICAgIHJpZ2h0OiBmbG93UG9pbnQueCAtICh4ICsgdGhpcy5tb2RlbC53aWR0aCgpKSxcbiAgICAgIHRvcDogZmxvd1BvaW50LnkgLSB5LFxuICAgICAgYm90dG9tOiBmbG93UG9pbnQueSAtICh5ICsgdGhpcy5tb2RlbC5oZWlnaHQoKSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlSZXNpemUoc2lkZTogU2lkZSwgbW9kZWw6IE5vZGVNb2RlbCwgb2Zmc2V0OiBQb2ludCwgZGlzdGFuY2VUb0VkZ2U6IERpc3RhbmNlVG9FZGdlKTogUmVjdCB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBtb2RlbC5wb2ludCgpO1xuICAgIGNvbnN0IHdpZHRoID0gbW9kZWwud2lkdGgoKTtcbiAgICBjb25zdCBoZWlnaHQgPSBtb2RlbC5oZWlnaHQoKTtcbiAgICBjb25zdCBbc25hcFgsIHNuYXBZXSA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNuYXBHcmlkKCk7XG5cbiAgICBzd2l0Y2ggKHNpZGUpIHtcbiAgICAgIGNhc2UgJ2xlZnQnOiB7XG4gICAgICAgIGNvbnN0IG1vdmVtZW50WCA9IG9mZnNldC54ICsgZGlzdGFuY2VUb0VkZ2UubGVmdDtcbiAgICAgICAgY29uc3QgbmV3WCA9IGFsaWduKHggKyBtb3ZlbWVudFgsIHNuYXBYKTtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gbmV3WCAtIHg7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBuZXdYLFxuICAgICAgICAgIHksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoIC0gZGVsdGFYLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3JpZ2h0Jzoge1xuICAgICAgICBjb25zdCBtb3ZlbWVudFggPSBvZmZzZXQueCArIGRpc3RhbmNlVG9FZGdlLnJpZ2h0O1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IGFsaWduKHdpZHRoICsgbW92ZW1lbnRYLCBzbmFwWCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHksXG4gICAgICAgICAgd2lkdGg6IG5ld1dpZHRoLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RvcCc6IHtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRZID0gb2Zmc2V0LnkgKyBkaXN0YW5jZVRvRWRnZS50b3A7XG4gICAgICAgIGNvbnN0IG5ld1kgPSBhbGlnbih5ICsgbW92ZW1lbnRZLCBzbmFwWSk7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG5ld1kgLSB5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5OiBuZXdZLFxuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC0gZGVsdGFZLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tJzoge1xuICAgICAgICBjb25zdCBtb3ZlbWVudFkgPSBvZmZzZXQueSArIGRpc3RhbmNlVG9FZGdlLmJvdHRvbTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gYWxpZ24oaGVpZ2h0ICsgbW92ZW1lbnRZLCBzbmFwWSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHksXG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBuZXdIZWlnaHQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlICd0b3AtbGVmdCc6IHtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRYID0gb2Zmc2V0LnggKyBkaXN0YW5jZVRvRWRnZS5sZWZ0O1xuICAgICAgICBjb25zdCBtb3ZlbWVudFkgPSBvZmZzZXQueSArIGRpc3RhbmNlVG9FZGdlLnRvcDtcbiAgICAgICAgY29uc3QgbmV3WCA9IGFsaWduKHggKyBtb3ZlbWVudFgsIHNuYXBYKTtcbiAgICAgICAgY29uc3QgbmV3WSA9IGFsaWduKHkgKyBtb3ZlbWVudFksIHNuYXBZKTtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gbmV3WCAtIHg7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG5ld1kgLSB5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogbmV3WCxcbiAgICAgICAgICB5OiBuZXdZLFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCAtIGRlbHRhWCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCAtIGRlbHRhWSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RvcC1yaWdodCc6IHtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRYID0gb2Zmc2V0LnggKyBkaXN0YW5jZVRvRWRnZS5yaWdodDtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRZID0gb2Zmc2V0LnkgKyBkaXN0YW5jZVRvRWRnZS50b3A7XG4gICAgICAgIGNvbnN0IG5ld1kgPSBhbGlnbih5ICsgbW92ZW1lbnRZLCBzbmFwWSk7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG5ld1kgLSB5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5OiBuZXdZLFxuICAgICAgICAgIHdpZHRoOiBhbGlnbih3aWR0aCArIG1vdmVtZW50WCwgc25hcFgpLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC0gZGVsdGFZLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOiB7XG4gICAgICAgIGNvbnN0IG1vdmVtZW50WCA9IG9mZnNldC54ICsgZGlzdGFuY2VUb0VkZ2UubGVmdDtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRZID0gb2Zmc2V0LnkgKyBkaXN0YW5jZVRvRWRnZS5ib3R0b207XG4gICAgICAgIGNvbnN0IG5ld1ggPSBhbGlnbih4ICsgbW92ZW1lbnRYLCBzbmFwWCk7XG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IG5ld1ggLSB4O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogbmV3WCxcbiAgICAgICAgICB5LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCAtIGRlbHRhWCxcbiAgICAgICAgICBoZWlnaHQ6IGFsaWduKGhlaWdodCArIG1vdmVtZW50WSwgc25hcFkpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0Jzoge1xuICAgICAgICBjb25zdCBtb3ZlbWVudFggPSBvZmZzZXQueCArIGRpc3RhbmNlVG9FZGdlLnJpZ2h0O1xuICAgICAgICBjb25zdCBtb3ZlbWVudFkgPSBvZmZzZXQueSArIGRpc3RhbmNlVG9FZGdlLmJvdHRvbTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeSxcbiAgICAgICAgICB3aWR0aDogYWxpZ24od2lkdGggKyBtb3ZlbWVudFgsIHNuYXBYKSxcbiAgICAgICAgICBoZWlnaHQ6IGFsaWduKGhlaWdodCArIG1vdmVtZW50WSwgc25hcFkpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjT2Zmc2V0KG1vdmVtZW50WDogbnVtYmVyLCBtb3ZlbWVudFk6IG51bWJlciwgem9vbTogbnVtYmVyKTogUG9pbnQge1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKG1vdmVtZW50WCAvIHpvb20pLFxuICAgIHk6IHJvdW5kKG1vdmVtZW50WSAvIHpvb20pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb25zdHJhaW5SZWN0KFxuICByZWN0OiBSZWN0LFxuICBtb2RlbDogTm9kZU1vZGVsLFxuICBzaWRlOiBTaWRlLFxuICBtaW5XaWR0aDogbnVtYmVyLFxuICBtaW5IZWlnaHQ6IG51bWJlcixcbiAgbWF4V2lkdGg6IG51bWJlcixcbiAgbWF4SGVpZ2h0OiBudW1iZXIsXG4pIHtcbiAgbGV0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdDtcblxuICAvLyAxLiBQcmV2ZW50IG5lZ2F0aXZlIGRpbWVuc2lvbnNcbiAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgMCk7XG4gIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgMCk7XG5cbiAgLy8gMi4gQXBwbHkgbWluaW11bSBzaXplIGNvbnN0cmFpbnRzXG4gIHdpZHRoID0gTWF0aC5tYXgobWluV2lkdGgsIHdpZHRoKTtcbiAgaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBoZWlnaHQpO1xuICB3aWR0aCA9IE1hdGgubWluKG1heFdpZHRoLCB3aWR0aCk7XG4gIGhlaWdodCA9IE1hdGgubWluKG1heEhlaWdodCwgaGVpZ2h0KTtcblxuICAvLyBBcHBseSBsZWZ0L3RvcCBjb25zdHJhaW50cyBiYXNlZCBvbiBtaW5pbXVtIHNpemVcbiAgeCA9IE1hdGgubWluKHgsIG1vZGVsLnBvaW50KCkueCArIG1vZGVsLndpZHRoKCkgLSBtaW5XaWR0aCk7XG4gIHkgPSBNYXRoLm1pbih5LCBtb2RlbC5wb2ludCgpLnkgKyBtb2RlbC5oZWlnaHQoKSAtIG1pbkhlaWdodCk7XG4gIHggPSBNYXRoLm1heCh4LCBtb2RlbC5wb2ludCgpLnggKyBtb2RlbC53aWR0aCgpIC0gbWF4V2lkdGgpO1xuICB5ID0gTWF0aC5tYXgoeSwgbW9kZWwucG9pbnQoKS55ICsgbW9kZWwuaGVpZ2h0KCkgLSBtYXhIZWlnaHQpO1xuXG4gIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpO1xuICAvLyAzLiBBcHBseSBtYXhpbXVtIHNpemUgY29uc3RyYWludHMgYmFzZWQgb24gcGFyZW50IHNpemUgKGlmIGV4aXN0cylcbiAgaWYgKHBhcmVudCkge1xuICAgIGNvbnN0IHBhcmVudFdpZHRoID0gcGFyZW50LndpZHRoKCk7XG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcGFyZW50LmhlaWdodCgpO1xuICAgIGNvbnN0IG1vZGVsWCA9IG1vZGVsLnBvaW50KCkueDtcbiAgICBjb25zdCBtb2RlbFkgPSBtb2RlbC5wb2ludCgpLnk7XG5cbiAgICB4ID0gTWF0aC5tYXgoeCwgMCk7XG4gICAgeSA9IE1hdGgubWF4KHksIDApO1xuXG4gICAgLy8gU3RvcCByZXNpemluZyB3aGVuIGhpdHRpbmcgbGVmdCBvciB0b3AgYm91bmRhcnlcbiAgICBpZiAoc2lkZS5pbmNsdWRlcygnbGVmdCcpICYmIHggPT09IDApIHtcbiAgICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIG1vZGVsWCArIG1vZGVsLndpZHRoKCkpO1xuICAgIH1cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygndG9wJykgJiYgeSA9PT0gMCkge1xuICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCBtb2RlbFkgKyBtb2RlbC5oZWlnaHQoKSk7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgcmlnaHQvYm90dG9tIHJlc2l6aW5nIHdpdGhvdXQgYmVpbmcgYmxvY2tlZFxuICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIHBhcmVudFdpZHRoIC0geCk7XG4gICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCBwYXJlbnRIZWlnaHQgLSB5KTtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kcyA9IGdldE5vZGVzQm91bmRzKG1vZGVsLmNoaWxkcmVuKCkpO1xuICAvLyA0LiBBcHBseSBjaGlsZCBub2RlIGNvbnN0cmFpbnRzIChpZiBjaGlsZHJlbiBleGlzdClcbiAgaWYgKGJvdW5kcykge1xuICAgIGlmIChzaWRlLmluY2x1ZGVzKCdsZWZ0JykpIHtcbiAgICAgIHggPSBNYXRoLm1pbih4LCBtb2RlbC5wb2ludCgpLnggKyBtb2RlbC53aWR0aCgpIC0gKGJvdW5kcy54ICsgYm91bmRzLndpZHRoKSk7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBib3VuZHMueCArIGJvdW5kcy53aWR0aCk7XG4gICAgfVxuXG4gICAgaWYgKHNpZGUuaW5jbHVkZXMoJ3JpZ2h0JykpIHtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGJvdW5kcy54ICsgYm91bmRzLndpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygnYm90dG9tJykpIHtcbiAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygndG9wJykpIHtcbiAgICAgIHkgPSBNYXRoLm1pbih5LCBtb2RlbC5wb2ludCgpLnkgKyBtb2RlbC5oZWlnaHQoKSAtIChib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpKTtcbiAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gIH07XG59XG4iLCI8bmctdGVtcGxhdGUgI3Jlc2l6ZXI+XG4gIDxzdmc6Zz5cbiAgICA8IS0tIHRvcCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJ0b3BcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIi1nYXAoKVwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIi1nYXAoKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgndG9wJywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBMZWZ0IGxpbmUgLS0+XG4gICAgPHN2ZzpsaW5lXG4gICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueTFdPVwibGluZUdhcFwiXG4gICAgICBbYXR0ci54Ml09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2xlZnQnLCAkZXZlbnQpXCIgLz5cbiAgICA8IS0tIEJvdHRvbSBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJib3R0b21cIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXAoKVwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXAoKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tJywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBSaWdodCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJyaWdodFwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIFthdHRyLngxXT1cIm1vZGVsLnNpemUoKS53aWR0aCArIGdhcCgpXCJcbiAgICAgIFthdHRyLnkxXT1cImxpbmVHYXBcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoICsgZ2FwKClcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ3JpZ2h0JywgJGV2ZW50KVwiIC8+XG5cbiAgICA8IS0tIFRvcCBMZWZ0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJ0b3AtbGVmdFwiXG4gICAgICBbYXR0ci54XT1cIi0oaGFuZGxlU2l6ZSAvIDIpIC0gZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtbGVmdCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBUb3AgcmlnaHQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cInRvcC1yaWdodFwiXG4gICAgICBbYXR0ci54XT1cIm1vZGVsLnNpemUoKS53aWR0aCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtcmlnaHQnLCAkZXZlbnQpXCIgLz5cblxuICAgIDwhLS0gQm90dG9tIGxlZnQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1sZWZ0XCJcbiAgICAgIFthdHRyLnhdPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXAoKVwiXG4gICAgICBbYXR0ci55XT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgLSBoYW5kbGVTaXplIC8gMiArIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdib3R0b20tbGVmdCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBCb3R0b20gcmlnaHQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1yaWdodFwiXG4gICAgICBbYXR0ci54XT1cIm1vZGVsLnNpemUoKS53aWR0aCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCJtb2RlbC5zaXplKCkuaGVpZ2h0IC0gaGFuZGxlU2l6ZSAvIDIgKyBnYXAoKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tLXJpZ2h0JywgJGV2ZW50KVwiIC8+XG4gIDwvc3ZnOmc+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGVudCAvPlxuIl19
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUdOLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFJM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1C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UUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0UsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLENBQUM7UUFDRCxDQUFDO1FBQ0QsS0FBSztRQUNMLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgaW5wdXQsXG4gIHZpZXdDaGlsZCxcbiAgZWZmZWN0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSAnLi4vLi4vdXRpbHMvcm91bmQnO1xuaW1wb3J0IHsgTWljcm90YXNrIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9taWNyb3Rhc2suZGVjb3JhdG9yJztcbmltcG9ydCB7IGdldE5vZGVzQm91bmRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9kZXMnO1xuaW1wb3J0IHsgTm9kZUFjY2Vzc29yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBSZWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZWN0JztcbmltcG9ydCB7IFBvaW50ZXJFdmVudCB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcm9vdC1wb2ludGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTcGFjZVBvaW50Q29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcG9pbnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGFsaWduIH0gZnJvbSAnLi4vLi4vdXRpbHMvYWxpZ24tbnVtYmVyJztcblxudHlwZSBTaWRlID0gJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCc7XG5cbmludGVyZmFjZSBEaXN0YW5jZVRvRWRnZSB7XG4gIGxlZnQ6IG51bWJlcjtcbiAgcmlnaHQ6IG51bWJlcjtcbiAgdG9wOiBudW1iZXI7XG4gIGJvdHRvbTogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbcmVzaXphYmxlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXNpemFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1BvaW50ZXJEaXJlY3RpdmVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG5vZGVBY2Nlc3NvciA9IGluamVjdChOb2RlQWNjZXNzb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb290UG9pbnRlciA9IGluamVjdChSb290UG9pbnRlckRpcmVjdGl2ZSk7XG4gIHByaXZhdGUgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSk7XG4gIHByaXZhdGUgc3BhY2VQb2ludENvbnRleHQgPSBpbmplY3QoU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUpO1xuICBwcml2YXRlIHNldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBob3N0UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHB1YmxpYyByZXNpemFibGUgPSBpbnB1dDxib29sZWFuIHwgJyc+KCk7XG5cbiAgcHVibGljIHJlc2l6ZXJDb2xvciA9IGlucHV0KCcjMmU0MTRjJyk7XG5cbiAgcHVibGljIGdhcCA9IGlucHV0KDEuNSk7XG5cbiAgcHJpdmF0ZSByZXNpemVyID0gdmlld0NoaWxkLnJlcXVpcmVkPFRlbXBsYXRlUmVmPHVua25vd24+PigncmVzaXplcicpO1xuXG4gIHByb3RlY3RlZCBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZUFjY2Vzc29yLm1vZGVsKCkhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxpbmVHYXAgPSAzO1xuICBwcm90ZWN0ZWQgaGFuZGxlU2l6ZSA9IDY7XG5cbiAgcHJpdmF0ZSByZXNpemVTaWRlOiBTaWRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSB6b29tID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydCgpLnpvb20gPz8gMCk7XG5cbiAgcHJpdmF0ZSBtaW5XaWR0aCA9IDA7XG4gIHByaXZhdGUgbWluSGVpZ2h0ID0gMDtcbiAgcHJpdmF0ZSBtYXhXaWR0aCA9IEluZmluaXR5O1xuICBwcml2YXRlIG1heEhlaWdodCA9IEluZmluaXR5O1xuXG4gIC8vIFRPRE86IGFsbG93IHJlc3ppZSBiZXNpZGUgdGhlIGZsb3dcbiAgcHJvdGVjdGVkIHJlc2l6ZU9uR2xvYmFsTW91c2VNb3ZlID0gdGhpcy5yb290UG9pbnRlci5wb2ludGVyTW92ZW1lbnQkXG4gICAgLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5yZXNpemVTaWRlICE9PSBudWxsKSxcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50Lm1vdmVtZW50WCAhPT0gMCB8fCBldmVudC5tb3ZlbWVudFkgIT09IDApLFxuICAgICAgdGFwKChldmVudCkgPT4gdGhpcy5yZXNpemUoZXZlbnQpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgIClcbiAgICAuc3Vic2NyaWJlKCk7XG5cbiAgcHJvdGVjdGVkIGVuZFJlc2l6ZU9uR2xvYmFsTW91c2VVcCA9IHRoaXMucm9vdFBvaW50ZXIuZG9jdW1lbnRQb2ludGVyRW5kJFxuICAgIC5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuZW5kUmVzaXplKCkpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc2l6YWJsZSA9IHRoaXMucmVzaXphYmxlKCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiByZXNpemFibGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRoaXMubW9kZWwucmVzaXphYmxlLnNldChyZXNpemFibGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubW9kZWwucmVzaXphYmxlLnNldCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuY29udHJvbGxlZEJ5UmVzaXplci5zZXQodHJ1ZSk7XG4gICAgdGhpcy5tb2RlbC5yZXNpemVyVGVtcGxhdGUuc2V0KHRoaXMucmVzaXplcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLmNvbnRyb2xsZWRCeVJlc2l6ZXIuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIEBNaWNyb3Rhc2tcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm1pbldpZHRoID0gK2dldENvbXB1dGVkU3R5bGUodGhpcy5ob3N0UmVmLm5hdGl2ZUVsZW1lbnQpLm1pbldpZHRoLnJlcGxhY2UoJ3B4JywgJycpIHx8IDA7XG4gICAgdGhpcy5taW5IZWlnaHQgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmhvc3RSZWYubmF0aXZlRWxlbWVudCkubWluSGVpZ2h0LnJlcGxhY2UoJ3B4JywgJycpIHx8IDA7XG4gICAgdGhpcy5tYXhXaWR0aCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KS5tYXhXaWR0aC5yZXBsYWNlKCdweCcsICcnKSB8fCBJbmZpbml0eTtcbiAgICB0aGlzLm1heEhlaWdodCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KS5tYXhIZWlnaHQucmVwbGFjZSgncHgnLCAnJykgfHwgSW5maW5pdHk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RhcnRSZXNpemUoc2lkZTogU2lkZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZXNpemVTaWRlID0gc2lkZTtcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNpemUoZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy5yZXNpemVTaWRlKSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXQgPSBjYWxjT2Zmc2V0KGV2ZW50Lm1vdmVtZW50WCwgZXZlbnQubW92ZW1lbnRZLCB0aGlzLnpvb20oKSk7XG5cbiAgICBjb25zdCByZXNpemVkID0gdGhpcy5hcHBseVJlc2l6ZSh0aGlzLnJlc2l6ZVNpZGUsIHRoaXMubW9kZWwsIG9mZnNldCwgdGhpcy5nZXREaXN0YW5jZVRvRWRnZShldmVudCkpO1xuXG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBjb25zdHJhaW5SZWN0KFxuICAgICAgcmVzaXplZCxcbiAgICAgIHRoaXMubW9kZWwsXG4gICAgICB0aGlzLnJlc2l6ZVNpZGUsXG4gICAgICB0aGlzLm1pbldpZHRoLFxuICAgICAgdGhpcy5taW5IZWlnaHQsXG4gICAgICB0aGlzLm1heFdpZHRoLFxuICAgICAgdGhpcy5tYXhIZWlnaHQsXG4gICAgKTtcblxuICAgIHRoaXMubW9kZWwuc2V0UG9pbnQoeyB4LCB5IH0pO1xuICAgIHRoaXMubW9kZWwud2lkdGguc2V0KHdpZHRoKTtcbiAgICB0aGlzLm1vZGVsLmhlaWdodC5zZXQoaGVpZ2h0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVTaWRlID0gbnVsbDtcbiAgICB0aGlzLm1vZGVsLnJlc2l6aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERpc3RhbmNlVG9FZGdlKGV2ZW50OiBQb2ludGVyRXZlbnQpOiBEaXN0YW5jZVRvRWRnZSB7XG4gICAgY29uc3QgZmxvd1BvaW50ID0gdGhpcy5zcGFjZVBvaW50Q29udGV4dC5kb2N1bWVudFBvaW50VG9GbG93UG9pbnQoeyB4OiBldmVudC54LCB5OiBldmVudC55IH0pO1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5tb2RlbC5nbG9iYWxQb2ludCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxlZnQ6IGZsb3dQb2ludC54IC0geCxcbiAgICAgIHJpZ2h0OiBmbG93UG9pbnQueCAtICh4ICsgdGhpcy5tb2RlbC53aWR0aCgpKSxcbiAgICAgIHRvcDogZmxvd1BvaW50LnkgLSB5LFxuICAgICAgYm90dG9tOiBmbG93UG9pbnQueSAtICh5ICsgdGhpcy5tb2RlbC5oZWlnaHQoKSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlSZXNpemUoc2lkZTogU2lkZSwgbW9kZWw6IE5vZGVNb2RlbCwgb2Zmc2V0OiBQb2ludCwgZGlzdGFuY2VUb0VkZ2U6IERpc3RhbmNlVG9FZGdlKTogUmVjdCB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBtb2RlbC5wb2ludCgpO1xuICAgIGNvbnN0IHdpZHRoID0gbW9kZWwud2lkdGgoKTtcbiAgICBjb25zdCBoZWlnaHQgPSBtb2RlbC5oZWlnaHQoKTtcbiAgICBjb25zdCBbc25hcFgsIHNuYXBZXSA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNuYXBHcmlkKCk7XG5cbiAgICBzd2l0Y2ggKHNpZGUpIHtcbiAgICAgIGNhc2UgJ2xlZnQnOiB7XG4gICAgICAgIGNvbnN0IG1vdmVtZW50WCA9IG9mZnNldC54ICsgZGlzdGFuY2VUb0VkZ2UubGVmdDtcbiAgICAgICAgY29uc3QgbmV3WCA9IGFsaWduKHggKyBtb3ZlbWVudFgsIHNuYXBYKTtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gbmV3WCAtIHg7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBuZXdYLFxuICAgICAgICAgIHksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoIC0gZGVsdGFYLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3JpZ2h0Jzoge1xuICAgICAgICBjb25zdCBtb3ZlbWVudFggPSBvZmZzZXQueCArIGRpc3RhbmNlVG9FZGdlLnJpZ2h0O1xuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IGFsaWduKHdpZHRoICsgbW92ZW1lbnRYLCBzbmFwWCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHksXG4gICAgICAgICAgd2lkdGg6IG5ld1dpZHRoLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RvcCc6IHtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRZID0gb2Zmc2V0LnkgKyBkaXN0YW5jZVRvRWRnZS50b3A7XG4gICAgICAgIGNvbnN0IG5ld1kgPSBhbGlnbih5ICsgbW92ZW1lbnRZLCBzbmFwWSk7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG5ld1kgLSB5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5OiBuZXdZLFxuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC0gZGVsdGFZLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tJzoge1xuICAgICAgICBjb25zdCBtb3ZlbWVudFkgPSBvZmZzZXQueSArIGRpc3RhbmNlVG9FZGdlLmJvdHRvbTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gYWxpZ24oaGVpZ2h0ICsgbW92ZW1lbnRZLCBzbmFwWSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHksXG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBuZXdIZWlnaHQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlICd0b3AtbGVmdCc6IHtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRYID0gb2Zmc2V0LnggKyBkaXN0YW5jZVRvRWRnZS5sZWZ0O1xuICAgICAgICBjb25zdCBtb3ZlbWVudFkgPSBvZmZzZXQueSArIGRpc3RhbmNlVG9FZGdlLnRvcDtcbiAgICAgICAgY29uc3QgbmV3WCA9IGFsaWduKHggKyBtb3ZlbWVudFgsIHNuYXBYKTtcbiAgICAgICAgY29uc3QgbmV3WSA9IGFsaWduKHkgKyBtb3ZlbWVudFksIHNuYXBZKTtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gbmV3WCAtIHg7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG5ld1kgLSB5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogbmV3WCxcbiAgICAgICAgICB5OiBuZXdZLFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCAtIGRlbHRhWCxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCAtIGRlbHRhWSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RvcC1yaWdodCc6IHtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRYID0gb2Zmc2V0LnggKyBkaXN0YW5jZVRvRWRnZS5yaWdodDtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRZID0gb2Zmc2V0LnkgKyBkaXN0YW5jZVRvRWRnZS50b3A7XG4gICAgICAgIGNvbnN0IG5ld1kgPSBhbGlnbih5ICsgbW92ZW1lbnRZLCBzbmFwWSk7XG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IG5ld1kgLSB5O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5OiBuZXdZLFxuICAgICAgICAgIHdpZHRoOiBhbGlnbih3aWR0aCArIG1vdmVtZW50WCwgc25hcFgpLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC0gZGVsdGFZLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOiB7XG4gICAgICAgIGNvbnN0IG1vdmVtZW50WCA9IG9mZnNldC54ICsgZGlzdGFuY2VUb0VkZ2UubGVmdDtcbiAgICAgICAgY29uc3QgbW92ZW1lbnRZID0gb2Zmc2V0LnkgKyBkaXN0YW5jZVRvRWRnZS5ib3R0b207XG4gICAgICAgIGNvbnN0IG5ld1ggPSBhbGlnbih4ICsgbW92ZW1lbnRYLCBzbmFwWCk7XG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IG5ld1ggLSB4O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogbmV3WCxcbiAgICAgICAgICB5LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCAtIGRlbHRhWCxcbiAgICAgICAgICBoZWlnaHQ6IGFsaWduKGhlaWdodCArIG1vdmVtZW50WSwgc25hcFkpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0Jzoge1xuICAgICAgICBjb25zdCBtb3ZlbWVudFggPSBvZmZzZXQueCArIGRpc3RhbmNlVG9FZGdlLnJpZ2h0O1xuICAgICAgICBjb25zdCBtb3ZlbWVudFkgPSBvZmZzZXQueSArIGRpc3RhbmNlVG9FZGdlLmJvdHRvbTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeSxcbiAgICAgICAgICB3aWR0aDogYWxpZ24od2lkdGggKyBtb3ZlbWVudFgsIHNuYXBYKSxcbiAgICAgICAgICBoZWlnaHQ6IGFsaWduKGhlaWdodCArIG1vdmVtZW50WSwgc25hcFkpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjT2Zmc2V0KG1vdmVtZW50WDogbnVtYmVyLCBtb3ZlbWVudFk6IG51bWJlciwgem9vbTogbnVtYmVyKTogUG9pbnQge1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKG1vdmVtZW50WCAvIHpvb20pLFxuICAgIHk6IHJvdW5kKG1vdmVtZW50WSAvIHpvb20pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb25zdHJhaW5SZWN0KFxuICByZWN0OiBSZWN0LFxuICBtb2RlbDogTm9kZU1vZGVsLFxuICBzaWRlOiBTaWRlLFxuICBtaW5XaWR0aDogbnVtYmVyLFxuICBtaW5IZWlnaHQ6IG51bWJlcixcbiAgbWF4V2lkdGg6IG51bWJlcixcbiAgbWF4SGVpZ2h0OiBudW1iZXIsXG4pIHtcbiAgbGV0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gcmVjdDtcblxuICAvLyAxLiBQcmV2ZW50IG5lZ2F0aXZlIGRpbWVuc2lvbnNcbiAgd2lkdGggPSBNYXRoLm1heCh3aWR0aCwgMCk7XG4gIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgMCk7XG5cbiAgLy8gMi4gQXBwbHkgbWluaW11bSBzaXplIGNvbnN0cmFpbnRzXG4gIHdpZHRoID0gTWF0aC5tYXgobWluV2lkdGgsIHdpZHRoKTtcbiAgaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBoZWlnaHQpO1xuICB3aWR0aCA9IE1hdGgubWluKG1heFdpZHRoLCB3aWR0aCk7XG4gIGhlaWdodCA9IE1hdGgubWluKG1heEhlaWdodCwgaGVpZ2h0KTtcblxuICAvLyBBcHBseSBsZWZ0L3RvcCBjb25zdHJhaW50cyBiYXNlZCBvbiBtaW5pbXVtIHNpemVcbiAgeCA9IE1hdGgubWluKHgsIG1vZGVsLnBvaW50KCkueCArIG1vZGVsLndpZHRoKCkgLSBtaW5XaWR0aCk7XG4gIHkgPSBNYXRoLm1pbih5LCBtb2RlbC5wb2ludCgpLnkgKyBtb2RlbC5oZWlnaHQoKSAtIG1pbkhlaWdodCk7XG4gIHggPSBNYXRoLm1heCh4LCBtb2RlbC5wb2ludCgpLnggKyBtb2RlbC53aWR0aCgpIC0gbWF4V2lkdGgpO1xuICB5ID0gTWF0aC5tYXgoeSwgbW9kZWwucG9pbnQoKS55ICsgbW9kZWwuaGVpZ2h0KCkgLSBtYXhIZWlnaHQpO1xuXG4gIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpO1xuICAvLyAzLiBBcHBseSBtYXhpbXVtIHNpemUgY29uc3RyYWludHMgYmFzZWQgb24gcGFyZW50IHNpemUgKGlmIGV4aXN0cylcbiAgaWYgKHBhcmVudCkge1xuICAgIGNvbnN0IHBhcmVudFdpZHRoID0gcGFyZW50LndpZHRoKCk7XG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcGFyZW50LmhlaWdodCgpO1xuICAgIGNvbnN0IG1vZGVsWCA9IG1vZGVsLnBvaW50KCkueDtcbiAgICBjb25zdCBtb2RlbFkgPSBtb2RlbC5wb2ludCgpLnk7XG5cbiAgICB4ID0gTWF0aC5tYXgoeCwgMCk7XG4gICAgeSA9IE1hdGgubWF4KHksIDApO1xuXG4gICAgLy8gU3RvcCByZXNpemluZyB3aGVuIGhpdHRpbmcgbGVmdCBvciB0b3AgYm91bmRhcnlcbiAgICBpZiAoc2lkZS5pbmNsdWRlcygnbGVmdCcpICYmIHggPT09IDApIHtcbiAgICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIG1vZGVsWCArIG1vZGVsLndpZHRoKCkpO1xuICAgIH1cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygndG9wJykgJiYgeSA9PT0gMCkge1xuICAgICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCBtb2RlbFkgKyBtb2RlbC5oZWlnaHQoKSk7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgcmlnaHQvYm90dG9tIHJlc2l6aW5nIHdpdGhvdXQgYmVpbmcgYmxvY2tlZFxuICAgIHdpZHRoID0gTWF0aC5taW4od2lkdGgsIHBhcmVudFdpZHRoIC0geCk7XG4gICAgaGVpZ2h0ID0gTWF0aC5taW4oaGVpZ2h0LCBwYXJlbnRIZWlnaHQgLSB5KTtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kcyA9IGdldE5vZGVzQm91bmRzKG1vZGVsLmNoaWxkcmVuKCkpO1xuICAvLyA0LiBBcHBseSBjaGlsZCBub2RlIGNvbnN0cmFpbnRzIChpZiBjaGlsZHJlbiBleGlzdClcbiAgaWYgKGJvdW5kcykge1xuICAgIGlmIChzaWRlLmluY2x1ZGVzKCdsZWZ0JykpIHtcbiAgICAgIHggPSBNYXRoLm1pbih4LCBtb2RlbC5wb2ludCgpLnggKyBtb2RlbC53aWR0aCgpIC0gKGJvdW5kcy54ICsgYm91bmRzLndpZHRoKSk7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KHdpZHRoLCBib3VuZHMueCArIGJvdW5kcy53aWR0aCk7XG4gICAgfVxuXG4gICAgaWYgKHNpZGUuaW5jbHVkZXMoJ3JpZ2h0JykpIHtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgod2lkdGgsIGJvdW5kcy54ICsgYm91bmRzLndpZHRoKTtcbiAgICB9XG5cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygnYm90dG9tJykpIHtcbiAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAoc2lkZS5pbmNsdWRlcygndG9wJykpIHtcbiAgICAgIHkgPSBNYXRoLm1pbih5LCBtb2RlbC5wb2ludCgpLnkgKyBtb2RlbC5oZWlnaHQoKSAtIChib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpKTtcbiAgICAgIGhlaWdodCA9IE1hdGgubWF4KGhlaWdodCwgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gIH07XG59XG4iLCI8bmctdGVtcGxhdGUgI3Jlc2l6ZXI+XG4gIDxzdmc6Zz5cbiAgICA8IS0tIHRvcCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJ0b3BcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIi1nYXAoKVwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIi1nYXAoKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgndG9wJywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBMZWZ0IGxpbmUgLS0+XG4gICAgPHN2ZzpsaW5lXG4gICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueTFdPVwibGluZUdhcFwiXG4gICAgICBbYXR0ci54Ml09XCItZ2FwKClcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ2xlZnQnLCAkZXZlbnQpXCIgLz5cbiAgICA8IS0tIEJvdHRvbSBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJib3R0b21cIlxuICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICBbYXR0ci54MV09XCJsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkxXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXAoKVwiXG4gICAgICBbYXR0ci54Ml09XCJtb2RlbC5zaXplKCkud2lkdGggLSBsaW5lR2FwXCJcbiAgICAgIFthdHRyLnkyXT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgKyBnYXAoKVwiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tJywgJGV2ZW50KVwiIC8+XG4gICAgPCEtLSBSaWdodCBsaW5lIC0tPlxuICAgIDxzdmc6bGluZVxuICAgICAgY2xhc3M9XCJyaWdodFwiXG4gICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgIFthdHRyLngxXT1cIm1vZGVsLnNpemUoKS53aWR0aCArIGdhcCgpXCJcbiAgICAgIFthdHRyLnkxXT1cImxpbmVHYXBcIlxuICAgICAgW2F0dHIueDJdPVwibW9kZWwuc2l6ZSgpLndpZHRoICsgZ2FwKClcIlxuICAgICAgW2F0dHIueTJdPVwibW9kZWwuc2l6ZSgpLmhlaWdodCAtIGxpbmVHYXBcIlxuICAgICAgW2F0dHIuc3Ryb2tlXT1cInJlc2l6ZXJDb2xvcigpXCJcbiAgICAgIChwb2ludGVyU3RhcnQpPVwic3RhcnRSZXNpemUoJ3JpZ2h0JywgJGV2ZW50KVwiIC8+XG5cbiAgICA8IS0tIFRvcCBMZWZ0IC0tPlxuICAgIDxzdmc6cmVjdFxuICAgICAgY2xhc3M9XCJ0b3AtbGVmdFwiXG4gICAgICBbYXR0ci54XT1cIi0oaGFuZGxlU2l6ZSAvIDIpIC0gZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtbGVmdCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBUb3AgcmlnaHQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cInRvcC1yaWdodFwiXG4gICAgICBbYXR0ci54XT1cIm1vZGVsLnNpemUoKS53aWR0aCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCItKGhhbmRsZVNpemUgLyAyKSAtIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCd0b3AtcmlnaHQnLCAkZXZlbnQpXCIgLz5cblxuICAgIDwhLS0gQm90dG9tIGxlZnQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1sZWZ0XCJcbiAgICAgIFthdHRyLnhdPVwiLShoYW5kbGVTaXplIC8gMikgLSBnYXAoKVwiXG4gICAgICBbYXR0ci55XT1cIm1vZGVsLnNpemUoKS5oZWlnaHQgLSBoYW5kbGVTaXplIC8gMiArIGdhcCgpXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImhhbmRsZVNpemVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJyZXNpemVyQ29sb3IoKVwiXG4gICAgICAocG9pbnRlclN0YXJ0KT1cInN0YXJ0UmVzaXplKCdib3R0b20tbGVmdCcsICRldmVudClcIiAvPlxuXG4gICAgPCEtLSBCb3R0b20gcmlnaHQgLS0+XG4gICAgPHN2ZzpyZWN0XG4gICAgICBjbGFzcz1cImJvdHRvbS1yaWdodFwiXG4gICAgICBbYXR0ci54XT1cIm1vZGVsLnNpemUoKS53aWR0aCAtIGhhbmRsZVNpemUgLyAyICsgZ2FwKClcIlxuICAgICAgW2F0dHIueV09XCJtb2RlbC5zaXplKCkuaGVpZ2h0IC0gaGFuZGxlU2l6ZSAvIDIgKyBnYXAoKVwiXG4gICAgICBbYXR0ci53aWR0aF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJoYW5kbGVTaXplXCJcbiAgICAgIFthdHRyLmZpbGxdPVwicmVzaXplckNvbG9yKClcIlxuICAgICAgKHBvaW50ZXJTdGFydCk9XCJzdGFydFJlc2l6ZSgnYm90dG9tLXJpZ2h0JywgJGV2ZW50KVwiIC8+XG4gIDwvc3ZnOmc+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGVudCAvPlxuIl19
|
|
@@ -9,6 +9,8 @@ export class ResizableMockComponent {
|
|
|
9
9
|
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
|
|
10
10
|
ngOnInit() { }
|
|
11
11
|
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
|
|
12
|
+
ngOnDestroy() { }
|
|
13
|
+
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
|
|
12
14
|
ngAfterViewInit() { }
|
|
13
15
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
16
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ResizableMockComponent, isStandalone: true, selector: "[resizable]", inputs: { resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, resizerColor: { classPropertyName: "resizerColor", publicName: "resizerColor", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -22,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
22
24
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23
25
|
}]
|
|
24
26
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLW1vY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi90ZXN0aW5nL3NyYy9jb21wb25lbnQtbW9ja3MvcmVzaXphYmxlLW1vY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQzs7QUFVNUcsTUFBTSxPQUFPLHNCQUFzQjtJQU5uQztRQU9TLGNBQVMsR0FBRyxLQUFLLEVBQWdCLENBQUM7UUFDbEMsaUJBQVksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsUUFBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQVV6QjtJQVJDLHFFQUFxRTtJQUM5RCxRQUFRLEtBQUksQ0FBQztJQUVwQixxRUFBcUU7SUFDOUQsV0FBVyxLQUFJLENBQUM7SUFFdkIscUVBQXFFO0lBQzlELGVBQWUsS0FBSSxDQUFDOytHQVpoQixzQkFBc0I7bUdBQXRCLHNCQUFzQixzZEFKdkIsZ0JBQWdCOzs0RkFJZixzQkFBc0I7a0JBTmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVzaXphYmxlQ29tcG9uZW50IH0gZnJvbSAnbmd4LXZmbG93JztcbmltcG9ydCB7IEFzSW50ZXJmYWNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcmVzaXphYmxlXScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQgLz4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVzaXphYmxlTW9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIEFzSW50ZXJmYWNlPFJlc2l6YWJsZUNvbXBvbmVudD4sIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIHJlc2l6YWJsZSA9IGlucHV0PGJvb2xlYW4gfCAnJz4oKTtcbiAgcHVibGljIHJlc2l6ZXJDb2xvciA9IGlucHV0KCcjMmU0MTRjJyk7XG4gIHB1YmxpYyBnYXAgPSBpbnB1dCgxLjUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBwdWJsaWMgbmdPbkluaXQoKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge31cbn1cbiJdfQ==
|
|
@@ -483,6 +483,8 @@ class ResizableMockComponent {
|
|
|
483
483
|
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
|
|
484
484
|
ngOnInit() { }
|
|
485
485
|
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
|
|
486
|
+
ngOnDestroy() { }
|
|
487
|
+
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
|
|
486
488
|
ngAfterViewInit() { }
|
|
487
489
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
488
490
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ResizableMockComponent, isStandalone: true, selector: "[resizable]", inputs: { resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, resizerColor: { classPropertyName: "resizerColor", publicName: "resizerColor", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|