raain-app 1.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 (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/RELEASE.md +3 -0
  4. package/cache.service.d.ts +9 -0
  5. package/esm2020/cache.service.mjs +33 -0
  6. package/esm2020/fidj-storage.model.mjs +162 -0
  7. package/esm2020/index.mjs +18 -0
  8. package/esm2020/profile.service.mjs +881 -0
  9. package/esm2020/raain-app.mjs +5 -0
  10. package/esm2020/raain-compare/raain-compare.component.mjs +106 -0
  11. package/esm2020/raain-compare-stack/raain-compare-stack.component.mjs +27 -0
  12. package/esm2020/raain-configuration/raain-configuration.component.mjs +97 -0
  13. package/esm2020/raain-date-focus/raain-date-focus.component.mjs +94 -0
  14. package/esm2020/raain-map/raain-map.component.mjs +295 -0
  15. package/esm2020/raain-speed/raain-speed.component.mjs +83 -0
  16. package/esm2020/raain-test/raain-test.component.mjs +17 -0
  17. package/esm2020/radar.service.mjs +91 -0
  18. package/esm2020/shared.const.mjs +25 -0
  19. package/esm2020/shared.module.mjs +142 -0
  20. package/esm2020/shared.pipe.mjs +203 -0
  21. package/esm2020/storage.service.mjs +17 -0
  22. package/esm2020/tools/CompareManager.mjs +248 -0
  23. package/esm2020/tools/FrameSet.mjs +10 -0
  24. package/esm2020/tools/GaugeNodeFilter.mjs +19 -0
  25. package/esm2020/tools/RefreshManager.mjs +202 -0
  26. package/esm2020/tools/index.mjs +5 -0
  27. package/esm2020/xytype.mjs +10 -0
  28. package/fesm2015/raain-app.mjs +2871 -0
  29. package/fesm2015/raain-app.mjs.map +1 -0
  30. package/fesm2020/raain-app.mjs +2707 -0
  31. package/fesm2020/raain-app.mjs.map +1 -0
  32. package/fidj-storage.model.d.ts +23 -0
  33. package/index.d.ts +17 -0
  34. package/package.json +58 -0
  35. package/profile.service.d.ts +114 -0
  36. package/raain-compare/raain-compare.component.d.ts +33 -0
  37. package/raain-compare-stack/raain-compare-stack.component.d.ts +20 -0
  38. package/raain-configuration/raain-configuration.component.d.ts +29 -0
  39. package/raain-date-focus/raain-date-focus.component.d.ts +36 -0
  40. package/raain-map/raain-map.component.d.ts +58 -0
  41. package/raain-speed/raain-speed.component.d.ts +25 -0
  42. package/raain-test/raain-test.component.d.ts +6 -0
  43. package/radar.service.d.ts +19 -0
  44. package/shared.const.d.ts +23 -0
  45. package/shared.module.d.ts +17 -0
  46. package/shared.pipe.d.ts +69 -0
  47. package/storage.service.d.ts +7 -0
  48. package/tools/CompareManager.d.ts +49 -0
  49. package/tools/FrameSet.d.ts +14 -0
  50. package/tools/GaugeNodeFilter.d.ts +9 -0
  51. package/tools/RefreshManager.d.ts +49 -0
  52. package/tools/index.d.ts +4 -0
  53. package/xytype.d.ts +8 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,106 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import { CompareElementInput, ElementsFactory } from 'raain-ui';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@ionic/angular";
6
+ export class RaainCompareComponent {
7
+ constructor(ngZone) {
8
+ this.ngZone = ngZone;
9
+ this.selectedPoint = new EventEmitter();
10
+ this.onSizeChanged = () => {
11
+ };
12
+ }
13
+ ngAfterViewChecked() {
14
+ this.create();
15
+ }
16
+ ngOnChanges(changes) {
17
+ this.change(changes);
18
+ }
19
+ ngOnDestroy() {
20
+ this.delete();
21
+ }
22
+ onClick(point) {
23
+ this.selectedPoint.emit({ point, compareIndex: this.compareIndex });
24
+ }
25
+ changeData(newData, newMaxLine) {
26
+ let changed = false;
27
+ const dataset = this.compareElement?.chart?.data?.datasets[0];
28
+ if (dataset) {
29
+ dataset.data = newData;
30
+ changed = true;
31
+ }
32
+ const line = this.compareElement?.chart?.data?.datasets[1];
33
+ if (line) {
34
+ line.data = newMaxLine;
35
+ changed = true;
36
+ }
37
+ if (changed) {
38
+ this.compareElement?.chart?.update();
39
+ }
40
+ }
41
+ onResize(event) {
42
+ this.updateMapSize();
43
+ }
44
+ create() {
45
+ if (this.created) {
46
+ return;
47
+ }
48
+ this.created = true;
49
+ const factory = new ElementsFactory();
50
+ this.compareElement = factory.createCompare(this.canvasElement.nativeElement, new CompareElementInput(this.points.map(p => {
51
+ return { x: p.x, y: p.y, r: p.r, name: p.name, id: p.id };
52
+ }), this.pointMax, this.onClick.bind(this)));
53
+ }
54
+ delete() {
55
+ if (this.compareElement) {
56
+ this.compareElement?.chart?.destroy();
57
+ }
58
+ this.created = false;
59
+ }
60
+ change(changes) {
61
+ if (changes.points) {
62
+ this.changeData(this.points, [{ x: 0, y: 0 }, this.pointMax]);
63
+ }
64
+ }
65
+ updateMapSize() {
66
+ const mapDivWidth = this.canvasElement.nativeElement.parentNode?.parentNode['clientWidth'];
67
+ const padding = 20;
68
+ let currentWidth = mapDivWidth ||
69
+ (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
70
+ const currentHeight = this.currentHeight ||
71
+ (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
72
+ currentWidth -= padding;
73
+ this.currentWidth = currentWidth;
74
+ this.currentHeight = currentHeight;
75
+ this.ngZone.run(() => {
76
+ this.onSizeChanged();
77
+ });
78
+ }
79
+ }
80
+ RaainCompareComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
81
+ RaainCompareComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareComponent, selector: "raain-compare", inputs: { points: "points", pointMax: "pointMax", remarks: "remarks", compareIndex: "compareIndex", currentHeight: "currentHeight", currentWidth: "currentWidth" }, outputs: { selectedPoint: "selectedPoint" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#canvas-container{position:relative;height:30vh;width:40vw}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }] });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'raain-compare', template: "<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#canvas-container{position:relative;height:30vh;width:40vw}\n"] }]
85
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { points: [{
86
+ type: Input
87
+ }], pointMax: [{
88
+ type: Input
89
+ }], remarks: [{
90
+ type: Input
91
+ }], compareIndex: [{
92
+ type: Input
93
+ }], currentHeight: [{
94
+ type: Input
95
+ }], currentWidth: [{
96
+ type: Input
97
+ }], selectedPoint: [{
98
+ type: Output
99
+ }], canvasElement: [{
100
+ type: ViewChild,
101
+ args: ['canvasElement']
102
+ }], onResize: [{
103
+ type: HostListener,
104
+ args: ['window:resize', ['$event']]
105
+ }] } });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlL3JhYWluLWNvbXBhcmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS9yYWFpbi1jb21wYXJlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlCLG1CQUFtQixFQUFFLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7OztBQVE5RSxNQUFNLE9BQU8scUJBQXFCO0lBOEJoQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVQzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUEyQyxDQUFDO1FBVWpGLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1FBQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVTLE9BQU8sQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsVUFBVSxDQUFDLE9BQWlCLEVBQUUsVUFBcUI7UUFFM0QsSUFBSSxPQUFPLEdB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LENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O21IQXRIVSxxQkFBcUI7dUdBQXJCLHFCQUFxQix5Y0N0QmxDLHNZQVlBOzRGRFVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzZGQU9sQixNQUFNO3NCQURaLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE9BQU87c0JBRGIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixNQUFNO2dCQUlHLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkFpRGxCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbXBhcmVFbGVtZW50LCBDb21wYXJlRWxlbWVudElucHV0LCBFbGVtZW50c0ZhY3Rvcnl9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYWFpbi1jb21wYXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhYWluLWNvbXBhcmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWFpbi1jb21wYXJlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluQ29tcGFyZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9pbnRzOiBBcnJheTxYWVR5cGU+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2ludE1heDogWFlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1hcmtzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbXBhcmVJbmRleDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGN1cnJlbnRXaWR0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwb2ludDogWFlUeXBlLCBjb21wYXJlSW5kZXg6IG51bWJlciB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc0VsZW1lbnQnKVxuICBwcm90ZWN0ZWQgY2FudmFzRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGNvbXBhcmVFbGVtZW50OiBDb21wYXJlRWxlbWVudDtcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2VkO1xuICBwcml2YXRlIGNyZWF0ZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMub25TaXplQ2hhbmdlZCA9ICgpID0+IHtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2xpY2socG9pbnQ6IFhZVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQb2ludC5lbWl0KHtwb2ludCwgY29tcGFyZUluZGV4OiB0aGlzLmNvbXBhcmVJbmRleH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZURhdGEobmV3RGF0YTogWFlUeXBlW10sIG5ld01heExpbmU/OiBYWVR5cGVbXSkge1xuXG4gICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICBjb25zdCBkYXRhc2V0ID0gdGhpcy5jb21wYXJlRWxlbWVudD8uY2hhcnQ/LmRhdGE/LmRhdGFzZXRzWzBdO1xuICAgIGlmIChkYXRhc2V0KSB7XG4gICAgICBkYXRhc2V0LmRhdGEgPSBuZXdEYXRhO1xuICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHRoaXMuY29tcGFyZUVsZW1lbnQ/LmNoYXJ0Py5kYXRhPy5kYXRhc2V0c1sxXTtcbiAgICBpZiAobGluZSkge1xuICAgICAgbGluZS5kYXRhID0gbmV3TWF4TGluZTtcbiAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmNvbXBhcmVFbGVtZW50Py5jaGFydD8udXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgb25SZXNpemUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFwU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuY3JlYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNyZWF0ZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBFbGVtZW50c0ZhY3RvcnkoKTtcbiAgICB0aGlzLmNvbXBhcmVFbGVtZW50ID0gZmFjdG9yeS5jcmVhdGVDb21wYXJlKHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgbmV3IENvbXBhcmVFbGVtZW50SW5wdXQodGhpcy5wb2ludHMubWFwKHAgPT4ge1xuICAgICAgICAgIHJldHVybiB7eDogcC54LCB5OiBwLnksIHI6IHAuciwgbmFtZTogcC5uYW1lLCBpZDogcC5pZH07XG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLnBvaW50TWF4LCB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGUoKSB7XG4gICAgaWYgKHRoaXMuY29tcGFyZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuY29tcGFyZUVsZW1lbnQ/LmNoYXJ0Py5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnBvaW50cykge1xuICAgICAgdGhpcy5jaGFuZ2VEYXRhKHRoaXMucG9pbnRzLCBbe3g6IDAsIHk6IDB9LCB0aGlzLnBvaW50TWF4XSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNYXBTaXplKCk6IHZvaWQge1xuXG4gICAgY29uc3QgbWFwRGl2V2lkdGggPSB0aGlzLmNhbnZhc0VsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlPy5wYXJlbnROb2RlWydjbGllbnRXaWR0aCddO1xuICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICBsZXQgY3VycmVudFdpZHRoID0gbWFwRGl2V2lkdGggfHxcbiAgICAgICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHwgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCk7XG4gICAgY29uc3QgY3VycmVudEhlaWdodCA9IHRoaXMuY3VycmVudEhlaWdodCB8fFxuICAgICAgKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgICBjdXJyZW50V2lkdGggLT0gcGFkZGluZztcbiAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IGN1cnJlbnRXaWR0aDtcbiAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSBjdXJyZW50SGVpZ2h0O1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMub25TaXplQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxpb24tZ3JpZD5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgaWQ9XCJjb2wtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGlkPVwiY2FudmFzLWNvbnRhaW5lclwiPlxuICAgICAgICA8aDEgKm5nSWY9XCJyZW1hcmtzXCI+e3sgcmVtYXJrcyB9fTwvaDE+XG5cbiAgICAgICAgPCEtLSBbc3R5bGUuaGVpZ2h0LnB4XT1cImN1cnJlbnRIZWlnaHRcIiBbc3R5bGUud2lkdGgucHhdPVwiY3VycmVudFdpZHRoXCIgW3dpZHRoXT1cImN1cnJlbnRXaWR0aFwiIFtoZWlnaHRdPVwiY3VycmVudEhlaWdodFwiLS0+XG4gICAgICAgIDxjYW52YXMgI2NhbnZhc0VsZW1lbnQ+PC9jYW52YXM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWdyaWQ+XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@ionic/angular";
5
+ import * as i3 from "../raain-compare/raain-compare.component";
6
+ export class RaainCompareStackComponent {
7
+ constructor(ngZone) {
8
+ this.ngZone = ngZone;
9
+ this.selectedPoint = new EventEmitter();
10
+ }
11
+ onClick(e) {
12
+ this.selectedPoint.emit({ point: e.point, compareIndex: e.compareIndex });
13
+ }
14
+ }
15
+ RaainCompareStackComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
16
+ RaainCompareStackComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainCompareStackComponent, selector: "raain-compare-stack", inputs: { compareManager: "compareManager", currentHeight: "currentHeight" }, outputs: { selectedPoint: "selectedPoint" }, ngImport: i0, template: "<ion-grid>\n <ion-row>\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.compares; index as compareIndex\" size=\"12\" size-md=\"6\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualities :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualities\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n </ion-row>\n</ion-grid>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i3.RaainCompareComponent, selector: "raain-compare", inputs: ["points", "pointMax", "remarks", "compareIndex", "currentHeight", "currentWidth"], outputs: ["selectedPoint"] }] });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainCompareStackComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'raain-compare-stack', template: "<ion-grid>\n <ion-row>\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.compares; index as compareIndex\" size=\"12\" size-md=\"6\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualities :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualities\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n </ion-row>\n</ion-grid>\n", styles: ["#card-matrix{width:170px}.card-compare{min-width:300px}ion-card-header{padding:0}\n"] }]
20
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { compareManager: [{
21
+ type: Input
22
+ }], currentHeight: [{
23
+ type: Input
24
+ }], selectedPoint: [{
25
+ type: Output
26
+ }] } });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb21wYXJlLXN0YWNrL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29tcGFyZS1zdGFjay9yYWFpbi1jb21wYXJlLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzdFLE1BQU0sT0FBTywwQkFBMEI7SUFZckMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFIM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztJQUluRixDQUFDO0lBRVMsT0FBTyxDQUFDLENBQTBDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7O3dIQWpCVSwwQkFBMEI7NEdBQTFCLDBCQUEwQixzTENUdkMsc3JGQXNFQTs0RkQ3RGEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4uL3h5dHlwZSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyfSBmcm9tICcuLi90b29scy9Db21wYXJlTWFuYWdlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JhYWluLWNvbXBhcmUtc3RhY2snLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tY29tcGFyZS1zdGFjay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhYWluLWNvbXBhcmUtc3RhY2suY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFhaW5Db21wYXJlU3RhY2tDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXI7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGN1cnJlbnRIZWlnaHQ6IG51bWJlcjtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkUG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcG9pbnQ6IFhZVHlwZSwgY29tcGFyZUluZGV4OiBudW1iZXIgfT4oKTtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsaWNrKGU6IHsgcG9pbnQ6IFhZVHlwZSwgY29tcGFyZUluZGV4OiBudW1iZXIgfSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQb2ludC5lbWl0KHtwb2ludDogZS5wb2ludCwgY29tcGFyZUluZGV4OiBlLmNvbXBhcmVJbmRleH0pO1xuICB9XG5cblxufVxuIiwiPGlvbi1ncmlkPlxuICA8aW9uLXJvdz5cblxuICAgIDwhLS1cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxpb24tY2FyZCBpZD1cImNhcmQtbWF0cml4XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb21wYXJlTWFuYWdlcj8uY29tcGFyZU5hbWVzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8cmFhaW4tc3BlZWQgW2NvbXBhcmVTcGVlZE1hdHJpeF09XCJjb21wYXJlTWFuYWdlci5jb21wYXJlU3BlZWRNYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JdPVwiY29tcGFyZU1hbmFnZXIuY29tcGFyZVRydXN0ZWRJbmRpY2F0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgID48L3JhYWluLXNwZWVkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAge3sgY29tcGFyZU1hbmFnZXI/LmNvbXBhcmVWZXJzaW9uIH19XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICAgIDwvaW9uLWNhcmQ+XG4gICAgPC9pb24tY29sPiAtLT5cblxuICAgIDxpb24tY29sICpuZ0Zvcj1cImxldCBjb21wYXJlIG9mICBjb21wYXJlTWFuYWdlcj8uY29tcGFyZXM7IGluZGV4IGFzIGNvbXBhcmVJbmRleFwiIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICA8aW9uLWNhcmQgY2xhc3M9XCJjYXJkLWNvbXBhcmVcIj5cbiAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj57eyBjb21wYXJlLm5hbWUgfX0ge3sgY29tcGFyZS5yZW1hcmtzIH19XG4gICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudCAqbmdJZj1cImNvbXBhcmUuY29tcGFyZVBvaW50cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPHJhYWluLWNvbXBhcmVcbiAgICAgICAgICAgIChzZWxlY3RlZFBvaW50KT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICBbY29tcGFyZUluZGV4XT1cImNvbXBhcmVJbmRleFwiXG4gICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgW3BvaW50TWF4XT1cImNvbXBhcmUuY29tcGFyZVBvaW50c01heFwiXG4gICAgICAgICAgICBbcG9pbnRzXT1cImNvbXBhcmUuY29tcGFyZVBvaW50c1wiPjwvcmFhaW4tY29tcGFyZT5cbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgICAgPC9pb24tY2FyZD5cbiAgICA8L2lvbi1jb2w+XG5cbiAgICA8IS0tXG4gICAgPGlvbi1jYXJkICBpZD1cImNhcmQtc2VsZWN0ZWQtZ2F1Z2VcIiBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPGlvbi1hY2NvcmRpb24tZ3JvdXA+XG5cbiAgICAgICAgICA8aW9uLWFjY29yZGlvbiB2YWx1ZT1cInNlbGVjdGVkXCI+XG4gICAgICAgICAgICA8aW9uLWl0ZW0gY29sb3I9XCJsaWdodFwiIHNsb3Q9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD5kZWJ1ZzwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCIgc2xvdD1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgZGF0ZToge3sgY3VycmVudFRpbWVmcmFtZVRhcmdldC5kYXRlIHwgIGRhdGU6J3l5eXktTU0tZGQgSEg6bW06c3MnIH19PGJyPlxuICAgICAgICAgICAgICByYWRhck1lYXN1cmVJZDoge3sgY3VycmVudFRpbWVmcmFtZVRhcmdldC5yYWRhck1lYXN1cmVJZCB9fTxicj5cbiAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uSWQ6IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uSWQgfX08YnI+XG4gICAgICAgICAgICAgIHJhaW5Db21wdXRhdGlvblZlcnNpb246IHt7IGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uVmVyc2lvbiB9fTxicj5cbiAgICAgICAgICAgICAgcmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzIDpcbiAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcmNxIG9mIGN1cnJlbnRUaW1lZnJhbWVUYXJnZXQucmFpbkNvbXB1dGF0aW9uUXVhbGl0aWVzXCI+XG4gICAgICAgICAgICAgICAgICB7eyByY3EudmVyc2lvbiB9fSAtIHt7IHJjcS5pZCB9fVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvaW9uLWFjY29yZGlvbj5cbiAgICAgICAgICA8aW9uLWFjY29yZGlvbiAqbmdJZj1cInNlbGVjdGVkR2F1Z2VcIiB2YWx1ZT1cImNvbnRleHRcIj5cbiAgICAgICAgICAgIDxpb24taXRlbSBjb2xvcj1cImxpZ2h0XCIgc2xvdD1cImhlYWRlclwiPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IHNlbGVjdGVkR2F1Z2VJblBvaW50c0RldGFpbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJmb3JtYXRMYWJlbE9mU2VsZWN0ZWRHYXVnZShzZWxlY3RlZEdhdWdlSW5Qb2ludHMpXCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiXG4gICAgICAgICAgICAgICAgIHNsb3Q9XCJjb250ZW50XCI+PC9kaXY+XG4gICAgICAgICAgPC9pb24tYWNjb3JkaW9uPlxuICAgICAgICA8L2lvbi1hY2NvcmRpb24tZ3JvdXA+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgICAtLT5cbiAgPC9pb24tcm93PlxuPC9pb24tZ3JpZD5cbiJdfQ==
@@ -0,0 +1,97 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
+ import { ConfigurationElementInput, ElementsFactory } from 'raain-ui';
3
+ import { XYType } from '../xytype';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ionic/angular";
6
+ export class RaainConfigurationComponent {
7
+ constructor(ngZone) {
8
+ this.ngZone = ngZone;
9
+ this.changedPoints = new EventEmitter();
10
+ this.minPoint = { x: 0, y: 0 };
11
+ this.maxPoint = { x: 300, y: 100 };
12
+ this.onSizeChanged = () => {
13
+ };
14
+ this.onDrag = (e) => {
15
+ this.changedPoints.emit(this.points);
16
+ };
17
+ }
18
+ ngAfterViewChecked() {
19
+ this.create();
20
+ }
21
+ ngOnChanges(changes) {
22
+ this.change(changes);
23
+ }
24
+ ngOnDestroy() {
25
+ this.delete();
26
+ }
27
+ async reset(count = 4) {
28
+ const points = [];
29
+ for (let c = 0; c < count; c++) {
30
+ points.push(new XYType((c + 1) * 10, (c + 1) * 10));
31
+ }
32
+ this.points = points;
33
+ await this.delete();
34
+ this.create();
35
+ }
36
+ onResize(event) {
37
+ // this.updateMapSize();
38
+ }
39
+ create() {
40
+ if (this.created) {
41
+ return;
42
+ }
43
+ this.created = true;
44
+ this.ngZone.runOutsideAngular(() => {
45
+ setTimeout(() => {
46
+ const factory = new ElementsFactory();
47
+ this.configurationElement = factory.createConfiguration(this.canvasElement.nativeElement, new ConfigurationElementInput(this.points, this.minPoint, this.maxPoint, this.onDrag));
48
+ }, 10);
49
+ });
50
+ }
51
+ async delete() {
52
+ await this.configurationElement?.chart?.destroy();
53
+ this.created = false;
54
+ }
55
+ async change(changes) {
56
+ // console.log('changed', changes);
57
+ // await this.delete();
58
+ // this.create();
59
+ }
60
+ updateMapSize() {
61
+ const mapDivWidth = this.canvasElement.nativeElement.parentNode?.parentNode['clientWidth'];
62
+ const padding = 20;
63
+ let currentWidth = mapDivWidth ||
64
+ (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
65
+ const currentHeight = this.currentHeight ||
66
+ (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
67
+ currentWidth -= padding;
68
+ this.currentWidth = currentWidth;
69
+ this.currentHeight = currentHeight;
70
+ this.ngZone.run(() => {
71
+ this.onSizeChanged();
72
+ });
73
+ }
74
+ }
75
+ RaainConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainConfigurationComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
76
+ RaainConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainConfigurationComponent, selector: "raain-configuration", inputs: { points: "points", currentHeight: "currentHeight", minPoint: "minPoint", maxPoint: "maxPoint" }, outputs: { changedPoints: "changedPoints" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n <ion-button (click)=\"reset(2)\">reset (2 points)</ion-button>\n <ion-button (click)=\"reset(4)\">reset (4 points)</ion-button>\n <ion-button (click)=\"reset(6)\">reset (6 points)</ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#canvas-container{position:relative;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }] });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainConfigurationComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'raain-configuration', template: "<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n <ion-button (click)=\"reset(2)\">reset (2 points)</ion-button>\n <ion-button (click)=\"reset(4)\">reset (4 points)</ion-button>\n <ion-button (click)=\"reset(6)\">reset (6 points)</ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#canvas-container{position:relative;width:100%;height:100%}\n"] }]
80
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { points: [{
81
+ type: Input
82
+ }], changedPoints: [{
83
+ type: Output
84
+ }], currentHeight: [{
85
+ type: Input
86
+ }], minPoint: [{
87
+ type: Input
88
+ }], maxPoint: [{
89
+ type: Input
90
+ }], canvasElement: [{
91
+ type: ViewChild,
92
+ args: ['canvasElement']
93
+ }], onResize: [{
94
+ type: HostListener,
95
+ args: ['window:resize', ['$event']]
96
+ }] } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1jb25maWd1cmF0aW9uL3JhYWluLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tY29uZmlndXJhdGlvbi9yYWFpbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLHlCQUF5QixFQUFFLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMxRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7QUFPakMsTUFBTSxPQUFPLDJCQUEyQjtJQTBCdEMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFwQjNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQU83QyxhQUFRLEdBQVcsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQztRQUdoQyxhQUFRLEdBQVcsRUFBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUMsQ0FBQztRQVd6QyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUMxQixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFD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RSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7eUhBM0dVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHFaQ3RCeEMsK2RBWUE7NEZEVWEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHFCQUFxQjs2RkFPeEIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsYUFBYTtzQkFEbkIsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlJLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkF3Q2xCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25FbGVtZW50LCBDb25maWd1cmF0aW9uRWxlbWVudElucHV0LCBFbGVtZW50c0ZhY3Rvcnl9IGZyb20gJ3JhYWluLXVpJztcbmltcG9ydCB7WFlUeXBlfSBmcm9tICcuLi94eXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYWFpbi1jb25maWd1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhYWluLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWFpbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9pbnRzOiBYWVR5cGVbXTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNoYW5nZWRQb2ludHMgPSBuZXcgRXZlbnRFbWl0dGVyPFhZVHlwZVtdPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50V2lkdGg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWluUG9pbnQ6IFhZVHlwZSA9IHt4OiAwLCB5OiAwfTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4UG9pbnQ6IFhZVHlwZSA9IHt4OiAzMDAsIHk6IDEwMH07XG5cbiAgQFZpZXdDaGlsZCgnY2FudmFzRWxlbWVudCcpXG4gIHByb3RlY3RlZCBjYW52YXNFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgY29uZmlndXJhdGlvbkVsZW1lbnQ6IENvbmZpZ3VyYXRpb25FbGVtZW50O1xuICBwcml2YXRlIG9uRHJhZztcbiAgcHJpdmF0ZSBvblNpemVDaGFuZ2VkO1xuICBwcml2YXRlIGNyZWF0ZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMub25TaXplQ2hhbmdlZCA9ICgpID0+IHtcbiAgICB9O1xuICAgIHRoaXMub25EcmFnID0gKGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jaGFuZ2VkUG9pbnRzLmVtaXQodGhpcy5wb2ludHMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UoY2hhbmdlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUoKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KGNvdW50ID0gNCkge1xuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY291bnQ7IGMrKykge1xuICAgICAgcG9pbnRzLnB1c2gobmV3IFhZVHlwZSgoYyArIDEpICogMTAsIChjICsgMSkgKiAxMCkpO1xuICAgIH1cbiAgICB0aGlzLnBvaW50cyA9IHBvaW50cztcblxuICAgIGF3YWl0IHRoaXMuZGVsZXRlKCk7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uUmVzaXplKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAvLyB0aGlzLnVwZGF0ZU1hcFNpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlKCkge1xuICAgIGlmICh0aGlzLmNyZWF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVkID0gdHJ1ZTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IEVsZW1lbnRzRmFjdG9yeSgpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25FbGVtZW50ID0gZmFjdG9yeS5jcmVhdGVDb25maWd1cmF0aW9uKHRoaXMuY2FudmFzRWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIG5ldyBDb25maWd1cmF0aW9uRWxlbWVudElucHV0KHRoaXMucG9pbnRzLFxuICAgICAgICAgICAgdGhpcy5taW5Qb2ludCxcbiAgICAgICAgICAgIHRoaXMubWF4UG9pbnQsXG4gICAgICAgICAgICB0aGlzLm9uRHJhZykpO1xuICAgICAgfSwgMTApO1xuICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZSgpIHtcbiAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb25FbGVtZW50Py5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VkJywgY2hhbmdlcyk7XG4gICAgLy8gIGF3YWl0IHRoaXMuZGVsZXRlKCk7XG4gICAgLy8gdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFwU2l6ZSgpOiB2b2lkIHtcblxuICAgIGNvbnN0IG1hcERpdldpZHRoID0gdGhpcy5jYW52YXNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZT8ucGFyZW50Tm9kZVsnY2xpZW50V2lkdGgnXTtcbiAgICBjb25zdCBwYWRkaW5nID0gMjA7XG4gICAgbGV0IGN1cnJlbnRXaWR0aCA9IG1hcERpdldpZHRoIHx8XG4gICAgICAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB0aGlzLmN1cnJlbnRIZWlnaHQgfHxcbiAgICAgICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCk7XG4gICAgY3VycmVudFdpZHRoIC09IHBhZGRpbmc7XG4gICAgdGhpcy5jdXJyZW50V2lkdGggPSBjdXJyZW50V2lkdGg7XG4gICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gY3VycmVudEhlaWdodDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm9uU2l6ZUNoYW5nZWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGlvbi1ncmlkPlxuICA8aW9uLXJvdz5cbiAgICA8aW9uLWNvbCBpZD1cImNvbC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJjdXJyZW50SGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cImN1cnJlbnRXaWR0aFwiIGlkPVwiY2FudmFzLWNvbnRhaW5lclwiPlxuICAgICAgICA8Y2FudmFzICNjYW52YXNFbGVtZW50PjwvY2FudmFzPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicmVzZXQoMilcIj5yZXNldCAoMiBwb2ludHMpPC9pb24tYnV0dG9uPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0KDQpXCI+cmVzZXQgKDQgcG9pbnRzKTwvaW9uLWJ1dHRvbj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJyZXNldCg2KVwiPnJlc2V0ICg2IHBvaW50cyk8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG48L2lvbi1ncmlkPlxuIl19
@@ -0,0 +1,94 @@
1
+ import { Component, HostListener, Input, ViewChild } from '@angular/core';
2
+ import { DateRange, DateStatusElementInput, ElementsFactory } from 'raain-ui';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ionic/angular";
5
+ export class RaainDateFocusComponent {
6
+ constructor(ngZone) {
7
+ this.ngZone = ngZone;
8
+ this.focusDate = new Date();
9
+ this.focusRange = DateRange.CENTURY;
10
+ this.onSizeChanged = () => {
11
+ };
12
+ }
13
+ ngAfterViewChecked() {
14
+ this.create();
15
+ }
16
+ ngOnChanges(changes) {
17
+ this.change(changes);
18
+ }
19
+ ngOnDestroy() {
20
+ this.delete();
21
+ }
22
+ focusPrevious() {
23
+ this.dateStatusElement.focusPrevious();
24
+ }
25
+ focusReset() {
26
+ this.dateStatusElement.focusReset();
27
+ }
28
+ focusNext() {
29
+ this.dateStatusElement.focusNext();
30
+ }
31
+ onResize(event) {
32
+ this.updateMapSize();
33
+ }
34
+ create() {
35
+ if (this.created) {
36
+ return;
37
+ }
38
+ this.created = true;
39
+ // this.ngZone.runOutsideAngular(() => {
40
+ // setTimeout(() => {
41
+ const factory = new ElementsFactory();
42
+ try {
43
+ this.dateStatusElement = factory.createDateStatus(this.canvasElement.nativeElement, new DateStatusElementInput(this.points, this.focusDate, this.focusRange));
44
+ }
45
+ catch (e) {
46
+ console.warn('focus creation issue', e);
47
+ }
48
+ // }, 50);
49
+ // });
50
+ }
51
+ async delete() {
52
+ await this.dateStatusElement?.chart?.destroy();
53
+ this.created = false;
54
+ }
55
+ async change(changes) {
56
+ await this.delete();
57
+ this.create();
58
+ }
59
+ updateMapSize() {
60
+ const mapDivWidth = this.canvasElement.nativeElement.parentNode?.parentNode['clientWidth'];
61
+ const padding = 20;
62
+ let currentWidth = mapDivWidth ||
63
+ (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
64
+ const currentHeight = this.currentHeight ||
65
+ (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
66
+ currentWidth -= padding;
67
+ this.currentWidth = currentWidth;
68
+ this.currentHeight = currentHeight;
69
+ this.ngZone.run(() => {
70
+ this.onSizeChanged();
71
+ });
72
+ }
73
+ }
74
+ RaainDateFocusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainDateFocusComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
75
+ RaainDateFocusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RaainDateFocusComponent, selector: "raain-date-focus", inputs: { points: "points", focusDate: "focusDate", focusRange: "focusRange", currentHeight: "currentHeight" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "canvasElement", first: true, predicate: ["canvasElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-grid>\n\n <ion-row>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n <ion-col class=\"ion-text-left\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#col-container{height:100%}#canvas-container{position:relative;min-width:600px;height:100%}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }] });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RaainDateFocusComponent, decorators: [{
77
+ type: Component,
78
+ args: [{ selector: 'raain-date-focus', template: "<ion-grid>\n\n <ion-row>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n <ion-col class=\"ion-text-left\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n", styles: ["#col-container{height:100%}#canvas-container{position:relative;min-width:600px;height:100%}\n"] }]
79
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { points: [{
80
+ type: Input
81
+ }], focusDate: [{
82
+ type: Input
83
+ }], focusRange: [{
84
+ type: Input
85
+ }], currentHeight: [{
86
+ type: Input
87
+ }], canvasElement: [{
88
+ type: ViewChild,
89
+ args: ['canvasElement']
90
+ }], onResize: [{
91
+ type: HostListener,
92
+ args: ['window:resize', ['$event']]
93
+ }] } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGF0ZS1mb2N1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9yYWFpbi1kYXRlLWZvY3VzL3JhYWluLWRhdGUtZm9jdXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvcmFhaW4tZGF0ZS1mb2N1cy9yYWFpbi1kYXRlLWZvY3VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFLTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBcUIsc0JBQXNCLEVBQUUsZUFBZSxFQUFDLE1BQU0sVUFBVSxDQUFDOzs7QUFPL0YsTUFBTSxPQUFPLHVCQUF1QjtJQXlCbEMsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUMxQixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFHTyxRQUFRLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsd0NBQXdDO1FBQ3hDLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLElBQUk7WUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUNoRixJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUM3RTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6QztRQUNELFdBQVc7UUFDWCxNQUFNO0lBRVIsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNO1FBQ2xCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFzQjtRQUN6QyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLGFBQWE7UUFFbkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxZQUFZLEdBQUcsV0FBVztZQUM1QixDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYTtZQUN0QyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RixZQUFZLElBQUksT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEExR1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMldDbkJwQyxzMkJBMkJBOzRGRFJhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxrQkFBa0I7NkZBT3JCLE1BQU07c0JBRFosS0FBSztnQkFRQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUtJLGFBQWE7c0JBRHRCLFNBQVM7dUJBQUMsZUFBZTtnQkF1Q2xCLFFBQVE7c0JBRGYsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZVJhbmdlLCBEYXRlU3RhdHVzRWxlbWVudCwgRGF0ZVN0YXR1c0VsZW1lbnRJbnB1dCwgRWxlbWVudHNGYWN0b3J5fSBmcm9tICdyYWFpbi11aSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JhYWluLWRhdGUtZm9jdXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFhaW4tZGF0ZS1mb2N1cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhYWluLWRhdGUtZm9jdXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFhaW5EYXRlRm9jdXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvaW50czoge1xuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgc3R5bGU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgZGF0ZTogRGF0ZSwgdmFsdWU6IG51bWJlciB9W10sXG4gIH1bXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9jdXNEYXRlOiBEYXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZm9jdXNSYW5nZTogRGF0ZVJhbmdlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJyZW50SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBjdXJyZW50V2lkdGg6IG51bWJlcjtcblxuICBAVmlld0NoaWxkKCdjYW52YXNFbGVtZW50JylcbiAgcHJvdGVjdGVkIGNhbnZhc0VsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBkYXRlU3RhdHVzRWxlbWVudDogRGF0ZVN0YXR1c0VsZW1lbnQ7XG4gIHByaXZhdGUgb25TaXplQ2hhbmdlZDtcbiAgcHJpdmF0ZSBjcmVhdGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLmZvY3VzRGF0ZSA9IG5ldyBEYXRlKClcbiAgICB0aGlzLmZvY3VzUmFuZ2UgPSBEYXRlUmFuZ2UuQ0VOVFVSWTtcbiAgICB0aGlzLm9uU2l6ZUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UoY2hhbmdlcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGUoKTtcbiAgfVxuXG4gIGZvY3VzUHJldmlvdXMoKSB7XG4gICAgdGhpcy5kYXRlU3RhdHVzRWxlbWVudC5mb2N1c1ByZXZpb3VzKCk7XG4gIH1cblxuICBmb2N1c1Jlc2V0KCkge1xuICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQuZm9jdXNSZXNldCgpO1xuICB9XG5cbiAgZm9jdXNOZXh0KCkge1xuICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQuZm9jdXNOZXh0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblJlc2l6ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNYXBTaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZSgpIHtcbiAgICBpZiAodGhpcy5jcmVhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlZCA9IHRydWU7XG5cbiAgICAvLyB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgLy8gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgRWxlbWVudHNGYWN0b3J5KCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGF0ZVN0YXR1c0VsZW1lbnQgPSBmYWN0b3J5LmNyZWF0ZURhdGVTdGF0dXModGhpcy5jYW52YXNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIG5ldyBEYXRlU3RhdHVzRWxlbWVudElucHV0KHRoaXMucG9pbnRzLCB0aGlzLmZvY3VzRGF0ZSwgdGhpcy5mb2N1c1JhbmdlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdmb2N1cyBjcmVhdGlvbiBpc3N1ZScsIGUpO1xuICAgIH1cbiAgICAvLyAgfSwgNTApO1xuICAgIC8vIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZSgpIHtcbiAgICBhd2FpdCB0aGlzLmRhdGVTdGF0dXNFbGVtZW50Py5jaGFydD8uZGVzdHJveSgpO1xuICAgIHRoaXMuY3JlYXRlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlKCk7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFwU2l6ZSgpOiB2b2lkIHtcblxuICAgIGNvbnN0IG1hcERpdldpZHRoID0gdGhpcy5jYW52YXNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZT8ucGFyZW50Tm9kZVsnY2xpZW50V2lkdGgnXTtcbiAgICBjb25zdCBwYWRkaW5nID0gMjA7XG4gICAgbGV0IGN1cnJlbnRXaWR0aCA9IG1hcERpdldpZHRoIHx8XG4gICAgICAod2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgpO1xuICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSB0aGlzLmN1cnJlbnRIZWlnaHQgfHxcbiAgICAgICh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCk7XG4gICAgY3VycmVudFdpZHRoIC09IHBhZGRpbmc7XG4gICAgdGhpcy5jdXJyZW50V2lkdGggPSBjdXJyZW50V2lkdGg7XG4gICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gY3VycmVudEhlaWdodDtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm9uU2l6ZUNoYW5nZWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGlvbi1ncmlkPlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemUtc209XCIxXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZm9jdXNSZXNldCgpXCI+XG4gICAgICAgIFZpZXcgYWxsIGRhdGVzXG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG4gIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWVuZFwiPlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIHNpemUtc209XCIxXCI+XG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZm9jdXNQcmV2aW91cygpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbCBpZD1cImNvbC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgW3N0eWxlLmhlaWdodC5weF09XCJjdXJyZW50SGVpZ2h0XCIgW3N0eWxlLndpZHRoLnB4XT1cImN1cnJlbnRXaWR0aFwiIGlkPVwiY2FudmFzLWNvbnRhaW5lclwiPlxuICAgICAgICA8Y2FudmFzICNjYW52YXNFbGVtZW50PjwvY2FudmFzPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImZvY3VzTmV4dCgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuPC9pb24tZ3JpZD5cbiJdfQ==