@unovis/angular 1.0.0-beta.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 (108) hide show
  1. package/LICENSE +193 -0
  2. package/dist/lib/LICENSE +193 -0
  3. package/dist/lib/bundles/unovis-angular.umd.js +2833 -0
  4. package/dist/lib/bundles/unovis-angular.umd.js.map +1 -0
  5. package/dist/lib/components/area/area.component.d.ts +94 -0
  6. package/dist/lib/components/area/area.module.d.ts +7 -0
  7. package/dist/lib/components/axis/axis.component.d.ts +125 -0
  8. package/dist/lib/components/axis/axis.module.d.ts +7 -0
  9. package/dist/lib/components/brush/brush.component.d.ts +104 -0
  10. package/dist/lib/components/brush/brush.module.d.ts +7 -0
  11. package/dist/lib/components/crosshair/crosshair.component.d.ts +104 -0
  12. package/dist/lib/components/crosshair/crosshair.module.d.ts +7 -0
  13. package/dist/lib/components/donut/donut.component.d.ts +86 -0
  14. package/dist/lib/components/donut/donut.module.d.ts +7 -0
  15. package/dist/lib/components/free-brush/free-brush.component.d.ts +106 -0
  16. package/dist/lib/components/free-brush/free-brush.module.d.ts +7 -0
  17. package/dist/lib/components/graph/graph.component.d.ts +190 -0
  18. package/dist/lib/components/graph/graph.module.d.ts +7 -0
  19. package/dist/lib/components/grouped-bar/grouped-bar.component.d.ts +101 -0
  20. package/dist/lib/components/grouped-bar/grouped-bar.module.d.ts +7 -0
  21. package/dist/lib/components/line/line.component.d.ts +97 -0
  22. package/dist/lib/components/line/line.module.d.ts +7 -0
  23. package/dist/lib/components/sankey/sankey.component.d.ts +164 -0
  24. package/dist/lib/components/sankey/sankey.module.d.ts +7 -0
  25. package/dist/lib/components/scatter/scatter.component.d.ts +104 -0
  26. package/dist/lib/components/scatter/scatter.module.d.ts +7 -0
  27. package/dist/lib/components/stacked-bar/stacked-bar.component.d.ts +103 -0
  28. package/dist/lib/components/stacked-bar/stacked-bar.module.d.ts +7 -0
  29. package/dist/lib/components/timeline/timeline.component.d.ts +105 -0
  30. package/dist/lib/components/timeline/timeline.module.d.ts +7 -0
  31. package/dist/lib/components/tooltip/tooltip.component.d.ts +41 -0
  32. package/dist/lib/components/tooltip/tooltip.module.d.ts +7 -0
  33. package/dist/lib/components/topojson-map/topojson-map.component.d.ts +125 -0
  34. package/dist/lib/components/topojson-map/topojson-map.module.d.ts +7 -0
  35. package/dist/lib/components/xy-labels/xy-labels.component.d.ts +107 -0
  36. package/dist/lib/components/xy-labels/xy-labels.module.d.ts +7 -0
  37. package/dist/lib/components.d.ts +39 -0
  38. package/dist/lib/containers/single-container/single-container.component.d.ts +26 -0
  39. package/dist/lib/containers/single-container/single-container.module.d.ts +7 -0
  40. package/dist/lib/containers/xy-container/xy-container.component.d.ts +80 -0
  41. package/dist/lib/containers/xy-container/xy-container.module.d.ts +7 -0
  42. package/dist/lib/containers.d.ts +4 -0
  43. package/dist/lib/core/core-component.d.ts +6 -0
  44. package/dist/lib/core/generic-component.d.ts +3 -0
  45. package/dist/lib/core/index.d.ts +3 -0
  46. package/dist/lib/core/xy-component.d.ts +6 -0
  47. package/dist/lib/esm2015/components/area/area.component.js +75 -0
  48. package/dist/lib/esm2015/components/area/area.module.js +18 -0
  49. package/dist/lib/esm2015/components/axis/axis.component.js +109 -0
  50. package/dist/lib/esm2015/components/axis/axis.module.js +18 -0
  51. package/dist/lib/esm2015/components/brush/brush.component.js +83 -0
  52. package/dist/lib/esm2015/components/brush/brush.module.js +18 -0
  53. package/dist/lib/esm2015/components/crosshair/crosshair.component.js +81 -0
  54. package/dist/lib/esm2015/components/crosshair/crosshair.module.js +18 -0
  55. package/dist/lib/esm2015/components/donut/donut.component.js +77 -0
  56. package/dist/lib/esm2015/components/donut/donut.module.js +18 -0
  57. package/dist/lib/esm2015/components/free-brush/free-brush.component.js +83 -0
  58. package/dist/lib/esm2015/components/free-brush/free-brush.module.js +18 -0
  59. package/dist/lib/esm2015/components/graph/graph.component.js +157 -0
  60. package/dist/lib/esm2015/components/graph/graph.module.js +18 -0
  61. package/dist/lib/esm2015/components/grouped-bar/grouped-bar.component.js +83 -0
  62. package/dist/lib/esm2015/components/grouped-bar/grouped-bar.module.js +18 -0
  63. package/dist/lib/esm2015/components/line/line.component.js +77 -0
  64. package/dist/lib/esm2015/components/line/line.module.js +18 -0
  65. package/dist/lib/esm2015/components/sankey/sankey.component.js +139 -0
  66. package/dist/lib/esm2015/components/sankey/sankey.module.js +18 -0
  67. package/dist/lib/esm2015/components/scatter/scatter.component.js +83 -0
  68. package/dist/lib/esm2015/components/scatter/scatter.module.js +18 -0
  69. package/dist/lib/esm2015/components/stacked-bar/stacked-bar.component.js +83 -0
  70. package/dist/lib/esm2015/components/stacked-bar/stacked-bar.module.js +18 -0
  71. package/dist/lib/esm2015/components/timeline/timeline.component.js +87 -0
  72. package/dist/lib/esm2015/components/timeline/timeline.module.js +18 -0
  73. package/dist/lib/esm2015/components/tooltip/tooltip.component.js +49 -0
  74. package/dist/lib/esm2015/components/tooltip/tooltip.module.js +18 -0
  75. package/dist/lib/esm2015/components/topojson-map/topojson-map.component.js +111 -0
  76. package/dist/lib/esm2015/components/topojson-map/topojson-map.module.js +18 -0
  77. package/dist/lib/esm2015/components/xy-labels/xy-labels.component.js +91 -0
  78. package/dist/lib/esm2015/components/xy-labels/xy-labels.module.js +18 -0
  79. package/dist/lib/esm2015/components.js +43 -0
  80. package/dist/lib/esm2015/containers/single-container/single-container.component.js +71 -0
  81. package/dist/lib/esm2015/containers/single-container/single-container.module.js +17 -0
  82. package/dist/lib/esm2015/containers/xy-container/xy-container.component.js +159 -0
  83. package/dist/lib/esm2015/containers/xy-container/xy-container.module.js +17 -0
  84. package/dist/lib/esm2015/containers.js +5 -0
  85. package/dist/lib/esm2015/core/core-component.js +4 -0
  86. package/dist/lib/esm2015/core/generic-component.js +3 -0
  87. package/dist/lib/esm2015/core/index.js +4 -0
  88. package/dist/lib/esm2015/core/xy-component.js +4 -0
  89. package/dist/lib/esm2015/html-components/bullet-legend/bullet-legend.component.js +48 -0
  90. package/dist/lib/esm2015/html-components/bullet-legend/bullet-legend.module.js +18 -0
  91. package/dist/lib/esm2015/html-components/leaflet-flow-map/leaflet-flow-map.component.js +157 -0
  92. package/dist/lib/esm2015/html-components/leaflet-flow-map/leaflet-flow-map.module.js +17 -0
  93. package/dist/lib/esm2015/html-components/leaflet-map/leaflet-map.component.js +131 -0
  94. package/dist/lib/esm2015/html-components/leaflet-map/leaflet-map.module.js +17 -0
  95. package/dist/lib/esm2015/public-api.js +3 -0
  96. package/dist/lib/esm2015/unovis-angular.js +5 -0
  97. package/dist/lib/fesm2015/unovis-angular.js +2278 -0
  98. package/dist/lib/fesm2015/unovis-angular.js.map +1 -0
  99. package/dist/lib/html-components/bullet-legend/bullet-legend.component.d.ts +24 -0
  100. package/dist/lib/html-components/bullet-legend/bullet-legend.module.d.ts +7 -0
  101. package/dist/lib/html-components/leaflet-flow-map/leaflet-flow-map.component.d.ts +197 -0
  102. package/dist/lib/html-components/leaflet-flow-map/leaflet-flow-map.module.d.ts +7 -0
  103. package/dist/lib/html-components/leaflet-map/leaflet-map.component.d.ts +168 -0
  104. package/dist/lib/html-components/leaflet-map/leaflet-map.module.d.ts +7 -0
  105. package/dist/lib/package.json +24 -0
  106. package/dist/lib/public-api.d.ts +2 -0
  107. package/dist/lib/unovis-angular.d.ts +5 -0
  108. package/package.json +44 -0
