@provoly/dashboard 0.18.1 → 0.18.3

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 (81) hide show
  1. package/assets/svgs/clear_filter.svg +12 -0
  2. package/assets/svgs/refresh_data.svg +15 -0
  3. package/assets/svgs/refresh_filter.svg +13 -0
  4. package/components/color-picker/color-picker.component.d.ts +58 -0
  5. package/components/color-picker/color-picker.module.d.ts +9 -0
  6. package/components/color-picker/index.d.ts +5 -0
  7. package/components/color-picker/public-api.d.ts +2 -0
  8. package/components/scheme-picker/index.d.ts +5 -0
  9. package/components/scheme-picker/public-api.d.ts +3 -0
  10. package/components/scheme-picker/scheme-picker.component.d.ts +34 -0
  11. package/components/scheme-picker/scheme-picker.module.d.ts +11 -0
  12. package/components/scheme-picker/scheme.service.d.ts +12 -0
  13. package/dataset/components/dataset-card/dataset-card.component.d.ts +11 -3
  14. package/dataset/i18n/en.translations.d.ts +1 -0
  15. package/dataset/i18n/fr.translations.d.ts +1 -0
  16. package/dataset/style/_o-pry-dataset-card.scss +16 -1
  17. package/dataset/style/_o-pry-dataset.scss +18 -3
  18. package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +7 -5
  19. package/esm2022/components/color-picker/color-picker.component.mjs +314 -0
  20. package/esm2022/components/color-picker/color-picker.module.mjs +20 -0
  21. package/esm2022/components/color-picker/provoly-dashboard-components-color-picker.mjs +5 -0
  22. package/esm2022/components/color-picker/public-api.mjs +3 -0
  23. package/esm2022/components/scheme-picker/provoly-dashboard-components-scheme-picker.mjs +5 -0
  24. package/esm2022/components/scheme-picker/public-api.mjs +4 -0
  25. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +104 -0
  26. package/esm2022/components/scheme-picker/scheme-picker.module.mjs +22 -0
  27. package/esm2022/components/scheme-picker/scheme.service.mjs +47 -0
  28. package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +26 -9
  29. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
  30. package/esm2022/dataset/components/dataset.component.mjs +3 -3
  31. package/esm2022/dataset/i18n/en.translations.mjs +2 -1
  32. package/esm2022/dataset/i18n/fr.translations.mjs +2 -1
  33. package/esm2022/dataset/style/css.component.mjs +2 -2
  34. package/esm2022/lib/core/i18n/en.translations.mjs +6 -2
  35. package/esm2022/lib/core/i18n/fr.translations.mjs +6 -2
  36. package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +1 -1
  37. package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +2 -1
  38. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +4 -1
  39. package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
  40. package/esm2022/restitution/components/restitution/restitution.component.mjs +11 -20
  41. package/esm2022/restitution/model/restitution.model.mjs +1 -1
  42. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +149 -31
  43. package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +19 -2
  44. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +19 -2
  45. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +16 -5
  46. package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +3 -2
  47. package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +3 -2
  48. package/fesm2022/provoly-dashboard-admin.mjs +6 -4
  49. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  50. package/fesm2022/provoly-dashboard-components-color-picker.mjs +337 -0
  51. package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -0
  52. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +171 -0
  53. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -0
  54. package/fesm2022/provoly-dashboard-dataset.mjs +29 -14
  55. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  56. package/fesm2022/provoly-dashboard-restitution.mjs +10 -19
  57. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  58. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +198 -35
  59. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  60. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +4 -2
  61. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  62. package/fesm2022/provoly-dashboard.mjs +16 -2
  63. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  64. package/lib/core/i18n/en.translations.d.ts +4 -0
  65. package/lib/core/i18n/fr.translations.d.ts +4 -0
  66. package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +7 -0
  67. package/lib/core/model/widget-chart-manifest.interface.d.ts +1 -0
  68. package/lib/core/store/data-source/data-source.model.d.ts +0 -2
  69. package/package.json +47 -35
  70. package/restitution/components/restitution/restitution.component.d.ts +0 -2
  71. package/restitution/model/restitution.model.d.ts +1 -1
  72. package/styles/components/_a-color-picker.scss +62 -0
  73. package/styles/components/_m-color-scheme.scss +20 -0
  74. package/styles/main.scss +2 -0
  75. package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +4 -0
  76. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +18 -5
  77. package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +17 -0
  78. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +17 -0
  79. package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +3 -1
  80. package/widgets/widget-chart/i18n/en.translations.d.ts +1 -0
  81. package/widgets/widget-chart/i18n/fr.translations.d.ts +1 -0
