@net7/boilerplate-dataviz 4.9.6 → 5.0.0

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.
Files changed (74) hide show
  1. package/{esm2020 → esm2022}/lib/components/card/card.mjs +4 -4
  2. package/esm2022/lib/components/card-state-wrapper/card-state-wrapper.mjs +57 -0
  3. package/{esm2020 → esm2022}/lib/components/card-text-item/card-text-item.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/components/data-widget-wrapper/data-widget-wrapper.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/components/datepicker-wrapper/datepicker-wrapper.mjs +4 -4
  6. package/esm2022/lib/data-sources/card-items/apex-chart-item.ds.mjs +26 -0
  7. package/esm2022/lib/data-sources/card-items/map-item.ds.mjs +33 -0
  8. package/{esm2020 → esm2022}/lib/data-sources/data-widget-wrapper.ds.mjs +1 -1
  9. package/esm2022/lib/data-sources/datepicker-wrapper.ds.mjs +55 -0
  10. package/esm2022/lib/event-handlers/datepicker-wrapper.eh.mjs +27 -0
  11. package/esm2022/lib/layout/card-example-layout/card-example-layout.eh.mjs +23 -0
  12. package/{esm2020 → esm2022}/lib/layout/card-example-layout/card-example-layout.mjs +5 -5
  13. package/{esm2020 → esm2022}/lib/layout/example-layout/example-layout.eh.mjs +1 -1
  14. package/{esm2020 → esm2022}/lib/layout/example-layout/example-layout.mjs +5 -5
  15. package/esm2022/lib/models/apex/apex-handler.mjs +12 -0
  16. package/{esm2020 → esm2022}/lib/models/apex/apex-helpers.mjs +1 -1
  17. package/esm2022/lib/models/card-loader.mjs +127 -0
  18. package/{esm2020 → esm2022}/lib/n7-boilerplate-dataviz.module.mjs +21 -21
  19. package/{fesm2020 → fesm2022}/net7-boilerplate-dataviz.mjs +61 -60
  20. package/{fesm2015 → fesm2022}/net7-boilerplate-dataviz.mjs.map +1 -1
  21. package/lib/components/card/card.d.ts +1 -1
  22. package/lib/components/card-state-wrapper/card-state-wrapper.d.ts +1 -1
  23. package/lib/components/card-text-item/card-text-item.d.ts +2 -2
  24. package/lib/components/data-widget-wrapper/data-widget-wrapper.d.ts +1 -1
  25. package/lib/components/datepicker-wrapper/datepicker-wrapper.d.ts +1 -1
  26. package/lib/layout/card-example-layout/card-example-layout.d.ts +1 -1
  27. package/lib/layout/example-layout/example-layout.d.ts +1 -1
  28. package/lib/types/card-item.types.d.ts +1 -1
  29. package/lib/types/card.types.d.ts +7 -7
  30. package/lib/types/response.types.d.ts +3 -3
  31. package/package.json +5 -11
  32. package/esm2020/lib/components/card-state-wrapper/card-state-wrapper.mjs +0 -57
  33. package/esm2020/lib/data-sources/card-items/apex-chart-item.ds.mjs +0 -26
  34. package/esm2020/lib/data-sources/card-items/map-item.ds.mjs +0 -33
  35. package/esm2020/lib/data-sources/datepicker-wrapper.ds.mjs +0 -55
  36. package/esm2020/lib/event-handlers/datepicker-wrapper.eh.mjs +0 -27
  37. package/esm2020/lib/layout/card-example-layout/card-example-layout.eh.mjs +0 -23
  38. package/esm2020/lib/models/apex/apex-handler.mjs +0 -12
  39. package/esm2020/lib/models/card-loader.mjs +0 -127
  40. package/fesm2015/net7-boilerplate-dataviz.mjs +0 -1045
  41. package/fesm2020/net7-boilerplate-dataviz.mjs.map +0 -1
  42. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  43. /package/{esm2020 → esm2022}/lib/data-sources/card-items/data-widget-item.ds.mjs +0 -0
  44. /package/{esm2020 → esm2022}/lib/data-sources/card-items/index.mjs +0 -0
  45. /package/{esm2020 → esm2022}/lib/data-sources/card-items/inner-title-item.ds.mjs +0 -0
  46. /package/{esm2020 → esm2022}/lib/data-sources/card-items/select-item.ds.mjs +0 -0
  47. /package/{esm2020 → esm2022}/lib/data-sources/card-items/table-item.ds.mjs +0 -0
  48. /package/{esm2020 → esm2022}/lib/data-sources/card-items/text-item.ds.mjs +0 -0
  49. /package/{esm2020 → esm2022}/lib/data-sources/card.ds.mjs +0 -0
  50. /package/{esm2020 → esm2022}/lib/data-sources/graph.ds.mjs +0 -0
  51. /package/{esm2020 → esm2022}/lib/data-sources/index.mjs +0 -0
  52. /package/{esm2020 → esm2022}/lib/data-sources/inner-title.ds.mjs +0 -0
  53. /package/{esm2020 → esm2022}/lib/data-sources/widget.ds.mjs +0 -0
  54. /package/{esm2020 → esm2022}/lib/event-handlers/card.eh.mjs +0 -0
  55. /package/{esm2020 → esm2022}/lib/event-handlers/index.mjs +0 -0
  56. /package/{esm2020 → esm2022}/lib/layout/card-example-layout/card-example-layout.config.mjs +0 -0
  57. /package/{esm2020 → esm2022}/lib/layout/card-example-layout/card-example-layout.ds.mjs +0 -0
  58. /package/{esm2020 → esm2022}/lib/layout/example-layout/example-layout.config.mjs +0 -0
  59. /package/{esm2020 → esm2022}/lib/layout/example-layout/example-layout.ds.mjs +0 -0
  60. /package/{esm2020 → esm2022}/lib/layout/index.mjs +0 -0
  61. /package/{esm2020 → esm2022}/lib/models/apex/index.mjs +0 -0
  62. /package/{esm2020 → esm2022}/lib/models/apex/transformers/bar-chart.mjs +0 -0
  63. /package/{esm2020 → esm2022}/lib/models/apex/transformers/index.mjs +0 -0
  64. /package/{esm2020 → esm2022}/lib/models/apex/transformers/line-chart.mjs +0 -0
  65. /package/{esm2020 → esm2022}/lib/models/apex/transformers/pie-chart.mjs +0 -0
  66. /package/{esm2020 → esm2022}/lib/models/apex/transformers/radar-chart.mjs +0 -0
  67. /package/{esm2020 → esm2022}/lib/models/apex/transformers/radialbar-chart.mjs +0 -0
  68. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  69. /package/{esm2020 → esm2022}/lib/types/card-item.types.mjs +0 -0
  70. /package/{esm2020 → esm2022}/lib/types/card.types.mjs +0 -0
  71. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  72. /package/{esm2020 → esm2022}/lib/types/response.types.mjs +0 -0
  73. /package/{esm2020 → esm2022}/net7-boilerplate-dataviz.mjs +0 -0
  74. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -1,13 +1,13 @@
