barsa-user-workspace 0.0.0-watch
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/README.md +24 -0
- package/esm2022/barsa-user-workspace.mjs +5 -0
- package/esm2022/lib/barsa-user-workspace.module.mjs +82 -0
- package/esm2022/lib/coercion/boolean-property.mjs +5 -0
- package/esm2022/lib/coercion/number-property.mjs +14 -0
- package/esm2022/lib/directives/drag-handle.mjs +29 -0
- package/esm2022/lib/directives/placeholder.mjs +31 -0
- package/esm2022/lib/directives/resize-handle.mjs +29 -0
- package/esm2022/lib/grid/grid.component.mjs +609 -0
- package/esm2022/lib/grid-item/grid-item.component.mjs +196 -0
- package/esm2022/lib/grid.definitions.mjs +3 -0
- package/esm2022/lib/grid.service.mjs +49 -0
- package/esm2022/lib/layout-container/layout-container.component.mjs +213 -0
- package/esm2022/lib/layout-grid-mapper.pipe.mjs +29 -0
- package/esm2022/lib/nav-container/nav-container.component.mjs +27 -0
- package/esm2022/lib/report-grid-layout/report-grid-layout.component.mjs +15 -0
- package/esm2022/lib/utils/client-rect.mjs +57 -0
- package/esm2022/lib/utils/grid.utils.mjs +225 -0
- package/esm2022/lib/utils/operators.mjs +17 -0
- package/esm2022/lib/utils/passive-listeners.mjs +29 -0
- package/esm2022/lib/utils/pointer.utils.mjs +110 -0
- package/esm2022/lib/utils/react-grid-layout.utils.mjs +493 -0
- package/esm2022/lib/utils/scroll.mjs +233 -0
- package/esm2022/lib/utils/transition-duration.mjs +34 -0
- package/esm2022/lib/utils.mjs +14 -0
- package/esm2022/public-api.mjs +15 -0
- package/esm2022/types.mjs +2 -0
- package/fesm2022/barsa-user-workspace.mjs +2469 -0
- package/fesm2022/barsa-user-workspace.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/barsa-user-workspace.module.d.ts +34 -0
- package/lib/coercion/boolean-property.d.ts +7 -0
- package/lib/coercion/number-property.d.ts +9 -0
- package/lib/directives/drag-handle.d.ts +15 -0
- package/lib/directives/placeholder.d.ts +17 -0
- package/lib/directives/resize-handle.d.ts +15 -0
- package/lib/grid/grid.component.d.ts +147 -0
- package/lib/grid-item/grid-item.component.d.ts +83 -0
- package/lib/grid.definitions.d.ts +61 -0
- package/lib/grid.service.d.ts +15 -0
- package/lib/layout-container/layout-container.component.d.ts +79 -0
- package/lib/layout-grid-mapper.pipe.d.ts +9 -0
- package/lib/nav-container/nav-container.component.d.ts +10 -0
- package/lib/report-grid-layout/report-grid-layout.component.d.ts +7 -0
- package/lib/utils/client-rect.d.ts +36 -0
- package/lib/utils/grid.utils.d.ts +45 -0
- package/lib/utils/operators.d.ts +6 -0
- package/lib/utils/passive-listeners.d.ts +12 -0
- package/lib/utils/pointer.utils.d.ts +29 -0
- package/lib/utils/react-grid-layout.utils.d.ts +177 -0
- package/lib/utils/scroll.d.ts +28 -0
- package/lib/utils/transition-duration.d.ts +6 -0
- package/lib/utils.d.ts +6 -0
- package/package.json +25 -0
- package/public-api.d.ts +12 -0
- package/types.d.ts +3 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class LayoutGridMapperPipe {
|
|
4
|
+
transform(molist) {
|
|
5
|
+
const x = molist.map((c) => ({
|
|
6
|
+
id: c.Id,
|
|
7
|
+
x: +c.x,
|
|
8
|
+
y: +c.y,
|
|
9
|
+
w: +c.w,
|
|
10
|
+
h: +c.h,
|
|
11
|
+
minW: c.minW,
|
|
12
|
+
minH: c.minH,
|
|
13
|
+
maxW: c.maxW,
|
|
14
|
+
maxH: c.maxH,
|
|
15
|
+
ejrayOlgo: c.EjrayOlgo
|
|
16
|
+
}));
|
|
17
|
+
return x;
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutGridMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
20
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LayoutGridMapperPipe, name: "layoutGridMapper" }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutGridMapperPipe, decorators: [{
|
|
23
|
+
type: Pipe,
|
|
24
|
+
args: [{
|
|
25
|
+
name: 'layoutGridMapper',
|
|
26
|
+
standalone: false
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWdyaWQtbWFwcGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS11c2VyLXdvcmtzcGFjZS9zcmMvbGliL2xheW91dC1ncmlkLW1hcHBlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFwRCxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLFNBQVMsQ0FBQyxNQUE2QjtRQUNuQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNSLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTO1NBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDOytHQWZRLG9CQUFvQjs2R0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUpoQyxJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGVUcmFuc2Zvcm0sIFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgS3RkR3JpZExheW91dCB9IGZyb20gJy4vZ3JpZC5kZWZpbml0aW9ucyc7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnbGF5b3V0R3JpZE1hcHBlcicsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0R3JpZE1hcHBlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIHRyYW5zZm9ybShtb2xpc3Q6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IEt0ZEdyaWRMYXlvdXQge1xyXG4gICAgICAgIGNvbnN0IHggPSBtb2xpc3QubWFwKChjKSA9PiAoe1xyXG4gICAgICAgICAgICBpZDogYy5JZCxcclxuICAgICAgICAgICAgeDogK2MueCxcclxuICAgICAgICAgICAgeTogK2MueSxcclxuICAgICAgICAgICAgdzogK2MudyxcclxuICAgICAgICAgICAgaDogK2MuaCxcclxuICAgICAgICAgICAgbWluVzogYy5taW5XLFxyXG4gICAgICAgICAgICBtaW5IOiBjLm1pbkgsXHJcbiAgICAgICAgICAgIG1heFc6IGMubWF4VyxcclxuICAgICAgICAgICAgbWF4SDogYy5tYXhILFxyXG4gICAgICAgICAgICBlanJheU9sZ286IGMuRWpyYXlPbGdvXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { BaseComponent } from 'barsa-novin-ray-core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@fundamental-ngx/platform/icon-tab-bar";
|
|
6
|
+
export class NavContainerComponent extends BaseComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._router = inject(Router);
|
|
10
|
+
}
|
|
11
|
+
onTabSelect(e) {
|
|
12
|
+
console.log(e);
|
|
13
|
+
if (e.label === 'صفحه اصلی') {
|
|
14
|
+
this._router.navigate(['/home']);
|
|
15
|
+
}
|
|
16
|
+
if (e.label === 'برنامه ها') {
|
|
17
|
+
this._router.navigate(['/home/launchpad']);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NavContainerComponent, selector: "buw-nav-container", providers: [], usesInheritance: true, ngImport: i0, template: "<div class=\"fd-shellbar fd-shellbar--xl\">\r\n <fdp-icon-tab-bar layoutMode=\"row\" maxContentHeight=\"250px\" (iconTabSelected)=\"onTabSelect($event)\">\r\n <fdp-icon-tab-bar-tab label=\"\u0635\u0641\u062D\u0647 \u0627\u0635\u0644\u06CC\" active> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632 \u06A9\u0627\u0631 \u0645\u0646\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u062A\u06CC\u06A9\u062A\u06CC\u0646\u06AF\">\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06311\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06312\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06313\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06314\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u0646\u0627\u0628\u0639 \u0627\u0646\u0633\u0627\u0646\u06CC\">\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06311\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06312\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06313\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06314\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u0631\u0647\u0627\">\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06311\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06312\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06313\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06314\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0627\u0628\u0632\u0627\u0631\u0647\u0627\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar>\r\n</div>", styles: [":host{display:block}:host ::ng-deep>div ul{background-color:transparent}:host ::ng-deep>div ul .fd-icon-tab-bar__tag{color:#fff}:host ::ng-deep>div ul fd-icon,:host ::ng-deep>div ul .fd-icon-tab-bar__arrow{color:#fff!important}:host ::ng-deep>div ul .fd-icon-tab-bar__tab[aria-selected=true]:after{background-color:#fff}\n"], dependencies: [{ kind: "component", type: i1.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i1.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
+
}
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavContainerComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{ selector: 'buw-nav-container', providers: [], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"fd-shellbar fd-shellbar--xl\">\r\n <fdp-icon-tab-bar layoutMode=\"row\" maxContentHeight=\"250px\" (iconTabSelected)=\"onTabSelect($event)\">\r\n <fdp-icon-tab-bar-tab label=\"\u0635\u0641\u062D\u0647 \u0627\u0635\u0644\u06CC\" active> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632 \u06A9\u0627\u0631 \u0645\u0646\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u062A\u06CC\u06A9\u062A\u06CC\u0646\u06AF\">\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06311\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06312\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06313\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06314\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u0646\u0627\u0628\u0639 \u0627\u0646\u0633\u0627\u0646\u06CC\">\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06311\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06312\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06313\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06314\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u0631\u0647\u0627\">\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06311\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06312\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06313\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0645\u06CC\u0632\u06A9\u0627\u06314\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\"> </fdp-icon-tab-bar-tab>\r\n <fdp-icon-tab-bar-tab label=\"\u0627\u0628\u0632\u0627\u0631\u0647\u0627\"> </fdp-icon-tab-bar-tab>\r\n </fdp-icon-tab-bar>\r\n</div>", styles: [":host{display:block}:host ::ng-deep>div ul{background-color:transparent}:host ::ng-deep>div ul .fd-icon-tab-bar__tag{color:#fff}:host ::ng-deep>div ul fd-icon,:host ::ng-deep>div ul .fd-icon-tab-bar__arrow{color:#fff!important}:host ::ng-deep>div ul .fd-icon-tab-bar__tab[aria-selected=true]:after{background-color:#fff}\n"] }]
|
|
26
|
+
}] });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS11c2VyLXdvcmtzcGFjZS9zcmMvbGliL25hdi1jb250YWluZXIvbmF2LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS11c2VyLXdvcmtzcGFjZS9zcmMvbGliL25hdi1jb250YWluZXIvbmF2LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBVXJELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBUnhEOztRQVNJLFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FVNUI7SUFURyxXQUFXLENBQUMsQ0FBQztRQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNMLENBQUM7K0dBVlEscUJBQXFCO21HQUFyQixxQkFBcUIsNENBSm5CLEVBQUUsaURDVGpCLGsxRUF5Qk07OzRGRFpPLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDSSxtQkFBbUIsYUFHbEIsRUFBRSxtQkFDSSx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J1dy1uYXYtY29udGFpbmVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXYtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL25hdi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgb25UYWJTZWxlY3QoZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgIGlmIChlLmxhYmVsID09PSAn2LXZgdit2Ycg2KfYtdmE24wnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJy9ob21lJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZS5sYWJlbCA9PT0gJ9io2LHZhtin2YXZhyDZh9inJykge1xyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoWycvaG9tZS9sYXVuY2hwYWQnXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmZC1zaGVsbGJhciBmZC1zaGVsbGJhci0teGxcIj5cclxuICAgIDxmZHAtaWNvbi10YWItYmFyIGxheW91dE1vZGU9XCJyb3dcIiBtYXhDb250ZW50SGVpZ2h0PVwiMjUwcHhcIiAoaWNvblRhYlNlbGVjdGVkKT1cIm9uVGFiU2VsZWN0KCRldmVudClcIj5cclxuICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLYtdmB2K3ZhyDYp9i12YTbjFwiIGFjdGl2ZT4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LIg2qnYp9ixINmF2YZcIj4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLYqtuM2qnYqtuM2Ybar1wiPlxyXG4gICAgICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LLaqdin2LExXCI+IDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcbiAgICAgICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXRhYiBsYWJlbD1cItmF24zYstqp2KfYsTJcIj4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICAgICAgPGZkcC1pY29uLXRhYi1iYXItdGFiIGxhYmVsPVwi2YXbjNiy2qnYp9ixM1wiPiA8L2ZkcC1pY29uLXRhYi1iYXItdGFiPlxyXG4gICAgICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LLaqdin2LE0XCI+IDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcbiAgICAgICAgPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhdmG2KfYqNi5INin2YbYs9in2YbbjFwiPlxyXG4gICAgICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LLaqdin2LExXCI+IDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcbiAgICAgICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXRhYiBsYWJlbD1cItmF24zYstqp2KfYsTJcIj4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICAgICAgPGZkcC1pY29uLXRhYi1iYXItdGFiIGxhYmVsPVwi2YXbjNiy2qnYp9ixM1wiPiA8L2ZkcC1pY29uLXRhYi1iYXItdGFiPlxyXG4gICAgICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LLaqdin2LE0XCI+IDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcbiAgICAgICAgPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LLaqdin2LHZh9inXCI+XHJcbiAgICAgICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXRhYiBsYWJlbD1cItmF24zYstqp2KfYsTFcIj4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICAgICAgPGZkcC1pY29uLXRhYi1iYXItdGFiIGxhYmVsPVwi2YXbjNiy2qnYp9ixMlwiPiA8L2ZkcC1pY29uLXRhYi1iYXItdGFiPlxyXG4gICAgICAgICAgICA8ZmRwLWljb24tdGFiLWJhci10YWIgbGFiZWw9XCLZhduM2LLaqdin2LEzXCI+IDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcbiAgICAgICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXRhYiBsYWJlbD1cItmF24zYstqp2KfYsTRcIj4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgICAgICA8L2ZkcC1pY29uLXRhYi1iYXItdGFiPlxyXG4gICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXRhYiBsYWJlbD1cItio2LHZhtin2YXZhyDZh9inXCI+IDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcbiAgICAgICAgPGZkcC1pY29uLXRhYi1iYXItdGFiIGxhYmVsPVwi2KfYqNiy2KfYsdmH2KdcIj4gPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cclxuICAgIDwvZmRwLWljb24tdGFiLWJhcj5cclxuPC9kaXY+Il19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
+
import { ReportViewBaseComponent } from 'barsa-novin-ray-core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "barsa-novin-ray-core";
|
|
5
|
+
import * as i2 from "../layout-container/layout-container.component";
|
|
6
|
+
import * as i3 from "../layout-grid-mapper.pipe";
|
|
7
|
+
export class ReportGridLayoutComponent extends ReportViewBaseComponent {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportGridLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReportGridLayoutComponent, selector: "buw-report-grid-layout", providers: [], usesInheritance: true, ngImport: i0, template: "<div style=\"position: relative\" dir=\"ltr\" fillEmptySpace [setMinHeight]=\"true\">\r\n <buw-layout-container [moDataList]=\"moDataList\" [layout]=\"moDataList | layoutGridMapper\"> </buw-layout-container>\r\n</div>\r\n", styles: [":host{display:block}:host ::ng-deep .grid-item-content{box-sizing:border-box;background:#ccc;border:1px solid;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}:host ::ng-deep .grid-item-remove-handle{position:absolute;cursor:pointer;display:flex;justify-content:center;width:20px;height:20px;top:0;right:0}:host ::ng-deep .grid-item-remove-handle:after{content:\"x\";color:#121212;font-size:16px;font-weight:300;font-family:Arial,sans-serif}\n"], dependencies: [{ kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i2.LayoutContainerComponent, selector: "buw-layout-container", inputs: ["layout", "moDataList"] }, { kind: "pipe", type: i3.LayoutGridMapperPipe, name: "layoutGridMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportGridLayoutComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'buw-report-grid-layout', providers: [], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div style=\"position: relative\" dir=\"ltr\" fillEmptySpace [setMinHeight]=\"true\">\r\n <buw-layout-container [moDataList]=\"moDataList\" [layout]=\"moDataList | layoutGridMapper\"> </buw-layout-container>\r\n</div>\r\n", styles: [":host{display:block}:host ::ng-deep .grid-item-content{box-sizing:border-box;background:#ccc;border:1px solid;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}:host ::ng-deep .grid-item-remove-handle{position:absolute;cursor:pointer;display:flex;justify-content:center;width:20px;height:20px;top:0;right:0}:host ::ng-deep .grid-item-remove-handle:after{content:\"x\";color:#121212;font-size:16px;font-weight:300;font-family:Arial,sans-serif}\n"] }]
|
|
14
|
+
}] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvcmVwb3J0LWdyaWQtbGF5b3V0L3JlcG9ydC1ncmlkLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS11c2VyLXdvcmtzcGFjZS9zcmMvbGliL3JlcG9ydC1ncmlkLWxheW91dC9yZXBvcnQtZ3JpZC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLHVCQUF1QixFQUEyQixNQUFNLHNCQUFzQixDQUFDOzs7OztBQVV4RixNQUFNLE9BQU8seUJBQ1QsU0FBUSx1QkFBZ0Q7K0dBRC9DLHlCQUF5QjttR0FBekIseUJBQXlCLGlEQUp2QixFQUFFLGlEQ1JqQixrT0FHQTs7NEZEU2EseUJBQXlCO2tCQVJyQyxTQUFTOytCQUNJLHdCQUF3QixhQUd2QixFQUFFLG1CQUNJLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBSZXBvcnRWaWV3QmFzZUNvbXBvbmVudCwgVWlSZXBvcnRWaWV3QmFzZVNldHRpbmcgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnV3LXJlcG9ydC1ncmlkLWxheW91dCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3JlcG9ydC1ncmlkLWxheW91dC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcG9ydEdyaWRMYXlvdXRDb21wb25lbnRcclxuICAgIGV4dGVuZHMgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlSZXBvcnRWaWV3QmFzZVNldHRpbmc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHt9XHJcbiIsIjxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmVcIiBkaXI9XCJsdHJcIiBmaWxsRW1wdHlTcGFjZSBbc2V0TWluSGVpZ2h0XT1cInRydWVcIj5cclxuICAgIDxidXctbGF5b3V0LWNvbnRhaW5lciBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCIgW2xheW91dF09XCJtb0RhdGFMaXN0IHwgbGF5b3V0R3JpZE1hcHBlclwiPiA8L2J1dy1sYXlvdXQtY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client rect utilities.
|
|
3
|
+
* This file is taken from Angular Material repository.
|
|
4
|
+
*/
|
|
5
|
+
/** Gets a mutable version of an element's bounding `ClientRect`. */
|
|
6
|
+
export function getMutableClientRect(element) {
|
|
7
|
+
const clientRect = element.getBoundingClientRect();
|
|
8
|
+
// We need to clone the `clientRect` here, because all the values on it are readonly
|
|
9
|
+
// and we need to be able to update them. Also we can't use a spread here, because
|
|
10
|
+
// the values on a `ClientRect` aren't own properties. See:
|
|
11
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes
|
|
12
|
+
return {
|
|
13
|
+
top: clientRect.top,
|
|
14
|
+
right: clientRect.right,
|
|
15
|
+
bottom: clientRect.bottom,
|
|
16
|
+
left: clientRect.left,
|
|
17
|
+
width: clientRect.width,
|
|
18
|
+
height: clientRect.height
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks whether some coordinates are within a `ClientRect`.
|
|
23
|
+
* @param clientRect ClientRect that is being checked.
|
|
24
|
+
* @param x Coordinates along the X axis.
|
|
25
|
+
* @param y Coordinates along the Y axis.
|
|
26
|
+
*/
|
|
27
|
+
export function isInsideClientRect(clientRect, x, y) {
|
|
28
|
+
const { top, bottom, left, right } = clientRect;
|
|
29
|
+
return y >= top && y <= bottom && x >= left && x <= right;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.
|
|
33
|
+
* @param clientRect `ClientRect` that should be updated.
|
|
34
|
+
* @param top Amount to add to the `top` position.
|
|
35
|
+
* @param left Amount to add to the `left` position.
|
|
36
|
+
*/
|
|
37
|
+
export function adjustClientRect(clientRect, top, left) {
|
|
38
|
+
clientRect.top += top;
|
|
39
|
+
clientRect.bottom = clientRect.top + clientRect.height;
|
|
40
|
+
clientRect.left += left;
|
|
41
|
+
clientRect.right = clientRect.left + clientRect.width;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Checks whether the pointer coordinates are close to a ClientRect.
|
|
45
|
+
* @param rect ClientRect to check against.
|
|
46
|
+
* @param threshold Threshold around the ClientRect.
|
|
47
|
+
* @param pointerX Coordinates along the X axis.
|
|
48
|
+
* @param pointerY Coordinates along the Y axis.
|
|
49
|
+
*/
|
|
50
|
+
export function isPointerNearClientRect(rect, threshold, pointerX, pointerY) {
|
|
51
|
+
const { top, right, bottom, left, width, height } = rect;
|
|
52
|
+
const xThreshold = width * threshold;
|
|
53
|
+
const yThreshold = height * threshold;
|
|
54
|
+
return pointerY > top - yThreshold && pointerY < bottom + yThreshold &&
|
|
55
|
+
pointerX > left - xThreshold && pointerX < right + xThreshold;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS11c2VyLXdvcmtzcGFjZS9zcmMvbGliL3V0aWxzL2NsaWVudC1yZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQWFILG9FQUFvRTtBQUNwRSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBZ0I7SUFDakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFbkQsb0ZBQW9GO0lBQ3BGLGtGQUFrRjtJQUNsRiwyREFBMkQ7SUFDM0QsdUZBQXVGO0lBQ3ZGLE9BQU87UUFDSCxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUc7UUFDbkIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtRQUN6QixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7UUFDckIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtLQUM1QixDQUFDO0FBQ04sQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFVBQXNCLEVBQUUsQ0FBUyxFQUFFLENBQVM7SUFDM0UsTUFBTSxFQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxHQUFHLFVBQVUsQ0FBQztJQUM5QyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFVBQXlCLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDakYsVUFBVSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdEIsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFdkQsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7SUFDeEIsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxJQUFtQixFQUNuQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixRQUFnQjtJQUNwRCxNQUFNLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUM7SUFDdkQsTUFBTSxVQUFVLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBRXRDLE9BQU8sUUFBUSxHQUFHLEdBQUcsR0FBRyxVQUFVLElBQUksUUFBUSxHQUFHLE1BQU0sR0FBRyxVQUFVO1FBQ2hFLFFBQVEsR0FBRyxJQUFJLEdBQUcsVUFBVSxJQUFJLFFBQVEsR0FBRyxLQUFLLEdBQUcsVUFBVSxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENsaWVudCByZWN0IHV0aWxpdGllcy5cbiAqIFRoaXMgZmlsZSBpcyB0YWtlbiBmcm9tIEFuZ3VsYXIgTWF0ZXJpYWwgcmVwb3NpdG9yeS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZENsaWVudFJlY3Qge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGJvdHRvbTogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICByaWdodDogbnVtYmVyO1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbi8qKiBHZXRzIGEgbXV0YWJsZSB2ZXJzaW9uIG9mIGFuIGVsZW1lbnQncyBib3VuZGluZyBgQ2xpZW50UmVjdGAuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXV0YWJsZUNsaWVudFJlY3QoZWxlbWVudDogRWxlbWVudCk6IEt0ZENsaWVudFJlY3Qge1xuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgLy8gV2UgbmVlZCB0byBjbG9uZSB0aGUgYGNsaWVudFJlY3RgIGhlcmUsIGJlY2F1c2UgYWxsIHRoZSB2YWx1ZXMgb24gaXQgYXJlIHJlYWRvbmx5XG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gYmUgYWJsZSB0byB1cGRhdGUgdGhlbS4gQWxzbyB3ZSBjYW4ndCB1c2UgYSBzcHJlYWQgaGVyZSwgYmVjYXVzZVxuICAgIC8vIHRoZSB2YWx1ZXMgb24gYSBgQ2xpZW50UmVjdGAgYXJlbid0IG93biBwcm9wZXJ0aWVzLiBTZWU6XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvZ2V0Qm91bmRpbmdDbGllbnRSZWN0I05vdGVzXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdG9wOiBjbGllbnRSZWN0LnRvcCxcbiAgICAgICAgcmlnaHQ6IGNsaWVudFJlY3QucmlnaHQsXG4gICAgICAgIGJvdHRvbTogY2xpZW50UmVjdC5ib3R0b20sXG4gICAgICAgIGxlZnQ6IGNsaWVudFJlY3QubGVmdCxcbiAgICAgICAgd2lkdGg6IGNsaWVudFJlY3Qud2lkdGgsXG4gICAgICAgIGhlaWdodDogY2xpZW50UmVjdC5oZWlnaHRcbiAgICB9O1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHNvbWUgY29vcmRpbmF0ZXMgYXJlIHdpdGhpbiBhIGBDbGllbnRSZWN0YC5cbiAqIEBwYXJhbSBjbGllbnRSZWN0IENsaWVudFJlY3QgdGhhdCBpcyBiZWluZyBjaGVja2VkLlxuICogQHBhcmFtIHggQ29vcmRpbmF0ZXMgYWxvbmcgdGhlIFggYXhpcy5cbiAqIEBwYXJhbSB5IENvb3JkaW5hdGVzIGFsb25nIHRoZSBZIGF4aXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luc2lkZUNsaWVudFJlY3QoY2xpZW50UmVjdDogQ2xpZW50UmVjdCwgeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB7dG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0fSA9IGNsaWVudFJlY3Q7XG4gICAgcmV0dXJuIHkgPj0gdG9wICYmIHkgPD0gYm90dG9tICYmIHggPj0gbGVmdCAmJiB4IDw9IHJpZ2h0O1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHRvcC9sZWZ0IHBvc2l0aW9ucyBvZiBhIGBDbGllbnRSZWN0YCwgYXMgd2VsbCBhcyB0aGVpciBib3R0b20vcmlnaHQgY291bnRlcnBhcnRzLlxuICogQHBhcmFtIGNsaWVudFJlY3QgYENsaWVudFJlY3RgIHRoYXQgc2hvdWxkIGJlIHVwZGF0ZWQuXG4gKiBAcGFyYW0gdG9wIEFtb3VudCB0byBhZGQgdG8gdGhlIGB0b3BgIHBvc2l0aW9uLlxuICogQHBhcmFtIGxlZnQgQW1vdW50IHRvIGFkZCB0byB0aGUgYGxlZnRgIHBvc2l0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0Q2xpZW50UmVjdChjbGllbnRSZWN0OiBLdGRDbGllbnRSZWN0LCB0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyKSB7XG4gICAgY2xpZW50UmVjdC50b3AgKz0gdG9wO1xuICAgIGNsaWVudFJlY3QuYm90dG9tID0gY2xpZW50UmVjdC50b3AgKyBjbGllbnRSZWN0LmhlaWdodDtcblxuICAgIGNsaWVudFJlY3QubGVmdCArPSBsZWZ0O1xuICAgIGNsaWVudFJlY3QucmlnaHQgPSBjbGllbnRSZWN0LmxlZnQgKyBjbGllbnRSZWN0LndpZHRoO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwb2ludGVyIGNvb3JkaW5hdGVzIGFyZSBjbG9zZSB0byBhIENsaWVudFJlY3QuXG4gKiBAcGFyYW0gcmVjdCBDbGllbnRSZWN0IHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcGFyYW0gdGhyZXNob2xkIFRocmVzaG9sZCBhcm91bmQgdGhlIENsaWVudFJlY3QuXG4gKiBAcGFyYW0gcG9pbnRlclggQ29vcmRpbmF0ZXMgYWxvbmcgdGhlIFggYXhpcy5cbiAqIEBwYXJhbSBwb2ludGVyWSBDb29yZGluYXRlcyBhbG9uZyB0aGUgWSBheGlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb2ludGVyTmVhckNsaWVudFJlY3QocmVjdDogS3RkQ2xpZW50UmVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyWDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJZOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCB7dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0fSA9IHJlY3Q7XG4gICAgY29uc3QgeFRocmVzaG9sZCA9IHdpZHRoICogdGhyZXNob2xkO1xuICAgIGNvbnN0IHlUaHJlc2hvbGQgPSBoZWlnaHQgKiB0aHJlc2hvbGQ7XG5cbiAgICByZXR1cm4gcG9pbnRlclkgPiB0b3AgLSB5VGhyZXNob2xkICYmIHBvaW50ZXJZIDwgYm90dG9tICsgeVRocmVzaG9sZCAmJlxuICAgICAgICBwb2ludGVyWCA+IGxlZnQgLSB4VGhyZXNob2xkICYmIHBvaW50ZXJYIDwgcmlnaHQgKyB4VGhyZXNob2xkO1xufVxuIl19
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { compact, getFirstCollision, moveElement } from './react-grid-layout.utils';
|
|
2
|
+
import { ktdPointerClientX, ktdPointerClientY } from './pointer.utils';
|
|
3
|
+
/** Tracks items by id. This function is mean to be used in conjunction with the ngFor that renders the 'buw-grid-items' */
|
|
4
|
+
export function ktdTrackById(index, item) {
|
|
5
|
+
return item.id;
|
|
6
|
+
}
|
|
7
|
+
/** Given a layout, the gridHeight and the gap return the resulting rowHeight */
|
|
8
|
+
export function ktdGetGridItemRowHeight(layout, gridHeight, gap) {
|
|
9
|
+
const numberOfRows = layout.reduce((acc, cur) => Math.max(acc, Math.max(cur.y + cur.h, 0)), 0);
|
|
10
|
+
const gapTotalHeight = (numberOfRows - 1) * gap;
|
|
11
|
+
const gridHeightMinusGap = gridHeight - gapTotalHeight;
|
|
12
|
+
return gridHeightMinusGap / numberOfRows;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Call react-grid-layout utils 'compact()' function and return the compacted layout.
|
|
16
|
+
* @param layout to be compacted.
|
|
17
|
+
* @param compactType, type of compaction.
|
|
18
|
+
* @param cols, number of columns of the grid.
|
|
19
|
+
*/
|
|
20
|
+
export function ktdGridCompact(layout, compactType, cols) {
|
|
21
|
+
return (compact(layout, compactType, cols)
|
|
22
|
+
// Prune react-grid-layout compact extra properties.
|
|
23
|
+
.map((item) => ({
|
|
24
|
+
id: item.id,
|
|
25
|
+
x: item.x,
|
|
26
|
+
y: item.y,
|
|
27
|
+
w: item.w,
|
|
28
|
+
h: item.h,
|
|
29
|
+
minW: item.minW,
|
|
30
|
+
minH: item.minH,
|
|
31
|
+
maxW: item.maxW,
|
|
32
|
+
maxH: item.maxH
|
|
33
|
+
})));
|
|
34
|
+
}
|
|
35
|
+
function screenXToGridX(screenXPos, cols, width, gap) {
|
|
36
|
+
const widthMinusGaps = width - gap * (cols - 1);
|
|
37
|
+
const itemWidth = widthMinusGaps / cols;
|
|
38
|
+
const widthMinusOneItem = width - itemWidth;
|
|
39
|
+
const colWidthWithGap = widthMinusOneItem / (cols - 1);
|
|
40
|
+
return Math.round(screenXPos / colWidthWithGap);
|
|
41
|
+
}
|
|
42
|
+
function screenYToGridY(screenYPos, rowHeight, height, gap) {
|
|
43
|
+
return Math.round(screenYPos / (rowHeight + gap));
|
|
44
|
+
}
|
|
45
|
+
function screenWidthToGridWidth(gridScreenWidth, cols, width, gap) {
|
|
46
|
+
const widthMinusGaps = width - gap * (cols - 1);
|
|
47
|
+
const itemWidth = widthMinusGaps / cols;
|
|
48
|
+
const gridScreenWidthMinusFirst = gridScreenWidth - itemWidth;
|
|
49
|
+
return Math.round(gridScreenWidthMinusFirst / (itemWidth + gap)) + 1;
|
|
50
|
+
}
|
|
51
|
+
function screenHeightToGridHeight(gridScreenHeight, rowHeight, height, gap) {
|
|
52
|
+
const gridScreenHeightMinusFirst = gridScreenHeight - rowHeight;
|
|
53
|
+
return Math.round(gridScreenHeightMinusFirst / (rowHeight + gap)) + 1;
|
|
54
|
+
}
|
|
55
|
+
/** Returns a Dictionary where the key is the id and the value is the change applied to that item. If no changes Dictionary is empty. */
|
|
56
|
+
export function ktdGetGridLayoutDiff(gridLayoutA, gridLayoutB) {
|
|
57
|
+
const diff = {};
|
|
58
|
+
gridLayoutA.forEach((itemA) => {
|
|
59
|
+
const itemB = gridLayoutB.find((_itemB) => _itemB.id === itemA.id);
|
|
60
|
+
if (itemB != null) {
|
|
61
|
+
const posChanged = itemA.x !== itemB.x || itemA.y !== itemB.y;
|
|
62
|
+
const sizeChanged = itemA.w !== itemB.w || itemA.h !== itemB.h;
|
|
63
|
+
const change = posChanged && sizeChanged ? 'moveresize' : posChanged ? 'move' : sizeChanged ? 'resize' : null;
|
|
64
|
+
if (change) {
|
|
65
|
+
diff[itemB.id] = { change };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return diff;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Given the grid config & layout data and the current drag position & information, returns the corresponding layout and drag item position
|
|
73
|
+
* @param gridItem grid item that is been dragged
|
|
74
|
+
* @param config current grid configuration
|
|
75
|
+
* @param compactionType type of compaction that will be performed
|
|
76
|
+
* @param draggingData contains all the information about the drag
|
|
77
|
+
*/
|
|
78
|
+
export function ktdGridItemDragging(gridItem, config, compactionType, draggingData) {
|
|
79
|
+
const { pointerDownEvent, pointerDragEvent, gridElemClientRect, dragElemClientRect, scrollDifference } = draggingData;
|
|
80
|
+
const gridItemId = gridItem.id;
|
|
81
|
+
const draggingElemPrevItem = config.layout.find((item) => item.id === gridItemId);
|
|
82
|
+
const clientStartX = ktdPointerClientX(pointerDownEvent);
|
|
83
|
+
const clientStartY = ktdPointerClientY(pointerDownEvent);
|
|
84
|
+
const clientX = ktdPointerClientX(pointerDragEvent);
|
|
85
|
+
const clientY = ktdPointerClientY(pointerDragEvent);
|
|
86
|
+
const offsetX = clientStartX - dragElemClientRect.left;
|
|
87
|
+
const offsetY = clientStartY - dragElemClientRect.top;
|
|
88
|
+
// Grid element positions taking into account the possible scroll total difference from the beginning.
|
|
89
|
+
const gridElementLeftPosition = gridElemClientRect.left + scrollDifference.left;
|
|
90
|
+
const gridElementTopPosition = gridElemClientRect.top + scrollDifference.top;
|
|
91
|
+
// Calculate position relative to the grid element.
|
|
92
|
+
const gridRelXPos = clientX - gridElementLeftPosition - offsetX;
|
|
93
|
+
const gridRelYPos = clientY - gridElementTopPosition - offsetY;
|
|
94
|
+
const rowHeightInPixels = config.rowHeight === 'fit'
|
|
95
|
+
? ktdGetGridItemRowHeight(config.layout, config.height ?? gridElemClientRect.height, config.gap)
|
|
96
|
+
: config.rowHeight;
|
|
97
|
+
// Get layout item position
|
|
98
|
+
const layoutItem = {
|
|
99
|
+
...draggingElemPrevItem,
|
|
100
|
+
x: screenXToGridX(gridRelXPos, config.cols, gridElemClientRect.width, config.gap),
|
|
101
|
+
y: screenYToGridY(gridRelYPos, rowHeightInPixels, gridElemClientRect.height, config.gap)
|
|
102
|
+
};
|
|
103
|
+
// Correct the values if they overflow, since 'moveElement' function doesn't do it
|
|
104
|
+
layoutItem.x = Math.max(0, layoutItem.x);
|
|
105
|
+
layoutItem.y = Math.max(0, layoutItem.y);
|
|
106
|
+
if (layoutItem.x + layoutItem.w > config.cols) {
|
|
107
|
+
layoutItem.x = Math.max(0, config.cols - layoutItem.w);
|
|
108
|
+
}
|
|
109
|
+
// Parse to LayoutItem array data in order to use 'react.grid-layout' utils
|
|
110
|
+
const layoutItems = config.layout;
|
|
111
|
+
const draggedLayoutItem = layoutItems.find((item) => item.id === gridItemId);
|
|
112
|
+
let newLayoutItems = moveElement(layoutItems, draggedLayoutItem, layoutItem.x, layoutItem.y, true, config.preventCollision, compactionType, config.cols);
|
|
113
|
+
newLayoutItems = compact(newLayoutItems, compactionType, config.cols);
|
|
114
|
+
return {
|
|
115
|
+
layout: newLayoutItems,
|
|
116
|
+
draggedItemPos: {
|
|
117
|
+
top: gridRelYPos,
|
|
118
|
+
left: gridRelXPos,
|
|
119
|
+
width: dragElemClientRect.width,
|
|
120
|
+
height: dragElemClientRect.height
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Given the grid config & layout data and the current drag position & information, returns the corresponding layout and drag item position
|
|
126
|
+
* @param gridItem grid item that is been dragged
|
|
127
|
+
* @param config current grid configuration
|
|
128
|
+
* @param compactionType type of compaction that will be performed
|
|
129
|
+
* @param draggingData contains all the information about the drag
|
|
130
|
+
*/
|
|
131
|
+
export function ktdGridItemResizing(gridItem, config, compactionType, draggingData) {
|
|
132
|
+
const { pointerDownEvent, pointerDragEvent, gridElemClientRect, dragElemClientRect, scrollDifference } = draggingData;
|
|
133
|
+
const gridItemId = gridItem.id;
|
|
134
|
+
const clientStartX = ktdPointerClientX(pointerDownEvent);
|
|
135
|
+
const clientStartY = ktdPointerClientY(pointerDownEvent);
|
|
136
|
+
const clientX = ktdPointerClientX(pointerDragEvent);
|
|
137
|
+
const clientY = ktdPointerClientY(pointerDragEvent);
|
|
138
|
+
// Get the difference between the mouseDown and the position 'right' of the resize element.
|
|
139
|
+
const resizeElemOffsetX = dragElemClientRect.width - (clientStartX - dragElemClientRect.left);
|
|
140
|
+
const resizeElemOffsetY = dragElemClientRect.height - (clientStartY - dragElemClientRect.top);
|
|
141
|
+
const draggingElemPrevItem = config.layout.find((item) => item.id === gridItemId);
|
|
142
|
+
const width = clientX + resizeElemOffsetX - (dragElemClientRect.left + scrollDifference.left);
|
|
143
|
+
const height = clientY + resizeElemOffsetY - (dragElemClientRect.top + scrollDifference.top);
|
|
144
|
+
const rowHeightInPixels = config.rowHeight === 'fit'
|
|
145
|
+
? ktdGetGridItemRowHeight(config.layout, config.height ?? gridElemClientRect.height, config.gap)
|
|
146
|
+
: config.rowHeight;
|
|
147
|
+
// Get layout item grid position
|
|
148
|
+
const layoutItem = {
|
|
149
|
+
...draggingElemPrevItem,
|
|
150
|
+
w: screenWidthToGridWidth(width, config.cols, gridElemClientRect.width, config.gap),
|
|
151
|
+
h: screenHeightToGridHeight(height, rowHeightInPixels, gridElemClientRect.height, config.gap)
|
|
152
|
+
};
|
|
153
|
+
layoutItem.w = limitNumberWithinRange(layoutItem.w, gridItem.minW ?? layoutItem.minW, gridItem.maxW ?? layoutItem.maxW);
|
|
154
|
+
layoutItem.h = limitNumberWithinRange(layoutItem.h, gridItem.minH ?? layoutItem.minH, gridItem.maxH ?? layoutItem.maxH);
|
|
155
|
+
if (layoutItem.x + layoutItem.w > config.cols) {
|
|
156
|
+
layoutItem.w = Math.max(1, config.cols - layoutItem.x);
|
|
157
|
+
}
|
|
158
|
+
if (config.preventCollision) {
|
|
159
|
+
const maxW = layoutItem.w;
|
|
160
|
+
const maxH = layoutItem.h;
|
|
161
|
+
let colliding = hasCollision(config.layout, layoutItem);
|
|
162
|
+
let shrunkDimension;
|
|
163
|
+
while (colliding) {
|
|
164
|
+
shrunkDimension = getDimensionToShrink(layoutItem, shrunkDimension);
|
|
165
|
+
layoutItem[shrunkDimension]--;
|
|
166
|
+
colliding = hasCollision(config.layout, layoutItem);
|
|
167
|
+
}
|
|
168
|
+
if (shrunkDimension === 'w') {
|
|
169
|
+
layoutItem.h = maxH;
|
|
170
|
+
colliding = hasCollision(config.layout, layoutItem);
|
|
171
|
+
while (colliding) {
|
|
172
|
+
layoutItem.h--;
|
|
173
|
+
colliding = hasCollision(config.layout, layoutItem);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (shrunkDimension === 'h') {
|
|
177
|
+
layoutItem.w = maxW;
|
|
178
|
+
colliding = hasCollision(config.layout, layoutItem);
|
|
179
|
+
while (colliding) {
|
|
180
|
+
layoutItem.w--;
|
|
181
|
+
colliding = hasCollision(config.layout, layoutItem);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const newLayoutItems = config.layout.map((item) => (item.id === gridItemId ? layoutItem : item));
|
|
186
|
+
return {
|
|
187
|
+
layout: compact(newLayoutItems, compactionType, config.cols),
|
|
188
|
+
draggedItemPos: {
|
|
189
|
+
top: dragElemClientRect.top - gridElemClientRect.top,
|
|
190
|
+
left: dragElemClientRect.left - gridElemClientRect.left,
|
|
191
|
+
width,
|
|
192
|
+
height
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function hasCollision(layout, layoutItem) {
|
|
197
|
+
return !!getFirstCollision(layout, layoutItem);
|
|
198
|
+
}
|
|
199
|
+
function getDimensionToShrink(layoutItem, lastShrunk) {
|
|
200
|
+
if (layoutItem.h <= 1) {
|
|
201
|
+
return 'w';
|
|
202
|
+
}
|
|
203
|
+
if (layoutItem.w <= 1) {
|
|
204
|
+
return 'h';
|
|
205
|
+
}
|
|
206
|
+
return lastShrunk === 'w' ? 'h' : 'w';
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Given the current number and min/max values, returns the number within the range
|
|
210
|
+
* @param number can be any numeric value
|
|
211
|
+
* @param min minimum value of range
|
|
212
|
+
* @param max maximum value of range
|
|
213
|
+
*/
|
|
214
|
+
function limitNumberWithinRange(num, min = 1, max = Infinity) {
|
|
215
|
+
return Math.min(Math.max(num, min < 1 ? 1 : min), max);
|
|
216
|
+
}
|
|
217
|
+
/** Returns true if both item1 and item2 KtdGridLayoutItems are equivalent. */
|
|
218
|
+
export function ktdGridItemLayoutItemAreEqual(item1, item2) {
|
|
219
|
+
return (item1.id === item2.id &&
|
|
220
|
+
item1.x === item2.x &&
|
|
221
|
+
item1.y === item2.y &&
|
|
222
|
+
item1.w === item2.w &&
|
|
223
|
+
item1.h === item2.h);
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvdXRpbHMvZ3JpZC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFlLGlCQUFpQixFQUFzQixXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVNySCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl2RSwySEFBMkg7QUFDM0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhLEVBQUUsSUFBb0I7SUFDNUQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQXFCLEVBQUUsVUFBa0IsRUFBRSxHQUFXO0lBQzFGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9GLE1BQU0sY0FBYyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNoRCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDdkQsT0FBTyxrQkFBa0IsR0FBRyxZQUFZLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFxQixFQUFFLFdBQStCLEVBQUUsSUFBWTtJQUMvRixPQUFPLENBQ0gsT0FBTyxDQUFDLE1BQU0sRUFBRSxX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QUFFLE1BQWMsUUFBUTtJQUNoRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxLQUF3QixFQUFFLEtBQXdCO0lBQzVGLE9BQU8sQ0FDSCxLQUFLLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLEtBQUssQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUNuQixLQUFLLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQ25CLEtBQUssQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FDdEIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wYWN0LCBDb21wYWN0VHlwZSwgZ2V0Rmlyc3RDb2xsaXNpb24sIExheW91dCwgTGF5b3V0SXRlbSwgbW92ZUVsZW1lbnQgfSBmcm9tICcuL3JlYWN0LWdyaWQtbGF5b3V0LnV0aWxzJztcbmltcG9ydCB7XG4gICAgS3RkRHJhZ2dpbmdEYXRhLFxuICAgIEt0ZEdyaWRDZmcsXG4gICAgS3RkR3JpZENvbXBhY3RUeXBlLFxuICAgIEt0ZEdyaWRJdGVtUmVjdCxcbiAgICBLdGRHcmlkTGF5b3V0LFxuICAgIEt0ZEdyaWRMYXlvdXRJdGVtXG59IGZyb20gJy4uL2dyaWQuZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsga3RkUG9pbnRlckNsaWVudFgsIGt0ZFBvaW50ZXJDbGllbnRZIH0gZnJvbSAnLi9wb2ludGVyLnV0aWxzJztcbmltcG9ydCB7IEt0ZERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBLdGRHcmlkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQtaXRlbS9ncmlkLWl0ZW0uY29tcG9uZW50JztcblxuLyoqIFRyYWNrcyBpdGVtcyBieSBpZC4gVGhpcyBmdW5jdGlvbiBpcyBtZWFuIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgbmdGb3IgdGhhdCByZW5kZXJzIHRoZSAnYnV3LWdyaWQtaXRlbXMnICovXG5leHBvcnQgZnVuY3Rpb24ga3RkVHJhY2tCeUlkKGluZGV4OiBudW1iZXIsIGl0ZW06IHsgaWQ6IHN0cmluZyB9KTogYW55IHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbn1cblxuLyoqIEdpdmVuIGEgbGF5b3V0LCB0aGUgZ3JpZEhlaWdodCBhbmQgdGhlIGdhcCByZXR1cm4gdGhlIHJlc3VsdGluZyByb3dIZWlnaHQgKi9cbmV4cG9ydCBmdW5jdGlvbiBrdGRHZXRHcmlkSXRlbVJvd0hlaWdodChsYXlvdXQ6IEt0ZEdyaWRMYXlvdXQsIGdyaWRIZWlnaHQ6IG51bWJlciwgZ2FwOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG51bWJlck9mUm93cyA9IGxheW91dC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBNYXRoLm1heChhY2MsIE1hdGgubWF4KGN1ci55ICsgY3VyLmgsIDApKSwgMCk7XG4gICAgY29uc3QgZ2FwVG90YWxIZWlnaHQgPSAobnVtYmVyT2ZSb3dzIC0gMSkgKiBnYXA7XG4gICAgY29uc3QgZ3JpZEhlaWdodE1pbnVzR2FwID0gZ3JpZEhlaWdodCAtIGdhcFRvdGFsSGVpZ2h0O1xuICAgIHJldHVybiBncmlkSGVpZ2h0TWludXNHYXAgLyBudW1iZXJPZlJvd3M7XG59XG5cbi8qKlxuICogQ2FsbCByZWFjdC1ncmlkLWxheW91dCB1dGlscyAnY29tcGFjdCgpJyBmdW5jdGlvbiBhbmQgcmV0dXJuIHRoZSBjb21wYWN0ZWQgbGF5b3V0LlxuICogQHBhcmFtIGxheW91dCB0byBiZSBjb21wYWN0ZWQuXG4gKiBAcGFyYW0gY29tcGFjdFR5cGUsIHR5cGUgb2YgY29tcGFjdGlvbi5cbiAqIEBwYXJhbSBjb2xzLCBudW1iZXIgb2YgY29sdW1ucyBvZiB0aGUgZ3JpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZEdyaWRDb21wYWN0KGxheW91dDogS3RkR3JpZExheW91dCwgY29tcGFjdFR5cGU6IEt0ZEdyaWRDb21wYWN0VHlwZSwgY29sczogbnVtYmVyKTogS3RkR3JpZExheW91dCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgY29tcGFjdChsYXlvdXQsIGNvbXBhY3RUeXBlLCBjb2xzKVxuICAgICAgICAgICAgLy8gUHJ1bmUgcmVhY3QtZ3JpZC1sYXlvdXQgY29tcGFjdCBleHRyYSBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICB4OiBpdGVtLngsXG4gICAgICAgICAgICAgICAgeTogaXRlbS55LFxuICAgICAgICAgICAgICAgIHc6IGl0ZW0udyxcbiAgICAgICAgICAgICAgICBoOiBpdGVtLmgsXG4gICAgICAgICAgICAgICAgbWluVzogaXRlbS5taW5XLFxuICAgICAgICAgICAgICAgIG1pbkg6IGl0ZW0ubWluSCxcbiAgICAgICAgICAgICAgICBtYXhXOiBpdGVtLm1heFcsXG4gICAgICAgICAgICAgICAgbWF4SDogaXRlbS5tYXhIXG4gICAgICAgICAgICB9KSlcbiAgICApO1xufVxuXG5mdW5jdGlvbiBzY3JlZW5YVG9HcmlkWChzY3JlZW5YUG9zOiBudW1iZXIsIGNvbHM6IG51bWJlciwgd2lkdGg6IG51bWJlciwgZ2FwOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHdpZHRoTWludXNHYXBzID0gd2lkdGggLSBnYXAgKiAoY29scyAtIDEpO1xuICAgIGNvbnN0IGl0ZW1XaWR0aCA9IHdpZHRoTWludXNHYXBzIC8gY29scztcbiAgICBjb25zdCB3aWR0aE1pbnVzT25lSXRlbSA9IHdpZHRoIC0gaXRlbVdpZHRoO1xuICAgIGNvbnN0IGNvbFdpZHRoV2l0aEdhcCA9IHdpZHRoTWludXNPbmVJdGVtIC8gKGNvbHMgLSAxKTtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChzY3JlZW5YUG9zIC8gY29sV2lkdGhXaXRoR2FwKTtcbn1cblxuZnVuY3Rpb24gc2NyZWVuWVRvR3JpZFkoc2NyZWVuWVBvczogbnVtYmVyLCByb3dIZWlnaHQ6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGdhcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChzY3JlZW5ZUG9zIC8gKHJvd0hlaWdodCArIGdhcCkpO1xufVxuXG5mdW5jdGlvbiBzY3JlZW5XaWR0aFRvR3JpZFdpZHRoKGdyaWRTY3JlZW5XaWR0aDogbnVtYmVyLCBjb2xzOiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGdhcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB3aWR0aE1pbnVzR2FwcyA9IHdpZHRoIC0gZ2FwICogKGNvbHMgLSAxKTtcbiAgICBjb25zdCBpdGVtV2lkdGggPSB3aWR0aE1pbnVzR2FwcyAvIGNvbHM7XG4gICAgY29uc3QgZ3JpZFNjcmVlbldpZHRoTWludXNGaXJzdCA9IGdyaWRTY3JlZW5XaWR0aCAtIGl0ZW1XaWR0aDtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChncmlkU2NyZWVuV2lkdGhNaW51c0ZpcnN0IC8gKGl0ZW1XaWR0aCArIGdhcCkpICsgMTtcbn1cblxuZnVuY3Rpb24gc2NyZWVuSGVpZ2h0VG9HcmlkSGVpZ2h0KGdyaWRTY3JlZW5IZWlnaHQ6IG51bWJlciwgcm93SGVpZ2h0OiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBnYXA6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgZ3JpZFNjcmVlbkhlaWdodE1pbnVzRmlyc3QgPSBncmlkU2NyZWVuSGVpZ2h0IC0gcm93SGVpZ2h0O1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGdyaWRTY3JlZW5IZWlnaHRNaW51c0ZpcnN0IC8gKHJvd0hlaWdodCArIGdhcCkpICsgMTtcbn1cblxuLyoqIFJldHVybnMgYSBEaWN0aW9uYXJ5IHdoZXJlIHRoZSBrZXkgaXMgdGhlIGlkIGFuZCB0aGUgdmFsdWUgaXMgdGhlIGNoYW5nZSBhcHBsaWVkIHRvIHRoYXQgaXRlbS4gSWYgbm8gY2hhbmdlcyBEaWN0aW9uYXJ5IGlzIGVtcHR5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZEdldEdyaWRMYXlvdXREaWZmKFxuICAgIGdyaWRMYXlvdXRBOiBLdGRHcmlkTGF5b3V0SXRlbVtdLFxuICAgIGdyaWRMYXlvdXRCOiBLdGRHcmlkTGF5b3V0SXRlbVtdXG4pOiBLdGREaWN0aW9uYXJ5PHsgY2hhbmdlOiAnbW92ZScgfCAncmVzaXplJyB8ICdtb3ZlcmVzaXplJyB9PiB7XG4gICAgY29uc3QgZGlmZjogS3RkRGljdGlvbmFyeTx7IGNoYW5nZTogJ21vdmUnIHwgJ3Jlc2l6ZScgfCAnbW92ZXJlc2l6ZScgfT4gPSB7fTtcblxuICAgIGdyaWRMYXlvdXRBLmZvckVhY2goKGl0ZW1BKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1CID0gZ3JpZExheW91dEIuZmluZCgoX2l0ZW1CKSA9PiBfaXRlbUIuaWQgPT09IGl0ZW1BLmlkKTtcbiAgICAgICAgaWYgKGl0ZW1CICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc0NoYW5nZWQgPSBpdGVtQS54ICE9PSBpdGVtQi54IHx8IGl0ZW1BLnkgIT09IGl0ZW1CLnk7XG4gICAgICAgICAgICBjb25zdCBzaXplQ2hhbmdlZCA9IGl0ZW1BLncgIT09IGl0ZW1CLncgfHwgaXRlbUEuaCAhPT0gaXRlbUIuaDtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZTogJ21vdmUnIHwgJ3Jlc2l6ZScgfCAnbW92ZXJlc2l6ZScgfCBudWxsID1cbiAgICAgICAgICAgICAgICBwb3NDaGFuZ2VkICYmIHNpemVDaGFuZ2VkID8gJ21vdmVyZXNpemUnIDogcG9zQ2hhbmdlZCA/ICdtb3ZlJyA6IHNpemVDaGFuZ2VkID8gJ3Jlc2l6ZScgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgICAgIGRpZmZbaXRlbUIuaWRdID0geyBjaGFuZ2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaWZmO1xufVxuXG4vKipcbiAqIEdpdmVuIHRoZSBncmlkIGNvbmZpZyAmIGxheW91dCBkYXRhIGFuZCB0aGUgY3VycmVudCBkcmFnIHBvc2l0aW9uICYgaW5mb3JtYXRpb24sIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgbGF5b3V0IGFuZCBkcmFnIGl0ZW0gcG9zaXRpb25cbiAqIEBwYXJhbSBncmlkSXRlbSBncmlkIGl0ZW0gdGhhdCBpcyBiZWVuIGRyYWdnZWRcbiAqIEBwYXJhbSBjb25maWcgY3VycmVudCBncmlkIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBjb21wYWN0aW9uVHlwZSB0eXBlIG9mIGNvbXBhY3Rpb24gdGhhdCB3aWxsIGJlIHBlcmZvcm1lZFxuICogQHBhcmFtIGRyYWdnaW5nRGF0YSBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcmFnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrdGRHcmlkSXRlbURyYWdnaW5nKFxuICAgIGdyaWRJdGVtOiBLdGRHcmlkSXRlbUNvbXBvbmVudCxcbiAgICBjb25maWc6IEt0ZEdyaWRDZmcsXG4gICAgY29tcGFjdGlvblR5cGU6IENvbXBhY3RUeXBlLFxuICAgIGRyYWdnaW5nRGF0YTogS3RkRHJhZ2dpbmdEYXRhXG4pOiB7IGxheW91dDogS3RkR3JpZExheW91dEl0ZW1bXTsgZHJhZ2dlZEl0ZW1Qb3M6IEt0ZEdyaWRJdGVtUmVjdCB9IHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duRXZlbnQsIHBvaW50ZXJEcmFnRXZlbnQsIGdyaWRFbGVtQ2xpZW50UmVjdCwgZHJhZ0VsZW1DbGllbnRSZWN0LCBzY3JvbGxEaWZmZXJlbmNlIH0gPVxuICAgICAgICBkcmFnZ2luZ0RhdGE7XG5cbiAgICBjb25zdCBncmlkSXRlbUlkID0gZ3JpZEl0ZW0uaWQ7XG5cbiAgICBjb25zdCBkcmFnZ2luZ0VsZW1QcmV2SXRlbSA9IGNvbmZpZy5sYXlvdXQuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZ3JpZEl0ZW1JZCkhO1xuXG4gICAgY29uc3QgY2xpZW50U3RhcnRYID0ga3RkUG9pbnRlckNsaWVudFgocG9pbnRlckRvd25FdmVudCk7XG4gICAgY29uc3QgY2xpZW50U3RhcnRZID0ga3RkUG9pbnRlckNsaWVudFkocG9pbnRlckRvd25FdmVudCk7XG4gICAgY29uc3QgY2xpZW50WCA9IGt0ZFBvaW50ZXJDbGllbnRYKHBvaW50ZXJEcmFnRXZlbnQpO1xuICAgIGNvbnN0IGNsaWVudFkgPSBrdGRQb2ludGVyQ2xpZW50WShwb2ludGVyRHJhZ0V2ZW50KTtcblxuICAgIGNvbnN0IG9mZnNldFggPSBjbGllbnRTdGFydFggLSBkcmFnRWxlbUNsaWVudFJlY3QubGVmdDtcbiAgICBjb25zdCBvZmZzZXRZID0gY2xpZW50U3RhcnRZIC0gZHJhZ0VsZW1DbGllbnRSZWN0LnRvcDtcblxuICAgIC8vIEdyaWQgZWxlbWVudCBwb3NpdGlvbnMgdGFraW5nIGludG8gYWNjb3VudCB0aGUgcG9zc2libGUgc2Nyb2xsIHRvdGFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgIGNvbnN0IGdyaWRFbGVtZW50TGVmdFBvc2l0aW9uID0gZ3JpZEVsZW1DbGllbnRSZWN0LmxlZnQgKyBzY3JvbGxEaWZmZXJlbmNlLmxlZnQ7XG4gICAgY29uc3QgZ3JpZEVsZW1lbnRUb3BQb3NpdGlvbiA9IGdyaWRFbGVtQ2xpZW50UmVjdC50b3AgKyBzY3JvbGxEaWZmZXJlbmNlLnRvcDtcblxuICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgZ3JpZCBlbGVtZW50LlxuICAgIGNvbnN0IGdyaWRSZWxYUG9zID0gY2xpZW50WCAtIGdyaWRFbGVtZW50TGVmdFBvc2l0aW9uIC0gb2Zmc2V0WDtcbiAgICBjb25zdCBncmlkUmVsWVBvcyA9IGNsaWVudFkgLSBncmlkRWxlbWVudFRvcFBvc2l0aW9uIC0gb2Zmc2V0WTtcblxuICAgIGNvbnN0IHJvd0hlaWdodEluUGl4ZWxzID1cbiAgICAgICAgY29uZmlnLnJvd0hlaWdodCA9PT0gJ2ZpdCdcbiAgICAgICAgICAgID8ga3RkR2V0R3JpZEl0ZW1Sb3dIZWlnaHQoY29uZmlnLmxheW91dCwgY29uZmlnLmhlaWdodCA/PyBncmlkRWxlbUNsaWVudFJlY3QuaGVpZ2h0LCBjb25maWcuZ2FwKVxuICAgICAgICAgICAgOiBjb25maWcucm93SGVpZ2h0O1xuXG4gICAgLy8gR2V0IGxheW91dCBpdGVtIHBvc2l0aW9uXG4gICAgY29uc3QgbGF5b3V0SXRlbTogS3RkR3JpZExheW91dEl0ZW0gPSB7XG4gICAgICAgIC4uLmRyYWdnaW5nRWxlbVByZXZJdGVtLFxuICAgICAgICB4OiBzY3JlZW5YVG9HcmlkWChncmlkUmVsWFBvcywgY29uZmlnLmNvbHMsIGdyaWRFbGVtQ2xpZW50UmVjdC53aWR0aCwgY29uZmlnLmdhcCksXG4gICAgICAgIHk6IHNjcmVlbllUb0dyaWRZKGdyaWRSZWxZUG9zLCByb3dIZWlnaHRJblBpeGVscywgZ3JpZEVsZW1DbGllbnRSZWN0LmhlaWdodCwgY29uZmlnLmdhcClcbiAgICB9O1xuXG4gICAgLy8gQ29ycmVjdCB0aGUgdmFsdWVzIGlmIHRoZXkgb3ZlcmZsb3csIHNpbmNlICdtb3ZlRWxlbWVudCcgZnVuY3Rpb24gZG9lc24ndCBkbyBpdFxuICAgIGxheW91dEl0ZW0ueCA9IE1hdGgubWF4KDAsIGxheW91dEl0ZW0ueCk7XG4gICAgbGF5b3V0SXRlbS55ID0gTWF0aC5tYXgoMCwgbGF5b3V0SXRlbS55KTtcbiAgICBpZiAobGF5b3V0SXRlbS54ICsgbGF5b3V0SXRlbS53ID4gY29uZmlnLmNvbHMpIHtcbiAgICAgICAgbGF5b3V0SXRlbS54ID0gTWF0aC5tYXgoMCwgY29uZmlnLmNvbHMgLSBsYXlvdXRJdGVtLncpO1xuICAgIH1cblxuICAgIC8vIFBhcnNlIHRvIExheW91dEl0ZW0gYXJyYXkgZGF0YSBpbiBvcmRlciB0byB1c2UgJ3JlYWN0LmdyaWQtbGF5b3V0JyB1dGlsc1xuICAgIGNvbnN0IGxheW91dEl0ZW1zOiBMYXlvdXRJdGVtW10gPSBjb25maWcubGF5b3V0O1xuICAgIGNvbnN0IGRyYWdnZWRMYXlvdXRJdGVtOiBMYXlvdXRJdGVtID0gbGF5b3V0SXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gZ3JpZEl0ZW1JZCkhO1xuXG4gICAgbGV0IG5ld0xheW91dEl0ZW1zOiBMYXlvdXRJdGVtW10gPSBtb3ZlRWxlbWVudChcbiAgICAgICAgbGF5b3V0SXRlbXMsXG4gICAgICAgIGRyYWdnZWRMYXlvdXRJdGVtLFxuICAgICAgICBsYXlvdXRJdGVtLngsXG4gICAgICAgIGxheW91dEl0ZW0ueSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgY29uZmlnLnByZXZlbnRDb2xsaXNpb24sXG4gICAgICAgIGNvbXBhY3Rpb25UeXBlLFxuICAgICAgICBjb25maWcuY29sc1xuICAgICk7XG5cbiAgICBuZXdMYXlvdXRJdGVtcyA9IGNvbXBhY3QobmV3TGF5b3V0SXRlbXMsIGNvbXBhY3Rpb25UeXBlLCBjb25maWcuY29scyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBsYXlvdXQ6IG5ld0xheW91dEl0ZW1zLFxuICAgICAgICBkcmFnZ2VkSXRlbVBvczoge1xuICAgICAgICAgICAgdG9wOiBncmlkUmVsWVBvcyxcbiAgICAgICAgICAgIGxlZnQ6IGdyaWRSZWxYUG9zLFxuICAgICAgICAgICAgd2lkdGg6IGRyYWdFbGVtQ2xpZW50UmVjdC53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogZHJhZ0VsZW1DbGllbnRSZWN0LmhlaWdodFxuICAgICAgICB9XG4gICAgfTtcbn1cblxuLyoqXG4gKiBHaXZlbiB0aGUgZ3JpZCBjb25maWcgJiBsYXlvdXQgZGF0YSBhbmQgdGhlIGN1cnJlbnQgZHJhZyBwb3NpdGlvbiAmIGluZm9ybWF0aW9uLCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIGxheW91dCBhbmQgZHJhZyBpdGVtIHBvc2l0aW9uXG4gKiBAcGFyYW0gZ3JpZEl0ZW0gZ3JpZCBpdGVtIHRoYXQgaXMgYmVlbiBkcmFnZ2VkXG4gKiBAcGFyYW0gY29uZmlnIGN1cnJlbnQgZ3JpZCBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0gY29tcGFjdGlvblR5cGUgdHlwZSBvZiBjb21wYWN0aW9uIHRoYXQgd2lsbCBiZSBwZXJmb3JtZWRcbiAqIEBwYXJhbSBkcmFnZ2luZ0RhdGEgY29udGFpbnMgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJhZ1xuICovXG5leHBvcnQgZnVuY3Rpb24ga3RkR3JpZEl0ZW1SZXNpemluZyhcbiAgICBncmlkSXRlbTogS3RkR3JpZEl0ZW1Db21wb25lbnQsXG4gICAgY29uZmlnOiBLdGRHcmlkQ2ZnLFxuICAgIGNvbXBhY3Rpb25UeXBlOiBDb21wYWN0VHlwZSxcbiAgICBkcmFnZ2luZ0RhdGE6IEt0ZERyYWdnaW5nRGF0YVxuKTogeyBsYXlvdXQ6IEt0ZEdyaWRMYXlvdXRJdGVtW107IGRyYWdnZWRJdGVtUG9zOiBLdGRHcmlkSXRlbVJlY3QgfSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93bkV2ZW50LCBwb2ludGVyRHJhZ0V2ZW50LCBncmlkRWxlbUNsaWVudFJlY3QsIGRyYWdFbGVtQ2xpZW50UmVjdCwgc2Nyb2xsRGlmZmVyZW5jZSB9ID1cbiAgICAgICAgZHJhZ2dpbmdEYXRhO1xuICAgIGNvbnN0IGdyaWRJdGVtSWQgPSBncmlkSXRlbS5pZDtcblxuICAgIGNvbnN0IGNsaWVudFN0YXJ0WCA9IGt0ZFBvaW50ZXJDbGllbnRYKHBvaW50ZXJEb3duRXZlbnQpO1xuICAgIGNvbnN0IGNsaWVudFN0YXJ0WSA9IGt0ZFBvaW50ZXJDbGllbnRZKHBvaW50ZXJEb3duRXZlbnQpO1xuICAgIGNvbnN0IGNsaWVudFggPSBrdGRQb2ludGVyQ2xpZW50WChwb2ludGVyRHJhZ0V2ZW50KTtcbiAgICBjb25zdCBjbGllbnRZID0ga3RkUG9pbnRlckNsaWVudFkocG9pbnRlckRyYWdFdmVudCk7XG5cbiAgICAvLyBHZXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbW91c2VEb3duIGFuZCB0aGUgcG9zaXRpb24gJ3JpZ2h0JyBvZiB0aGUgcmVzaXplIGVsZW1lbnQuXG4gICAgY29uc3QgcmVzaXplRWxlbU9mZnNldFggPSBkcmFnRWxlbUNsaWVudFJlY3Qud2lkdGggLSAoY2xpZW50U3RhcnRYIC0gZHJhZ0VsZW1DbGllbnRSZWN0LmxlZnQpO1xuICAgIGNvbnN0IHJlc2l6ZUVsZW1PZmZzZXRZID0gZHJhZ0VsZW1DbGllbnRSZWN0LmhlaWdodCAtIChjbGllbnRTdGFydFkgLSBkcmFnRWxlbUNsaWVudFJlY3QudG9wKTtcblxuICAgIGNvbnN0IGRyYWdnaW5nRWxlbVByZXZJdGVtID0gY29uZmlnLmxheW91dC5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBncmlkSXRlbUlkKSE7XG4gICAgY29uc3Qgd2lkdGggPSBjbGllbnRYICsgcmVzaXplRWxlbU9mZnNldFggLSAoZHJhZ0VsZW1DbGllbnRSZWN0LmxlZnQgKyBzY3JvbGxEaWZmZXJlbmNlLmxlZnQpO1xuICAgIGNvbnN0IGhlaWdodCA9IGNsaWVudFkgKyByZXNpemVFbGVtT2Zmc2V0WSAtIChkcmFnRWxlbUNsaWVudFJlY3QudG9wICsgc2Nyb2xsRGlmZmVyZW5jZS50b3ApO1xuXG4gICAgY29uc3Qgcm93SGVpZ2h0SW5QaXhlbHMgPVxuICAgICAgICBjb25maWcucm93SGVpZ2h0ID09PSAnZml0J1xuICAgICAgICAgICAgPyBrdGRHZXRHcmlkSXRlbVJvd0hlaWdodChjb25maWcubGF5b3V0LCBjb25maWcuaGVpZ2h0ID8/IGdyaWRFbGVtQ2xpZW50UmVjdC5oZWlnaHQsIGNvbmZpZy5nYXApXG4gICAgICAgICAgICA6IGNvbmZpZy5yb3dIZWlnaHQ7XG5cbiAgICAvLyBHZXQgbGF5b3V0IGl0ZW0gZ3JpZCBwb3NpdGlvblxuICAgIGNvbnN0IGxheW91dEl0ZW06IEt0ZEdyaWRMYXlvdXRJdGVtID0ge1xuICAgICAgICAuLi5kcmFnZ2luZ0VsZW1QcmV2SXRlbSxcbiAgICAgICAgdzogc2NyZWVuV2lkdGhUb0dyaWRXaWR0aCh3aWR0aCwgY29uZmlnLmNvbHMsIGdyaWRFbGVtQ2xpZW50UmVjdC53aWR0aCwgY29uZmlnLmdhcCksXG4gICAgICAgIGg6IHNjcmVlbkhlaWdodFRvR3JpZEhlaWdodChoZWlnaHQsIHJvd0hlaWdodEluUGl4ZWxzLCBncmlkRWxlbUNsaWVudFJlY3QuaGVpZ2h0LCBjb25maWcuZ2FwKVxuICAgIH07XG5cbiAgICBsYXlvdXRJdGVtLncgPSBsaW1pdE51bWJlcldpdGhpblJhbmdlKFxuICAgICAgICBsYXlvdXRJdGVtLncsXG4gICAgICAgIGdyaWRJdGVtLm1pblcgPz8gbGF5b3V0SXRlbS5taW5XLFxuICAgICAgICBncmlkSXRlbS5tYXhXID8/IGxheW91dEl0ZW0ubWF4V1xuICAgICk7XG4gICAgbGF5b3V0SXRlbS5oID0gbGltaXROdW1iZXJXaXRoaW5SYW5nZShcbiAgICAgICAgbGF5b3V0SXRlbS5oLFxuICAgICAgICBncmlkSXRlbS5taW5IID8/IGxheW91dEl0ZW0ubWluSCxcbiAgICAgICAgZ3JpZEl0ZW0ubWF4SCA/PyBsYXlvdXRJdGVtLm1heEhcbiAgICApO1xuXG4gICAgaWYgKGxheW91dEl0ZW0ueCArIGxheW91dEl0ZW0udyA+IGNvbmZpZy5jb2xzKSB7XG4gICAgICAgIGxheW91dEl0ZW0udyA9IE1hdGgubWF4KDEsIGNvbmZpZy5jb2xzIC0gbGF5b3V0SXRlbS54KTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnByZXZlbnRDb2xsaXNpb24pIHtcbiAgICAgICAgY29uc3QgbWF4VyA9IGxheW91dEl0ZW0udztcbiAgICAgICAgY29uc3QgbWF4SCA9IGxheW91dEl0ZW0uaDtcblxuICAgICAgICBsZXQgY29sbGlkaW5nID0gaGFzQ29sbGlzaW9uKGNvbmZpZy5sYXlvdXQsIGxheW91dEl0ZW0pO1xuICAgICAgICBsZXQgc2hydW5rRGltZW5zaW9uOiAndycgfCAnaCcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgd2hpbGUgKGNvbGxpZGluZykge1xuICAgICAgICAgICAgc2hydW5rRGltZW5zaW9uID0gZ2V0RGltZW5zaW9uVG9TaHJpbmsobGF5b3V0SXRlbSwgc2hydW5rRGltZW5zaW9uKTtcbiAgICAgICAgICAgIGxheW91dEl0ZW1bc2hydW5rRGltZW5zaW9uXS0tO1xuICAgICAgICAgICAgY29sbGlkaW5nID0gaGFzQ29sbGlzaW9uKGNvbmZpZy5sYXlvdXQsIGxheW91dEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNocnVua0RpbWVuc2lvbiA9PT0gJ3cnKSB7XG4gICAgICAgICAgICBsYXlvdXRJdGVtLmggPSBtYXhIO1xuXG4gICAgICAgICAgICBjb2xsaWRpbmcgPSBoYXNDb2xsaXNpb24oY29uZmlnLmxheW91dCwgbGF5b3V0SXRlbSk7XG4gICAgICAgICAgICB3aGlsZSAoY29sbGlkaW5nKSB7XG4gICAgICAgICAgICAgICAgbGF5b3V0SXRlbS5oLS07XG4gICAgICAgICAgICAgICAgY29sbGlkaW5nID0gaGFzQ29sbGlzaW9uKGNvbmZpZy5sYXlvdXQsIGxheW91dEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaHJ1bmtEaW1lbnNpb24gPT09ICdoJykge1xuICAgICAgICAgICAgbGF5b3V0SXRlbS53ID0gbWF4VztcblxuICAgICAgICAgICAgY29sbGlkaW5nID0gaGFzQ29sbGlzaW9uKGNvbmZpZy5sYXlvdXQsIGxheW91dEl0ZW0pO1xuICAgICAgICAgICAgd2hpbGUgKGNvbGxpZGluZykge1xuICAgICAgICAgICAgICAgIGxheW91dEl0ZW0udy0tO1xuICAgICAgICAgICAgICAgIGNvbGxpZGluZyA9IGhhc0NvbGxpc2lvbihjb25maWcubGF5b3V0LCBsYXlvdXRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld0xheW91dEl0ZW1zOiBMYXlvdXRJdGVtW10gPSBjb25maWcubGF5b3V0Lm1hcCgoaXRlbSk6IGFueSA9PiAoaXRlbS5pZCA9PT0gZ3JpZEl0ZW1JZCA/IGxheW91dEl0ZW0gOiBpdGVtKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBsYXlvdXQ6IGNvbXBhY3QobmV3TGF5b3V0SXRlbXMsIGNvbXBhY3Rpb25UeXBlLCBjb25maWcuY29scyksXG4gICAgICAgIGRyYWdnZWRJdGVtUG9zOiB7XG4gICAgICAgICAgICB0b3A6IGRyYWdFbGVtQ2xpZW50UmVjdC50b3AgLSBncmlkRWxlbUNsaWVudFJlY3QudG9wLFxuICAgICAgICAgICAgbGVmdDogZHJhZ0VsZW1DbGllbnRSZWN0LmxlZnQgLSBncmlkRWxlbUNsaWVudFJlY3QubGVmdCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBoYXNDb2xsaXNpb24obGF5b3V0OiBMYXlvdXQsIGxheW91dEl0ZW06IExheW91dEl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFnZXRGaXJzdENvbGxpc2lvbihsYXlvdXQsIGxheW91dEl0ZW0pO1xufVxuXG5mdW5jdGlvbiBnZXREaW1lbnNpb25Ub1NocmluayhsYXlvdXRJdGVtLCBsYXN0U2hydW5rKTogJ3cnIHwgJ2gnIHtcbiAgICBpZiAobGF5b3V0SXRlbS5oIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuICd3JztcbiAgICB9XG4gICAgaWYgKGxheW91dEl0ZW0udyA8PSAxKSB7XG4gICAgICAgIHJldHVybiAnaCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTaHJ1bmsgPT09ICd3JyA/ICdoJyA6ICd3Jztcbn1cblxuLyoqXG4gKiBHaXZlbiB0aGUgY3VycmVudCBudW1iZXIgYW5kIG1pbi9tYXggdmFsdWVzLCByZXR1cm5zIHRoZSBudW1iZXIgd2l0aGluIHRoZSByYW5nZVxuICogQHBhcmFtIG51bWJlciBjYW4gYmUgYW55IG51bWVyaWMgdmFsdWVcbiAqIEBwYXJhbSBtaW4gbWluaW11bSB2YWx1ZSBvZiByYW5nZVxuICogQHBhcmFtIG1heCBtYXhpbXVtIHZhbHVlIG9mIHJhbmdlXG4gKi9cbmZ1bmN0aW9uIGxpbWl0TnVtYmVyV2l0aGluUmFuZ2UobnVtOiBudW1iZXIsIG1pbjogbnVtYmVyID0gMSwgbWF4OiBudW1iZXIgPSBJbmZpbml0eSk6IGFueSB7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KG51bSwgbWluIDwgMSA/IDEgOiBtaW4pLCBtYXgpO1xufVxuXG4vKiogUmV0dXJucyB0cnVlIGlmIGJvdGggaXRlbTEgYW5kIGl0ZW0yIEt0ZEdyaWRMYXlvdXRJdGVtcyBhcmUgZXF1aXZhbGVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrdGRHcmlkSXRlbUxheW91dEl0ZW1BcmVFcXVhbChpdGVtMTogS3RkR3JpZExheW91dEl0ZW0sIGl0ZW0yOiBLdGRHcmlkTGF5b3V0SXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIGl0ZW0xLmlkID09PSBpdGVtMi5pZCAmJlxuICAgICAgICBpdGVtMS54ID09PSBpdGVtMi54ICYmXG4gICAgICAgIGl0ZW0xLnkgPT09IGl0ZW0yLnkgJiZcbiAgICAgICAgaXRlbTEudyA9PT0gaXRlbTIudyAmJlxuICAgICAgICBpdGVtMS5oID09PSBpdGVtMi5oXG4gICAgKTtcbn1cblxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { filter } from 'rxjs/operators';
|
|
3
|
+
/** Runs source observable outside the zone */
|
|
4
|
+
export function ktdOutsideZone(zone) {
|
|
5
|
+
return (source) => {
|
|
6
|
+
return new Observable(observer => {
|
|
7
|
+
return zone.runOutsideAngular(() => source.subscribe(observer));
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/** Rxjs operator that makes source observable to no emit any data */
|
|
12
|
+
export function ktdNoEmit() {
|
|
13
|
+
return (source$) => {
|
|
14
|
+
return source$.pipe(filter(() => false));
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdXNlci13b3Jrc3BhY2Uvc3JjL2xpYi91dGlscy9vcGVyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLDhDQUE4QztBQUM5QyxNQUFNLFVBQVUsY0FBYyxDQUFJLElBQVk7SUFDMUMsT0FBTyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtRQUM3QixPQUFPLElBQUksVUFBVSxDQUFJLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFlLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztBQUNOLENBQUM7QUFHRCxxRUFBcUU7QUFDckUsTUFBTSxVQUFVLFNBQVM7SUFDckIsT0FBTyxDQUFDLE9BQXdCLEVBQW1CLEVBQUU7UUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogUnVucyBzb3VyY2Ugb2JzZXJ2YWJsZSBvdXRzaWRlIHRoZSB6b25lICovXG5leHBvcnQgZnVuY3Rpb24ga3RkT3V0c2lkZVpvbmU8VD4oem9uZTogTmdab25lKSB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyPFN1YnNjcmlwdGlvbj4oKCkgPT4gc291cmNlLnN1YnNjcmliZShvYnNlcnZlcikpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuXG5cbi8qKiBSeGpzIG9wZXJhdG9yIHRoYXQgbWFrZXMgc291cmNlIG9ic2VydmFibGUgdG8gbm8gZW1pdCBhbnkgZGF0YSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZE5vRW1pdCgpIHtcbiAgICByZXR1cm4gKHNvdXJjZSQ6IE9ic2VydmFibGU8YW55Pik6IE9ic2VydmFibGU8YW55PiA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoZmlsdGVyKCgpID0+IGZhbHNlKSk7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Cached result of whether the user's browser supports passive event listeners. */
|
|
2
|
+
let supportsPassiveEvents;
|
|
3
|
+
/**
|
|
4
|
+
* Checks whether the user's browser supports passive event listeners.
|
|
5
|
+
* See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
|
|
6
|
+
*/
|
|
7
|
+
export function ktdSupportsPassiveEventListeners() {
|
|
8
|
+
if (supportsPassiveEvents == null && typeof window !== 'undefined') {
|
|
9
|
+
try {
|
|
10
|
+
window.addEventListener('test', null, Object.defineProperty({}, 'passive', {
|
|
11
|
+
get: () => supportsPassiveEvents = true
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
supportsPassiveEvents = supportsPassiveEvents || false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return supportsPassiveEvents;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Normalizes an `AddEventListener` object to something that can be passed
|
|
22
|
+
* to `addEventListener` on any browser, no matter whether it supports the
|
|
23
|
+
* `options` parameter.
|
|
24
|
+
* @param options Object to be normalized.
|
|
25
|
+
*/
|
|
26
|
+
export function ktdNormalizePassiveListenerOptions(options) {
|
|
27
|
+
return ktdSupportsPassiveEventListeners() ? options : !!options.capture;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2l2ZS1saXN0ZW5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS11c2VyLXdvcmtzcGFjZS9zcmMvbGliL3V0aWxzL3Bhc3NpdmUtbGlzdGVuZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9GQUFvRjtBQUNwRixJQUFJLHFCQUE4QixDQUFDO0FBRW5DOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0M7SUFDNUMsSUFBSSxxQkFBcUIsSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDO1lBQ0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFLLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFO2dCQUN4RSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMscUJBQXFCLEdBQUcsSUFBSTthQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUM7Z0JBQVMsQ0FBQztZQUNQLHFCQUFxQixHQUFHLHFCQUFxQixJQUFJLEtBQUssQ0FBQztRQUMzRCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8scUJBQXFCLENBQUM7QUFDakMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLE9BQWdDO0lBRS9FLE9BQU8sZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENhY2hlZCByZXN1bHQgb2Ygd2hldGhlciB0aGUgdXNlcidzIGJyb3dzZXIgc3VwcG9ydHMgcGFzc2l2ZSBldmVudCBsaXN0ZW5lcnMuICovXG5sZXQgc3VwcG9ydHNQYXNzaXZlRXZlbnRzOiBib29sZWFuO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSB1c2VyJ3MgYnJvd3NlciBzdXBwb3J0cyBwYXNzaXZlIGV2ZW50IGxpc3RlbmVycy5cbiAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvRXZlbnRMaXN0ZW5lck9wdGlvbnMvYmxvYi9naC1wYWdlcy9leHBsYWluZXIubWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFN1cHBvcnRzUGFzc2l2ZUV2ZW50TGlzdGVuZXJzKCk6IGJvb2xlYW4ge1xuICAgIGlmIChzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPT0gbnVsbCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBudWxsISwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAncGFzc2l2ZScsIHtcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHRydWVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHN1cHBvcnRzUGFzc2l2ZUV2ZW50cyB8fCBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3J0c1Bhc3NpdmVFdmVudHM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhbiBgQWRkRXZlbnRMaXN0ZW5lcmAgb2JqZWN0IHRvIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBwYXNzZWRcbiAqIHRvIGBhZGRFdmVudExpc3RlbmVyYCBvbiBhbnkgYnJvd3Nlciwgbm8gbWF0dGVyIHdoZXRoZXIgaXQgc3VwcG9ydHMgdGhlXG4gKiBgb3B0aW9uc2AgcGFyYW1ldGVyLlxuICogQHBhcmFtIG9wdGlvbnMgT2JqZWN0IHRvIGJlIG5vcm1hbGl6ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrdGROb3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zKG9wdGlvbnM6IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTpcbiAgICBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IGJvb2xlYW4ge1xuICAgIHJldHVybiBrdGRTdXBwb3J0c1Bhc3NpdmVFdmVudExpc3RlbmVycygpID8gb3B0aW9ucyA6ICEhb3B0aW9ucy5jYXB0dXJlO1xufVxuIl19
|