@@ -0,0 +1,159 @@
1
+ import { Component, ContentChild, ContentChildren, Input, ViewChild, } from '@angular/core';
2
+ // Vis
3
+ import { Axis, Crosshair, Direction, Tooltip, XYContainer } from '@unovis/ts';
4
+ import { VisXYComponent } from '../../core';
5
+ import { VisTooltipComponent } from '../../components/tooltip/tooltip.component';
6
+ import * as i0 from "@angular/core";
7
+ export class VisXYContainerComponent {
8
+ constructor() {
9
+ /** Constraint the minimum value of the Y scale domain.
10
+ * For example, imagine that you have a chart with dynamic data that has negative values. When values are small
11
+ * (let's say in the range of [-0.01, 0]), you might still want the chart to display some meaningful value range (e.g. [-1, 0]). That can
12
+ * be achieved by setting `yDomainMinConstraint` to `[undefined, -1]`. In addition to that, if you want to cut off the
13
+ * values that are too low (let's say lower than -100), you can set the constraint to `[-100, -1]`
14
+ * Default: `undefined` */
15
+ this.yDomainMinConstraint = undefined;
16
+ /** Y Axis direction. Default: `Direction.North` */
17
+ this.yDirection = Direction.North;
18
+ /** Animation duration of all the components within the container. Default: `undefined` */
19
+ this.duration = undefined;
20
+ /** Margins. Default: `{ top: 0, bottom: 0, left: 0, right: 0 }` */
21
+ this.margin = { top: 10, bottom: 10, left: 10, right: 10 };
22
+ /** Padding. Default: `{ top: 0, bottom: 0, left: 0, right: 0 }` */
23
+ this.padding = {};
24
+ /** Enables automatic calculation of chart margins based on the size of the axes. Default: `true` */
25
+ this.autoMargin = true;
26
+ /** Data to be passed to all child components. But if `data` is `undefined` it'll to be passed allowing components to
27
+ * have their individual data. Default: `undefined` */
28
+ this.data = undefined;
29
+ }
30
+ ngAfterViewInit() {
31
+ this.chart = new XYContainer(this.containerRef.nativeElement, this.getConfig(), this.data);
32
+ this.passContainerReferenceToChildren();
33
+ }
34
+ ngAfterContentInit() {
35
+ // QueryList does unsubscribe automatically when it gets destroyed
36
+ this.visComponents.changes.subscribe(() => {
37
+ var _a;
38
+ this.passContainerReferenceToChildren();
39
+ (_a = this.chart) === null || _a === void 0 ? void 0 : _a.updateContainer(this.getConfig());
40
+ });
41
+ }
42
+ ngOnChanges(changes) {
43
+ var _a, _b;
44
+ const preventRender = true;
45
+ // Set new Data without re-render
46
+ if (changes.data) {
47
+ (_a = this.chart) === null || _a === void 0 ? void 0 : _a.setData(this.data, preventRender);
48
+ delete changes.data;
49
+ }
50
+ // Update Container and render
51
+ (_b = this.chart) === null || _b === void 0 ? void 0 : _b.updateContainer(this.getConfig());
52
+ }
53
+ getConfig() {
54
+ var _a;
55
+ const { duration, margin, padding, scaleByDomain, autoMargin, width, height, xScale, xDomain, xDomainMinConstraint, xDomainMaxConstraint, xRange, yScale, yDomain, yDomainMinConstraint, yDomainMaxConstraint, yRange, yDirection, } = this;
56
+ const visComponents = this.visComponents.toArray().map(d => d.component);
57
+ const crosshair = visComponents.find(c => c instanceof Crosshair);
58
+ const tooltip = (_a = this.tooltipComponent) === null || _a === void 0 ? void 0 : _a.component;
59
+ const xAxis = visComponents.find(c => { var _a; return c instanceof Axis && ((_a = c === null || c === void 0 ? void 0 : c.config) === null || _a === void 0 ? void 0 : _a.type) === 'x'; });
60
+ const yAxis = visComponents.find(c => { var _a; return c instanceof Axis && ((_a = c === null || c === void 0 ? void 0 : c.config) === null || _a === void 0 ? void 0 : _a.type) === 'y'; });
61
+ const components = visComponents.filter(c => !(c instanceof Crosshair) && !(c instanceof Tooltip) && !(c instanceof Axis));
62
+ return {
63
+ components,
64
+ width,
65
+ height,
66
+ duration,
67
+ margin,
68
+ padding,
69
+ xAxis,
70
+ yAxis,
71
+ tooltip,
72
+ crosshair,
73
+ scaleByDomain,
74
+ autoMargin,
75
+ xScale,
76
+ xDomain,
77
+ xDomainMinConstraint,
78
+ xDomainMaxConstraint,
79
+ xRange,
80
+ yScale,
81
+ yDomain,
82
+ yDomainMinConstraint,
83
+ yDomainMaxConstraint,
84
+ yRange,
85
+ yDirection,
86
+ };
87
+ }
88
+ passContainerReferenceToChildren() {
89
+ // We set the container for each vis component to trigger chart re-render if the data has changed
90
+ if (this.chart)
91
+ this.visComponents.toArray().forEach(c => { c.componentContainer = this.chart; });
92
+ }
93
+ ngOnDestroy() {
94
+ var _a;
95
+ (_a = this.chart) === null || _a === void 0 ? void 0 : _a.destroy();
96
+ }
97
+ }
98
+ VisXYContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisXYContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
99
+ VisXYContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: VisXYContainerComponent, selector: "vis-xy-container", inputs: { width: "width", height: "height", xScale: "xScale", xDomain: "xDomain", xDomainMinConstraint: "xDomainMinConstraint", xDomainMaxConstraint: "xDomainMaxConstraint", xRange: "xRange", yScale: "yScale", yDomain: "yDomain", yDomainMinConstraint: "yDomainMinConstraint", yDomainMaxConstraint: "yDomainMaxConstraint", yRange: "yRange", yDirection: "yDirection", duration: "duration", margin: "margin", padding: "padding", scaleByDomain: "scaleByDomain", autoMargin: "autoMargin", data: "data" }, queries: [{ propertyName: "tooltipComponent", first: true, predicate: VisTooltipComponent, descendants: true }, { propertyName: "visComponents", predicate: VisXYComponent }], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `<div #container class="unovis-xy-container">
100
+ <ng-content></ng-content>
101
+ </div>`, isInline: true, styles: [".unovis-xy-container { width: 100%; height: 100%; position: relative; }"] });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisXYContainerComponent, decorators: [{
103
+ type: Component,
104
+ args: [{
105
+ selector: 'vis-xy-container',
106
+ template: `<div #container class="unovis-xy-container">
107
+ <ng-content></ng-content>
108
+ </div>`,
109
+ styles: ['.unovis-xy-container { width: 100%; height: 100%; position: relative; }'],
110
+ }]
111
+ }], propDecorators: { containerRef: [{
112
+ type: ViewChild,
113
+ args: ['container', { static: false }]
114
+ }], visComponents: [{
115
+ type: ContentChildren,
116
+ args: [VisXYComponent]
117
+ }], tooltipComponent: [{
118
+ type: ContentChild,
119
+ args: [VisTooltipComponent]
120
+ }], width: [{
121
+ type: Input
122
+ }], height: [{
123
+ type: Input
124
+ }], xScale: [{
125
+ type: Input
126
+ }], xDomain: [{
127
+ type: Input
128
+ }], xDomainMinConstraint: [{
129
+ type: Input
130
+ }], xDomainMaxConstraint: [{
131
+ type: Input
132
+ }], xRange: [{
133
+ type: Input
134
+ }], yScale: [{
135
+ type: Input
136
+ }], yDomain: [{
137
+ type: Input
138
+ }], yDomainMinConstraint: [{
139
+ type: Input
140
+ }], yDomainMaxConstraint: [{
141
+ type: Input
142
+ }], yRange: [{
143
+ type: Input
144
+ }], yDirection: [{
145
+ type: Input
146
+ }], duration: [{
147
+ type: Input
148
+ }], margin: [{
149
+ type: Input
150
+ }], padding: [{
151
+ type: Input
152
+ }], scaleByDomain: [{
153
+ type: Input
154
+ }], autoMargin: [{
155
+ type: Input
156
+ }], data: [{
157
+ type: Input
158
+ }] } });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb250YWluZXJzL3h5LWNvbnRhaW5lci94eS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFFZixLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE1BQU07QUFDTixPQUFPLEVBQUUsSUFBSSxFQUFtQixTQUFTLEVBQUUsU0FBUyxFQUFXLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0sWUFBWSxDQUFBO0FBQ25JLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUE7O0FBU2hGLE1BQU0sT0FBTyx1QkFBdUI7SUFQcEM7UUEyQ0U7Ozs7O2tDQUswQjtRQUNqQix5QkFBb0IsR0FBOEMsU0FBUyxDQUFBO1FBV3BGLG1EQUFtRDtRQUMxQyxlQUFVLEdBQWdELFNBQVMsQ0FBQyxLQUFLLENBQUE7UUFFbEYsMEZBQTBGO1FBQ2pGLGFBQVEsR0FBWSxTQUFTLENBQUE7UUFDdEMsbUVBQW1FO1FBQzFELFdBQU0sR0FBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQTtRQUN4RSxtRUFBbUU7UUFDMUQsWUFBTyxHQUFhLEVBQUUsQ0FBQTtRQUcvQixvR0FBb0c7UUFDM0YsZUFBVSxHQUFhLElBQUksQ0FBQTtRQUVwQzs4REFDc0Q7UUFDN0MsU0FBSSxHQUF5QixTQUFTLENBQUE7S0FnRmhEO0lBNUVDLGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksV0FBVyxDQUFRLElBQUksQ0FBQyxZ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QWYsS0FBSztnQkFPRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBT0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbi8vIFZpc1xuaW1wb3J0IHsgQXhpcywgQ29udGludW91c1NjYWxlLCBDcm9zc2hhaXIsIERpcmVjdGlvbiwgU3BhY2luZywgVG9vbHRpcCwgWFlDb250YWluZXIsIFhZQ29udGFpbmVyQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IFZpc1hZQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcbmltcG9ydCB7IFZpc1Rvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Zpcy14eS1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInVub3Zpcy14eS1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PmAsXG4gIHN0eWxlczogWycudW5vdmlzLXh5LWNvbnRhaW5lciB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSddLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNYWUNvbnRhaW5lckNvbXBvbmVudDxEYXR1bT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGFpbmVyUmVmOiBFbGVtZW50UmVmXG4gIEBDb250ZW50Q2hpbGRyZW4oVmlzWFlDb21wb25lbnQpIHZpc0NvbXBvbmVudHM6IFF1ZXJ5TGlzdDxWaXNYWUNvbXBvbmVudD5cbiAgQENvbnRlbnRDaGlsZChWaXNUb29sdGlwQ29tcG9uZW50KSB0b29sdGlwQ29tcG9uZW50OiBWaXNUb29sdGlwQ29tcG9uZW50XG5cbiAgLyoqIFdpZHRoIGluIHBpeGVscy4gQnkgZGVmYXVsdCwgQ29udGFpbmVyIGF1dG9tYXRpY2FsbHkgZml0cyB0byB0aGUgc2l6ZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiAqL1xuICBASW5wdXQoKSB3aWR0aD86IG51bWJlclxuICAvKiogSGVpZ2h0IGluIHBpeGVscy4gQnkgZGVmYXVsdCwgQ29udGFpbmVyIGF1dG9tYXRpY2FsbHkgZml0cyB0byB0aGUgc2l6ZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiAqL1xuICBASW5wdXQoKSBoZWlnaHQ/OiBudW1iZXJcblxuICAvKiogU2NhbGUgZm9yIFggZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIERlZmF1bHQ6IGBTY2FsZS5zY2FsZUxpbmVhcigpYCAqL1xuICBASW5wdXQoKSB4U2NhbGU/OiBDb250aW51b3VzU2NhbGVcbiAgLyoqIFNjYWxlIGRvbWFpbiAoZGF0YSBleHRlbnQpIGZvciBYIGRpbWVuc2lvbi4gQnkgZGVmYXVsdCB0aGlzIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiBkYXRhLiAqL1xuICBASW5wdXQoKSB4RG9tYWluPzogW251bWJlciB8IHVuZGVmaW5lZCwgbnVtYmVyIHwgdW5kZWZpbmVkXVxuICAvKiogQ29uc3RyYWludCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgWCBzY2FsZSBkb21haW4uIFVzZWZ1bCB3aGVuIHRoZSBkYXRhIGlzIHBsb3R0ZWQgYWxvbmcgdGhlIFggYXhpcy5cbiAgICogRm9yIGV4YW1wbGUsIGltYWdpbmUgdGhhdCB5b3UgaGF2ZSBhIGNoYXJ0IHdpdGggZHluYW1pYyBkYXRhIHRoYXQgaGFzIG5lZ2F0aXZlIHZhbHVlcy4gV2hlbiB2YWx1ZXMgYXJlIHNtYWxsXG4gICAqIChsZXQncyBzYXkgaW4gdGhlIHJhbmdlIG9mIFstMC4wMSwgMF0pLCB5b3UgbWlnaHQgc3RpbGwgd2FudCB0aGUgY2hhcnQgdG8gZGlzcGxheSBzb21lIG1lYW5pbmdmdWwgdmFsdWUgcmFuZ2UgKGUuZy4gWy0xLCAwXSkuIFRoYXQgY2FuXG4gICAqIGJlIGFjaGlldmVkIGJ5IHNldHRpbmcgYHhEb21haW5NaW5Db25zdHJhaW50YCB0byBgW3VuZGVmaW5lZCwgLTFdYC4gSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgeW91IHdhbnQgdG8gY3V0IG9mZiB0aGVcbiAgICogdmFsdWVzIHRoYXQgYXJlIHRvbyBsb3cgKGxldCdzIHNheSBsb3dlciB0aGFuIC0xMDApLCB5b3UgY2FuIHNldCB0aGUgY29uc3RyYWludCB0byBgWy0xMDAsIC0xXWBcbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeERvbWFpbk1pbkNvbnN0cmFpbnQ/OiBbbnVtYmVyIHwgdW5kZWZpbmVkLCBudW1iZXIgfCB1bmRlZmluZWRdXG4gIC8qKiBDb25zdHJhaW50IHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBYIHNjYWxlIGRvbWFpbi4gVXNlZnVsIHdoZW4gdGhlIGRhdGEgaXMgcGxvdHRlZCBhbG9uZyB0aGUgWCBheGlzLlxuICAgKiBGb3IgZXhhbXBsZSwgaW1hZ2luZSB0aGF0IHlvdSBoYXZlIGEgY2hhcnQgd2l0aCBkeW5hbWljIGRhdGEuIFdoZW4gdmFsdWVzIGFyZSBzbWFsbFxuICAgKiAobGV0J3Mgc2F5IDwgMC4wMSksIHlvdSBtaWdodCBzdGlsbCB3YW50IHRoZSBjaGFydCB0byBkaXNwbGF5IHNvbWUgbWVhbmluZ2Z1bCB2YWx1ZSByYW5nZSAoZS5nLiBbMCwgMV0pLiBUaGF0IGNhblxuICAgKiBiZSBhY2hpZXZlZCBieSBzZXR0aW5nIGB4RG9tYWluTWF4Q29uc3RyYWludGAgdG8gYFsxLCB1bmRlZmluZWRdYC4gSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgeW91IHdhbnQgdG8gY3V0IG9mZiB0aGVcbiAgICogdmFsdWVzIHRoYXQgYXJlIHRvbyBoaWdoIChsZXQncyBzYXkgaGlnaGVyIHRoYW4gMTAwKSwgeW91IGNhbiBzZXQgdGhlIGNvbnN0cmFpbnQgdG8gYFsxLCAxMDBdYFxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4RG9tYWluTWF4Q29uc3RyYWludD86IFtudW1iZXIgfCB1bmRlZmluZWQsIG51bWJlciB8IHVuZGVmaW5lZF1cbiAgLyoqIEZvcmNlIHNldCB0aGUgWCBzY2FsZSByYW5nZSAoaW4gdGhlIHNjcmVlbiBzcGFjZSkuIEJ5IGRlZmF1bHQgdGhlIHJhbmdlIGlzIGNhbGN1bGF0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGVcbiAgICogY2hhcnQncyBzZXQgdXAgKi9cbiAgQElucHV0KCkgeFJhbmdlPzogW251bWJlciwgbnVtYmVyXVxuXG4gIC8qKiBTY2FsZSBmb3IgWSBkaW1lbnNpb24sIGUuZy4gU2NhbGUuU2NhbGVMaW5lYXIuIERlZmF1bHQ6IGBTY2FsZS5TY2FsZUxpbmVhcigpYCAqL1xuICBASW5wdXQoKSB5U2NhbGU/OiBDb250aW51b3VzU2NhbGVcbiAgLyoqIFNjYWxlIGRvbWFpbiAoZGF0YSBleHRlbnQpIGZvciBZIGRpbWVuc2lvbi4gQnkgZGVmYXVsdCB0aGlzIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiBkYXRhLiAqL1xuICBASW5wdXQoKSB5RG9tYWluPzogW251bWJlciB8IHVuZGVmaW5lZCwgbnVtYmVyIHwgdW5kZWZpbmVkXVxuICAvKiogQ29uc3RyYWludCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgWSBzY2FsZSBkb21haW4uXG4gICAqIEZvciBleGFtcGxlLCBpbWFnaW5lIHRoYXQgeW91IGhhdmUgYSBjaGFydCB3aXRoIGR5bmFtaWMgZGF0YSB0aGF0IGhhcyBuZWdhdGl2ZSB2YWx1ZXMuIFdoZW4gdmFsdWVzIGFyZSBzbWFsbFxuICAgKiAobGV0J3Mgc2F5IGluIHRoZSByYW5nZSBvZiBbLTAuMDEsIDBdKSwgeW91IG1pZ2h0IHN0aWxsIHdhbnQgdGhlIGNoYXJ0IHRvIGRpc3BsYXkgc29tZSBtZWFuaW5nZnVsIHZhbHVlIHJhbmdlIChlLmcuIFstMSwgMF0pLiBUaGF0IGNhblxuICAgKiBiZSBhY2hpZXZlZCBieSBzZXR0aW5nIGB5RG9tYWluTWluQ29uc3RyYWludGAgdG8gYFt1bmRlZmluZWQsIC0xXWAuIEluIGFkZGl0aW9uIHRvIHRoYXQsIGlmIHlvdSB3YW50IHRvIGN1dCBvZmYgdGhlXG4gICAqIHZhbHVlcyB0aGF0IGFyZSB0b28gbG93IChsZXQncyBzYXkgbG93ZXIgdGhhbiAtMTAwKSwgeW91IGNhbiBzZXQgdGhlIGNvbnN0cmFpbnQgdG8gYFstMTAwLCAtMV1gXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHlEb21haW5NaW5Db25zdHJhaW50PzogW251bWJlciB8IHVuZGVmaW5lZCwgbnVtYmVyIHwgdW5kZWZpbmVkXSA9IHVuZGVmaW5lZFxuICAvKiogQ29uc3RyYWludCB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgWSBzY2FsZSBkb21haW4uXG4gICAqIEZvciBleGFtcGxlLCBpbWFnaW5lIHRoYXQgeW91IGhhdmUgYSBjaGFydCB3aXRoIGR5bmFtaWMgZGF0YS4gV2hlbiB2YWx1ZXMgYXJlIHNtYWxsXG4gICAqIChsZXQncyBzYXkgPCAwLjAxKSwgeW91IG1pZ2h0IHN0aWxsIHdhbnQgdGhlIGNoYXJ0IHRvIGRpc3BsYXkgc29tZSBtZWFuaW5nZnVsIHZhbHVlIHJhbmdlIChlLmcuIFswLCAxXSkuIFRoYXQgY2FuXG4gICAqIGJlIGFjaGlldmVkIGJ5IHNldHRpbmcgYHlEb21haW5NYXhDb25zdHJhaW50YCB0byBgWzEsIHVuZGVmaW5lZF1gLiBJbiBhZGRpdGlvbiB0byB0aGF0LCBpZiB5b3Ugd2FudCB0byBjdXQgb2ZmIHRoZVxuICAgKiB2YWx1ZXMgdGhhdCBhcmUgdG9vIGhpZ2ggKGxldCdzIHNheSBoaWdoZXIgdGhhbiAxMDApLCB5b3UgY2FuIHNldCB0aGUgY29uc3RyYWludCB0byBgWzEsIDEwMF1gXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHlEb21haW5NYXhDb25zdHJhaW50PzogW251bWJlciB8IHVuZGVmaW5lZCwgbnVtYmVyIHwgdW5kZWZpbmVkXVxuICAvKiogRm9yY2Ugc2V0IHRoZSBZIHNjYWxlIHJhbmdlIChpbiB0aGUgc2NyZWVuIHNwYWNlKS4gQnkgZGVmYXVsdCB0aGUgcmFuZ2UgaXMgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZVxuICAgKiBjaGFydCdzIHNldCB1cCAqL1xuICBASW5wdXQoKSB5UmFuZ2U/OiBbbnVtYmVyLCBudW1iZXJdXG4gIC8qKiBZIEF4aXMgZGlyZWN0aW9uLiBEZWZhdWx0OiBgRGlyZWN0aW9uLk5vcnRoYCAqL1xuICBASW5wdXQoKSB5RGlyZWN0aW9uPzogRGlyZWN0aW9uLlNvdXRoIHwgRGlyZWN0aW9uLk5vcnRoIHwgc3RyaW5nID0gRGlyZWN0aW9uLk5vcnRoXG5cbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiBhbGwgdGhlIGNvbXBvbmVudHMgd2l0aGluIHRoZSBjb250YWluZXIuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyID0gdW5kZWZpbmVkXG4gIC8qKiBNYXJnaW5zLiBEZWZhdWx0OiBgeyB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDAgfWAgKi9cbiAgQElucHV0KCkgbWFyZ2luPzogU3BhY2luZyA9IHsgdG9wOiAxMCwgYm90dG9tOiAxMCwgbGVmdDogMTAsIHJpZ2h0OiAxMCB9XG4gIC8qKiBQYWRkaW5nLiBEZWZhdWx0OiBgeyB0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDAgfWAgKi9cbiAgQElucHV0KCkgcGFkZGluZz86IFNwYWNpbmcgPSB7fVxuICAvKiogU2V0cyB0aGUgWSBzY2FsZSBkb21haW4gYmFzZWQgb24gdGhlIGN1cnJlbnQgWCBzY2FsZSBkb21haW4gKG5vdCB0aGUgd2hvbGUgZGF0YXNldCkuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgc2NhbGVCeURvbWFpbj86IGJvb2xlYW5cbiAgLyoqIEVuYWJsZXMgYXV0b21hdGljIGNhbGN1bGF0aW9uIG9mIGNoYXJ0IG1hcmdpbnMgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlIGF4ZXMuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBhdXRvTWFyZ2luPzogYm9vbGVhbiA9IHRydWVcblxuICAvKiogRGF0YSB0byBiZSBwYXNzZWQgdG8gYWxsIGNoaWxkIGNvbXBvbmVudHMuIEJ1dCBpZiBgZGF0YWAgaXMgYHVuZGVmaW5lZGAgaXQnbGwgdG8gYmUgcGFzc2VkIGFsbG93aW5nIGNvbXBvbmVudHMgdG9cbiAgICogaGF2ZSB0aGVpciBpbmRpdmlkdWFsIGRhdGEuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGRhdGE/OiBEYXR1bVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgY2hhcnQ6IFhZQ29udGFpbmVyPERhdHVtPlxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCAoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFydCA9IG5ldyBYWUNvbnRhaW5lcjxEYXR1bT4odGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5nZXRDb25maWcoKSwgdGhpcy5kYXRhKVxuICAgIHRoaXMucGFzc0NvbnRhaW5lclJlZmVyZW5jZVRvQ2hpbGRyZW4oKVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0ICgpOiB2b2lkIHtcbiAgICAvLyBRdWVyeUxpc3QgZG9lcyB1bnN1YnNjcmliZSBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgZ2V0cyBkZXN0cm95ZWRcbiAgICB0aGlzLnZpc0NvbXBvbmVudHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5wYXNzQ29udGFpbmVyUmVmZXJlbmNlVG9DaGlsZHJlbigpXG4gICAgICB0aGlzLmNoYXJ0Py51cGRhdGVDb250YWluZXIodGhpcy5nZXRDb25maWcoKSlcbiAgICB9KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2ZW50UmVuZGVyID0gdHJ1ZVxuXG4gICAgLy8gU2V0IG5ldyBEYXRhIHdpdGhvdXQgcmUtcmVuZGVyXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgdGhpcy5jaGFydD8uc2V0RGF0YSh0aGlzLmRhdGEsIHByZXZlbnRSZW5kZXIpXG4gICAgICBkZWxldGUgY2hhbmdlcy5kYXRhXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIENvbnRhaW5lciBhbmQgcmVuZGVyXG4gICAgdGhpcy5jaGFydD8udXBkYXRlQ29udGFpbmVyKHRoaXMuZ2V0Q29uZmlnKCkpXG4gIH1cblxuICBnZXRDb25maWcgKCk6IFhZQ29udGFpbmVyQ29uZmlnSW50ZXJmYWNlPERhdHVtPiB7XG4gICAgY29uc3Qge1xuICAgICAgZHVyYXRpb24sIG1hcmdpbiwgcGFkZGluZywgc2NhbGVCeURvbWFpbiwgYXV0b01hcmdpbiwgd2lkdGgsIGhlaWdodCxcbiAgICAgIHhTY2FsZSwgeERvbWFpbiwgeERvbWFpbk1pbkNvbnN0cmFpbnQsIHhEb21haW5NYXhDb25zdHJhaW50LCB4UmFuZ2UsXG4gICAgICB5U2NhbGUsIHlEb21haW4sIHlEb21haW5NaW5Db25zdHJhaW50LCB5RG9tYWluTWF4Q29uc3RyYWludCwgeVJhbmdlLCB5RGlyZWN0aW9uLFxuICAgIH0gPSB0aGlzXG4gICAgY29uc3QgdmlzQ29tcG9uZW50cyA9IHRoaXMudmlzQ29tcG9uZW50cy50b0FycmF5KCkubWFwKGQgPT4gZC5jb21wb25lbnQpXG5cbiAgICBjb25zdCBjcm9zc2hhaXIgPSB2aXNDb21wb25lbnRzLmZpbmQoYyA9PiBjIGluc3RhbmNlb2YgQ3Jvc3NoYWlyKSBhcyBDcm9zc2hhaXI8RGF0dW0+XG4gICAgY29uc3QgdG9vbHRpcCA9IHRoaXMudG9vbHRpcENvbXBvbmVudD8uY29tcG9uZW50IGFzIFRvb2x0aXBcbiAgICBjb25zdCB4QXhpcyA9IHZpc0NvbXBvbmVudHMuZmluZChjID0+IGMgaW5zdGFuY2VvZiBBeGlzICYmIGM/LmNvbmZpZz8udHlwZSA9PT0gJ3gnKSBhcyBBeGlzPERhdHVtPlxuICAgIGNvbnN0IHlBeGlzID0gdmlzQ29tcG9uZW50cy5maW5kKGMgPT4gYyBpbnN0YW5jZW9mIEF4aXMgJiYgYz8uY29uZmlnPy50eXBlID09PSAneScpIGFzIEF4aXM8RGF0dW0+XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gdmlzQ29tcG9uZW50cy5maWx0ZXIoYyA9PiAhKGMgaW5zdGFuY2VvZiBDcm9zc2hhaXIpICYmICEoYyBpbnN0YW5jZW9mIFRvb2x0aXApICYmICEoYyBpbnN0YW5jZW9mIEF4aXMpKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudHMsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIGR1cmF0aW9uLFxuICAgICAgbWFyZ2luLFxuICAgICAgcGFkZGluZyxcbiAgICAgIHhBeGlzLFxuICAgICAgeUF4aXMsXG4gICAgICB0b29sdGlwLFxuICAgICAgY3Jvc3NoYWlyLFxuICAgICAgc2NhbGVCeURvbWFpbixcbiAgICAgIGF1dG9NYXJnaW4sXG4gICAgICB4U2NhbGUsXG4gICAgICB4RG9tYWluLFxuICAgICAgeERvbWFpbk1pbkNvbnN0cmFpbnQsXG4gICAgICB4RG9tYWluTWF4Q29uc3RyYWludCxcbiAgICAgIHhSYW5nZSxcbiAgICAgIHlTY2FsZSxcbiAgICAgIHlEb21haW4sXG4gICAgICB5RG9tYWluTWluQ29uc3RyYWludCxcbiAgICAgIHlEb21haW5NYXhDb25zdHJhaW50LFxuICAgICAgeVJhbmdlLFxuICAgICAgeURpcmVjdGlvbixcbiAgICB9XG4gIH1cblxuICBwYXNzQ29udGFpbmVyUmVmZXJlbmNlVG9DaGlsZHJlbiAoKTogdm9pZCB7XG4gICAgLy8gV2Ugc2V0IHRoZSBjb250YWluZXIgZm9yIGVhY2ggdmlzIGNvbXBvbmVudCB0byB0cmlnZ2VyIGNoYXJ0IHJlLXJlbmRlciBpZiB0aGUgZGF0YSBoYXMgY2hhbmdlZFxuICAgIGlmICh0aGlzLmNoYXJ0KSB0aGlzLnZpc0NvbXBvbmVudHMudG9BcnJheSgpLmZvckVhY2goYyA9PiB7IGMuY29tcG9uZW50Q29udGFpbmVyID0gdGhpcy5jaGFydCB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3kgKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnQ/LmRlc3Ryb3koKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { VisXYContainerComponent } from './xy-container.component';
3
+ import * as i0 from "@angular/core";
4
+ export class VisXYContainerModule {
5
+ }
6
+ VisXYContainerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisXYContainerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ VisXYContainerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisXYContainerModule, declarations: [VisXYContainerComponent], exports: [VisXYContainerComponent] });
8
+ VisXYContainerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisXYContainerModule, imports: [[]] });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisXYContainerModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [],
13
+ declarations: [VisXYContainerComponent],
14
+ exports: [VisXYContainerComponent],
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHktY29udGFpbmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb250YWluZXJzL3h5LWNvbnRhaW5lci94eS1jb250YWluZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUE7O0FBT2xFLE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7a0hBQXBCLG9CQUFvQixpQkFIaEIsdUJBQXVCLGFBQzVCLHVCQUF1QjtrSEFFdEIsb0JBQW9CLFlBSnRCLEVBQUU7MkZBSUEsb0JBQW9CO2tCQUxoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBWaXNYWUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4veHktY29udGFpbmVyLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW1Zpc1hZQ29udGFpbmVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1Zpc1hZQ29udGFpbmVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzWFlDb250YWluZXJNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export { VisXYContainerComponent } from './containers/xy-container/xy-container.component';
2
+ export { VisXYContainerModule } from './containers/xy-container/xy-container.module';
3
+ export { VisSingleContainerComponent } from './containers/single-container/single-container.component';
4
+ export { VisSingleContainerModule } from './containers/single-container/single-container.module';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250YWluZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFBO0FBQzFGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQ3BGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFBO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVmlzWFlDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbnRhaW5lcnMveHktY29udGFpbmVyL3h5LWNvbnRhaW5lci5jb21wb25lbnQnXG5leHBvcnQgeyBWaXNYWUNvbnRhaW5lck1vZHVsZSB9IGZyb20gJy4vY29udGFpbmVycy94eS1jb250YWluZXIveHktY29udGFpbmVyLm1vZHVsZSdcbmV4cG9ydCB7IFZpc1NpbmdsZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVycy9zaW5nbGUtY29udGFpbmVyL3NpbmdsZS1jb250YWluZXIuY29tcG9uZW50J1xuZXhwb3J0IHsgVmlzU2luZ2xlQ29udGFpbmVyTW9kdWxlIH0gZnJvbSAnLi9jb250YWluZXJzL3NpbmdsZS1jb250YWluZXIvc2luZ2xlLWNvbnRhaW5lci5tb2R1bGUnXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { VisGenericComponent } from './generic-component';
2
+ export class VisCoreComponent extends VisGenericComponent {
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jb3JlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUV6RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsbUJBQW1CO0NBR3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50Q29yZSwgQ29udGFpbmVyQ29yZSB9IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBWaXNHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnLi9nZW5lcmljLWNvbXBvbmVudCdcblxuZXhwb3J0IGNsYXNzIFZpc0NvcmVDb21wb25lbnQgZXh0ZW5kcyBWaXNHZW5lcmljQ29tcG9uZW50IHtcbiAgY29tcG9uZW50OiBDb21wb25lbnRDb3JlPGFueT5cbiAgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlXG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export class VisGenericComponent {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9nZW5lcmljLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sbUJBQW1CO0NBRS9CIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFZpc0dlbmVyaWNDb21wb25lbnQge1xuICBjb21wb25lbnQ6IGFueVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export { VisGenericComponent } from './generic-component';
2
+ export { VisCoreComponent } from './core-component';
3
+ export { VisXYComponent } from './xy-component';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBWaXNHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnLi9nZW5lcmljLWNvbXBvbmVudCdcbmV4cG9ydCB7IFZpc0NvcmVDb21wb25lbnQgfSBmcm9tICcuL2NvcmUtY29tcG9uZW50J1xuZXhwb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuL3h5LWNvbXBvbmVudCdcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import { VisCoreComponent } from './core-component';
2
+ export class VisXYComponent extends VisCoreComponent {
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHktY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUveHktY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRW5ELE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0NBR25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWFlDb21wb25lbnRDb3JlLCBYWUNvbnRhaW5lciB9IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBWaXNDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi9jb3JlLWNvbXBvbmVudCdcblxuZXhwb3J0IGNsYXNzIFZpc1hZQ29tcG9uZW50IGV4dGVuZHMgVmlzQ29yZUNvbXBvbmVudCB7XG4gIGNvbXBvbmVudDogWFlDb21wb25lbnRDb3JlPGFueT5cbiAgY29tcG9uZW50Q29udGFpbmVyOiBYWUNvbnRhaW5lcjxhbnk+XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { BulletLegend } from '@unovis/ts';
3
+ import { VisGenericComponent } from '../../core';
4
+ import * as i0 from "@angular/core";
5
+ export class VisBulletLegendComponent {
6
+ ngAfterViewInit() {
7
+ this.component = new BulletLegend(this.containerRef.nativeElement, this.getConfig());
8
+ }
9
+ ngOnChanges(changes) {
10
+ var _a;
11
+ (_a = this.component) === null || _a === void 0 ? void 0 : _a.update(this.getConfig());
12
+ }
13
+ getConfig() {
14
+ const { items, labelClassName, onLegendItemClick, labelFontSize, labelMaxWidth, bulletSize } = this;
15
+ const config = { items, labelClassName, onLegendItemClick, labelFontSize, labelMaxWidth, bulletSize };
16
+ const keys = Object.keys(config);
17
+ keys.forEach(key => { if (config[key] === undefined)
18
+ delete config[key]; });
19
+ return config;
20
+ }
21
+ }
22
+ VisBulletLegendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisBulletLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ VisBulletLegendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: VisBulletLegendComponent, selector: "vis-bullet-legend", inputs: { items: "items", labelClassName: "labelClassName", onLegendItemClick: "onLegendItemClick", labelFontSize: "labelFontSize", labelMaxWidth: "labelMaxWidth", bulletSize: "bulletSize" }, providers: [{ provide: VisGenericComponent, useExisting: VisBulletLegendComponent }], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: '<div #container class="bullet-legend-container"></div>', isInline: true });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisBulletLegendComponent, decorators: [{
25
+ type: Component,
26
+ args: [{
27
+ selector: 'vis-bullet-legend',
28
+ template: '<div #container class="bullet-legend-container"></div>',
29
+ // eslint-disable-next-line no-use-before-define
30
+ providers: [{ provide: VisGenericComponent, useExisting: VisBulletLegendComponent }],
31
+ }]
32
+ }], propDecorators: { containerRef: [{
33
+ type: ViewChild,
34
+ args: ['container', { static: false }]
35
+ }], items: [{
36
+ type: Input
37
+ }], labelClassName: [{
38
+ type: Input
39
+ }], onLegendItemClick: [{
40
+ type: Input
41
+ }], labelFontSize: [{
42
+ type: Input
43
+ }], labelMaxWidth: [{
44
+ type: Input
45
+ }], bulletSize: [{
46
+ type: Input
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbGV0LWxlZ2VuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaHRtbC1jb21wb25lbnRzL2J1bGxldC1sZWdlbmQvYnVsbGV0LWxlZ2VuZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsS0FBSyxFQUFpQixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUE7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBMEQsTUFBTSxZQUFZLENBQUE7QUFDakcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFBOztBQVFoRCxNQUFNLE9BQU8sd0JBQXdCO0lBdUJuQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUN0RixDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ25HLE1BQU0sTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFBO1FBQ3JHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUEwQyxDQUFBO1FBQ3pFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUxRSxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7O3FIQXRDVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0T0FGeEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQywwSkFGMUUsd0RBQXdEOzJGQUl2RCx3QkFBd0I7a0JBTnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLHdEQUF3RDtvQkFDbEUsZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLDBCQUEwQixFQUFFLENBQUM7aUJBQ3JGOzhCQUU0QyxZQUFZO3NCQUF0RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR2hDLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCdWxsZXRMZWdlbmQsIEJ1bGxldExlZ2VuZENvbmZpZ0ludGVyZmFjZSwgQnVsbGV0TGVnZW5kSXRlbUludGVyZmFjZSB9IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBWaXNHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmlzLWJ1bGxldC1sZWdlbmQnLFxuICB0ZW1wbGF0ZTogJzxkaXYgI2NvbnRhaW5lciBjbGFzcz1cImJ1bGxldC1sZWdlbmQtY29udGFpbmVyXCI+PC9kaXY+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVmlzR2VuZXJpY0NvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IFZpc0J1bGxldExlZ2VuZENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzQnVsbGV0TGVnZW5kQ29tcG9uZW50IGltcGxlbWVudHMgQnVsbGV0TGVnZW5kQ29uZmlnSW50ZXJmYWNlLCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRhaW5lclJlZjogRWxlbWVudFJlZlxuXG4gIC8qKiBMZWdlbmQgaXRlbXMgYXJyYXkgQnVsbGV0TGVnZW5kSXRlbUludGVyZmFjZVtdLiBEZWZhdWx0OiBgW11gICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBCdWxsZXRMZWdlbmRJdGVtSW50ZXJmYWNlW11cblxuICAvKiogQXBwbHkgYSBzcGVjaWZpYyBjbGFzcyB0byB0aGUgbGFiZWxzLiBEZWZhdWx0OiBgJydgICovXG4gIEBJbnB1dCgpIGxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nXG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgbGVnZW5kIGl0ZW0gY2xpY2suIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTGVnZW5kSXRlbUNsaWNrPzogKChkOiBCdWxsZXRMZWdlbmRJdGVtSW50ZXJmYWNlLCBpOiBudW1iZXIpID0+IHZvaWQpXG5cbiAgLyoqIExhYmVsIHRleHQgKDxzcGFuPiBlbGVtZW50KSBmb250LXNpemUgQ1NTLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgbGFiZWxGb250U2l6ZT86IHN0cmluZyB8IG51bGxcblxuICAvKiogTGFiZWwgdGV4dCAoPHNwYW4+IGVsZW1lbnQpIG1heC13aWR0aCBDU1MgcHJvcGVydHkuIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBsYWJlbE1heFdpZHRoPzogc3RyaW5nIHwgbnVsbFxuXG4gIC8qKiBCdWxsZXQgY2lyY2xlIHNpemUsIG1hcHBlZCB0byB0aGUgd2lkdGggYW5kIGhlaWdodCBDU1MgcHJvcGVydGllcy4gRGVmYXVsdDogYG51bGxgICovXG4gIEBJbnB1dCgpIGJ1bGxldFNpemU/OiBzdHJpbmcgfCBudWxsXG5cbiAgY29tcG9uZW50OiBCdWxsZXRMZWdlbmQgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IEJ1bGxldExlZ2VuZCh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmdldENvbmZpZygpKVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudD8udXBkYXRlKHRoaXMuZ2V0Q29uZmlnKCkpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogQnVsbGV0TGVnZW5kQ29uZmlnSW50ZXJmYWNlIHtcbiAgICBjb25zdCB7IGl0ZW1zLCBsYWJlbENsYXNzTmFtZSwgb25MZWdlbmRJdGVtQ2xpY2ssIGxhYmVsRm9udFNpemUsIGxhYmVsTWF4V2lkdGgsIGJ1bGxldFNpemUgfSA9IHRoaXNcbiAgICBjb25zdCBjb25maWcgPSB7IGl0ZW1zLCBsYWJlbENsYXNzTmFtZSwgb25MZWdlbmRJdGVtQ2xpY2ssIGxhYmVsRm9udFNpemUsIGxhYmVsTWF4V2lkdGgsIGJ1bGxldFNpemUgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBCdWxsZXRMZWdlbmRDb25maWdJbnRlcmZhY2UpW11cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsgaWYgKGNvbmZpZ1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBjb25maWdba2V5XSB9KVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ // !!! This code was automatically generated. You should not change it !!!
2
+ import { NgModule } from '@angular/core';
3
+ import { VisBulletLegendComponent } from './bullet-legend.component';
4
+ import * as i0 from "@angular/core";
5
+ export class VisBulletLegendModule {
6
+ }
7
+ VisBulletLegendModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisBulletLegendModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ VisBulletLegendModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisBulletLegendModule, declarations: [VisBulletLegendComponent], exports: [VisBulletLegendComponent] });
9
+ VisBulletLegendModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisBulletLegendModule, imports: [[]] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisBulletLegendModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [],
14
+ declarations: [VisBulletLegendComponent],
15
+ exports: [VisBulletLegendComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbGV0LWxlZ2VuZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaHRtbC1jb21wb25lbnRzL2J1bGxldC1sZWdlbmQvYnVsbGV0LWxlZ2VuZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUE7O0FBT3BFLE1BQU0sT0FBTyxxQkFBcUI7O2tIQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQixpQkFIakIsd0JBQXdCLGFBQzdCLHdCQUF3QjttSEFFdkIscUJBQXFCLFlBSnZCLEVBQUU7MkZBSUEscUJBQXFCO2tCQUxqQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAhISEgVGhpcyBjb2RlIHdhcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4gWW91IHNob3VsZCBub3QgY2hhbmdlIGl0ICEhIVxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVmlzQnVsbGV0TGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi9idWxsZXQtbGVnZW5kLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW1Zpc0J1bGxldExlZ2VuZENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtWaXNCdWxsZXRMZWdlbmRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNCdWxsZXRMZWdlbmRNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,157 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { LeafletFlowMap, } from '@unovis/ts';
3
+ import { VisCoreComponent } from '../../core';
4
+ import * as i0 from "@angular/core";
5
+ export class VisLeafletFlowMapComponent {
6
+ ngAfterViewInit() {
7
+ const config = this.getConfig();
8
+ this.component = new LeafletFlowMap(this.containerRef.nativeElement, config, this.data);
9
+ }
10
+ ngOnChanges(changes) {
11
+ var _a, _b;
12
+ if (changes.data) {
13
+ (_a = this.component) === null || _a === void 0 ? void 0 : _a.setData(this.data);
14
+ }
15
+ (_b = this.component) === null || _b === void 0 ? void 0 : _b.setConfig(this.getConfig());
16
+ }
17
+ getConfig() {
18
+ const { width, height, duration, events, attributes, flyToDuration, fitViewPadding, zoomDuration, initialBounds, fitBoundsOnUpdate, fitViewOnInit, fitViewOnUpdate, accessToken, style, styleDarkTheme, attribution, onMapInitialized, onMapMoveZoom, onMapMoveStart, onMapMoveEnd, onMapZoomStart, onMapZoomEnd, onMapClick, pointLongitude, pointLatitude, pointId, pointShape, pointColor, pointRadius, pointLabel, pointBottomLabel, pointCursor, selectedPointId, clusterColor, clusterRadius, clusterLabel, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, valuesMap, topoJSONLayer, tooltip, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave } = this;
19
+ const config = { width, height, duration, events, attributes, flyToDuration, fitViewPadding, zoomDuration, initialBounds, fitBoundsOnUpdate, fitViewOnInit, fitViewOnUpdate, accessToken, style, styleDarkTheme, attribution, onMapInitialized, onMapMoveZoom, onMapMoveStart, onMapMoveEnd, onMapZoomStart, onMapZoomEnd, onMapClick, pointLongitude, pointLatitude, pointId, pointShape, pointColor, pointRadius, pointLabel, pointBottomLabel, pointCursor, selectedPointId, clusterColor, clusterRadius, clusterLabel, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, valuesMap, topoJSONLayer, tooltip, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave };
20
+ const keys = Object.keys(config);
21
+ keys.forEach(key => { if (config[key] === undefined)
22
+ delete config[key]; });
23
+ return config;
24
+ }
25
+ }
26
+ VisLeafletFlowMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisLeafletFlowMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
+ VisLeafletFlowMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: VisLeafletFlowMapComponent, selector: "vis-leaflet-flow-map", inputs: { width: "width", height: "height", duration: "duration", events: "events", attributes: "attributes", flyToDuration: "flyToDuration", fitViewPadding: "fitViewPadding", zoomDuration: "zoomDuration", initialBounds: "initialBounds", fitBoundsOnUpdate: "fitBoundsOnUpdate", fitViewOnInit: "fitViewOnInit", fitViewOnUpdate: "fitViewOnUpdate", style: "style", styleDarkTheme: "styleDarkTheme", accessToken: "accessToken", attribution: "attribution", onMapInitialized: "onMapInitialized", onMapMoveZoom: "onMapMoveZoom", onMapMoveStart: "onMapMoveStart", onMapMoveEnd: "onMapMoveEnd", onMapZoomStart: "onMapZoomStart", onMapZoomEnd: "onMapZoomEnd", onMapClick: "onMapClick", pointLongitude: "pointLongitude", pointLatitude: "pointLatitude", pointId: "pointId", pointShape: "pointShape", pointColor: "pointColor", pointRadius: "pointRadius", pointLabel: "pointLabel", pointBottomLabel: "pointBottomLabel", pointCursor: "pointCursor", selectedPointId: "selectedPointId", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", valuesMap: "valuesMap", topoJSONLayer: "topoJSONLayer", tooltip: "tooltip", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisLeafletFlowMapComponent }], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: '<div #container class="unovis-leaflet-flow-map-container"></div>', isInline: true, styles: [".unovis-leaflet-flow-map-container { width: 100%; height: 100%; position: relative; }"] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisLeafletFlowMapComponent, decorators: [{
29
+ type: Component,
30
+ args: [{
31
+ selector: 'vis-leaflet-flow-map',
32
+ template: '<div #container class="unovis-leaflet-flow-map-container"></div>',
33
+ styles: ['.unovis-leaflet-flow-map-container { width: 100%; height: 100%; position: relative; }'],
34
+ // eslint-disable-next-line no-use-before-define
35
+ providers: [{ provide: VisCoreComponent, useExisting: VisLeafletFlowMapComponent }],
36
+ }]
37
+ }], propDecorators: { containerRef: [{
38
+ type: ViewChild,
39
+ args: ['container', { static: false }]
40
+ }], width: [{
41
+ type: Input
42
+ }], height: [{
43
+ type: Input
44
+ }], duration: [{
45
+ type: Input
46
+ }], events: [{
47
+ type: Input
48
+ }], attributes: [{
49
+ type: Input
50
+ }], flyToDuration: [{
51
+ type: Input
52
+ }], fitViewPadding: [{
53
+ type: Input
54
+ }], zoomDuration: [{
55
+ type: Input
56
+ }], initialBounds: [{
57
+ type: Input
58
+ }], fitBoundsOnUpdate: [{
59
+ type: Input
60
+ }], fitViewOnInit: [{
61
+ type: Input
62
+ }], fitViewOnUpdate: [{
63
+ type: Input
64
+ }], style: [{
65
+ type: Input
66
+ }], styleDarkTheme: [{
67
+ type: Input
68
+ }], accessToken: [{
69
+ type: Input
70
+ }], attribution: [{
71
+ type: Input
72
+ }], onMapInitialized: [{
73
+ type: Input
74
+ }], onMapMoveZoom: [{
75
+ type: Input
76
+ }], onMapMoveStart: [{
77
+ type: Input
78
+ }], onMapMoveEnd: [{
79
+ type: Input
80
+ }], onMapZoomStart: [{
81
+ type: Input
82
+ }], onMapZoomEnd: [{
83
+ type: Input
84
+ }], onMapClick: [{
85
+ type: Input
86
+ }], pointLongitude: [{
87
+ type: Input
88
+ }], pointLatitude: [{
89
+ type: Input
90
+ }], pointId: [{
91
+ type: Input
92
+ }], pointShape: [{
93
+ type: Input
94
+ }], pointColor: [{
95
+ type: Input
96
+ }], pointRadius: [{
97
+ type: Input
98
+ }], pointLabel: [{
99
+ type: Input
100
+ }], pointBottomLabel: [{
101
+ type: Input
102
+ }], pointCursor: [{
103
+ type: Input
104
+ }], selectedPointId: [{
105
+ type: Input
106
+ }], clusterColor: [{
107
+ type: Input
108
+ }], clusterRadius: [{
109
+ type: Input
110
+ }], clusterLabel: [{
111
+ type: Input
112
+ }], clusterBottomLabel: [{
113
+ type: Input
114
+ }], clusterRingWidth: [{
115
+ type: Input
116
+ }], clusterBackground: [{
117
+ type: Input
118
+ }], clusterExpandOnClick: [{
119
+ type: Input
120
+ }], clusteringDistance: [{
121
+ type: Input
122
+ }], valuesMap: [{
123
+ type: Input
124
+ }], topoJSONLayer: [{
125
+ type: Input
126
+ }], tooltip: [{
127
+ type: Input
128
+ }], sourceLongitude: [{
129
+ type: Input
130
+ }], sourceLatitude: [{
131
+ type: Input
132
+ }], targetLongitude: [{
133
+ type: Input
134
+ }], targetLatitude: [{
135
+ type: Input
136
+ }], sourcePointRadius: [{
137
+ type: Input
138
+ }], sourcePointColor: [{
139
+ type: Input
140
+ }], flowParticleColor: [{
141
+ type: Input
142
+ }], flowParticleRadius: [{
143
+ type: Input
144
+ }], flowParticleSpeed: [{
145
+ type: Input
146
+ }], flowParticleDensity: [{
147
+ type: Input
148
+ }], onSourcePointClick: [{
149
+ type: Input
150
+ }], onSourcePointMouseEnter: [{
151
+ type: Input
152
+ }], onSourcePointMouseLeave: [{
153
+ type: Input
154
+ }], data: [{
155
+ type: Input
156
+ }] } });
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZmxldC1mbG93LW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaHRtbC1jb21wb25lbnRzL2xlYWZsZXQtZmxvdy1tYXAvbGVhZmxldC1mbG93LW1hcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsS0FBSyxFQUFpQixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUE7QUFDckcsT0FBTyxFQUNMLGNBQWMsR0FhZixNQUFNLFlBQVksQ0FBQTtBQUVuQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUE7O0FBUzdDLE1BQU0sT0FBTywwQkFBMEI7SUEwT3JDLGVBQWU7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ25DO1FBQ0QsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsS0FB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LEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFXRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFJRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsdUJBQXVCO3NCQUEvQixLQUFLO2dCQUVHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgTGVhZmxldEZsb3dNYXAsXG4gIExlYWZsZXRGbG93TWFwQ29uZmlnSW50ZXJmYWNlLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIEJvdW5kcyxcbiAgTWFwWm9vbVN0YXRlLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIFN0cmluZ0FjY2Vzc29yLFxuICBDb2xvckFjY2Vzc29yLFxuICBMZWFmbGV0TWFwUG9pbnREYXR1bSxcbiAgTGVhZmxldE1hcFBvaW50U3R5bGVzLFxuICBUb29sdGlwLFxuICBMZWFmbGV0TWFwQ2x1c3RlckRhdHVtLFxufSBmcm9tICdAdW5vdmlzL3RzJ1xuaW1wb3J0IHsgU3R5bGVTcGVjaWZpY2F0aW9uIH0gZnJvbSAnbWFwbGlicmUtZ2wnXG5pbXBvcnQgeyBWaXNDb3JlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmlzLWxlYWZsZXQtZmxvdy1tYXAnLFxuICB0ZW1wbGF0ZTogJzxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInVub3Zpcy1sZWFmbGV0LWZsb3ctbWFwLWNvbnRhaW5lclwiPjwvZGl2PicsXG4gIHN0eWxlczogWycudW5vdmlzLWxlYWZsZXQtZmxvdy1tYXAtY29udGFpbmVyIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgcG9zaXRpb246IHJlbGF0aXZlOyB9J10sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc0NvcmVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNMZWFmbGV0Rmxvd01hcENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzTGVhZmxldEZsb3dNYXBDb21wb25lbnQ8UG9pbnREYXR1bSwgRmxvd0RhdHVtPiBpbXBsZW1lbnRzIExlYWZsZXRGbG93TWFwQ29uZmlnSW50ZXJmYWNlPFBvaW50RGF0dW0sIEZsb3dEYXR1bT4sIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGFpbmVyUmVmOiBFbGVtZW50UmVmXG5cbiAgLyoqIFdpZHRoIGluIHBpeGVscyBvciBpbiBDU1MgdW5pdHMuIEJ5IGRlZmF1bHQsIHRoZSBtYXAgd2lsbCBhdXRvbWF0aWNhbGx5IGZpdCB0byB0aGUgc2l6ZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiAqL1xuICBASW5wdXQoKSB3aWR0aD86IG51bWJlciB8IHN0cmluZ1xuICAvKiogSGVpZ2h0IGluIHBpeGVscyBvciBpbiBDU1MgdW5pdHMuIEJ5IGRlZmF1bHQsIHRoZSBtYXAgd2lsbCBhdXRvbWF0aWNhbGx5IGZpdCB0byB0aGUgc2l6ZSBvZiB0aGUgcGFyZW50IGVsZW1lbnQuIERlZmF1bHQ6IGB1bmRlZmluZWRgLiAqL1xuICBASW5wdXQoKSBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmdcblxuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIHdoZW4gdGhlIG1hcCBpcyBhdXRvbWF0aWNhbGx5IHBhbm5pbmcgb3Igem9vbWluZyB0byBhIHBvaW50IG9yIGFyZWEuIERlZmF1bHQ6IGAxNTAwYCBtcyAqL1xuICBASW5wdXQoKSBmbHlUb0R1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIFBhZGRpbmcgdG8gYmUgdXNlZCB3aGVuIHRoZSBgZml0Vmlld2AgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLiBUaGUgdmFsdWUgaXMgaW4gcGl4ZWxzLiBEZWZhdWx0OiBgWzE1MCwgMTUwXWAgKi9cbiAgQElucHV0KCkgZml0Vmlld1BhZGRpbmc/OiBbbnVtYmVyLCBudW1iZXJdXG5cbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBmb3IgdGhlIGBzZXRab29tYCBmdW5jdGlvbi4gRGVmYXVsdDogYDgwMGAgbXMgKi9cbiAgQElucHV0KCkgem9vbUR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIERlZmF1bHQgYm91bmRzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIG9uIHRoZSBmaXJzdCBtYXAgcmVuZGVyIGlmIHRoZSBib3VuZHMgcHJvcGVydHkgaXMgbm90IHNldC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgaW5pdGlhbEJvdW5kcz86IEJvdW5kc1xuXG4gIC8qKiBGb3JjZSBzZXQgbWFwIGJvdW5kcyBvbiBjb25maWcgYW5kIGRhdGEgdXBkYXRlcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgZml0Qm91bmRzT25VcGRhdGU/OiBCb3VuZHNcblxuICAvKiogRml0IHRoZSB2aWV3IHRvIGNvbnRhaW4gdGhlIGRhdGEgcG9pbnRzIG9uIG1hcCBpbml0aWFsaXphdGlvbi4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGZpdFZpZXdPbkluaXQ/OiBib29sZWFuXG5cbiAgLyoqIEZpdCB0aGUgdmlldyB0byBjb250YWluIHRoZSBkYXRhIHBvaW50cyBvbiBtYXAgY29uZmlnIGFuZCBkYXRhIHVwZGF0ZXMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZml0Vmlld09uVXBkYXRlPzogYm9vbGVhblxuXG4gIC8qKiBNYXBMaWJyZSBTdHlsZVNwZWNpZmljYXRpb24gc2V0dGluZ3MuIERlZmF1bHQ6IGBNYXBMaWJyZUFyY3RpY0xpZ2h0YCAqL1xuICBASW5wdXQoKSBzdHlsZTogU3R5bGVTcGVjaWZpY2F0aW9uIHwgc3RyaW5nXG5cbiAgLyoqIE1hcExpYnJlIFN0eWxlU3BlY2lmaWNhdGlvbiBzZXR0aW5ncyBmb3IgZGFyayB0aGVtZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc3R5bGVEYXJrVGhlbWU6IFN0eWxlU3BlY2lmaWNhdGlvbiB8IHN0cmluZ1xuXG4gIC8qKiBUaWxlIHNlcnZlciBhY2Nlc3MgdG9rZW4gb3IgQVBJIGtleS4gRGVmYXVsdDogYCcnYCAqL1xuICBASW5wdXQoKSBhY2Nlc3NUb2tlbj86IHN0cmluZ1xuXG4gIC8qKiBBcnJheSBvZiBhdHRyaWJ1dGlvbiBsYWJlbHMuIERlZmF1bHQ6IGBbJzxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiB0YXJnZXQ9XCJfYmxhbmtcIj5PcGVuU3RyZWV0TWFwIGNvbnRyaWJ1dG9yczwvYT4nXWAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRpb24/OiBzdHJpbmdbXVxuXG4gIC8qKiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG1hcCdzIGFzeW5jIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTWFwSW5pdGlhbGl6ZWQ/OiAoKCkgPT4gdm9pZClcblxuICAvKiogTWFwIE1vdmUgLyBab29tIHVuaWZpZWQgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uTWFwTW92ZVpvb20/OiAoKHsgbWFwQ2VudGVyLCB6b29tTGV2ZWwsIGJvdW5kcyB9OiBNYXBab29tU3RhdGUpID0+IHZvaWQpXG5cbiAgLyoqIE1hcCBNb3ZlIFN0YXJ0IGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk1hcE1vdmVTdGFydD86ICgoeyBtYXBDZW50ZXIsIHpvb21MZXZlbCwgYm91bmRzIH06IE1hcFpvb21TdGF0ZSkgPT4gdm9pZClcblxuICAvKiogTWFwIE1vdmUgRW5kIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk1hcE1vdmVFbmQ/OiAoKHsgbWFwQ2VudGVyLCB6b29tTGV2ZWwsIGJvdW5kcyB9OiBNYXBab29tU3RhdGUpID0+IHZvaWQpXG5cbiAgLyoqIE1hcCBab29tIFN0YXJ0IGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk1hcFpvb21TdGFydD86ICgoeyBtYXBDZW50ZXIsIHpvb21MZXZlbCwgYm91bmRzIH06IE1hcFpvb21TdGF0ZSkgPT4gdm9pZClcblxuICAvKiogTWFwIFpvb20gRW5kIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvbk1hcFpvb21FbmQ/OiAoKHsgbWFwQ2VudGVyLCB6b29tTGV2ZWwsIGJvdW5kcyB9OiBNYXBab29tU3RhdGUpID0+IHZvaWQpXG5cbiAgLyoqIE1hcCBab29tIEVuZCBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25NYXBDbGljaz86ICgoeyBtYXBDZW50ZXIsIHpvb21MZXZlbCwgYm91bmRzIH06IE1hcFpvb21TdGF0ZSkgPT4gdm9pZClcblxuICAvKiogUG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmxvbmdpdHVkZWAgKi9cbiAgQElucHV0KCkgcG9pbnRMb25naXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQubGF0aXR1ZGVgICovXG4gIEBJbnB1dCgpIHBvaW50TGF0aXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgaWQgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGBkID0+IGQuaWRgICovXG4gIEBJbnB1dCgpIHBvaW50SWQ/OiBTdHJpbmdBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBzaGFwZSBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYGQgPT4gZC5zaGFwZWAgKi9cbiAgQElucHV0KCkgcG9pbnRTaGFwZT86IFN0cmluZ0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yYCAqL1xuICBASW5wdXQoKSBwb2ludENvbG9yPzogQ29sb3JBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCByYWRpdXMgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHBvaW50UmFkaXVzPzogTnVtZXJpY0FjY2Vzc29yPExlYWZsZXRNYXBQb2ludERhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBQb2ludCBpbm5lciBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5wb2ludF9jb3VudCA/PyAnJ2AgKi9cbiAgQElucHV0KCkgcG9pbnRMYWJlbD86IFN0cmluZ0FjY2Vzc29yPExlYWZsZXRNYXBQb2ludERhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBQb2ludCBib3R0b20gbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGAnJ2AgKi9cbiAgQElucHV0KCkgcG9pbnRCb3R0b21MYWJlbD86IFN0cmluZ0FjY2Vzc29yPExlYWZsZXRNYXBQb2ludERhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBQb2ludCBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBwb2ludEN1cnNvcj86IFN0cmluZ0FjY2Vzc29yPExlYWZsZXRNYXBQb2ludERhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBTZXQgc2VsZWN0ZWQgcG9pbnQgYnkgaXRzIHVuaXF1ZSBpZC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRQb2ludElkPzogc3RyaW5nXG5cbiAgLyoqIENsdXN0ZXIgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICAqL1xuICBASW5wdXQoKSBjbHVzdGVyQ29sb3I/OiBDb2xvckFjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIENsdXN0ZXIgcmFkaXVzIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAgKi9cbiAgQElucHV0KCkgY2x1c3RlclJhZGl1cz86IE51bWVyaWNBY2Nlc3NvcjxMZWFmbGV0TWFwQ2x1c3RlckRhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBDbHVzdGVyIGlubmVyIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLnBvaW50X2NvdW50YCAgKi9cbiAgQElucHV0KCkgY2x1c3RlckxhYmVsPzogU3RyaW5nQWNjZXNzb3I8TGVhZmxldE1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuICAvKiogQ2x1c3RlciBib3R0b20gbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGAnJ2AgKi9cbiAgQElucHV0KCkgY2x1c3RlckJvdHRvbUxhYmVsPzogU3RyaW5nQWNjZXNzb3I8TGVhZmxldE1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuXG4gIC8qKiBUaGUgd2lkdGggb2YgdGhlIGNsdXN0ZXIgcG9pbnQgb3V0bGluZS4gRGVmYXVsdDogYDEuMjVgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJSaW5nV2lkdGg/OiBudW1iZXJcblxuICAvKiogV2hlbiBjbHVzdGVyIGlzIGV4cGFuZGVkLCBzaG93IGEgYmFja2dyb3VuZCBjaXJjbGUgdG8gYmV0dGVyIHNlcGFyYXRlIHBvaW50cyBmcm9tIHRoZSBiYXNlIG1hcC4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJCYWNrZ3JvdW5kPzogYm9vbGVhblxuXG4gIC8qKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGNsdXN0ZXIgc2hvdWxkIGV4cGFuZCBvbiBjbGljayBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBjbHVzdGVyRXhwYW5kT25DbGljaz86IGJvb2xlYW5cblxuICAvKiogQ2x1c3RlcmluZyBkaXN0YW5jZSBpbiBwaXhlbHMuIFRoaXMgdmFsdWUgd2lsbCBiZSBwYXNzZWQgdG8gU3VwZXJjbHVzdGVyIGFzIHRoZSBgcmFkaXVzYCBwcm9wZXJ0eSBodHRwczovL2dpdGh1Yi5jb20vbWFwYm94L3N1cGVyY2x1c3Rlci4gRGVmYXVsdDogYDU1YCAqL1xuICBASW5wdXQoKSBjbHVzdGVyaW5nRGlzdGFuY2U/OiBudW1iZXJcblxuICAvKiogQSBzaW5nbGUgbWFwIHBvaW50IGNhbiBoYXZlIG11bHRpcGxlIHByb3BlcnRpZXMgZGlzcGxheWVkIGFzIGEgc21hbGwgcGllIGNoYXJ0IChvciBhIGRvbnV0IGNoYXJ0IGZvciBhIGNsdXN0ZXIgb2YgcG9pbnRzKS5cbiAgICogQnkgc2V0dGluZyB0aGUgdmFsdWVzTWFwIGNvbmZpZ3VyYXRpb24geW91IGNhbiBzcGVjaWZ5IGRhdGEgcHJvcGVydGllcyB0aGF0IHNob3VsZCBiZSBtYXBwZWQgdG8gdmFyaW91cyBwaWUgLyBkb251dCBzZWdtZW50cy5cbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxba2V5IGluIGtleW9mIERhdHVtXT86IHsgY29sb3I6IHN0cmluZywgY2xhc3NOYW1lPzogc3RyaW5nIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxoZWFsdGh5OiB7IGNvbG9yOiAnZ3JlZW4nIH0sXG4gICAqIFxcd2FybmluZzogeyBjb2xvcjogJ29yYW5nZScgfSxcbiAgICogXFxkYW5nZXI6IHsgY29sb3I6ICdyZWQnIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogd2hlcmUgZXZlcnkgZGF0YSBwb2ludCBoYXMgdGhlIGBoZWFsdGh5YCwgYHdhcm5pbmdgIGFuZCBgZGFuZ2VyYCBudW1lcmljYWwgb3IgYm9vbGVhbiBwcm9wZXJ0eS4gKi9cbiAgQElucHV0KCkgdmFsdWVzTWFwPzogTGVhZmxldE1hcFBvaW50U3R5bGVzPFBvaW50RGF0dW0+XG5cbiAgLyoqIEEgVG9wb0pTT04gR2VvbWV0cnkgbGF5ZXIgdG8gYmUgZGlzcGxheWVkIG9uIHRvcCBvZiB0aGUgbWFwLiBTdXBwb3J0cyBmaWxsIGFuZCBzdHJva2UgKi9cbiAgQElucHV0KCkgdG9wb0pTT05MYXllcj86IHtcbiAgICBzb3VyY2VzOiBhbnk7XG4gICAgZmVhdHVyZU5hbWU/OiBzdHJpbmc7XG4gICAgZmlsbFByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHN0cm9rZVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIGZpbGxPcGFjaXR5PzogbnVtYmVyO1xuICAgIHN0cm9rZU9wYWNpdHk/OiBudW1iZXI7XG4gICAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIH1cblxuICAvKiogVG9vbHRpcCBjb21wb25lbnQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHRvb2x0aXA/OiBUb29sdGlwXG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IGxvbmdpdHVkZSBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDouYGYgPT4gZi5zb3VyY2VMb25naXR1ZGVgICovXG4gIEBJbnB1dCgpIHNvdXJjZUxvbmdpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxGbG93RGF0dW0+XG4gIC8qKiBGbG93IHNvdXJjZSBwb2ludCBsYXRpdHVkZSBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYGYgPT4gZi5zb3VyY2VMYXRpdHVkZWAgKi9cbiAgQElucHV0KCkgc291cmNlTGF0aXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8Rmxvd0RhdHVtPlxuICAvKiogRmxvdyB0YXJnZXQgcG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnRhcmdldExvbmdpdHVkZWAgKi9cbiAgQElucHV0KCkgdGFyZ2V0TG9uZ2l0dWRlPzogTnVtZXJpY0FjY2Vzc29yPEZsb3dEYXR1bT5cbiAgLyoqIEZsb3cgdGFyZ2V0IHBvaW50IGxhdGl0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnRhcmdldExhdGl0dWRlYCAqL1xuICBASW5wdXQoKSB0YXJnZXRMYXRpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxGbG93RGF0dW0+XG4gIC8qKiBGbG93IHNvdXJjZSBwb2ludCByYWRpdXMgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAzYCAqL1xuICBASW5wdXQoKSBzb3VyY2VQb2ludFJhZGl1cz86IE51bWVyaWNBY2Nlc3NvcjxGbG93RGF0dW0+XG4gIC8qKiBTb3VyY2UgcG9pbnQgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAnIzg4OTE5ZidgICovXG4gIEBJbnB1dCgpIHNvdXJjZVBvaW50Q29sb3I/OiBDb2xvckFjY2Vzc29yPEZsb3dEYXR1bT5cbiAgLyoqIEZsb3cgcGFydGljbGUgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAnIzk0OWRhZCdgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZUNvbG9yPzogQ29sb3JBY2Nlc3NvcjxGbG93RGF0dW0+XG4gIC8qKiBGbG93IHBhcnRpY2xlIHJhZGl1cyBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYDEuMWAgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlUmFkaXVzPzogTnVtZXJpY0FjY2Vzc29yPEZsb3dEYXR1bT5cbiAgLyoqIEZsb3cgcGFydGljbGUgc3BlZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUgaW4gYW5ndWxhciBkZWdyZWVzLiBEZWZhdWx0OiBgMC4wN2AgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlU3BlZWQ/OiBOdW1lcmljQWNjZXNzb3I8Rmxvd0RhdHVtPlxuICAvKiogRmxvdyBwYXJ0aWNsZSBkZW5zaXR5IGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlIG9uIHRoZSByYW5nZSBvZiBbMCwgMV0uIERlZmF1bHQ6IGAwLjZgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZURlbnNpdHk/OiBOdW1lcmljQWNjZXNzb3I8Rmxvd0RhdHVtPlxuXG4gIC8vIEV2ZW50c1xuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgY2xpY2sgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uU291cmNlUG9pbnRDbGljaz86ICgoZjogRmxvd0RhdHVtLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHVua25vd24pXG4gIC8qKiBGbG93IHNvdXJjZSBwb2ludCBtb3VzZSBvdmVyIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblNvdXJjZVBvaW50TW91c2VFbnRlcj86ICgoZjogRmxvd0RhdHVtLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHVua25vd24pXG4gIC8qKiBGbG93IHNvdXJjZSBwb2ludCBtb3VzZSBsZWF2ZSBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25Tb3VyY2VQb2ludE1vdXNlTGVhdmU/OiAoKGY6IEZsb3dEYXR1bSwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHVua25vd24pXG5cbiAgLyoqIERhdGEgKi9cbiAgQElucHV0KCkgZGF0YT86IHsgcG9pbnRzOiBQb2ludERhdHVtW107IGZsb3dzOiBGbG93RGF0dW1bXSB9XG5cbiAgY29tcG9uZW50OiBMZWFmbGV0Rmxvd01hcDxQb2ludERhdHVtLCBGbG93RGF0dW0+IHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldENvbmZpZygpXG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgTGVhZmxldEZsb3dNYXA8UG9pbnREYXR1bSwgRmxvd0RhdHVtPih0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCBjb25maWcsIHRoaXMuZGF0YSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgdGhpcy5jb21wb25lbnQ/LnNldERhdGEodGhpcy5kYXRhKVxuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudD8uc2V0Q29uZmlnKHRoaXMuZ2V0Q29uZmlnKCkpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogTGVhZmxldEZsb3dNYXBDb25maWdJbnRlcmZhY2U8UG9pbnREYXR1bSwgRmxvd0RhdHVtPiB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCBmbHlUb0R1cmF0aW9uLCBmaXRWaWV3UGFkZGluZywgem9vbUR1cmF0aW9uLCBpbml0aWFsQm91bmRzLCBmaXRCb3VuZHNPblVwZGF0ZSwgZml0Vmlld09uSW5pdCwgZml0Vmlld09uVXBkYXRlLCBhY2Nlc3NUb2tlbiwgc3R5bGUsIHN0eWxlRGFya1RoZW1lLCBhdHRyaWJ1dGlvbiwgb25NYXBJbml0aWFsaXplZCwgb25NYXBNb3ZlWm9vbSwgb25NYXBNb3ZlU3RhcnQsIG9uTWFwTW92ZUVuZCwgb25NYXBab29tU3RhcnQsIG9uTWFwWm9vbUVuZCwgb25NYXBDbGljaywgcG9pbnRMb25naXR1ZGUsIHBvaW50TGF0aXR1ZGUsIHBvaW50SWQsIHBvaW50U2hhcGUsIHBvaW50Q29sb3IsIHBvaW50UmFkaXVzLCBwb2ludExhYmVsLCBwb2ludEJvdHRvbUxhYmVsLCBwb2ludEN1cnNvciwgc2VsZWN0ZWRQb2ludElkLCBjbHVzdGVyQ29sb3IsIGNsdXN0ZXJSYWRpdXMsIGNsdXN0ZXJMYWJlbCwgY2x1c3RlckJvdHRvbUxhYmVsLCBjbHVzdGVyUmluZ1dpZHRoLCBjbHVzdGVyQmFja2dyb3VuZCwgY2x1c3RlckV4cGFuZE9uQ2xpY2ssIGNsdXN0ZXJpbmdEaXN0YW5jZSwgdmFsdWVzTWFwLCB0b3BvSlNPTkxheWVyLCB0b29sdGlwLCBzb3VyY2VMb25naXR1ZGUsIHNvdXJjZUxhdGl0dWRlLCB0YXJnZXRMb25naXR1ZGUsIHRhcmdldExhdGl0dWRlLCBzb3VyY2VQb2ludFJhZGl1cywgc291cmNlUG9pbnRDb2xvciwgZmxvd1BhcnRpY2xlQ29sb3IsIGZsb3dQYXJ0aWNsZVJhZGl1cywgZmxvd1BhcnRpY2xlU3BlZWQsIGZsb3dQYXJ0aWNsZURlbnNpdHksIG9uU291cmNlUG9pbnRDbGljaywgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXIsIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlIH0gPSB0aGlzXG4gICAgY29uc3QgY29uZmlnID0geyB3aWR0aCwgaGVpZ2h0LCBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCBmbHlUb0R1cmF0aW9uLCBmaXRWaWV3UGFkZGluZywgem9vbUR1cmF0aW9uLCBpbml0aWFsQm91bmRzLCBmaXRCb3VuZHNPblVwZGF0ZSwgZml0Vmlld09uSW5pdCwgZml0Vmlld09uVXBkYXRlLCBhY2Nlc3NUb2tlbiwgc3R5bGUsIHN0eWxlRGFya1RoZW1lLCBhdHRyaWJ1dGlvbiwgb25NYXBJbml0aWFsaXplZCwgb25NYXBNb3ZlWm9vbSwgb25NYXBNb3ZlU3RhcnQsIG9uTWFwTW92ZUVuZCwgb25NYXBab29tU3RhcnQsIG9uTWFwWm9vbUVuZCwgb25NYXBDbGljaywgcG9pbnRMb25naXR1ZGUsIHBvaW50TGF0aXR1ZGUsIHBvaW50SWQsIHBvaW50U2hhcGUsIHBvaW50Q29sb3IsIHBvaW50UmFkaXVzLCBwb2ludExhYmVsLCBwb2ludEJvdHRvbUxhYmVsLCBwb2ludEN1cnNvciwgc2VsZWN0ZWRQb2ludElkLCBjbHVzdGVyQ29sb3IsIGNsdXN0ZXJSYWRpdXMsIGNsdXN0ZXJMYWJlbCwgY2x1c3RlckJvdHRvbUxhYmVsLCBjbHVzdGVyUmluZ1dpZHRoLCBjbHVzdGVyQmFja2dyb3VuZCwgY2x1c3RlckV4cGFuZE9uQ2xpY2ssIGNsdXN0ZXJpbmdEaXN0YW5jZSwgdmFsdWVzTWFwLCB0b3BvSlNPTkxheWVyLCB0b29sdGlwLCBzb3VyY2VMb25naXR1ZGUsIHNvdXJjZUxhdGl0dWRlLCB0YXJnZXRMb25naXR1ZGUsIHRhcmdldExhdGl0dWRlLCBzb3VyY2VQb2ludFJhZGl1cywgc291cmNlUG9pbnRDb2xvciwgZmxvd1BhcnRpY2xlQ29sb3IsIGZsb3dQYXJ0aWNsZVJhZGl1cywgZmxvd1BhcnRpY2xlU3BlZWQsIGZsb3dQYXJ0aWNsZURlbnNpdHksIG9uU291cmNlUG9pbnRDbGljaywgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXIsIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgTGVhZmxldEZsb3dNYXBDb25maWdJbnRlcmZhY2U8UG9pbnREYXR1bSwgRmxvd0RhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { VisLeafletFlowMapComponent } from './leaflet-flow-map.component';
3
+ import * as i0 from "@angular/core";
4
+ export class VisLeafletFlowMapModule {
5
+ }
6
+ VisLeafletFlowMapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisLeafletFlowMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ VisLeafletFlowMapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisLeafletFlowMapModule, declarations: [VisLeafletFlowMapComponent], exports: [VisLeafletFlowMapComponent] });
8
+ VisLeafletFlowMapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisLeafletFlowMapModule, imports: [[]] });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: VisLeafletFlowMapModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [],
13
+ declarations: [VisLeafletFlowMapComponent],
14
+ exports: [VisLeafletFlowMapComponent],
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZmxldC1mbG93LW1hcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaHRtbC1jb21wb25lbnRzL2xlYWZsZXQtZmxvdy1tYXAvbGVhZmxldC1mbG93LW1hcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTs7QUFPekUsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQUhuQiwwQkFBMEIsYUFDL0IsMEJBQTBCO3FIQUV6Qix1QkFBdUIsWUFKekIsRUFBRTsyRkFJQSx1QkFBdUI7a0JBTG5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFZpc0xlYWZsZXRGbG93TWFwQ29tcG9uZW50IH0gZnJvbSAnLi9sZWFmbGV0LWZsb3ctbWFwLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW1Zpc0xlYWZsZXRGbG93TWFwQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1Zpc0xlYWZsZXRGbG93TWFwQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzTGVhZmxldEZsb3dNYXBNb2R1bGUge31cbiJdfQ==