1
- export declare type ChartResponseData = {
1
+ export type ChartResponseData = {
2
2
  categories: string[];
3
3
  series: ChartResponseSeries[];
4
4
  };
5
- export declare type ChartResponseSeries = {
5
+ export type ChartResponseSeries = {
6
6
  id: string;
7
7
  name: string;
8
8
  data: (number | ChartResponseSeriesData)[];
9
9
  };
10
- export declare type ChartResponseSeriesData = {
10
+ export type ChartResponseSeriesData = {
11
11
  value: number;
12
12
  metadata?: object;
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@net7/boilerplate-dataviz",
3
- "version": "4.9.6",
3
+ "version": "5.0.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.2.12",
6
6
  "@angular/core": "^14.2.12"
@@ -10,11 +10,7 @@
10
10
  "dayjs": "^1.11.1",
11
11
  "tslib": "^2.3.0"
12
12
  },
13
- "module": "fesm2015/net7-boilerplate-dataviz.mjs",
14
- "es2020": "fesm2020/net7-boilerplate-dataviz.mjs",
15
- "esm2020": "esm2020/net7-boilerplate-dataviz.mjs",
16
- "fesm2020": "fesm2020/net7-boilerplate-dataviz.mjs",
17
- "fesm2015": "fesm2015/net7-boilerplate-dataviz.mjs",
13
+ "module": "fesm2022/net7-boilerplate-dataviz.mjs",
18
14
  "typings": "index.d.ts",
19
15
  "exports": {
20
16
  "./package.json": {
@@ -22,11 +18,9 @@
22
18
  },
23
19
  ".": {
24
20
  "types": "./index.d.ts",
25
- "esm2020": "./esm2020/net7-boilerplate-dataviz.mjs",
26
- "es2020": "./fesm2020/net7-boilerplate-dataviz.mjs",
27
- "es2015": "./fesm2015/net7-boilerplate-dataviz.mjs",
28
- "node": "./fesm2015/net7-boilerplate-dataviz.mjs",
29
- "default": "./fesm2020/net7-boilerplate-dataviz.mjs"
21
+ "esm2022": "./esm2022/net7-boilerplate-dataviz.mjs",
22
+ "esm": "./esm2022/net7-boilerplate-dataviz.mjs",
23
+ "default": "./fesm2022/net7-boilerplate-dataviz.mjs"
30
24
  }
31
25
  },
32
26
  "sideEffects": false
@@ -1,57 +0,0 @@
1
- import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
2
- import { delay } from 'rxjs/operators';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class CardStateWrapperComponent {
6
- constructor() {
7
- this.componentRef = {};
8
- }
9
- ngOnInit() {
10
- // Called after the constructor, initializing input properties,
11
- // and the first call to ngOnChanges.
12
- this.state$
13
- // This subscriber must run AFTER the HTML async pipe
14
- .pipe(delay(0))
15
- .subscribe({
16
- next: (stateID) => {
17
- if (this.stateComponents && this.stateComponents[stateID]) {
18
- // only clear the state if the view exists
19
- if (this[stateID]) {
20
- // this[stateID] will be one of the states declared as @ViewChild
21
- this[stateID].clear();
22
- }
23
- const { component, data } = this.stateComponents[stateID];
24
- if (component) {
25
- this.componentRef[stateID] = this[stateID].createComponent(component);
26
- if (data) {
27
- this.componentRef[stateID].instance.data = data;
28
- }
29
- }
30
- }
31
- }
32
- });
33
- }
34
- }
35
- CardStateWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CardStateWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
36
- CardStateWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CardStateWrapperComponent, selector: "dv-card-state-wrapper", inputs: { state$: "state$", stateComponents: "stateComponents" }, viewQueries: [{ propertyName: "loading", first: true, predicate: ["loading"], descendants: true, read: ViewContainerRef }, { propertyName: "empty", first: true, predicate: ["empty"], descendants: true, read: ViewContainerRef }, { propertyName: "error", first: true, predicate: ["error"], descendants: true, read: ViewContainerRef }, { propertyName: "idle", first: true, predicate: ["idle"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container *ngIf=\"(state$ | async) as state\">\n <ng-container [ngSwitch]=\"state\">\n <ng-container *ngSwitchCase=\"'idle'\">\n <ng-container #idle></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'loading'\">\n <ng-container #loading></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container #empty></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'success'\">\n <!-- card content -->\n <ng-content></ng-content>\n <!-- ------------ -->\n </ng-container>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CardStateWrapperComponent, decorators: [{
38
- type: Component,
39
- args: [{ selector: 'dv-card-state-wrapper', template: "<ng-container *ngIf=\"(state$ | async) as state\">\n <ng-container [ngSwitch]=\"state\">\n <ng-container *ngSwitchCase=\"'idle'\">\n <ng-container #idle></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'loading'\">\n <ng-container #loading></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container #empty></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'success'\">\n <!-- card content -->\n <ng-content></ng-content>\n <!-- ------------ -->\n </ng-container>\n </ng-container>\n</ng-container>\n" }]
40
- }], propDecorators: { state$: [{
41
- type: Input
42
- }], stateComponents: [{
43
- type: Input
44
- }], loading: [{
45
- type: ViewChild,
46
- args: ['loading', { read: ViewContainerRef }]
47
- }], empty: [{
48
- type: ViewChild,
49
- args: ['empty', { read: ViewContainerRef }]
50
- }], error: [{
51
- type: ViewChild,
52
- args: ['error', { read: ViewContainerRef }]
53
- }], idle: [{
54
- type: ViewChild,
55
- args: ['idle', { read: ViewContainerRef }]
56
- }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1zdGF0ZS13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtZGF0YXZpei9zcmMvbGliL2NvbXBvbmVudHMvY2FyZC1zdGF0ZS13cmFwcGVyL2NhcmQtc3RhdGUtd3JhcHBlci50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWRhdGF2aXovc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtc3RhdGUtd3JhcHBlci9jYXJkLXN0YXRlLXdyYXBwZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsZ0JBQWdCLEVBQ3RELE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUXZDLE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFvQlUsaUJBQVksR0FBRyxFQUFFLENBQUM7S0EyQjNCO0lBekJDLFFBQVE7UUFDTiwrREFBK0Q7UUFDL0QscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNO1lBQ1QscURBQXFEO2FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDZCxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3pELDBDQUEwQztvQkFDMUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ2pCLGlFQUFpRTt3QkFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUN2QjtvQkFDRCxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzFELElBQUksU0FBUyxFQUFFO3dCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDdEUsSUFBSSxJQUFJLEVBQUU7NEJBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzt5QkFDakQ7cUJBQ0Y7aUJBQ0Y7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUhBekNVLHlCQUF5QjsyR0FBekIseUJBQXlCLDhNQU9OLGdCQUFnQix5RkFFbEIsZ0JBQWdCLHlGQUVoQixnQkFBZ0IsdUZBRWpCLGdCQUFnQiw2QkN6QjdDLHdyQkFrQkE7NEZETmEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1Qjs4QkFLeEIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSTRDLE9BQU87c0JBQXhELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUVBLEtBQUs7c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUVFLEtBQUs7c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUVDLElBQUk7c0JBQWxELFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FyZFN0YXRlLCBDYXJkU3RhdGVDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vdHlwZXMvY2FyZC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2R2LWNhcmQtc3RhdGUtd3JhcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLXN0YXRlLXdyYXBwZXIuaHRtbCcsXG59KVxuXG5leHBvcnQgY2xhc3MgQ2FyZFN0YXRlV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHN0YXRlJDogQmVoYXZpb3JTdWJqZWN0PENhcmRTdGF0ZT47XG5cbiAgQElucHV0KCkgc3RhdGVDb21wb25lbnRzOiBDYXJkU3RhdGVDb21wb25lbnRzO1xuXG4gIC8vIFBvc3NpYmxlIGNhcmQgc3RhdGVzOlxuXG4gIEBWaWV3Q2hpbGQoJ2xvYWRpbmcnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgbG9hZGluZzogVmlld0NvbnRhaW5lclJlZjtcblxuICBAVmlld0NoaWxkKCdlbXB0eScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBlbXB0eTogVmlld0NvbnRhaW5lclJlZjtcblxuICBAVmlld0NoaWxkKCdlcnJvcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBlcnJvcjogVmlld0NvbnRhaW5lclJlZjtcblxuICBAVmlld0NoaWxkKCdpZGxlJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGlkbGU6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWYgPSB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yLCBpbml0aWFsaXppbmcgaW5wdXQgcHJvcGVydGllcyxcbiAgICAvLyBhbmQgdGhlIGZpcnN0IGNhbGwgdG8gbmdPbkNoYW5nZXMuXG4gICAgdGhpcy5zdGF0ZSRcbiAgICAgIC8vIFRoaXMgc3Vic2NyaWJlciBtdXN0IHJ1biBBRlRFUiB0aGUgSFRNTCBhc3luYyBwaXBlXG4gICAgICAucGlwZShkZWxheSgwKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoc3RhdGVJRCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnN0YXRlQ29tcG9uZW50cyAmJiB0aGlzLnN0YXRlQ29tcG9uZW50c1tzdGF0ZUlEXSkge1xuICAgICAgICAgICAgLy8gb25seSBjbGVhciB0aGUgc3RhdGUgaWYgdGhlIHZpZXcgZXhpc3RzXG4gICAgICAgICAgICBpZiAodGhpc1tzdGF0ZUlEXSkge1xuICAgICAgICAgICAgICAvLyB0aGlzW3N0YXRlSURdIHdpbGwgYmUgb25lIG9mIHRoZSBzdGF0ZXMgZGVjbGFyZWQgYXMgQFZpZXdDaGlsZFxuICAgICAgICAgICAgICB0aGlzW3N0YXRlSURdLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGNvbXBvbmVudCwgZGF0YSB9ID0gdGhpcy5zdGF0ZUNvbXBvbmVudHNbc3RhdGVJRF07XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmW3N0YXRlSURdID0gdGhpc1tzdGF0ZUlEXS5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZltzdGF0ZUlEXS5pbnN0YW5jZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoc3RhdGUkIHwgYXN5bmMpIGFzIHN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3RhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lkbGUnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICNpZGxlPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xvYWRpbmcnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICNsb2FkaW5nPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VtcHR5J1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjZW1wdHk+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3VjY2VzcydcIj5cbiAgICAgICAgICAgIDwhLS0gY2FyZCBjb250ZW50IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0gLS0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,26 +0,0 @@
1
- import { DataSource } from '@net7/core';
2
- import { apexHandler } from '../../models/apex/apex-handler';
3
- export class ApexChartItemDS extends DataSource {
4
- transform(data) {
5
- return data;
6
- }
7
- update(newData) {
8
- const formattedData = apexHandler.transform({
9
- data: newData,
10
- id: this.id,
11
- type: this.type,
12
- options: this.options,
13
- });
14
- if (this.instance) {
15
- // lib api update
16
- this.instance.updateOptions(formattedData.libOptions);
17
- }
18
- else {
19
- formattedData.setChart = (chart) => {
20
- this.instance = chart;
21
- };
22
- this.run(formattedData);
23
- }
24
- }
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBleC1jaGFydC1pdGVtLmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtZGF0YXZpei9zcmMvbGliL2RhdGEtc291cmNlcy9jYXJkLWl0ZW1zL2FwZXgtY2hhcnQtaXRlbS5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxVQUFVO0lBT25DLFNBQVMsQ0FBQyxJQUFlO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUEwQjtRQUMvQixNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQzFDLElBQUksRUFBRSxPQUFPO1lBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixpQkFBaUI7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxhQUFhLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFydERhdGEgfSBmcm9tICdAbmV0Ny9jb21wb25lbnRzJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAbmV0Ny9jb3JlJztcbmltcG9ydCB7IGFwZXhIYW5kbGVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwZXgvYXBleC1oYW5kbGVyJztcbmltcG9ydCB7IENoYXJ0UmVzcG9uc2VEYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMvcmVzcG9uc2UudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQXBleENoYXJ0SXRlbURTIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG5cbiAgdHlwZTogc3RyaW5nO1xuXG4gIGluc3RhbmNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybShkYXRhOiBDaGFydERhdGEpOiBDaGFydERhdGEge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdXBkYXRlKG5ld0RhdGE6IENoYXJ0UmVzcG9uc2VEYXRhKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0YSA9IGFwZXhIYW5kbGVyLnRyYW5zZm9ybSh7XG4gICAgICBkYXRhOiBuZXdEYXRhLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIC8vIGxpYiBhcGkgdXBkYXRlXG4gICAgICB0aGlzLmluc3RhbmNlLnVwZGF0ZU9wdGlvbnMoZm9ybWF0dGVkRGF0YS5saWJPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0dGVkRGF0YS5zZXRDaGFydCA9IChjaGFydCkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gY2hhcnQ7XG4gICAgICB9O1xuICAgICAgdGhpcy5ydW4oZm9ybWF0dGVkRGF0YSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,33 +0,0 @@
1
- import { DataSource } from '@net7/core';
2
- import { merge } from 'lodash';
3
- export class MapItemDS extends DataSource {
4
- transform(data) {
5
- return data;
6
- }
7
- update(newData) {
8
- if (!this.instance) {
9
- const formattedData = merge({
10
- containerId: `map-${this.id}`,
11
- libOptions: {
12
- attributionControl: false,
13
- },
14
- tileLayers: [],
15
- initialView: {
16
- center: []
17
- },
18
- markers: []
19
- }, newData);
20
- formattedData._setInstance = (map) => {
21
- this.instance = map;
22
- };
23
- this.run(formattedData);
24
- }
25
- else {
26
- console.warn(`
27
- Map ${this.id} instance update is delegated on project.
28
- Try using the datasource instance property (ds.instance)
29
- `);
30
- }
31
- }
32
- }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWl0ZW0uZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1kYXRhdml6L3NyYy9saWIvZGF0YS1zb3VyY2VzL2NhcmQtaXRlbXMvbWFwLWl0ZW0uZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRS9CLE1BQU0sT0FBTyxTQUFVLFNBQVEsVUFBVTtJQU83QixTQUFTLENBQUMsSUFBZTtRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsTUFBTSxhQUFhLEdBQXFCLEtBQUssQ0FBQztnQkFDNUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsVUFBVSxFQUFFO29CQUNWLGtCQUFrQixFQUFFLEtBQUs7aUJBQzFCO2dCQUNELFVBQVUsRUFBRSxFQUFFO2dCQUNkLFdBQVcsRUFBRTtvQkFDWCxNQUFNLEVBQUUsRUFBRTtpQkFDWDtnQkFDRCxPQUFPLEVBQUUsRUFBRTthQUNaLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDWixhQUFhLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1lBQ3RCLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekI7YUFBTTtZQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUM7Y0FDTCxJQUFJLENBQUMsRUFBRTs7T0FFZCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYXJ0RGF0YSwgTWFwRGF0YSB9IGZyb20gJ0BuZXQ3L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY2xhc3MgTWFwSXRlbURTIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG5cbiAgdHlwZTogc3RyaW5nO1xuXG4gIGluc3RhbmNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybShkYXRhOiBDaGFydERhdGEpOiBDaGFydERhdGEge1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdXBkYXRlKG5ld0RhdGE6IFBhcnRpYWw8TWFwRGF0YT4pIHtcbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGE6IFBhcnRpYWw8TWFwRGF0YT4gPSBtZXJnZSh7XG4gICAgICAgIGNvbnRhaW5lcklkOiBgbWFwLSR7dGhpcy5pZH1gLFxuICAgICAgICBsaWJPcHRpb25zOiB7XG4gICAgICAgICAgYXR0cmlidXRpb25Db250cm9sOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgdGlsZUxheWVyczogW10sXG4gICAgICAgIGluaXRpYWxWaWV3OiB7XG4gICAgICAgICAgY2VudGVyOiBbXVxuICAgICAgICB9LFxuICAgICAgICBtYXJrZXJzOiBbXVxuICAgICAgfSwgbmV3RGF0YSk7XG4gICAgICBmb3JtYXR0ZWREYXRhLl9zZXRJbnN0YW5jZSA9IChtYXApID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG1hcDtcbiAgICAgIH07XG4gICAgICB0aGlzLnJ1bihmb3JtYXR0ZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKGBcbiAgICAgICAgTWFwICR7dGhpcy5pZH0gaW5zdGFuY2UgdXBkYXRlIGlzIGRlbGVnYXRlZCBvbiBwcm9qZWN0LlxuICAgICAgICBUcnkgdXNpbmcgdGhlIGRhdGFzb3VyY2UgaW5zdGFuY2UgcHJvcGVydHkgKGRzLmluc3RhbmNlKVxuICAgICAgYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,55 +0,0 @@
1
- import { DataSource } from '@net7/core';
2
- export class DvDatepickerWrapperDS extends DataSource {
3
- constructor() {
4
- super(...arguments);
5
- this._datepicker = null;
6
- }
7
- transform(data) {
8
- if (!data) {
9
- return null;
10
- }
11
- return {
12
- // set select option
13
- select: {
14
- id: data.select.id,
15
- hidden: true,
16
- icon: data.select.icon || 'n7-icon-angle-down',
17
- label: data.select.label,
18
- items: data.select.items,
19
- classes: data.select.classes,
20
- },
21
- // set picker
22
- datepicker: {
23
- hidden: true,
24
- data: {
25
- id: data.datepicker.id,
26
- libOptions: data.datepicker.libOptions,
27
- getInstance: (datepicker) => { this._datepicker = datepicker; },
28
- },
29
- },
30
- };
31
- }
32
- openDatepicker() {
33
- setTimeout(() => this._datepicker.open());
34
- this.output.select.hidden = true;
35
- this.output.datepicker.hidden = false;
36
- }
37
- closeDatepicker() {
38
- setTimeout(() => this._datepicker.close());
39
- this.output.select.hidden = true;
40
- this.output.datepicker.hidden = true;
41
- }
42
- setLabel(payload) {
43
- this.output.select.label = payload;
44
- this.output.datepicker.hidden = true;
45
- }
46
- toggleDropDown() {
47
- if (this.output.select.hidden === false) {
48
- this.output.select.hidden = true;
49
- }
50
- else {
51
- this.output.select.hidden = false;
52
- }
53
- }
54
- }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci13cmFwcGVyLmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtZGF0YXZpei9zcmMvbGliL2RhdGEtc291cmNlcy9kYXRlcGlja2VyLXdyYXBwZXIuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsVUFBVTtJQUFyRDs7UUFDWSxnQkFBVyxHQUFRLElBQUksQ0FBQztJQW1EcEMsQ0FBQztJQWpEVyxTQUFTLENBQUMsSUFBSTtRQUN0QixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7U0FBRTtRQUUzQixPQUFPO1lBQ0wsb0JBQW9CO1lBQ3BCLE1BQU0sRUFBRTtnQkFDTixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsQixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksb0JBQW9CO2dCQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2FBQzdCO1lBQ0QsYUFBYTtZQUNiLFVBQVUsRUFBRTtnQkFDVixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUU7b0JBQ0osRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDdEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTtvQkFDdEMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQ2hFO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBTztRQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTtZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2xDO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgRHZEYXRlcGlja2VyV3JhcHBlckRTIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIHByb3RlY3RlZCBfZGF0ZXBpY2tlcjogYW55ID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtKGRhdGEpOiBhbnkge1xuICAgIGlmICghZGF0YSkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHNldCBzZWxlY3Qgb3B0aW9uXG4gICAgICBzZWxlY3Q6IHtcbiAgICAgICAgaWQ6IGRhdGEuc2VsZWN0LmlkLFxuICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIGljb246IGRhdGEuc2VsZWN0Lmljb24gfHwgJ243LWljb24tYW5nbGUtZG93bicsXG4gICAgICAgIGxhYmVsOiBkYXRhLnNlbGVjdC5sYWJlbCxcbiAgICAgICAgaXRlbXM6IGRhdGEuc2VsZWN0Lml0ZW1zLFxuICAgICAgICBjbGFzc2VzOiBkYXRhLnNlbGVjdC5jbGFzc2VzLFxuICAgICAgfSxcbiAgICAgIC8vIHNldCBwaWNrZXJcbiAgICAgIGRhdGVwaWNrZXI6IHtcbiAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaWQ6IGRhdGEuZGF0ZXBpY2tlci5pZCxcbiAgICAgICAgICBsaWJPcHRpb25zOiBkYXRhLmRhdGVwaWNrZXIubGliT3B0aW9ucyxcbiAgICAgICAgICBnZXRJbnN0YW5jZTogKGRhdGVwaWNrZXIpID0+IHsgdGhpcy5fZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBvcGVuRGF0ZXBpY2tlcigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2RhdGVwaWNrZXIub3BlbigpKTtcbiAgICB0aGlzLm91dHB1dC5zZWxlY3QuaGlkZGVuID0gdHJ1ZTtcbiAgICB0aGlzLm91dHB1dC5kYXRlcGlja2VyLmhpZGRlbiA9IGZhbHNlO1xuICB9XG5cbiAgY2xvc2VEYXRlcGlja2VyKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fZGF0ZXBpY2tlci5jbG9zZSgpKTtcbiAgICB0aGlzLm91dHB1dC5zZWxlY3QuaGlkZGVuID0gdHJ1ZTtcbiAgICB0aGlzLm91dHB1dC5kYXRlcGlja2VyLmhpZGRlbiA9IHRydWU7XG4gIH1cblxuICBzZXRMYWJlbChwYXlsb2FkKSB7XG4gICAgdGhpcy5vdXRwdXQuc2VsZWN0LmxhYmVsID0gcGF5bG9hZDtcbiAgICB0aGlzLm91dHB1dC5kYXRlcGlja2VyLmhpZGRlbiA9IHRydWU7XG4gIH1cblxuICB0b2dnbGVEcm9wRG93bigpIHtcbiAgICBpZiAodGhpcy5vdXRwdXQuc2VsZWN0LmhpZGRlbiA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMub3V0cHV0LnNlbGVjdC5oaWRkZW4gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm91dHB1dC5zZWxlY3QuaGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,27 +0,0 @@
1
- import { EventHandler } from '@net7/core';
2
- export class DvDatepickerWrapperEH extends EventHandler {
3
- listen() {
4
- this.innerEvents$.subscribe(({ type, payload }) => {
5
- switch (type) {
6
- case 'dv-datepicker-wrapper.click':
7
- this.dataSource.setLabel(payload);
8
- if (payload === 'ByDate') {
9
- this.dataSource.openDatepicker();
10
- }
11
- else {
12
- this.dataSource.closeDatepicker();
13
- }
14
- break;
15
- case 'dv-datepicker-wrapper.toggle':
16
- this.dataSource.toggleDropDown();
17
- break;
18
- case 'dv-datepicker-wrapper.change':
19
- this.dataSource.setLabel(payload.dateStr);
20
- break;
21
- default:
22
- break;
23
- }
24
- });
25
- }
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci13cmFwcGVyLmVoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtZGF0YXZpei9zcmMvbGliL2V2ZW50LWhhbmRsZXJzL2RhdGVwaWNrZXItd3JhcHBlci5laC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTFDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBQzlDLE1BQU07UUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDaEQsUUFBUSxJQUFJLEVBQUU7Z0JBQ1osS0FBSyw2QkFBNkI7b0JBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNsQyxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUU7d0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7cUJBQ2xDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7cUJBQ25DO29CQUNELE1BQU07Z0JBQ1IsS0FBSyw4QkFBOEI7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pDLE1BQU07Z0JBQ1IsS0FBSyw4QkFBOEI7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDMUMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50SGFuZGxlciB9IGZyb20gJ0BuZXQ3L2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgRHZEYXRlcGlja2VyV3JhcHBlckVIIGV4dGVuZHMgRXZlbnRIYW5kbGVyIHtcbiAgcHVibGljIGxpc3RlbigpIHtcbiAgICB0aGlzLmlubmVyRXZlbnRzJC5zdWJzY3JpYmUoKHsgdHlwZSwgcGF5bG9hZCB9KSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnZHYtZGF0ZXBpY2tlci13cmFwcGVyLmNsaWNrJzpcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0TGFiZWwocGF5bG9hZCk7XG4gICAgICAgICAgaWYgKHBheWxvYWQgPT09ICdCeURhdGUnKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uub3BlbkRhdGVwaWNrZXIoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmNsb3NlRGF0ZXBpY2tlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZHYtZGF0ZXBpY2tlci13cmFwcGVyLnRvZ2dsZSc6XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnRvZ2dsZURyb3BEb3duKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2R2LWRhdGVwaWNrZXItd3JhcHBlci5jaGFuZ2UnOlxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRMYWJlbChwYXlsb2FkLmRhdGVTdHIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { EventHandler } from '@net7/core';
2
- export class DvCardExampleLayoutEH extends EventHandler {
3
- listen() {
4
- this.innerEvents$.subscribe(({ type, payload }) => {
5
- console.log('innerEvents$----->', type, payload);
6
- switch (type) {
7
- case 'dv-card-example-layout.init':
8
- this.dataSource.onInit(payload);
9
- break;
10
- case 'dv-card-example-layout.destroy':
11
- this.dataSource.onDestroy();
12
- break;
13
- default:
14
- break;
15
- }
16
- });
17
- this.outerEvents$.subscribe(({ type, payload }) => {
18
- console.log('outerEvents$----->', type, payload);
19
- // TODO
20
- });
21
- }
22
- }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1leGFtcGxlLWxheW91dC5laC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL243LWJvaWxlcnBsYXRlLWRhdGF2aXovc3JjL2xpYi9sYXlvdXQvY2FyZC1leGFtcGxlLWxheW91dC9jYXJkLWV4YW1wbGUtbGF5b3V0LmVoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFDOUMsTUFBTTtRQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRCxRQUFRLElBQUksRUFBRTtnQkFDWixLQUFLLDZCQUE2QjtvQkFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hDLE1BQU07Z0JBQ1IsS0FBSyxnQ0FBZ0M7b0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzVCLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDakQsT0FBTztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRIYW5kbGVyIH0gZnJvbSAnQG5ldDcvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBEdkNhcmRFeGFtcGxlTGF5b3V0RUggZXh0ZW5kcyBFdmVudEhhbmRsZXIge1xuICBwdWJsaWMgbGlzdGVuKCkge1xuICAgIHRoaXMuaW5uZXJFdmVudHMkLnN1YnNjcmliZSgoeyB0eXBlLCBwYXlsb2FkIH0pID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdpbm5lckV2ZW50cyQtLS0tLT4nLCB0eXBlLCBwYXlsb2FkKTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdkdi1jYXJkLWV4YW1wbGUtbGF5b3V0LmluaXQnOlxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkluaXQocGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2R2LWNhcmQtZXhhbXBsZS1sYXlvdXQuZGVzdHJveSc6XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLm9uRGVzdHJveSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdXRlckV2ZW50cyQuc3Vic2NyaWJlKCh7IHR5cGUsIHBheWxvYWQgfSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ291dGVyRXZlbnRzJC0tLS0tPicsIHR5cGUsIHBheWxvYWQpO1xuICAgICAgLy8gVE9ET1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,12 +0,0 @@
1
- import transformers from './transformers';
2
- export class ApexHandler {
3
- transform({ id, type, data, options }) {
4
- if (!transformers[type]) {
5
- throw Error(`Apex transformer ${type} does not exists`);
6
- }
7
- return transformers[type].run(id, data, options);
8
- }
9
- }
10
- // exports
11
- export const apexHandler = new ApexHandler();
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBleC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbjctYm9pbGVycGxhdGUtZGF0YXZpei9zcmMvbGliL21vZGVscy9hcGV4L2FwZXgtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLE9BQU8sV0FBVztJQUN0QixTQUFTLENBQUMsRUFDUixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQ3hCO1FBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixNQUFNLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBRUQsVUFBVTtBQUNWLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhcnREYXRhIH0gZnJvbSAnQG5ldDcvY29tcG9uZW50cyc7XG5pbXBvcnQgdHJhbnNmb3JtZXJzIGZyb20gJy4vdHJhbnNmb3JtZXJzJztcblxuZXhwb3J0IGNsYXNzIEFwZXhIYW5kbGVyIHtcbiAgdHJhbnNmb3JtKHtcbiAgICBpZCwgdHlwZSwgZGF0YSwgb3B0aW9uc1xuICB9KTogQ2hhcnREYXRhIHtcbiAgICBpZiAoIXRyYW5zZm9ybWVyc1t0eXBlXSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEFwZXggdHJhbnNmb3JtZXIgJHt0eXBlfSBkb2VzIG5vdCBleGlzdHNgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVyc1t0eXBlXS5ydW4oaWQsIGRhdGEsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8vIGV4cG9ydHNcbmV4cG9ydCBjb25zdCBhcGV4SGFuZGxlciA9IG5ldyBBcGV4SGFuZGxlcigpO1xuIl19
@@ -1,127 +0,0 @@
1
- import { BehaviorSubject, forkJoin } from 'rxjs';
2
- import { filter, first } from 'rxjs/operators';
3
- import { CardState } from '../types/card.types';
4
- import { TextItemDS, DataWidgetItemDS, ApexChartItemDS, TableItemDS, InnerTitleItemDS, SelectItemDS, MapItemDS, } from '../data-sources';
5
- import { CardEH } from '../event-handlers';
6
- const DATASOURCE_MAP = {
7
- text: TextItemDS,
8
- table: TableItemDS,
9
- select: SelectItemDS,
10
- map: MapItemDS,
11
- 'inner-title': InnerTitleItemDS,
12
- 'data-widget': DataWidgetItemDS,
13
- 'apex-bar-chart': ApexChartItemDS,
14
- 'apex-line-chart': ApexChartItemDS,
15
- 'apex-pie-chart': ApexChartItemDS,
16
- 'apex-radialbar-chart': ApexChartItemDS,
17
- 'apex-radar-chart': ApexChartItemDS,
18
- };
19
- export class CardLoader {
20
- constructor(layout, config) {
21
- this.layout = layout;
22
- this.config = config;
23
- this.itemsInitialized = false;
24
- /**
25
- * Holds the state of all the internal widgets and sections
26
- * of the cards.
27
- */
28
- this.state$ = {};
29
- this.addLayoutWidgets();
30
- }
31
- getCards() {
32
- const { cards } = this.config;
33
- const cardsWithWidgets = [];
34
- // initialize items
35
- if (cards && !this.itemsInitialized) {
36
- const { widgets } = this.layout.lb;
37
- this.itemsInitialized = true;
38
- cards.forEach(({ id, header, content, footer }, index) => {
39
- const cardWidgets = {};
40
- const cardSections = content.sections
41
- .concat(header?.sections || [])
42
- .concat(footer?.sections || []);
43
- const state$ = {
44
- [id]: new BehaviorSubject(CardState.Idle),
45
- [`${id}.content`]: new BehaviorSubject(CardState.Idle),
46
- [`${id}.header`]: new BehaviorSubject(CardState.Idle),
47
- [`${id}.footer`]: new BehaviorSubject(CardState.Idle),
48
- };
49
- const cardStateComponents = {};
50
- cardSections.forEach(({ id: sectionID, items }) => {
51
- state$[sectionID] = new BehaviorSubject(CardState.Idle);
52
- items.forEach(({ id: widgetID, type: itemType, initialData, stateComponents }) => {
53
- const { ds } = widgets[widgetID];
54
- const { eh } = widgets[widgetID];
55
- ds.id = widgetID;
56
- ds.type = itemType;
57
- const emit = (type, payload) => eh.emitInner(type, payload);
58
- // setup card status stream
59
- // widgets[id].ds.status$ = new BehaviorSubject<Status>(CardState.Idle);
60
- state$[widgetID] = new BehaviorSubject(CardState.Idle);
61
- cardStateComponents[widgetID] = stateComponents;
62
- cardWidgets[widgetID] = { ds, emit };
63
- // with initialData
64
- if (initialData) {
65
- state$[widgetID].pipe(filter((stateID) => stateID === CardState.Success), first()).subscribe({
66
- next: () => ds.update(initialData)
67
- });
68
- }
69
- });
70
- });
71
- // add widgets to card
72
- cardsWithWidgets[index] = {
73
- ...cards[index],
74
- widgets: cardWidgets,
75
- state$,
76
- stateComponents: cardStateComponents,
77
- };
78
- // merge the new states with the existing ones
79
- this.state$ = {
80
- ...this.state$,
81
- ...state$,
82
- };
83
- });
84
- }
85
- return cardsWithWidgets;
86
- }
87
- updateState(ids, newState) {
88
- const updates = forkJoin(ids.map((id) => this.state$[id]));
89
- ids.forEach((id) => {
90
- if (this.state$[id]) {
91
- this.state$[id].next(newState);
92
- }
93
- });
94
- return updates;
95
- }
96
- setState(id, newState) {
97
- return this.updateState([id], newState);
98
- }
99
- setAllStates(newState) {
100
- return this.updateState(Object.keys(this.state$), newState);
101
- }
102
- setSomeStates(ids, newState) {
103
- return this.updateState(ids, newState);
104
- }
105
- addLayoutWidgets() {
106
- const { cards } = this.config;
107
- if (cards) {
108
- this.layout.widgets = this.layout.widgets || [];
109
- cards.forEach(({ header, content, footer }) => {
110
- const cardSections = content.sections
111
- .concat(header?.sections || [])
112
- .concat(footer?.sections || []);
113
- cardSections.forEach(({ items }) => {
114
- items.forEach(({ id, type, options }) => {
115
- this.layout.widgets.push({
116
- id,
117
- options,
118
- dataSource: DATASOURCE_MAP[type],
119
- eventHandler: CardEH
120
- });
121
- });
122
- });
123
- });
124
- }
125
- }
126
- }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uNy1ib2lsZXJwbGF0ZS1kYXRhdml6L3NyYy9saWIvbW9kZWxzL2NhcmQtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUMwQixTQUFTLEVBQ3pDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxNQUFNLGNBQWMsR0FBRztJQUNyQixJQUFJLEVBQUUsVUFBVTtJQUNoQixLQUFLLEVBQUUsV0FBVztJQUNsQixNQUFNLEVBQUUsWUFBWTtJQUNwQixHQUFHLEVBQUUsU0FBUztJQUNkLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixnQkFBZ0IsRUFBRSxlQUFlO0lBQ2pDLGlCQUFpQixFQUFFLGVBQWU7SUFDbEMsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxzQkFBc0IsRUFBRSxlQUFlO0lBQ3ZDLGtCQUFrQixFQUFFLGVBQWU7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1UsTUFBVyxFQUNYLE1BRVA7UUFITyxXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQ1gsV0FBTSxHQUFOLE1BQU0sQ0FFYjtRQU5LLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQVdqQzs7O1dBR0c7UUFDSyxXQUFNLEdBRVYsRUFBRSxD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LENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ2FyZERhdGEsIENhcmREYXRhV2l0aFdpZGdldHMsIENhcmRTdGF0ZVxufSBmcm9tICcuLi90eXBlcy9jYXJkLnR5cGVzJztcbmltcG9ydCB7XG4gIFRleHRJdGVtRFMsXG4gIERhdGFXaWRnZXRJdGVtRFMsXG4gIEFwZXhDaGFydEl0ZW1EUyxcbiAgVGFibGVJdGVtRFMsXG4gIElubmVyVGl0bGVJdGVtRFMsXG4gIFNlbGVjdEl0ZW1EUyxcbiAgTWFwSXRlbURTLFxufSBmcm9tICcuLi9kYXRhLXNvdXJjZXMnO1xuaW1wb3J0IHsgQ2FyZEVIIH0gZnJvbSAnLi4vZXZlbnQtaGFuZGxlcnMnO1xuXG5jb25zdCBEQVRBU09VUkNFX01BUCA9IHtcbiAgdGV4dDogVGV4dEl0ZW1EUyxcbiAgdGFibGU6IFRhYmxlSXRlbURTLFxuICBzZWxlY3Q6IFNlbGVjdEl0ZW1EUyxcbiAgbWFwOiBNYXBJdGVtRFMsXG4gICdpbm5lci10aXRsZSc6IElubmVyVGl0bGVJdGVtRFMsXG4gICdkYXRhLXdpZGdldCc6IERhdGFXaWRnZXRJdGVtRFMsXG4gICdhcGV4LWJhci1jaGFydCc6IEFwZXhDaGFydEl0ZW1EUyxcbiAgJ2FwZXgtbGluZS1jaGFydCc6IEFwZXhDaGFydEl0ZW1EUyxcbiAgJ2FwZXgtcGllLWNoYXJ0JzogQXBleENoYXJ0SXRlbURTLFxuICAnYXBleC1yYWRpYWxiYXItY2hhcnQnOiBBcGV4Q2hhcnRJdGVtRFMsXG4gICdhcGV4LXJhZGFyLWNoYXJ0JzogQXBleENoYXJ0SXRlbURTLFxufTtcblxuZXhwb3J0IGNsYXNzIENhcmRMb2FkZXIge1xuICBwcml2YXRlIGl0ZW1zSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxheW91dDogYW55LFxuICAgIHByaXZhdGUgY29uZmlnOiB7XG4gICAgICBjYXJkczogQ2FyZERhdGFbXTtcbiAgICB9XG4gICkge1xuICAgIHRoaXMuYWRkTGF5b3V0V2lkZ2V0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvbGRzIHRoZSBzdGF0ZSBvZiBhbGwgdGhlIGludGVybmFsIHdpZGdldHMgYW5kIHNlY3Rpb25zXG4gICAqIG9mIHRoZSBjYXJkcy5cbiAgICovXG4gIHByaXZhdGUgc3RhdGUkOiB7XG4gICAgW2lkOiBzdHJpbmddOiBCZWhhdmlvclN1YmplY3Q8Q2FyZFN0YXRlPlxuICB9ID0ge307XG5cbiAgcHVibGljIGdldENhcmRzKCk6IENhcmREYXRhV2l0aFdpZGdldHNbXSB7XG4gICAgY29uc3QgeyBjYXJkcyB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgY2FyZHNXaXRoV2lkZ2V0cyA9IFtdIGFzIENhcmREYXRhV2l0aFdpZGdldHNbXTtcbiAgICAvLyBpbml0aWFsaXplIGl0ZW1zXG4gICAgaWYgKGNhcmRzICYmICF0aGlzLml0ZW1zSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnN0IHsgd2lkZ2V0cyB9ID0gdGhpcy5sYXlvdXQubGI7XG4gICAgICB0aGlzLml0ZW1zSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgY2FyZHMuZm9yRWFjaCgoe1xuICAgICAgICBpZCwgaGVhZGVyLCBjb250ZW50LCBmb290ZXJcbiAgICAgIH0sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNhcmRXaWRnZXRzID0ge307XG4gICAgICAgIGNvbnN0IGNhcmRTZWN0aW9ucyA9IGNvbnRlbnQuc2VjdGlvbnNcbiAgICAgICAgICAuY29uY2F0KGhlYWRlcj8uc2VjdGlvbnMgfHwgW10pXG4gICAgICAgICAgLmNvbmNhdChmb290ZXI/LnNlY3Rpb25zIHx8IFtdKTtcbiAgICAgICAgY29uc3Qgc3RhdGUkID0ge1xuICAgICAgICAgIFtpZF06IG5ldyBCZWhhdmlvclN1YmplY3QoQ2FyZFN0YXRlLklkbGUpLFxuICAgICAgICAgIFtgJHtpZH0uY29udGVudGBdOiBuZXcgQmVoYXZpb3JTdWJqZWN0KENhcmRTdGF0ZS5JZGxlKSxcbiAgICAgICAgICBbYCR7aWR9LmhlYWRlcmBdOiBuZXcgQmVoYXZpb3JTdWJqZWN0KENhcmRTdGF0ZS5JZGxlKSxcbiAgICAgICAgICBbYCR7aWR9LmZvb3RlcmBdOiBuZXcgQmVoYXZpb3JTdWJqZWN0KENhcmRTdGF0ZS5JZGxlKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY2FyZFN0YXRlQ29tcG9uZW50cyA9IHt9O1xuXG4gICAgICAgIGNhcmRTZWN0aW9ucy5mb3JFYWNoKCh7IGlkOiBzZWN0aW9uSUQsIGl0ZW1zIH0pID0+IHtcbiAgICAgICAgICBzdGF0ZSRbc2VjdGlvbklEXSA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ2FyZFN0YXRlLklkbGUpO1xuICAgICAgICAgIGl0ZW1zLmZvckVhY2goKHtcbiAgICAgICAgICAgIGlkOiB3aWRnZXRJRCwgdHlwZTogaXRlbVR5cGUsIGluaXRpYWxEYXRhLCBzdGF0ZUNvbXBvbmVudHNcbiAgICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRzIH0gPSB3aWRnZXRzW3dpZGdldElEXTtcbiAgICAgICAgICAgIGNvbnN0IHsgZWggfSA9IHdpZGdldHNbd2lkZ2V0SURdO1xuICAgICAgICAgICAgZHMuaWQgPSB3aWRnZXRJRDtcbiAgICAgICAgICAgIGRzLnR5cGUgPSBpdGVtVHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGVtaXQgPSAodHlwZTogc3RyaW5nLCBwYXlsb2FkPzogYW55KSA9PiBlaC5lbWl0SW5uZXIodHlwZSwgcGF5bG9hZCk7XG4gICAgICAgICAgICAvLyBzZXR1cCBjYXJkIHN0YXR1cyBzdHJlYW1cbiAgICAgICAgICAgIC8vIHdpZGdldHNbaWRdLmRzLnN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0YXR1cz4oQ2FyZFN0YXRlLklkbGUpO1xuICAgICAgICAgICAgc3RhdGUkW3dpZGdldElEXSA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ2FyZFN0YXRlLklkbGUpO1xuICAgICAgICAgICAgY2FyZFN0YXRlQ29tcG9uZW50c1t3aWRnZXRJRF0gPSBzdGF0ZUNvbXBvbmVudHM7XG4gICAgICAgICAgICBjYXJkV2lkZ2V0c1t3aWRnZXRJRF0gPSB7IGRzLCBlbWl0IH07XG4gICAgICAgICAgICAvLyB3aXRoIGluaXRpYWxEYXRhXG4gICAgICAgICAgICBpZiAoaW5pdGlhbERhdGEpIHtcbiAgICAgICAgICAgICAgc3RhdGUkW3dpZGdldElEXS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGVJRCkgPT4gc3RhdGVJRCA9PT0gQ2FyZFN0YXRlLlN1Y2Nlc3MpLFxuICAgICAgICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IGRzLnVwZGF0ZShpbml0aWFsRGF0YSlcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGFkZCB3aWRnZXRzIHRvIGNhcmRcbiAgICAgICAgY2FyZHNXaXRoV2lkZ2V0c1tpbmRleF0gPSB7XG4gICAgICAgICAgLi4uY2FyZHNbaW5kZXhdLFxuICAgICAgICAgIHdpZGdldHM6IGNhcmRXaWRnZXRzLFxuICAgICAgICAgIHN0YXRlJCxcbiAgICAgICAgICBzdGF0ZUNvbXBvbmVudHM6IGNhcmRTdGF0ZUNvbXBvbmVudHMsXG4gICAgICAgIH07XG4gICAgICAgIC8vIG1lcmdlIHRoZSBuZXcgc3RhdGVzIHdpdGggdGhlIGV4aXN0aW5nIG9uZXNcbiAgICAgICAgdGhpcy5zdGF0ZSQgPSB7XG4gICAgICAgICAgLi4udGhpcy5zdGF0ZSQsXG4gICAgICAgICAgLi4uc3RhdGUkLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXJkc1dpdGhXaWRnZXRzO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0ZShpZHM6IHN0cmluZ1tdLCBuZXdTdGF0ZTogQ2FyZFN0YXRlKSB7XG4gICAgY29uc3QgdXBkYXRlcyA9IGZvcmtKb2luKGlkcy5tYXAoKGlkKSA9PiB0aGlzLnN0YXRlJFtpZF0pKTtcbiAgICBpZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXRlJFtpZF0pIHtcbiAgICAgICAgdGhpcy5zdGF0ZSRbaWRdLm5leHQobmV3U3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB1cGRhdGVzO1xuICB9XG5cbiAgcHVibGljIHNldFN0YXRlKGlkOiBzdHJpbmcsIG5ld1N0YXRlOiBDYXJkU3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVTdGF0ZShbaWRdLCBuZXdTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWxsU3RhdGVzKG5ld1N0YXRlOiBDYXJkU3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVTdGF0ZShPYmplY3Qua2V5cyh0aGlzLnN0YXRlJCksIG5ld1N0YXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTb21lU3RhdGVzKGlkczogc3RyaW5nW10sIG5ld1N0YXRlOiBDYXJkU3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVTdGF0ZShpZHMsIG5ld1N0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGF5b3V0V2lkZ2V0cygpIHtcbiAgICBjb25zdCB7IGNhcmRzIH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoY2FyZHMpIHtcbiAgICAgIHRoaXMubGF5b3V0LndpZGdldHMgPSB0aGlzLmxheW91dC53aWRnZXRzIHx8IFtdO1xuICAgICAgY2FyZHMuZm9yRWFjaCgoeyBoZWFkZXIsIGNvbnRlbnQsIGZvb3RlciB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGNhcmRTZWN0aW9ucyA9IGNvbnRlbnQuc2VjdGlvbnNcbiAgICAgICAgICAuY29uY2F0KGhlYWRlcj8uc2VjdGlvbnMgfHwgW10pXG4gICAgICAgICAgLmNvbmNhdChmb290ZXI/LnNlY3Rpb25zIHx8IFtdKTtcblxuICAgICAgICBjYXJkU2VjdGlvbnMuZm9yRWFjaCgoeyBpdGVtcyB9KSA9PiB7XG4gICAgICAgICAgaXRlbXMuZm9yRWFjaCgoe1xuICAgICAgICAgICAgaWQsIHR5cGUsIG9wdGlvbnNcbiAgICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC53aWRnZXRzLnB1c2goe1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogREFUQVNPVVJDRV9NQVBbdHlwZV0sXG4gICAgICAgICAgICAgIGV2ZW50SGFuZGxlcjogQ2FyZEVIXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==