@@ -0,0 +1,314 @@
1
+ import { Component, forwardRef, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ export class PryColorPickerComponent {
6
+ constructor(_cd) {
7
+ this._cd = _cd;
8
+ this.onChange = () => { };
9
+ this.onTouch = () => { };
10
+ this.color = '#000000';
11
+ this.barColor = '#0000ff';
12
+ this.disabled = false;
13
+ this.inhibate = true;
14
+ this.picking = false;
15
+ this.markerSelectorPosition = [0, 0];
16
+ this.markerBarPosition = 0;
17
+ this.innerRadius = 3;
18
+ this.outerRadius = 8;
19
+ }
20
+ registerOnChange(fn) {
21
+ this.onChange = fn;
22
+ }
23
+ registerOnTouched(fn) {
24
+ this.onTouch = fn;
25
+ }
26
+ // Define what should happen in this component, if something changes outside
27
+ writeValue(color) {
28
+ if (this.color !== color && !this.inhibate) {
29
+ this.color = color;
30
+ this.onChange(this.color);
31
+ this.onTouch();
32
+ this._cd.markForCheck();
33
+ this.inputColor(color);
34
+ }
35
+ }
36
+ setDisabledState(isDisabled) {
37
+ this.disabled = isDisabled;
38
+ this._cd.markForCheck();
39
+ }
40
+ ngAfterViewInit() {
41
+ this.inhibate = false;
42
+ this.selectorContext = this.selector.nativeElement.getContext('2d', { willReadFrequently: true });
43
+ this.barContext = this.bar.nativeElement.getContext('2d', { willReadFrequently: true });
44
+ }
45
+ togglePicker($event) {
46
+ this.picking = !this.disabled && !this.picking;
47
+ if (!this.picking && this.temporaryColor) {
48
+ this.writeValue(this.temporaryColor);
49
+ }
50
+ if (this.picking) {
51
+ this.redrawSelector();
52
+ this.redrawBar();
53
+ }
54
+ }
55
+ redrawSelector() {
56
+ this.selectorContext.clearRect(0, 0, this.selectorContext.canvas.width, this.selectorContext.canvas.height);
57
+ this.drawColorGradient(this.selectorContext, false, ['#ffffff', this.barColor]);
58
+ this.drawColorGradient(this.selectorContext, true, ['rgba(0,0,0,0)', '#000']);
59
+ this.drawSelectorMarker();
60
+ }
61
+ redrawBar() {
62
+ this.barContext.clearRect(0, 0, this.barContext.canvas.width, this.barContext.canvas.height);
63
+ this.drawColorGradient(this.barContext, true, [
64
+ '#FF0000',
65
+ '#ffff00',
66
+ '#00FF00',
67
+ '#00FFFF',
68
+ '#0000FF',
69
+ '#FF00FF',
70
+ '#FF0000'
71
+ ]);
72
+ this.drawBarMarker();
73
+ }
74
+ drawColorGradient(ctxt, vertical = true, colors) {
75
+ const gradientArgs = vertical
76
+ ? [0, 0, 0, ctxt.canvas.height]
77
+ : [0, 0, ctxt.canvas.width, 0];
78
+ let gradient = ctxt.createLinearGradient(...gradientArgs);
79
+ colors.forEach((color, idx) => {
80
+ gradient.addColorStop(idx / (colors.length - 1), color);
81
+ });
82
+ ctxt.fillStyle = gradient;
83
+ ctxt.fillRect(0, 0, ctxt.canvas.width, ctxt.canvas.height);
84
+ }
85
+ drawSelectorMarker() {
86
+ const gradient = this.selectorContext.createRadialGradient(this.markerSelectorPosition[0], this.markerSelectorPosition[1], this.innerRadius, this.markerSelectorPosition[0], this.markerSelectorPosition[1], this.outerRadius);
87
+ gradient.addColorStop(0, 'rgba(0,0,0,0)');
88
+ gradient.addColorStop(1, '#ffffff');
89
+ this.selectorContext.beginPath();
90
+ this.selectorContext.arc(this.markerSelectorPosition[0], this.markerSelectorPosition[1], this.outerRadius, 0, 2 * Math.PI);
91
+ this.selectorContext.fillStyle = gradient;
92
+ this.selectorContext.fill();
93
+ this.selectorContext.stroke();
94
+ }
95
+ drawBarMarker() {
96
+ this.barContext.strokeStyle = '2px solid black';
97
+ this.barContext.beginPath();
98
+ this.barContext.moveTo(0, this.markerBarPosition - this.innerRadius);
99
+ this.barContext.lineTo(this.barContext.canvas.width, this.markerBarPosition - this.innerRadius);
100
+ this.barContext.stroke();
101
+ this.barContext.beginPath();
102
+ this.barContext.moveTo(0, this.markerBarPosition + this.innerRadius);
103
+ this.barContext.lineTo(this.barContext.canvas.width, this.markerBarPosition + this.innerRadius);
104
+ this.barContext.stroke();
105
+ }
106
+ selectColor($event, temporary = false) {
107
+ // Read pixel Color
108
+ const pixelColor = this.rgbToHex(...this.selectorContext.getImageData($event.offsetX, $event.offsetY, 1, 1)['data']);
109
+ if (!temporary) {
110
+ this.writeValue(pixelColor);
111
+ }
112
+ else {
113
+ this.temporaryColor = pixelColor;
114
+ }
115
+ this.markerSelectorPosition = [$event.offsetX, $event.offsetY];
116
+ this.redrawSelector();
117
+ $event.stopPropagation();
118
+ }
119
+ selectColorFromBar($event) {
120
+ this.markerBarPosition = $event.offsetY;
121
+ this.barColor = this.rgbToHex(...this.barContext.getImageData(20, $event.offsetY, 1, 1)['data']);
122
+ this.redrawBar();
123
+ this.redrawSelector();
124
+ this.selectColor({
125
+ offsetX: this.markerSelectorPosition[0],
126
+ offsetY: this.markerSelectorPosition[1],
127
+ stopPropagation: () => $event.stopPropagation()
128
+ }, true);
129
+ $event.stopPropagation();
130
+ }
131
+ componentToHex(c) {
132
+ return c.toString(16).padStart(2, '0');
133
+ }
134
+ rgbToHex(r, g, b) {
135
+ return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);
136
+ }
137
+ clickInput($event) {
138
+ this.input.nativeElement.focus();
139
+ $event.stopPropagation();
140
+ }
141
+ inputColor($event) {
142
+ const possibleColor = !!$event ? ($event.indexOf('#') === -1 ? '#' + $event : $event) : '#FFFFFF';
143
+ if (/^#[0-9A-F]{6}$/i.test(possibleColor)) {
144
+ this.writeValue(possibleColor);
145
+ const rgba = this.strToRGBA(this.color);
146
+ const hsva = this.RGBAtoHSVA(rgba);
147
+ this.markerBarPosition = (this.barContext.canvas.height * hsva.h) / 360;
148
+ this.markerSelectorPosition = [
149
+ (this.selectorContext.canvas.width * hsva.s) / 100,
150
+ this.selectorContext.canvas.height * (1 - hsva.v / 100)
151
+ ];
152
+ this.barColor = this.hslToHex(hsva.h, 100, 50);
153
+ this.redrawBar();
154
+ this.redrawSelector();
155
+ }
156
+ }
157
+ strToRGBA(str) {
158
+ const regex = /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i;
159
+ let match, rgba;
160
+ // Default to black for invalid color strings
161
+ this.selectorContext.fillStyle = '#000';
162
+ // Use canvas to convert the string to a valid color string
163
+ this.selectorContext.fillStyle = str;
164
+ match = regex.exec(this.selectorContext.fillStyle);
165
+ if (match) {
166
+ rgba = {
167
+ // @ts-ignore
168
+ r: match[3] * 1,
169
+ // @ts-ignore
170
+ g: match[4] * 1,
171
+ // @ts-ignore
172
+ b: match[5] * 1,
173
+ // @ts-ignore
174
+ a: match[6] * 1
175
+ };
176
+ // Workaround to mitigate a Chromium bug where the alpha value is rounded incorrectly
177
+ rgba.a = +rgba.a.toFixed(2);
178
+ }
179
+ else {
180
+ match = this.selectorContext.fillStyle
181
+ .replace('#', '')
182
+ .match(/.{2}/g)
183
+ .map((h) => parseInt(h, 16));
184
+ rgba = {
185
+ r: match[0],
186
+ g: match[1],
187
+ b: match[2],
188
+ a: 1
189
+ };
190
+ }
191
+ return rgba;
192
+ }
193
+ RGBAtoHSVA(rgba) {
194
+ const red = rgba.r / 255;
195
+ const green = rgba.g / 255;
196
+ const blue = rgba.b / 255;
197
+ const xmax = Math.max(red, green, blue);
198
+ const xmin = Math.min(red, green, blue);
199
+ const chroma = xmax - xmin;
200
+ const value = xmax;
201
+ let hue = 0;
202
+ let saturation = 0;
203
+ if (chroma) {
204
+ if (xmax === red) {
205
+ hue = (green - blue) / chroma;
206
+ }
207
+ if (xmax === green) {
208
+ hue = 2 + (blue - red) / chroma;
209
+ }
210
+ if (xmax === blue) {
211
+ hue = 4 + (red - green) / chroma;
212
+ }
213
+ if (xmax) {
214
+ saturation = chroma / xmax;
215
+ }
216
+ }
217
+ hue = Math.floor(hue * 60);
218
+ return {
219
+ h: hue < 0 ? hue + 360 : hue,
220
+ s: Math.round(saturation * 100),
221
+ v: Math.round(value * 100),
222
+ a: rgba.a
223
+ };
224
+ }
225
+ hslToHex(h, s, l) {
226
+ s /= 100;
227
+ l /= 100;
228
+ let c = (1 - Math.abs(2 * l - 1)) * s, x = c * (1 - Math.abs(((h / 60) % 2) - 1)), m = l - c / 2, r = 0, g = 0, b = 0;
229
+ if (0 <= h && h < 60) {
230
+ r = c;
231
+ g = x;
232
+ b = 0;
233
+ }
234
+ else if (60 <= h && h < 120) {
235
+ r = x;
236
+ g = c;
237
+ b = 0;
238
+ }
239
+ else if (120 <= h && h < 180) {
240
+ r = 0;
241
+ g = c;
242
+ b = x;
243
+ }
244
+ else if (180 <= h && h < 240) {
245
+ r = 0;
246
+ g = x;
247
+ b = c;
248
+ }
249
+ else if (240 <= h && h < 300) {
250
+ r = x;
251
+ g = 0;
252
+ b = c;
253
+ }
254
+ else if (300 <= h && h < 360) {
255
+ r = c;
256
+ g = 0;
257
+ b = x;
258
+ }
259
+ // Having obtained RGB, convert channels to hex
260
+ // @ts-ignore
261
+ r = Math.round((r + m) * 255).toString(16);
262
+ // @ts-ignore
263
+ g = Math.round((g + m) * 255).toString(16);
264
+ // @ts-ignore
265
+ b = Math.round((b + m) * 255).toString(16);
266
+ // Prepend 0s, if necessary
267
+ // @ts-ignore
268
+ if (r.length == 1)
269
+ r = '0' + r;
270
+ // @ts-ignore
271
+ if (g.length == 1)
272
+ g = '0' + g;
273
+ // @ts-ignore
274
+ if (b.length == 1)
275
+ b = '0' + b;
276
+ return '#' + r + g + b;
277
+ }
278
+ mouseMove($event) {
279
+ if ($event.buttons > 0) {
280
+ this.selectColor($event, true);
281
+ }
282
+ }
283
+ mouseUp($event) {
284
+ this.selectColor($event, false);
285
+ }
286
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryColorPickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
287
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PryColorPickerComponent, selector: "pry-color-picker", providers: [
288
+ {
289
+ provide: NG_VALUE_ACCESSOR,
290
+ useExisting: forwardRef(() => PryColorPickerComponent),
291
+ multi: true
292
+ }
293
+ ], viewQueries: [{ propertyName: "selector", first: true, predicate: ["selector"], descendants: true }, { propertyName: "bar", first: true, predicate: ["bar"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\n class=\"a-color-picker\"\n (click)=\"togglePicker($event)\"\n [style.background-color]=\"temporaryColor ?? color\"\n [title]=\"color\"\n role=\"button\"\n>\n <div class=\"a-color-picker__modal\" [style.display]=\"picking ? 'flex' : 'none'\">\n <div class=\"a-color-picker__modal__backdrop\">\n <canvas\n #selector\n class=\"a-color-picker__modal__selector\"\n (mousemove)=\"mouseMove($event)\"\n (mouseup)=\"mouseUp($event)\"\n height=\"300\"\n width=\"300\"\n ></canvas>\n <canvas\n #bar\n class=\"a-color-picker__modal__bar\"\n (click)=\"selectColorFromBar($event)\"\n height=\"300\"\n width=\"40\"\n ></canvas>\n <div class=\"a-color-picker__modal__input\" (click)=\"clickInput($event)\">\n #<input [ngModel]=\"(color ?? '#').substring(1)\" (ngModelChange)=\"inputColor($event)\" #input />\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryColorPickerComponent, decorators: [{
296
+ type: Component,
297
+ args: [{ selector: 'pry-color-picker', providers: [
298
+ {
299
+ provide: NG_VALUE_ACCESSOR,
300
+ useExisting: forwardRef(() => PryColorPickerComponent),
301
+ multi: true
302
+ }
303
+ ], template: "<div\n class=\"a-color-picker\"\n (click)=\"togglePicker($event)\"\n [style.background-color]=\"temporaryColor ?? color\"\n [title]=\"color\"\n role=\"button\"\n>\n <div class=\"a-color-picker__modal\" [style.display]=\"picking ? 'flex' : 'none'\">\n <div class=\"a-color-picker__modal__backdrop\">\n <canvas\n #selector\n class=\"a-color-picker__modal__selector\"\n (mousemove)=\"mouseMove($event)\"\n (mouseup)=\"mouseUp($event)\"\n height=\"300\"\n width=\"300\"\n ></canvas>\n <canvas\n #bar\n class=\"a-color-picker__modal__bar\"\n (click)=\"selectColorFromBar($event)\"\n height=\"300\"\n width=\"40\"\n ></canvas>\n <div class=\"a-color-picker__modal__input\" (click)=\"clickInput($event)\">\n #<input [ngModel]=\"(color ?? '#').substring(1)\" (ngModelChange)=\"inputColor($event)\" #input />\n </div>\n </div>\n </div>\n</div>\n" }]
304
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selector: [{
305
+ type: ViewChild,
306
+ args: ['selector']
307
+ }], bar: [{
308
+ type: ViewChild,
309
+ args: ['bar']
310
+ }], input: [{
311
+ type: ViewChild,
312
+ args: ['input']
313
+ }] } });
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxTQUFTLEVBQWMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWN6RSxNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBCMUMsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ3hCLFVBQUssR0FBSSxTQUFTLENBQUM7UUFDbkIsYUFBUSxHQUFXLFNBQVMsQ0FBQztRQUM3QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQU16QiwyQkFBc0IsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBR3RCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO0lBRzZCLENBQUM7SUFFOUMsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lB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LEdBQUc7c0JBQXBCLFNBQVM7dUJBQUMsS0FBSztnQkFLSSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWNvbG9yLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJ5Q29sb3JQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJ5Q29sb3JQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG4gIGNvbG9yPyA9ICcjMDAwMDAwJztcbiAgYmFyQ29sb3I6IHN0cmluZyA9ICcjMDAwMGZmJztcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgaW5oaWJhdGUgPSB0cnVlO1xuICBwaWNraW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0b3InKSBzZWxlY3RvciE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBzZWxlY3RvckNvbnRleHQhOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIEBWaWV3Q2hpbGQoJ2JhcicpIGJhciE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBiYXJDb250ZXh0ITogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICBtYXJrZXJTZWxlY3RvclBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIDBdO1xuICBtYXJrZXJCYXJQb3NpdGlvbiA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIGlubmVyUmFkaXVzID0gMztcbiAgb3V0ZXJSYWRpdXMgPSA4O1xuICB0ZW1wb3JhcnlDb2xvcj86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHdoYXQgc2hvdWxkIGhhcHBlbiBpbiB0aGlzIGNvbXBvbmVudCwgaWYgc29tZXRoaW5nIGNoYW5nZXMgb3V0c2lkZVxuICB3cml0ZVZhbHVlKGNvbG9yOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jb2xvciAhPT0gY29sb3IgJiYgIXRoaXMuaW5oaWJhdGUpIHtcbiAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5jb2xvcik7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5pbnB1dENvbG9yKGNvbG9yKTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaGliYXRlID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RvckNvbnRleHQgPSB0aGlzLnNlbGVjdG9yLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KSE7XG4gICAgdGhpcy5iYXJDb250ZXh0ID0gdGhpcy5iYXIubmF0aXZlRWxlbWVudC5nZXRDb250ZXh0KCcyZCcsIHsgd2lsbFJlYWRGcmVxdWVudGx5OiB0cnVlIH0pITtcbiAgfVxuXG4gIHRvZ2dsZVBpY2tlcigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLnBpY2tpbmcgPSAhdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5waWNraW5nO1xuICAgIGlmICghdGhpcy5waWNraW5nICYmIHRoaXMudGVtcG9yYXJ5Q29sb3IpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnRlbXBvcmFyeUNvbG9yKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucGlja2luZykge1xuICAgICAgdGhpcy5yZWRyYXdTZWxlY3RvcigpO1xuICAgICAgdGhpcy5yZWRyYXdCYXIoKTtcbiAgICB9XG4gIH1cblxuICByZWRyYXdTZWxlY3RvcigpIHtcbiAgICB0aGlzLnNlbGVjdG9yQ29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5zZWxlY3RvckNvbnRleHQuY2FudmFzLndpZHRoLCB0aGlzLnNlbGVjdG9yQ29udGV4dC5jYW52YXMuaGVpZ2h0KTtcbiAgICB0aGlzLmRyYXdDb2xvckdyYWRpZW50KHRoaXMuc2VsZWN0b3JDb250ZXh0LCBmYWxzZSwgWycjZmZmZmZmJywgdGhpcy5iYXJDb2xvcl0pO1xuICAgIHRoaXMuZHJhd0NvbG9yR3JhZGllbnQodGhpcy5zZWxlY3RvckNvbnRleHQsIHRydWUsIFsncmdiYSgwLDAsMCwwKScsICcjMDAwJ10pO1xuICAgIHRoaXMuZHJhd1NlbGVjdG9yTWFya2VyKCk7XG4gIH1cblxuICByZWRyYXdCYXIoKSB7XG4gICAgdGhpcy5iYXJDb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmJhckNvbnRleHQuY2FudmFzLndpZHRoLCB0aGlzLmJhckNvbnRleHQuY2FudmFzLmhlaWdodCk7XG4gICAgdGhpcy5kcmF3Q29sb3JHcmFkaWVudCh0aGlzLmJhckNvbnRleHQsIHRydWUsIFtcbiAgICAgICcjRkYwMDAwJyxcbiAgICAgICcjZmZmZjAwJyxcbiAgICAgICcjMDBGRjAwJyxcbiAgICAgICcjMDBGRkZGJyxcbiAgICAgICcjMDAwMEZGJyxcbiAgICAgICcjRkYwMEZGJyxcbiAgICAgICcjRkYwMDAwJ1xuICAgIF0pO1xuICAgIHRoaXMuZHJhd0Jhck1hcmtlcigpO1xuICB9XG5cbiAgZHJhd0NvbG9yR3JhZGllbnQoY3R4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB2ZXJ0aWNhbCA9IHRydWUsIGNvbG9yczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBncmFkaWVudEFyZ3M6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gdmVydGljYWxcbiAgICAgID8gWzAsIDAsIDAsIGN0eHQuY2FudmFzLmhlaWdodF1cbiAgICAgIDogWzAsIDAsIGN0eHQuY2FudmFzLndpZHRoLCAwXTtcbiAgICBsZXQgZ3JhZGllbnQgPSBjdHh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KC4uLmdyYWRpZW50QXJncyk7XG4gICAgY29sb3JzLmZvckVhY2goKGNvbG9yLCBpZHgpID0+IHtcbiAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcChpZHggLyAoY29sb3JzLmxlbmd0aCAtIDEpLCBjb2xvcik7XG4gICAgfSk7XG4gICAgY3R4dC5maWxsU3R5bGUgPSBncmFkaWVudDtcbiAgICBjdHh0LmZpbGxSZWN0KDAsIDAsIGN0eHQuY2FudmFzLndpZHRoLCBjdHh0LmNhbnZhcy5oZWlnaHQpO1xuICB9XG5cbiAgZHJhd1NlbGVjdG9yTWFya2VyKCkge1xuICAgIGNvbnN0IGdyYWRpZW50ID0gdGhpcy5zZWxlY3RvckNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoXG4gICAgICB0aGlzLm1hcmtlclNlbGVjdG9yUG9zaXRpb25bMF0sXG4gICAgICB0aGlzLm1hcmtlclNlbGVjdG9yUG9zaXRpb25bMV0sXG4gICAgICB0aGlzLmlubmVyUmFkaXVzLFxuICAgICAgdGhpcy5tYXJrZXJTZWxlY3RvclBvc2l0aW9uWzBdLFxuICAgICAgdGhpcy5tYXJrZXJTZWxlY3RvclBvc2l0aW9uWzFdLFxuICAgICAgdGhpcy5vdXRlclJhZGl1c1xuICAgICk7XG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsICdyZ2JhKDAsMCwwLDApJyk7XG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsICcjZmZmZmZmJyk7XG5cbiAgICB0aGlzLnNlbGVjdG9yQ29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB0aGlzLnNlbGVjdG9yQ29udGV4dC5hcmMoXG4gICAgICB0aGlzLm1hcmtlclNlbGVjdG9yUG9zaXRpb25bMF0sXG4gICAgICB0aGlzLm1hcmtlclNlbGVjdG9yUG9zaXRpb25bMV0sXG4gICAgICB0aGlzLm91dGVyUmFkaXVzLFxuICAgICAgMCxcbiAgICAgIDIgKiBNYXRoLlBJXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdG9yQ29udGV4dC5maWxsU3R5bGUgPSBncmFkaWVudDtcbiAgICB0aGlzLnNlbGVjdG9yQ29udGV4dC5maWxsKCk7XG4gICAgdGhpcy5zZWxlY3RvckNvbnRleHQuc3Ryb2tlKCk7XG4gIH1cblxuICBkcmF3QmFyTWFya2VyKCkge1xuICAgIHRoaXMuYmFyQ29udGV4dC5zdHJva2VTdHlsZSA9ICcycHggc29saWQgYmxhY2snO1xuICAgIHRoaXMuYmFyQ29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB0aGlzLmJhckNvbnRleHQubW92ZVRvKDAsIHRoaXMubWFya2VyQmFyUG9zaXRpb24gLSB0aGlzLmlubmVyUmFkaXVzKTtcbiAgICB0aGlzLmJhckNvbnRleHQubGluZVRvKHRoaXMuYmFyQ29udGV4dC5jYW52YXMud2lkdGgsIHRoaXMubWFya2VyQmFyUG9zaXRpb24gLSB0aGlzLmlubmVyUmFkaXVzKTtcbiAgICB0aGlzLmJhckNvbnRleHQuc3Ryb2tlKCk7XG4gICAgdGhpcy5iYXJDb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuYmFyQ29udGV4dC5tb3ZlVG8oMCwgdGhpcy5tYXJrZXJCYXJQb3NpdGlvbiArIHRoaXMuaW5uZXJSYWRpdXMpO1xuICAgIHRoaXMuYmFyQ29udGV4dC5saW5lVG8odGhpcy5iYXJDb250ZXh0LmNhbnZhcy53aWR0aCwgdGhpcy5tYXJrZXJCYXJQb3NpdGlvbiArIHRoaXMuaW5uZXJSYWRpdXMpO1xuICAgIHRoaXMuYmFyQ29udGV4dC5zdHJva2UoKTtcbiAgfVxuXG4gIHNlbGVjdENvbG9yKCRldmVudDogTW91c2VFdmVudCwgdGVtcG9yYXJ5ID0gZmFsc2UpIHtcbiAgICAvLyBSZWFkIHBpeGVsIENvbG9yXG4gICAgY29uc3QgcGl4ZWxDb2xvciA9IHRoaXMucmdiVG9IZXgoXG4gICAgICAuLi4odGhpcy5zZWxlY3RvckNvbnRleHQuZ2V0SW1hZ2VEYXRhKCRldmVudC5vZmZzZXRYLCAkZXZlbnQub2Zmc2V0WSwgMSwgMSlbJ2RhdGEnXSBhcyB1bmtub3duIGFzIFtcbiAgICAgICAgbnVtYmVyLFxuICAgICAgICBudW1iZXIsXG4gICAgICAgIG51bWJlclxuICAgICAgXSlcbiAgICApO1xuICAgIGlmICghdGVtcG9yYXJ5KSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUocGl4ZWxDb2xvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcG9yYXJ5Q29sb3IgPSBwaXhlbENvbG9yO1xuICAgIH1cblxuICAgIHRoaXMubWFya2VyU2VsZWN0b3JQb3NpdGlvbiA9IFskZXZlbnQub2Zmc2V0WCwgJGV2ZW50Lm9mZnNldFldO1xuICAgIHRoaXMucmVkcmF3U2VsZWN0b3IoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzZWxlY3RDb2xvckZyb21CYXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5tYXJrZXJCYXJQb3NpdGlvbiA9ICRldmVudC5vZmZzZXRZO1xuICAgIHRoaXMuYmFyQ29sb3IgPSB0aGlzLnJnYlRvSGV4KFxuICAgICAgLi4uKHRoaXMuYmFyQ29udGV4dC5nZXRJbWFnZURhdGEoMjAsICRldmVudC5vZmZzZXRZLCAxLCAxKVsnZGF0YSddIGFzIHVua25vd24gYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXJdKVxuICAgICk7XG4gICAgdGhpcy5yZWRyYXdCYXIoKTtcbiAgICB0aGlzLnJlZHJhd1NlbGVjdG9yKCk7XG4gICAgdGhpcy5zZWxlY3RDb2xvcihcbiAgICAgIHtcbiAgICAgICAgb2Zmc2V0WDogdGhpcy5tYXJrZXJTZWxlY3RvclBvc2l0aW9uWzBdLFxuICAgICAgICBvZmZzZXRZOiB0aGlzLm1hcmtlclNlbGVjdG9yUG9zaXRpb25bMV0sXG4gICAgICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB9IGFzIHVua25vd24gYXMgTW91c2VFdmVudCxcbiAgICAgIHRydWVcbiAgICApO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGNvbXBvbmVudFRvSGV4KGM6IG51bWJlcikge1xuICAgIHJldHVybiBjLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpO1xuICB9XG5cbiAgcmdiVG9IZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikge1xuICAgIHJldHVybiAnIycgKyB0aGlzLmNvbXBvbmVudFRvSGV4KHIpICsgdGhpcy5jb21wb25lbnRUb0hleChnKSArIHRoaXMuY29tcG9uZW50VG9IZXgoYik7XG4gIH1cblxuICBjbGlja0lucHV0KCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGlucHV0Q29sb3IoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBwb3NzaWJsZUNvbG9yID0gISEkZXZlbnQgPyAoJGV2ZW50LmluZGV4T2YoJyMnKSA9PT0gLTEgPyAnIycgKyAkZXZlbnQgOiAkZXZlbnQpIDogJyNGRkZGRkYnO1xuICAgIGlmICgvXiNbMC05QS1GXXs2fSQvaS50ZXN0KHBvc3NpYmxlQ29sb3IpKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUocG9zc2libGVDb2xvcik7XG4gICAgICBjb25zdCByZ2JhID0gdGhpcy5zdHJUb1JHQkEodGhpcy5jb2xvciEpO1xuICAgICAgY29uc3QgaHN2YSA9IHRoaXMuUkdCQXRvSFNWQShyZ2JhKTtcbiAgICAgIHRoaXMubWFya2VyQmFyUG9zaXRpb24gPSAodGhpcy5iYXJDb250ZXh0LmNhbnZhcy5oZWlnaHQgKiBoc3ZhLmgpIC8gMzYwO1xuICAgICAgdGhpcy5tYXJrZXJTZWxlY3RvclBvc2l0aW9uID0gW1xuICAgICAgICAodGhpcy5zZWxlY3RvckNvbnRleHQuY2FudmFzLndpZHRoICogaHN2YS5zKSAvIDEwMCxcbiAgICAgICAgdGhpcy5zZWxlY3RvckNvbnRleHQuY2FudmFzLmhlaWdodCAqICgxIC0gaHN2YS52IC8gMTAwKVxuICAgICAgXTtcbiAgICAgIHRoaXMuYmFyQ29sb3IgPSB0aGlzLmhzbFRvSGV4KGhzdmEuaCwgMTAwLCA1MCk7XG4gICAgICB0aGlzLnJlZHJhd0JhcigpO1xuICAgICAgdGhpcy5yZWRyYXdTZWxlY3RvcigpO1xuICAgIH1cbiAgfVxuXG4gIHN0clRvUkdCQShzdHI6IHN0cmluZykge1xuICAgIGNvbnN0IHJlZ2V4ID0gL14oKHJnYmEpfHJnYilbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSo/KFtcXGQuXSt8JCkvaTtcbiAgICBsZXQgbWF0Y2gsIHJnYmE7XG5cbiAgICAvLyBEZWZhdWx0IHRvIGJsYWNrIGZvciBpbnZhbGlkIGNvbG9yIHN0cmluZ3NcbiAgICB0aGlzLnNlbGVjdG9yQ29udGV4dC5maWxsU3R5bGUgPSAnIzAwMCc7XG5cbiAgICAvLyBVc2UgY2FudmFzIHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0byBhIHZhbGlkIGNvbG9yIHN0cmluZ1xuICAgIHRoaXMuc2VsZWN0b3JDb250ZXh0LmZpbGxTdHlsZSA9IHN0cjtcbiAgICBtYXRjaCA9IHJlZ2V4LmV4ZWModGhpcy5zZWxlY3RvckNvbnRleHQuZmlsbFN0eWxlKTtcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgcmdiYSA9IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByOiBtYXRjaFszXSAqIDEsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZzogbWF0Y2hbNF0gKiAxLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGI6IG1hdGNoWzVdICogMSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBhOiBtYXRjaFs2XSAqIDFcbiAgICAgIH07XG5cbiAgICAgIC8vIFdvcmthcm91bmQgdG8gbWl0aWdhdGUgYSBDaHJvbWl1bSBidWcgd2hlcmUgdGhlIGFscGhhIHZhbHVlIGlzIHJvdW5kZWQgaW5jb3JyZWN0bHlcbiAgICAgIHJnYmEuYSA9ICtyZ2JhLmEudG9GaXhlZCgyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2ggPSB0aGlzLnNlbGVjdG9yQ29udGV4dC5maWxsU3R5bGVcbiAgICAgICAgLnJlcGxhY2UoJyMnLCAnJylcbiAgICAgICAgLm1hdGNoKC8uezJ9L2cpIVxuICAgICAgICAubWFwKChoKSA9PiBwYXJzZUludChoLCAxNikpO1xuICAgICAgcmdiYSA9IHtcbiAgICAgICAgcjogbWF0Y2hbMF0sXG4gICAgICAgIGc6IG1hdGNoWzFdLFxuICAgICAgICBiOiBtYXRjaFsyXSxcbiAgICAgICAgYTogMVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmdiYTtcbiAgfVxuXG4gIFJHQkF0b0hTVkEocmdiYTogYW55KSB7XG4gICAgY29uc3QgcmVkID0gcmdiYS5yIC8gMjU1O1xuICAgIGNvbnN0IGdyZWVuID0gcmdiYS5nIC8gMjU1O1xuICAgIGNvbnN0IGJsdWUgPSByZ2JhLmIgLyAyNTU7XG4gICAgY29uc3QgeG1heCA9IE1hdGgubWF4KHJlZCwgZ3JlZW4sIGJsdWUpO1xuICAgIGNvbnN0IHhtaW4gPSBNYXRoLm1pbihyZWQsIGdyZWVuLCBibHVlKTtcbiAgICBjb25zdCBjaHJvbWEgPSB4bWF4IC0geG1pbjtcbiAgICBjb25zdCB2YWx1ZSA9IHhtYXg7XG4gICAgbGV0IGh1ZSA9IDA7XG4gICAgbGV0IHNhdHVyYXRpb24gPSAwO1xuXG4gICAgaWYgKGNocm9tYSkge1xuICAgICAgaWYgKHhtYXggPT09IHJlZCkge1xuICAgICAgICBodWUgPSAoZ3JlZW4gLSBibHVlKSAvIGNocm9tYTtcbiAgICAgIH1cbiAgICAgIGlmICh4bWF4ID09PSBncmVlbikge1xuICAgICAgICBodWUgPSAyICsgKGJsdWUgLSByZWQpIC8gY2hyb21hO1xuICAgICAgfVxuICAgICAgaWYgKHhtYXggPT09IGJsdWUpIHtcbiAgICAgICAgaHVlID0gNCArIChyZWQgLSBncmVlbikgLyBjaHJvbWE7XG4gICAgICB9XG4gICAgICBpZiAoeG1heCkge1xuICAgICAgICBzYXR1cmF0aW9uID0gY2hyb21hIC8geG1heDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBodWUgPSBNYXRoLmZsb29yKGh1ZSAqIDYwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBoOiBodWUgPCAwID8gaHVlICsgMzYwIDogaHVlLFxuICAgICAgczogTWF0aC5yb3VuZChzYXR1cmF0aW9uICogMTAwKSxcbiAgICAgIHY6IE1hdGgucm91bmQodmFsdWUgKiAxMDApLFxuICAgICAgYTogcmdiYS5hXG4gICAgfTtcbiAgfVxuXG4gIGhzbFRvSGV4KGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpIHtcbiAgICBzIC89IDEwMDtcbiAgICBsIC89IDEwMDtcblxuICAgIGxldCBjID0gKDEgLSBNYXRoLmFicygyICogbCAtIDEpKSAqIHMsXG4gICAgICB4ID0gYyAqICgxIC0gTWF0aC5hYnMoKChoIC8gNjApICUgMikgLSAxKSksXG4gICAgICBtID0gbCAtIGMgLyAyLFxuICAgICAgciA9IDAsXG4gICAgICBnID0gMCxcbiAgICAgIGIgPSAwO1xuXG4gICAgaWYgKDAgPD0gaCAmJiBoIDwgNjApIHtcbiAgICAgIHIgPSBjO1xuICAgICAgZyA9IHg7XG4gICAgICBiID0gMDtcbiAgICB9IGVsc2UgaWYgKDYwIDw9IGggJiYgaCA8IDEyMCkge1xuICAgICAgciA9IHg7XG4gICAgICBnID0gYztcbiAgICAgIGIgPSAwO1xuICAgIH0gZWxzZSBpZiAoMTIwIDw9IGggJiYgaCA8IDE4MCkge1xuICAgICAgciA9IDA7XG4gICAgICBnID0gYztcbiAgICAgIGIgPSB4O1xuICAgIH0gZWxzZSBpZiAoMTgwIDw9IGggJiYgaCA8IDI0MCkge1xuICAgICAgciA9IDA7XG4gICAgICBnID0geDtcbiAgICAgIGIgPSBjO1xuICAgIH0gZWxzZSBpZiAoMjQwIDw9IGggJiYgaCA8IDMwMCkge1xuICAgICAgciA9IHg7XG4gICAgICBnID0gMDtcbiAgICAgIGIgPSBjO1xuICAgIH0gZWxzZSBpZiAoMzAwIDw9IGggJiYgaCA8IDM2MCkge1xuICAgICAgciA9IGM7XG4gICAgICBnID0gMDtcbiAgICAgIGIgPSB4O1xuICAgIH1cbiAgICAvLyBIYXZpbmcgb2J0YWluZWQgUkdCLCBjb252ZXJ0IGNoYW5uZWxzIHRvIGhleFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByID0gTWF0aC5yb3VuZCgociArIG0pICogMjU1KS50b1N0cmluZygxNik7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGcgPSBNYXRoLnJvdW5kKChnICsgbSkgKiAyNTUpLnRvU3RyaW5nKDE2KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgYiA9IE1hdGgucm91bmQoKGIgKyBtKSAqIDI1NSkudG9TdHJpbmcoMTYpO1xuXG4gICAgLy8gUHJlcGVuZCAwcywgaWYgbmVjZXNzYXJ5XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChyLmxlbmd0aCA9PSAxKSByID0gJzAnICsgcjtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKGcubGVuZ3RoID09IDEpIGcgPSAnMCcgKyBnO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoYi5sZW5ndGggPT0gMSkgYiA9ICcwJyArIGI7XG5cbiAgICByZXR1cm4gJyMnICsgciArIGcgKyBiO1xuICB9XG5cbiAgbW91c2VNb3ZlKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICgkZXZlbnQuYnV0dG9ucyA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0Q29sb3IoJGV2ZW50LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBtb3VzZVVwKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuc2VsZWN0Q29sb3IoJGV2ZW50LCBmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhLWNvbG9yLXBpY2tlclwiXG4gIChjbGljayk9XCJ0b2dnbGVQaWNrZXIoJGV2ZW50KVwiXG4gIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInRlbXBvcmFyeUNvbG9yID8/IGNvbG9yXCJcbiAgW3RpdGxlXT1cImNvbG9yXCJcbiAgcm9sZT1cImJ1dHRvblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhLWNvbG9yLXBpY2tlcl9fbW9kYWxcIiBbc3R5bGUuZGlzcGxheV09XCJwaWNraW5nID8gJ2ZsZXgnIDogJ25vbmUnXCI+XG4gICAgPGRpdiBjbGFzcz1cImEtY29sb3ItcGlja2VyX19tb2RhbF9fYmFja2Ryb3BcIj5cbiAgICAgIDxjYW52YXNcbiAgICAgICAgI3NlbGVjdG9yXG4gICAgICAgIGNsYXNzPVwiYS1jb2xvci1waWNrZXJfX21vZGFsX19zZWxlY3RvclwiXG4gICAgICAgIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlKCRldmVudClcIlxuICAgICAgICAobW91c2V1cCk9XCJtb3VzZVVwKCRldmVudClcIlxuICAgICAgICBoZWlnaHQ9XCIzMDBcIlxuICAgICAgICB3aWR0aD1cIjMwMFwiXG4gICAgICA+PC9jYW52YXM+XG4gICAgICA8Y2FudmFzXG4gICAgICAgICNiYXJcbiAgICAgICAgY2xhc3M9XCJhLWNvbG9yLXBpY2tlcl9fbW9kYWxfX2JhclwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RDb2xvckZyb21CYXIoJGV2ZW50KVwiXG4gICAgICAgIGhlaWdodD1cIjMwMFwiXG4gICAgICAgIHdpZHRoPVwiNDBcIlxuICAgICAgPjwvY2FudmFzPlxuICAgICAgPGRpdiBjbGFzcz1cImEtY29sb3ItcGlja2VyX19tb2RhbF9faW5wdXRcIiAoY2xpY2spPVwiY2xpY2tJbnB1dCgkZXZlbnQpXCI+XG4gICAgICAgICM8aW5wdXQgW25nTW9kZWxdPVwiKGNvbG9yID8/ICcjJykuc3Vic3RyaW5nKDEpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaW5wdXRDb2xvcigkZXZlbnQpXCIgI2lucHV0IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { PryColorPickerComponent } from './color-picker.component';
5
+ import * as i0 from "@angular/core";
6
+ const PRY_COLORPICKER_COMPONENTS = [PryColorPickerComponent];
7
+ export class PryColorPickerModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: PryColorPickerModule, declarations: [PryColorPickerComponent], imports: [CommonModule, FormsModule], exports: [PryColorPickerComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryColorPickerModule, imports: [CommonModule, FormsModule] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryColorPickerModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ imports: [CommonModule, FormsModule],
16
+ declarations: [...PRY_COLORPICKER_COMPONENTS],
17
+ exports: [...PRY_COLORPICKER_COMPONENTS]
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVuRSxNQUFNLDBCQUEwQixHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQU83RCxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFQRyx1QkFBdUIsYUFHL0MsWUFBWSxFQUFFLFdBQVcsYUFIRCx1QkFBdUI7K0dBTzlDLG9CQUFvQixZQUpyQixZQUFZLEVBQUUsV0FBVzs7MkZBSXhCLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO29CQUM3QyxPQUFPLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQcnlDb2xvclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5cbmNvbnN0IFBSWV9DT0xPUlBJQ0tFUl9DT01QT05FTlRTID0gW1ByeUNvbG9yUGlja2VyQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5QUllfQ09MT1JQSUNLRVJfQ09NUE9ORU5UU10sXG4gIGV4cG9ydHM6IFsuLi5QUllfQ09MT1JQSUNLRVJfQ09NUE9ORU5UU11cbn0pXG5leHBvcnQgY2xhc3MgUHJ5Q29sb3JQaWNrZXJNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdm9seS1kYXNoYm9hcmQtY29tcG9uZW50cy1jb2xvci1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9wcm92b2x5LWRhc2hib2FyZC1jb21wb25lbnRzLWNvbG9yLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './color-picker.module';
2
+ export * from './color-picker.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvY29sb3ItcGlja2VyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2xvci1waWNrZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdm9seS1kYXNoYm9hcmQtY29tcG9uZW50cy1zY2hlbWUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9zY2hlbWUtcGlja2VyL3Byb3ZvbHktZGFzaGJvYXJkLWNvbXBvbmVudHMtc2NoZW1lLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,4 @@
1
+ export * from './scheme-picker.module';
2
+ export * from './scheme-picker.component';
3
+ export * from './scheme.service';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvc2NoZW1lLXBpY2tlci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjaGVtZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1lLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,104 @@
1
+ import { Component, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { BehaviorSubject, map } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./scheme.service";
6
+ import * as i2 from "@provoly/dashboard";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "@provoly/dashboard/components/color-picker";
10
+ export class PrySchemePickerComponent {
11
+ constructor(_cd, schemeService, i18nService) {
12
+ this._cd = _cd;
13
+ this.schemeService = schemeService;
14
+ this.i18nService = i18nService;
15
+ this.onChange = () => { };
16
+ this.onTouch = () => { };
17
+ this.scheme$ = new BehaviorSubject('Provoly');
18
+ this.inhibate = true;
19
+ this.disabled = false;
20
+ this.schemes$ = this.schemeService.schemeIds$.pipe(map((schemes) => {
21
+ let customNumber = 1;
22
+ return schemes.map((scheme, idx) => ({
23
+ id: scheme,
24
+ label: scheme.indexOf('#') === 0 ? this.i18nService.instant('@pry.widget.custom', { id: customNumber++ }) : scheme
25
+ }));
26
+ }));
27
+ this.schemeColors$ = this.scheme$.pipe(map((scheme) => this.schemeService.getSchemeColors(scheme)));
28
+ }
29
+ registerOnChange(fn) {
30
+ this.onChange = fn;
31
+ }
32
+ registerOnTouched(fn) {
33
+ this.onTouch = fn;
34
+ }
35
+ // Define what should happen in this component, if something changes outside
36
+ writeValue(scheme) {
37
+ if (this.scheme$.getValue() !== scheme && !this.inhibate) {
38
+ this.scheme$.next(scheme);
39
+ this.onChange(this.scheme$.getValue());
40
+ this.onTouch();
41
+ this._cd.markForCheck();
42
+ this.schemeService.assertScheme(this.scheme$.getValue());
43
+ this.temporaryDisable();
44
+ }
45
+ }
46
+ setDisabledState(isDisabled) {
47
+ this.disabled = isDisabled;
48
+ this._cd.markForCheck();
49
+ }
50
+ temporaryDisable() {
51
+ this.inhibate = true;
52
+ setTimeout(() => {
53
+ this.inhibate = false;
54
+ }, 100);
55
+ }
56
+ ngAfterViewInit() {
57
+ this.temporaryDisable();
58
+ }
59
+ changeColorScheme($event) {
60
+ if ($event === '#') {
61
+ this.writeValue(this.schemeService.getSchemeColors(this.schemeService.getDefaultScheme()).join(','));
62
+ }
63
+ else {
64
+ this.writeValue($event);
65
+ }
66
+ }
67
+ modifyColorScheme($event, index) {
68
+ if (!this.inhibate) {
69
+ const newScheme = [...this.schemeService.getSchemeColors(this.scheme$.getValue())];
70
+ newScheme[index] = $event;
71
+ this.writeValue(newScheme.join(','));
72
+ }
73
+ }
74
+ addColorToScheme() {
75
+ this.writeValue(this.schemeService
76
+ .getSchemeColors(this.scheme$.getValue())
77
+ .concat('#' + this.schemeService.randomColor())
78
+ .join(','));
79
+ }
80
+ removeColorFromScheme(index) {
81
+ const newScheme = [...this.schemeService.getSchemeColors(this.scheme$.getValue())];
82
+ newScheme.splice(index, 1);
83
+ this.writeValue(newScheme.join(','));
84
+ }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySchemePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PrySchemeService }, { token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: PrySchemePickerComponent, selector: "pry-scheme-picker", providers: [
87
+ {
88
+ provide: NG_VALUE_ACCESSOR,
89
+ useExisting: forwardRef(() => PrySchemePickerComponent),
90
+ multi: true
91
+ }
92
+ ], ngImport: i0, template: "<div class=\"m-color-scheme\">\n <label class=\"a-label\" for=\"scheme\">{{ '@pry.widget.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"scheme$ | async\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes$ | async\"\n id=\"scheme\"\n bindValue=\"id\"\n bindLabel=\"label\"\n ></pry-select>\n</div>\n\n<div class=\"m-color-scheme__display\">\n <div class=\"m-color-scheme__display__item\" *ngFor=\"let colorScheme of schemeColors$ | async; let i = index\">\n <pry-color-picker [ngModel]=\"colorScheme\" (ngModelChange)=\"modifyColorScheme($event, i)\"></pry-color-picker>\n <button\n (click)=\"removeColorFromScheme(i)\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.widget.removeColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.removeColor' | i18n }}</span>\n <pry-icon iconSvg=\"trash\"></pry-icon>\n </button>\n </div>\n <button\n (click)=\"addColorToScheme()\"\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n title=\"{{ '@pry.widget.addColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.addColor' | i18n }}</span>\n <pry-icon iconSvg=\"add\"></pry-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i5.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
93
+ }
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySchemePickerComponent, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'pry-scheme-picker', providers: [
97
+ {
98
+ provide: NG_VALUE_ACCESSOR,
99
+ useExisting: forwardRef(() => PrySchemePickerComponent),
100
+ multi: true
101
+ }
102
+ ], template: "<div class=\"m-color-scheme\">\n <label class=\"a-label\" for=\"scheme\">{{ '@pry.widget.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"scheme$ | async\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes$ | async\"\n id=\"scheme\"\n bindValue=\"id\"\n bindLabel=\"label\"\n ></pry-select>\n</div>\n\n<div class=\"m-color-scheme__display\">\n <div class=\"m-color-scheme__display__item\" *ngFor=\"let colorScheme of schemeColors$ | async; let i = index\">\n <pry-color-picker [ngModel]=\"colorScheme\" (ngModelChange)=\"modifyColorScheme($event, i)\"></pry-color-picker>\n <button\n (click)=\"removeColorFromScheme(i)\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.widget.removeColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.removeColor' | i18n }}</span>\n <pry-icon iconSvg=\"trash\"></pry-icon>\n </button>\n </div>\n <button\n (click)=\"addColorToScheme()\"\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n title=\"{{ '@pry.widget.addColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.addColor' | i18n }}</span>\n <pry-icon iconSvg=\"add\"></pry-icon>\n </button>\n</div>\n" }]
103
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PrySchemeService }, { type: i2.PryI18nService }]; } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZXhELE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFDVSxHQUFzQixFQUN0QixhQUErQixFQUMvQixXQUEyQjtRQUYzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBWHJDLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFFakQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBUWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2QsSUFBSSxZQUFZLEdBQUcsQ0FB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aW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUHJ5U2NoZW1lU2VydmljZSB9IGZyb20gJy4vc2NoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNjaGVtZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2NoZW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG5cbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcnlTY2hlbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJ5U2NoZW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuICBzY2hlbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdQcm92b2x5Jyk7XG4gIHNjaGVtZXMkOiBPYnNlcnZhYmxlPHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10+O1xuICBpbmhpYmF0ZSA9IHRydWU7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIHNjaGVtZUNvbG9ycyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNjaGVtZVNlcnZpY2U6IFByeVNjaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zY2hlbWVzJCA9IHRoaXMuc2NoZW1lU2VydmljZS5zY2hlbWVJZHMkLnBpcGUoXG4gICAgICBtYXAoKHNjaGVtZXMpID0+IHtcbiAgICAgICAgbGV0IGN1c3RvbU51bWJlciA9IDE7XG4gICAgICAgIHJldHVybiBzY2hlbWVzLm1hcCgoc2NoZW1lLCBpZHgpID0+ICh7XG4gICAgICAgICAgaWQ6IHNjaGVtZSxcbiAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgIHNjaGVtZS5pbmRleE9mKCcjJykgPT09IDAgPyB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmN1c3RvbScsIHsgaWQ6IGN1c3RvbU51bWJlcisrIH0pIDogc2NoZW1lXG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNjaGVtZUNvbG9ycyQgPSB0aGlzLnNjaGVtZSQucGlwZShtYXAoKHNjaGVtZSkgPT4gdGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyhzY2hlbWUpKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICAvLyBEZWZpbmUgd2hhdCBzaG91bGQgaGFwcGVuIGluIHRoaXMgY29tcG9uZW50LCBpZiBzb21ldGhpbmcgY2hhbmdlcyBvdXRzaWRlXG4gIHdyaXRlVmFsdWUoc2NoZW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zY2hlbWUkLmdldFZhbHVlKCkgIT09IHNjaGVtZSAmJiAhdGhpcy5pbmhpYmF0ZSkge1xuICAgICAgdGhpcy5zY2hlbWUkLm5leHQoc2NoZW1lKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpO1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc2NoZW1lU2VydmljZS5hc3NlcnRTY2hlbWUodGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpO1xuICAgICAgdGhpcy50ZW1wb3JhcnlEaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB0ZW1wb3JhcnlEaXNhYmxlKCkge1xuICAgIHRoaXMuaW5oaWJhdGUgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbmhpYmF0ZSA9IGZhbHNlO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wb3JhcnlEaXNhYmxlKCk7XG4gIH1cblxuICBjaGFuZ2VDb2xvclNjaGVtZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICgkZXZlbnQgPT09ICcjJykge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuc2NoZW1lU2VydmljZS5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKSkuam9pbignLCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKCRldmVudCk7XG4gICAgfVxuICB9XG5cbiAgbW9kaWZ5Q29sb3JTY2hlbWUoJGV2ZW50OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuaW5oaWJhdGUpIHtcbiAgICAgIGNvbnN0IG5ld1NjaGVtZSA9IFsuLi50aGlzLnNjaGVtZVNlcnZpY2UuZ2V0U2NoZW1lQ29sb3JzKHRoaXMuc2NoZW1lJC5nZXRWYWx1ZSgpKV07XG4gICAgICBuZXdTY2hlbWVbaW5kZXhdID0gJGV2ZW50O1xuICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1NjaGVtZS5qb2luKCcsJykpO1xuICAgIH1cbiAgfVxuXG4gIGFkZENvbG9yVG9TY2hlbWUoKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKFxuICAgICAgdGhpcy5zY2hlbWVTZXJ2aWNlXG4gICAgICAgIC5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpXG4gICAgICAgIC5jb25jYXQoJyMnICsgdGhpcy5zY2hlbWVTZXJ2aWNlLnJhbmRvbUNvbG9yKCkpXG4gICAgICAgIC5qb2luKCcsJylcbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlQ29sb3JGcm9tU2NoZW1lKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBuZXdTY2hlbWUgPSBbLi4udGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyh0aGlzLnNjaGVtZSQuZ2V0VmFsdWUoKSldO1xuICAgIG5ld1NjaGVtZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdTY2hlbWUuam9pbignLCcpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm0tY29sb3Itc2NoZW1lXCI+XG4gIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJzY2hlbWVcIj57eyAnQHByeS53aWRnZXQuY29sb3JTY2hlbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gIDxwcnktc2VsZWN0XG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50KVwiXG4gICAgW25nTW9kZWxdPVwic2NoZW1lJCB8IGFzeW5jXCJcbiAgICBbaXRlbXNBc09wdGlvbl09XCJ0cnVlXCJcbiAgICBbaXRlbXNdPVwic2NoZW1lcyQgfCBhc3luY1wiXG4gICAgaWQ9XCJzY2hlbWVcIlxuICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gID48L3ByeS1zZWxlY3Q+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm0tY29sb3Itc2NoZW1lX19kaXNwbGF5XCI+XG4gIDxkaXYgY2xhc3M9XCJtLWNvbG9yLXNjaGVtZV9fZGlzcGxheV9faXRlbVwiICpuZ0Zvcj1cImxldCBjb2xvclNjaGVtZSBvZiBzY2hlbWVDb2xvcnMkIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8cHJ5LWNvbG9yLXBpY2tlciBbbmdNb2RlbF09XCJjb2xvclNjaGVtZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUNvbG9yU2NoZW1lKCRldmVudCwgaSlcIj48L3ByeS1jb2xvci1waWNrZXI+XG4gICAgPGJ1dHRvblxuICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbG9yRnJvbVNjaGVtZShpKVwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgdGl0bGU9XCJ7eyAnQHByeS53aWRnZXQucmVtb3ZlQ29sb3InIHwgaTE4biB9fVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LndpZGdldC5yZW1vdmVDb2xvcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJ0cmFzaFwiPjwvcHJ5LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cImFkZENvbG9yVG9TY2hlbWUoKVwiXG4gICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICB0aXRsZT1cInt7ICdAcHJ5LndpZGdldC5hZGRDb2xvcicgfCBpMThuIH19XCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS53aWRnZXQuYWRkQ29sb3InIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { PrySchemePickerComponent } from './scheme-picker.component';
5
+ import { PryI18nModule, PryIconModule, PrySelectModule } from '@provoly/dashboard';
6
+ import { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';
7
+ import * as i0 from "@angular/core";
8
+ const PRY_SCHEMEPICKER_COMPONENTS = [PrySchemePickerComponent];
9
+ export class PrySchemePickerModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySchemePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: PrySchemePickerModule, declarations: [PrySchemePickerComponent], imports: [CommonModule, FormsModule, PryI18nModule, PrySelectModule, PryColorPickerModule, PryIconModule], exports: [PrySchemePickerComponent] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySchemePickerModule, imports: [CommonModule, FormsModule, PryI18nModule, PrySelectModule, PryColorPickerModule, PryIconModule] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PrySchemePickerModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ imports: [CommonModule, FormsModule, PryI18nModule, PrySelectModule, PryColorPickerModule, PryIconModule],
18
+ declarations: [...PRY_SCHEMEPICKER_COMPONENTS],
19
+ exports: [...PRY_SCHEMEPICKER_COMPONENTS]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVsRixNQUFNLDJCQUEyQixHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQU8vRCxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixpQkFQRyx3QkFBd0IsYUFHakQsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsYUFIckUsd0JBQXdCOytHQU9oRCxxQkFBcUIsWUFKdEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGFBQWE7OzJGQUk3RixxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsQ0FBQztvQkFDekcsWUFBWSxFQUFFLENBQUMsR0FBRywyQkFBMkIsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLENBQUMsR0FBRywyQkFBMkIsQ0FBQztpQkFDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUHJ5U2NoZW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9zY2hlbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlJMThuTW9kdWxlLCBQcnlJY29uTW9kdWxlLCBQcnlTZWxlY3RNb2R1bGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgUHJ5Q29sb3JQaWNrZXJNb2R1bGUgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQvY29tcG9uZW50cy9jb2xvci1waWNrZXInO1xuXG5jb25zdCBQUllfU0NIRU1FUElDS0VSX0NPTVBPTkVOVFMgPSBbUHJ5U2NoZW1lUGlja2VyQ29tcG9uZW50XTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFByeUkxOG5Nb2R1bGUsIFByeVNlbGVjdE1vZHVsZSwgUHJ5Q29sb3JQaWNrZXJNb2R1bGUsIFByeUljb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5QUllfU0NIRU1FUElDS0VSX0NPTVBPTkVOVFNdLFxuICBleHBvcnRzOiBbLi4uUFJZX1NDSEVNRVBJQ0tFUl9DT01QT05FTlRTXVxufSlcbmV4cG9ydCBjbGFzcyBQcnlTY2hlbWVQaWNrZXJNb2R1bGUge31cbiJdfQ==