@acorex/components 18.10.10 → 18.10.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. package/button/lib/button.component.d.ts +1 -1
  2. package/esm2022/button/lib/button.component.mjs +3 -3
  3. package/esm2022/color-box/lib/color-box.component.mjs +3 -3
  4. package/esm2022/conversation/lib/conversation-messages/conversation-message-file/conversation-message-file.component.mjs +1 -1
  5. package/esm2022/conversation/lib/conversation-messages/conversation-message-voice/conversation-message-voice.component.mjs +1 -1
  6. package/esm2022/image-editor/acorex-components-image-editor.mjs +5 -0
  7. package/esm2022/image-editor/index.mjs +8 -0
  8. package/esm2022/image-editor/lib/image-editor-container/image-editor-container.component.mjs +23 -0
  9. package/esm2022/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.mjs +69 -0
  10. package/esm2022/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.mjs +46 -0
  11. package/esm2022/image-editor/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.mjs +36 -0
  12. package/esm2022/image-editor/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.mjs +56 -0
  13. package/esm2022/image-editor/lib/image-editor-view/image-editor-view.component.mjs +304 -0
  14. package/esm2022/image-editor/lib/image-editor.module.mjs +69 -0
  15. package/esm2022/image-editor/lib/image-editor.service.mjs +22 -0
  16. package/esm2022/loading/lib/loading-spinner.component.mjs +7 -5
  17. package/esm2022/loading/lib/loading.component.mjs +2 -2
  18. package/esm2022/map/lib/map.component.mjs +2 -2
  19. package/esm2022/media-viewer/lib/media-viewer-container/media-viewer-container.component.mjs +3 -3
  20. package/fesm2022/acorex-components-button.mjs +2 -2
  21. package/fesm2022/acorex-components-button.mjs.map +1 -1
  22. package/fesm2022/acorex-components-color-box.mjs +2 -2
  23. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  24. package/fesm2022/acorex-components-conversation.mjs +2 -2
  25. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  26. package/fesm2022/acorex-components-image-editor.mjs +595 -0
  27. package/fesm2022/acorex-components-image-editor.mjs.map +1 -0
  28. package/fesm2022/acorex-components-loading.mjs +8 -6
  29. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  30. package/fesm2022/acorex-components-map.mjs +2 -2
  31. package/fesm2022/acorex-components-map.mjs.map +1 -1
  32. package/fesm2022/acorex-components-media-viewer.mjs +2 -2
  33. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  34. package/image-editor/README.md +3 -0
  35. package/image-editor/index.d.ts +7 -0
  36. package/image-editor/lib/image-editor-container/image-editor-container.component.d.ts +13 -0
  37. package/image-editor/lib/image-editor-toolbar/image-editor-toolbar.component.d.ts +27 -0
  38. package/image-editor/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.d.ts +27 -0
  39. package/image-editor/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.d.ts +18 -0
  40. package/image-editor/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.d.ts +34 -0
  41. package/image-editor/lib/image-editor-view/image-editor-view.component.d.ts +65 -0
  42. package/image-editor/lib/image-editor.module.d.ts +21 -0
  43. package/image-editor/lib/image-editor.service.d.ts +24 -0
  44. package/loading/lib/loading-spinner.component.d.ts +1 -1
  45. package/media-viewer/lib/media-viewer-container/media-viewer-container.component.d.ts +1 -1
  46. package/package.json +78 -72
@@ -0,0 +1,304 @@
1
+ import { afterNextRender, ChangeDetectionStrategy, Component, effect, HostBinding, inject, input, signal, viewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { AXImageEditorService } from '../image-editor.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@acorex/components/button";
5
+ export class AXImageEditorViewComponent {
6
+ /** @ignore */
7
+ constructor() {
8
+ /**
9
+ * its receive image src.
10
+ */
11
+ this.src = input('');
12
+ /** @ignore */
13
+ this.canvasElem = viewChild('canvasElem');
14
+ /** @ignore */
15
+ this.ctx = signal(null);
16
+ /** @ignore */
17
+ this.service = inject(AXImageEditorService);
18
+ /** @ignore */
19
+ this.cropImageData = signal(null);
20
+ /** @ignore */
21
+ this.isMouseDown = signal(false);
22
+ /** @ignore */
23
+ this.cropStartX = signal(0);
24
+ /** @ignore */
25
+ this.cropStartY = signal(0);
26
+ /** @ignore */
27
+ this.cropEndX = signal(0);
28
+ /** @ignore */
29
+ this.cropEndY = signal(0);
30
+ afterNextRender(() => {
31
+ this.service.initialImage().src = this.src();
32
+ this.service.initialImage().crossOrigin = 'anonymous';
33
+ this.EventListener = this.service.initialImage().addEventListener('load', this.imageLoaded.bind(this));
34
+ });
35
+ effect(() => {
36
+ if (!this.service.toggleClear().userInteract)
37
+ return;
38
+ if (this.service.toggleClear().state) {
39
+ this.imageLoaded();
40
+ }
41
+ }, { allowSignalWrites: true });
42
+ effect(() => {
43
+ if (!this.service.cropState().userInteract || !this.ctx())
44
+ return;
45
+ if (this.service.cropState().state) {
46
+ this.ctx().filter = 'brightness(40%)';
47
+ }
48
+ else {
49
+ this.ctx().filter = 'brightness(100%)';
50
+ }
51
+ this.ctx().drawImage(this.service.newImage(), 0, 0, this.service.newImage().width, this.service.newImage().height);
52
+ }, { allowSignalWrites: true });
53
+ effect(() => {
54
+ if (!this.service.rotate().userInteract || !this.ctx())
55
+ return;
56
+ this.rotateImage();
57
+ }, { allowSignalWrites: true });
58
+ }
59
+ /** @ignore */
60
+ ngOnDestroy() {
61
+ removeEventListener('load', this.EventListener);
62
+ }
63
+ /** @ignore */
64
+ imageLoaded() {
65
+ this.service.newImage.set(this.service.initialImage());
66
+ this.canvasElem().nativeElement.width = this.service.initialImage().width;
67
+ this.canvasElem().nativeElement.height = this.service.initialImage().height;
68
+ this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));
69
+ this.ctx().drawImage(this.service.initialImage(), 0, 0, this.service.initialImage().width, this.service.initialImage().height);
70
+ this.service.toggleClear.set({ userInteract: false, state: false });
71
+ this.service.isImageLoad.set(true);
72
+ this.ctx().lineJoin = 'round';
73
+ this.ctx().lineCap = this.service.lineCap();
74
+ this.ctx().strokeStyle = this.service.penColor();
75
+ this.ctx().lineWidth = this.service.lineWidth();
76
+ this.ctx().globalCompositeOperation = 'source-over';
77
+ this.ctx().globalAlpha = 1;
78
+ }
79
+ /** @ignore */
80
+ penConfigHandler(penType) {
81
+ switch (penType) {
82
+ case 'pen':
83
+ this.ctx().globalAlpha = 1;
84
+ break;
85
+ case 'highlight':
86
+ this.ctx().globalAlpha = 0.008;
87
+ break;
88
+ }
89
+ }
90
+ /** @ignore */
91
+ getBoundingCanvasHandler() {
92
+ return this.canvasElem().nativeElement.getBoundingClientRect();
93
+ }
94
+ /** @ignore */
95
+ mouseDownHandler(e) {
96
+ this.isMouseDown.set(true);
97
+ if (this.service.cropState().state) {
98
+ this.cropStartX.set(e.offsetX);
99
+ this.cropStartY.set(e.offsetY);
100
+ this.cropEndX.set(0);
101
+ }
102
+ else {
103
+ this.penConfigHandler(this.service.penType());
104
+ this.ctx().strokeStyle = this.service.penColor();
105
+ this.ctx().lineCap = this.service.lineCap();
106
+ this.ctx().lineWidth = this.service.lineWidth();
107
+ this.ctx().beginPath();
108
+ this.ctx().moveTo(e.offsetX, e.offsetY);
109
+ this.ctx().lineTo(e.offsetX, e.offsetY);
110
+ this.ctx().stroke();
111
+ }
112
+ }
113
+ /** @ignore */
114
+ mouseMoveHandler(e) {
115
+ if (!this.isMouseDown())
116
+ return;
117
+ if (this.service.cropState().state) {
118
+ this.ctx().globalCompositeOperation = 'screen';
119
+ this.cropEndX.set(e.offsetX);
120
+ this.cropEndY.set(e.offsetY);
121
+ this.drawSelection();
122
+ }
123
+ else {
124
+ this.ctx().lineTo(e.offsetX, e.offsetY);
125
+ this.ctx().stroke();
126
+ }
127
+ }
128
+ /** @ignore */
129
+ mouseUpHandler() {
130
+ this.isMouseDown.set(false);
131
+ if (this.service.cropState().state && this.cropEndX()) {
132
+ this.ctx().globalCompositeOperation = 'source-over';
133
+ this.cropImageFunction();
134
+ }
135
+ else {
136
+ this.ctx().closePath();
137
+ this.saveImageChange();
138
+ }
139
+ }
140
+ /** @ignore */
141
+ touchStartHandler(e) {
142
+ const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;
143
+ const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;
144
+ this.isMouseDown.set(true);
145
+ if (this.service.cropState().state) {
146
+ this.cropStartX.set(offsetX);
147
+ this.cropStartY.set(offsetY);
148
+ this.cropEndX.set(0);
149
+ }
150
+ else {
151
+ this.penConfigHandler(this.service.penType());
152
+ this.ctx().strokeStyle = this.service.penColor();
153
+ this.ctx().lineCap = this.service.lineCap();
154
+ this.ctx().lineWidth = this.service.lineWidth();
155
+ this.ctx().beginPath();
156
+ this.ctx().moveTo(offsetX, offsetY);
157
+ this.ctx().lineTo(offsetX, offsetY);
158
+ this.ctx().stroke();
159
+ }
160
+ }
161
+ /** @ignore */
162
+ touchMoveHandler(e) {
163
+ e.preventDefault(); // prevent page from scroll
164
+ if (!this.isMouseDown())
165
+ return;
166
+ const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;
167
+ const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;
168
+ if (this.service.cropState().state) {
169
+ this.ctx().globalCompositeOperation = 'screen';
170
+ this.cropEndX.set(offsetX);
171
+ this.cropEndY.set(offsetY);
172
+ this.drawSelection();
173
+ }
174
+ else {
175
+ this.ctx().lineTo(offsetX, offsetY);
176
+ this.ctx().stroke();
177
+ }
178
+ }
179
+ /** @ignore */
180
+ touchEndHandler() {
181
+ this.isMouseDown.set(false);
182
+ if (this.service.cropState().state && this.cropEndX()) {
183
+ this.ctx().globalCompositeOperation = 'source-over';
184
+ this.cropImageFunction();
185
+ }
186
+ else {
187
+ this.ctx().closePath();
188
+ this.saveImageChange();
189
+ }
190
+ }
191
+ /** @ignore */
192
+ drawSelection() {
193
+ const cropWidth = this.cropEndX() - this.cropStartX();
194
+ const cropHeight = this.cropEndY() - this.cropStartY();
195
+ this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);
196
+ this.ctx().drawImage(this.service.newImage(), 0, 0);
197
+ this.ctx().strokeStyle = 'white';
198
+ this.ctx().setLineDash([4, 10]);
199
+ this.ctx().lineWidth = 2;
200
+ this.ctx().strokeRect(this.cropStartX(), this.cropStartY(), cropWidth, cropHeight);
201
+ }
202
+ /** @ignore */
203
+ cropImageFunction() {
204
+ this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);
205
+ this.ctx().drawImage(this.service.newImage(), 0, 0);
206
+ let imageData;
207
+ if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {
208
+ imageData = this.ctx().getImageData(this.cropStartX(), this.cropEndY(), this.cropEndX() - this.cropStartX(), this.cropStartY() - this.cropEndY());
209
+ }
210
+ else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {
211
+ imageData = this.ctx().getImageData(this.cropEndX(), this.cropEndY(), this.cropStartX() - this.cropEndX(), this.cropStartY() - this.cropEndY());
212
+ }
213
+ else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {
214
+ imageData = this.ctx().getImageData(this.cropStartX(), this.cropStartY(), this.cropEndX() - this.cropStartX(), this.cropEndY() - this.cropStartY());
215
+ }
216
+ else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {
217
+ imageData = this.ctx().getImageData(this.cropEndX(), this.cropStartY(), this.cropStartX() - this.cropEndX(), this.cropEndY() - this.cropStartY());
218
+ }
219
+ const data = imageData.data;
220
+ const brightnessFactor = 2.4; // Increase brightness by 20%
221
+ for (let i = 0; i < data.length; i += 4) {
222
+ data[i] = data[i] * brightnessFactor; // Red
223
+ data[i + 1] = data[i + 1] * brightnessFactor; // Green
224
+ data[i + 2] = data[i + 2] * brightnessFactor; // Blue
225
+ }
226
+ if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {
227
+ this.ctx().putImageData(imageData, this.cropStartX(), this.cropEndY());
228
+ }
229
+ else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {
230
+ this.ctx().putImageData(imageData, this.cropEndX(), this.cropEndY());
231
+ }
232
+ else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {
233
+ this.ctx().putImageData(imageData, this.cropStartX(), this.cropStartY());
234
+ }
235
+ else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {
236
+ this.ctx().putImageData(imageData, this.cropEndX(), this.cropStartY());
237
+ }
238
+ this.cropImageData.set(imageData);
239
+ }
240
+ /** @ignore */
241
+ cropButtonHandler() {
242
+ let cropWidth;
243
+ let cropHeight;
244
+ this.service.rotate.update((prev) => {
245
+ return { userInteract: false, state: prev.state };
246
+ });
247
+ if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {
248
+ cropWidth = this.cropEndX() - this.cropStartX();
249
+ cropHeight = this.cropStartY() - this.cropEndY();
250
+ }
251
+ else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {
252
+ cropWidth = this.cropStartX() - this.cropEndX();
253
+ cropHeight = this.cropStartY() - this.cropEndY();
254
+ }
255
+ else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {
256
+ cropWidth = this.cropEndX() - this.cropStartX();
257
+ cropHeight = this.cropEndY() - this.cropStartY();
258
+ }
259
+ else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {
260
+ cropWidth = this.cropStartX() - this.cropEndX();
261
+ cropHeight = this.cropEndY() - this.cropStartY();
262
+ }
263
+ this.canvasElem().nativeElement.width = cropWidth;
264
+ this.canvasElem().nativeElement.height = cropHeight;
265
+ this.ctx().putImageData(this.cropImageData(), 0, 0);
266
+ this.saveImageChange();
267
+ this.cropImageData.set(null);
268
+ this.service.cropState.set({ userInteract: false, state: false });
269
+ }
270
+ /** @ignore */
271
+ rotateImage() {
272
+ this.ctx().save();
273
+ this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);
274
+ this.ctx().translate(this.service.newImage().width / 2, this.service.newImage().height / 2);
275
+ this.ctx().rotate((this.service.rotate().state * Math.PI) / 180);
276
+ this.ctx().drawImage(this.service.newImage(), -this.service.newImage().width / 2, -this.service.newImage().height / 2, this.service.newImage().width, this.service.newImage().height);
277
+ this.ctx().restore();
278
+ this.saveImageChange();
279
+ this.service.rotate.update((prev) => {
280
+ return { state: prev.state, userInteract: false };
281
+ });
282
+ }
283
+ /** @ignore */
284
+ saveImageChange() {
285
+ const newImage = new Image();
286
+ newImage.crossOrigin = 'anonymous';
287
+ newImage.src = this.canvasElem().nativeElement.toDataURL('image/jpeg', 1);
288
+ this.service.newImage.set(newImage);
289
+ }
290
+ /** @ignore */
291
+ get __hostStyle() {
292
+ return `width: ${this.service.initialImage().width}px; height: ${this.service.initialImage().height}px`;
293
+ }
294
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
295
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: AXImageEditorViewComponent, selector: "ax-image-editor-view", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__hostStyle" } }, viewQueries: [{ propertyName: "canvasElem", first: true, predicate: ["canvasElem"], descendants: true, isSignal: true }], ngImport: i0, template: "<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n", styles: ["ax-image-editor-view{position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff;width:100%}ax-image-editor-view .ax-canvas-element{cursor:crosshair}ax-image-editor-view .ax-crop-save{position:absolute;top:0;right:0;margin:1rem}\n"], dependencies: [{ kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
296
+ }
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorViewComponent, decorators: [{
298
+ type: Component,
299
+ args: [{ selector: 'ax-image-editor-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n", styles: ["ax-image-editor-view{position:relative;display:flex;justify-content:center;align-items:center;background-color:#fff;width:100%}ax-image-editor-view .ax-canvas-element{cursor:crosshair}ax-image-editor-view .ax-crop-save{position:absolute;top:0;right:0;margin:1rem}\n"] }]
300
+ }], ctorParameters: () => [], propDecorators: { __hostStyle: [{
301
+ type: HostBinding,
302
+ args: ['style']
303
+ }] } });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ltYWdlLWVkaXRvci9zcmMvbGliL2ltYWdlLWVkaXRvci12aWV3L2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbWFnZS1lZGl0b3Ivc3JjL2xpYi9pbWFnZS1lZGl0b3Itdmlldy9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUVOLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLDBCQUEwQjtJQTJCckMsY0FBYztJQUNkO1FBM0JBOztXQUVHO1FBQ0gsUUFBRyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN4QixjQUFjO1FBQ0osZUFBVSxHQUFHLFNBQVMsQ0FBZ0MsWUFBWSxDQUFDLENBQUM7UUFDOUUsY0FBYztRQUNKLFFBQUcsR0FBRyxNQUFNLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGNBQWM7UUFDSixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakQsY0FBYztRQUNKLGtCQUFhLEdBQUcsTUFBTSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBRWxELGNBQWM7UUFDSixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxjQUFjO1FBQ0osZUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFD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SSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDL0UsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN0RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsY0FBYztJQUNKLGlCQUFpQjtRQUN6QixJQUFJLFNBQWlCLENBQUM7UUFDdEIsSUFBSSxVQUFrQixDQUFDO1FBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQy9FLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hELFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25ELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hELFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25ELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hELFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25ELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RGLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hELFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBRXBELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsY0FBYztJQUNKLFdBQVc7UUFDbkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFDdkIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQ2xDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQy9CLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNKLGVBQWU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM3QixRQUFRLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUNuQyxRQUFRLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUNZLFdBQVc7UUFDckIsT0FBTyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBSyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUM7SUFDMUcsQ0FBQzs4R0FwV1UsMEJBQTBCO2tHQUExQiwwQkFBMEIsMldDdkJ2Qyx1Z0JBaUJBOzsyRkRNYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7d0RBb1d6QixXQUFXO3NCQUR0QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYSW1hZ2VFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vaW1hZ2UtZWRpdG9yLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1pbWFnZS1lZGl0b3ItdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1lZGl0b3Itdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWEltYWdlRWRpdG9yVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBpdHMgcmVjZWl2ZSBpbWFnZSBzcmMuXG4gICAqL1xuICBzcmMgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGNhbnZhc0VsZW0gPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD4+KCdjYW52YXNFbGVtJyk7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBjdHggPSBzaWduYWw8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPihudWxsKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhJbWFnZUVkaXRvclNlcnZpY2UpO1xuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY3JvcEltYWdlRGF0YSA9IHNpZ25hbDxJbWFnZURhdGE+KG51bGwpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBpc01vdXNlRG93biA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBjcm9wU3RhcnRYID0gc2lnbmFsKDApO1xuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY3JvcFN0YXJ0WSA9IHNpZ25hbCgwKTtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGNyb3BFbmRYID0gc2lnbmFsKDApO1xuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY3JvcEVuZFkgPSBzaWduYWwoMCk7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBFdmVudExpc3RlbmVyO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCkuc3JjID0gdGhpcy5zcmMoKTtcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xuICAgICAgdGhpcy5FdmVudExpc3RlbmVyID0gdGhpcy5zZXJ2aWNlLmluaXRpYWxJbWFnZSgpLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB0aGlzLmltYWdlTG9hZGVkLmJpbmQodGhpcykpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VydmljZS50b2dnbGVDbGVhcigpLnVzZXJJbnRlcmFjdCkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLnRvZ2dsZUNsZWFyKCkuc3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmltYWdlTG9hZGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkudXNlckludGVyYWN0IHx8ICF0aGlzLmN0eCgpKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmN0eCgpLmZpbHRlciA9ICdicmlnaHRuZXNzKDQwJSknO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3R4KCkuZmlsdGVyID0gJ2JyaWdodG5lc3MoMTAwJSknO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKFxuICAgICAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgMCxcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCxcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS5oZWlnaHQsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnJvdGF0ZSgpLnVzZXJJbnRlcmFjdCB8fCAhdGhpcy5jdHgoKSkgcmV0dXJuO1xuICAgICAgICB0aGlzLnJvdGF0ZUltYWdlKCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgdGhpcy5FdmVudExpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBpbWFnZUxvYWRlZCgpIHtcbiAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2Uuc2V0KHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKSk7XG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCA9IHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS53aWR0aDtcbiAgICB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCA9IHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5oZWlnaHQ7XG4gICAgdGhpcy5jdHguc2V0KHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Q29udGV4dCgnMmQnLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KSk7XG4gICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UoXG4gICAgICB0aGlzLnNlcnZpY2UuaW5pdGlhbEltYWdlKCksXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS53aWR0aCxcbiAgICAgIHRoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5oZWlnaHQsXG4gICAgKTtcbiAgICB0aGlzLnNlcnZpY2UudG9nZ2xlQ2xlYXIuc2V0KHsgdXNlckludGVyYWN0OiBmYWxzZSwgc3RhdGU6IGZhbHNlIH0pO1xuXG4gICAgdGhpcy5zZXJ2aWNlLmlzSW1hZ2VMb2FkLnNldCh0cnVlKTtcbiAgICB0aGlzLmN0eCgpLmxpbmVKb2luID0gJ3JvdW5kJztcbiAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xuICAgIHRoaXMuY3R4KCkuc3Ryb2tlU3R5bGUgPSB0aGlzLnNlcnZpY2UucGVuQ29sb3IoKTtcbiAgICB0aGlzLmN0eCgpLmxpbmVXaWR0aCA9IHRoaXMuc2VydmljZS5saW5lV2lkdGgoKTtcbiAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XG4gICAgdGhpcy5jdHgoKS5nbG9iYWxBbHBoYSA9IDE7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgcGVuQ29uZmlnSGFuZGxlcihwZW5UeXBlOiAncGVuJyB8ICdoaWdobGlnaHQnKSB7XG4gICAgc3dpdGNoIChwZW5UeXBlKSB7XG4gICAgICBjYXNlICdwZW4nOlxuICAgICAgICB0aGlzLmN0eCgpLmdsb2JhbEFscGhhID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdoaWdobGlnaHQnOlxuICAgICAgICB0aGlzLmN0eCgpLmdsb2JhbEFscGhhID0gMC4wMDg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBnZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgbW91c2VEb3duSGFuZGxlcihlOiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XG4gICAgICB0aGlzLmNyb3BTdGFydFguc2V0KGUub2Zmc2V0WCk7XG4gICAgICB0aGlzLmNyb3BTdGFydFkuc2V0KGUub2Zmc2V0WSk7XG4gICAgICB0aGlzLmNyb3BFbmRYLnNldCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wZW5Db25maWdIYW5kbGVyKHRoaXMuc2VydmljZS5wZW5UeXBlKCkpO1xuICAgICAgdGhpcy5jdHgoKS5zdHJva2VTdHlsZSA9IHRoaXMuc2VydmljZS5wZW5Db2xvcigpO1xuICAgICAgdGhpcy5jdHgoKS5saW5lQ2FwID0gdGhpcy5zZXJ2aWNlLmxpbmVDYXAoKTtcbiAgICAgIHRoaXMuY3R4KCkubGluZVdpZHRoID0gdGhpcy5zZXJ2aWNlLmxpbmVXaWR0aCgpO1xuXG4gICAgICB0aGlzLmN0eCgpLmJlZ2luUGF0aCgpO1xuICAgICAgdGhpcy5jdHgoKS5tb3ZlVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xuICAgICAgdGhpcy5jdHgoKS5saW5lVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgbW91c2VNb3ZlSGFuZGxlcihlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzY3JlZW4nO1xuICAgICAgdGhpcy5jcm9wRW5kWC5zZXQoZS5vZmZzZXRYKTtcbiAgICAgIHRoaXMuY3JvcEVuZFkuc2V0KGUub2Zmc2V0WSk7XG4gICAgICB0aGlzLmRyYXdTZWxlY3Rpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdHgoKS5saW5lVG8oZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgbW91c2VVcEhhbmRsZXIoKSB7XG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQoZmFsc2UpO1xuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUgJiYgdGhpcy5jcm9wRW5kWCgpKSB7XG4gICAgICB0aGlzLmN0eCgpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XG4gICAgICB0aGlzLmNyb3BJbWFnZUZ1bmN0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3R4KCkuY2xvc2VQYXRoKCk7XG4gICAgICB0aGlzLnNhdmVJbWFnZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCB0b3VjaFN0YXJ0SGFuZGxlcihlOiBUb3VjaEV2ZW50KSB7XG4gICAgY29uc3Qgb2Zmc2V0WCA9IGUudG91Y2hlc1swXS5jbGllbnRYIC0gdGhpcy5nZXRCb3VuZGluZ0NhbnZhc0hhbmRsZXIoKS5sZWZ0O1xuICAgIGNvbnN0IG9mZnNldFkgPSBlLnRvdWNoZXNbMF0uY2xpZW50WSAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkudG9wO1xuXG4gICAgdGhpcy5pc01vdXNlRG93bi5zZXQodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlKSB7XG4gICAgICB0aGlzLmNyb3BTdGFydFguc2V0KG9mZnNldFgpO1xuICAgICAgdGhpcy5jcm9wU3RhcnRZLnNldChvZmZzZXRZKTtcbiAgICAgIHRoaXMuY3JvcEVuZFguc2V0KDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbkNvbmZpZ0hhbmRsZXIodGhpcy5zZXJ2aWNlLnBlblR5cGUoKSk7XG4gICAgICB0aGlzLmN0eCgpLnN0cm9rZVN0eWxlID0gdGhpcy5zZXJ2aWNlLnBlbkNvbG9yKCk7XG4gICAgICB0aGlzLmN0eCgpLmxpbmVDYXAgPSB0aGlzLnNlcnZpY2UubGluZUNhcCgpO1xuICAgICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSB0aGlzLnNlcnZpY2UubGluZVdpZHRoKCk7XG5cbiAgICAgIHRoaXMuY3R4KCkuYmVnaW5QYXRoKCk7XG4gICAgICB0aGlzLmN0eCgpLm1vdmVUbyhvZmZzZXRYLCBvZmZzZXRZKTtcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKG9mZnNldFgsIG9mZnNldFkpO1xuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgdG91Y2hNb3ZlSGFuZGxlcihlOiBUb3VjaEV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHBhZ2UgZnJvbSBzY3JvbGxcbiAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24oKSkgcmV0dXJuO1xuICAgIGNvbnN0IG9mZnNldFggPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuZ2V0Qm91bmRpbmdDYW52YXNIYW5kbGVyKCkubGVmdDtcbiAgICBjb25zdCBvZmZzZXRZID0gZS50b3VjaGVzWzBdLmNsaWVudFkgLSB0aGlzLmdldEJvdW5kaW5nQ2FudmFzSGFuZGxlcigpLnRvcDtcblxuICAgIGlmICh0aGlzLnNlcnZpY2UuY3JvcFN0YXRlKCkuc3RhdGUpIHtcbiAgICAgIHRoaXMuY3R4KCkuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NjcmVlbic7XG4gICAgICB0aGlzLmNyb3BFbmRYLnNldChvZmZzZXRYKTtcbiAgICAgIHRoaXMuY3JvcEVuZFkuc2V0KG9mZnNldFkpO1xuICAgICAgdGhpcy5kcmF3U2VsZWN0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3R4KCkubGluZVRvKG9mZnNldFgsIG9mZnNldFkpO1xuICAgICAgdGhpcy5jdHgoKS5zdHJva2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgdG91Y2hFbmRIYW5kbGVyKCkge1xuICAgIHRoaXMuaXNNb3VzZURvd24uc2V0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNyb3BTdGF0ZSgpLnN0YXRlICYmIHRoaXMuY3JvcEVuZFgoKSkge1xuICAgICAgdGhpcy5jdHgoKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc291cmNlLW92ZXInO1xuICAgICAgdGhpcy5jcm9wSW1hZ2VGdW5jdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN0eCgpLmNsb3NlUGF0aCgpO1xuICAgICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgZHJhd1NlbGVjdGlvbigpIHtcbiAgICBjb25zdCBjcm9wV2lkdGggPSB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKTtcbiAgICBjb25zdCBjcm9wSGVpZ2h0ID0gdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCk7XG5cbiAgICB0aGlzLmN0eCgpLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCk7XG4gICAgdGhpcy5jdHgoKS5kcmF3SW1hZ2UodGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksIDAsIDApO1xuICAgIHRoaXMuY3R4KCkuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnO1xuICAgIHRoaXMuY3R4KCkuc2V0TGluZURhc2goWzQsIDEwXSk7XG4gICAgdGhpcy5jdHgoKS5saW5lV2lkdGggPSAyO1xuICAgIHRoaXMuY3R4KCkuc3Ryb2tlUmVjdCh0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wU3RhcnRZKCksIGNyb3BXaWR0aCwgY3JvcEhlaWdodCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY3JvcEltYWdlRnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdHgoKS5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC53aWR0aCwgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQpO1xuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLCAwLCAwKTtcblxuICAgIGxldCBpbWFnZURhdGE6IEltYWdlRGF0YTtcbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSxcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpLFxuICAgICAgICB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKSxcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRZKCkgLSB0aGlzLmNyb3BFbmRZKCksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxuICAgICAgICB0aGlzLmNyb3BFbmRYKCksXG4gICAgICAgIHRoaXMuY3JvcEVuZFkoKSxcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCkgLSB0aGlzLmNyb3BFbmRYKCksXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3JvcFN0YXJ0WCgpIDwgdGhpcy5jcm9wRW5kWCgpICYmIHRoaXMuY3JvcFN0YXJ0WSgpIDwgdGhpcy5jcm9wRW5kWSgpKSB7XG4gICAgICBpbWFnZURhdGEgPSB0aGlzLmN0eCgpLmdldEltYWdlRGF0YShcbiAgICAgICAgdGhpcy5jcm9wU3RhcnRYKCksXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpLFxuICAgICAgICB0aGlzLmNyb3BFbmRYKCkgLSB0aGlzLmNyb3BTdGFydFgoKSxcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGltYWdlRGF0YSA9IHRoaXMuY3R4KCkuZ2V0SW1hZ2VEYXRhKFxuICAgICAgICB0aGlzLmNyb3BFbmRYKCksXG4gICAgICAgIHRoaXMuY3JvcFN0YXJ0WSgpLFxuICAgICAgICB0aGlzLmNyb3BTdGFydFgoKSAtIHRoaXMuY3JvcEVuZFgoKSxcbiAgICAgICAgdGhpcy5jcm9wRW5kWSgpIC0gdGhpcy5jcm9wU3RhcnRZKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGE6IFVpbnQ4Q2xhbXBlZEFycmF5ID0gaW1hZ2VEYXRhLmRhdGE7XG5cbiAgICBjb25zdCBicmlnaHRuZXNzRmFjdG9yID0gMi40OyAvLyBJbmNyZWFzZSBicmlnaHRuZXNzIGJ5IDIwJVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgZGF0YVtpXSA9IGRhdGFbaV0gKiBicmlnaHRuZXNzRmFjdG9yOyAvLyBSZWRcbiAgICAgIGRhdGFbaSArIDFdID0gZGF0YVtpICsgMV0gKiBicmlnaHRuZXNzRmFjdG9yOyAvLyBHcmVlblxuICAgICAgZGF0YVtpICsgMl0gPSBkYXRhW2kgKyAyXSAqIGJyaWdodG5lc3NGYWN0b3I7IC8vIEJsdWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wU3RhcnRYKCksIHRoaXMuY3JvcEVuZFkoKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA+IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA+IHRoaXMuY3JvcEVuZFkoKSkge1xuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BFbmRYKCksIHRoaXMuY3JvcEVuZFkoKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3BTdGFydFgoKSA8IHRoaXMuY3JvcEVuZFgoKSAmJiB0aGlzLmNyb3BTdGFydFkoKSA8IHRoaXMuY3JvcEVuZFkoKSkge1xuICAgICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCB0aGlzLmNyb3BTdGFydFgoKSwgdGhpcy5jcm9wU3RhcnRZKCkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIHRoaXMuY3R4KCkucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgdGhpcy5jcm9wRW5kWCgpLCB0aGlzLmNyb3BTdGFydFkoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5jcm9wSW1hZ2VEYXRhLnNldChpbWFnZURhdGEpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGNyb3BCdXR0b25IYW5kbGVyKCkge1xuICAgIGxldCBjcm9wV2lkdGg6IG51bWJlcjtcbiAgICBsZXQgY3JvcEhlaWdodDogbnVtYmVyO1xuXG4gICAgdGhpcy5zZXJ2aWNlLnJvdGF0ZS51cGRhdGUoKHByZXYpID0+IHtcbiAgICAgIHJldHVybiB7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBwcmV2LnN0YXRlIH07XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpO1xuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPiB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpO1xuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcFN0YXJ0WSgpIC0gdGhpcy5jcm9wRW5kWSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPCB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcEVuZFgoKSAtIHRoaXMuY3JvcFN0YXJ0WCgpO1xuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jcm9wU3RhcnRYKCkgPiB0aGlzLmNyb3BFbmRYKCkgJiYgdGhpcy5jcm9wU3RhcnRZKCkgPCB0aGlzLmNyb3BFbmRZKCkpIHtcbiAgICAgIGNyb3BXaWR0aCA9IHRoaXMuY3JvcFN0YXJ0WCgpIC0gdGhpcy5jcm9wRW5kWCgpO1xuICAgICAgY3JvcEhlaWdodCA9IHRoaXMuY3JvcEVuZFkoKSAtIHRoaXMuY3JvcFN0YXJ0WSgpO1xuICAgIH1cblxuICAgIHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQud2lkdGggPSBjcm9wV2lkdGg7XG4gICAgdGhpcy5jYW52YXNFbGVtKCkubmF0aXZlRWxlbWVudC5oZWlnaHQgPSBjcm9wSGVpZ2h0O1xuXG4gICAgdGhpcy5jdHgoKS5wdXRJbWFnZURhdGEodGhpcy5jcm9wSW1hZ2VEYXRhKCksIDAsIDApO1xuICAgIHRoaXMuc2F2ZUltYWdlQ2hhbmdlKCk7XG4gICAgdGhpcy5jcm9wSW1hZ2VEYXRhLnNldChudWxsKTtcbiAgICB0aGlzLnNlcnZpY2UuY3JvcFN0YXRlLnNldCh7IHVzZXJJbnRlcmFjdDogZmFsc2UsIHN0YXRlOiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCByb3RhdGVJbWFnZSgpIHtcbiAgICB0aGlzLmN0eCgpLnNhdmUoKTtcbiAgICB0aGlzLmN0eCgpLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LndpZHRoLCB0aGlzLmNhbnZhc0VsZW0oKS5uYXRpdmVFbGVtZW50LmhlaWdodCk7XG4gICAgdGhpcy5jdHgoKS50cmFuc2xhdGUodGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkud2lkdGggLyAyLCB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS5oZWlnaHQgLyAyKTtcbiAgICB0aGlzLmN0eCgpLnJvdGF0ZSgodGhpcy5zZXJ2aWNlLnJvdGF0ZSgpLnN0YXRlICogTWF0aC5QSSkgLyAxODApO1xuICAgIHRoaXMuY3R4KCkuZHJhd0ltYWdlKFxuICAgICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCksXG4gICAgICAtdGhpcy5zZXJ2aWNlLm5ld0ltYWdlKCkud2lkdGggLyAyLFxuICAgICAgLXRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCAvIDIsXG4gICAgICB0aGlzLnNlcnZpY2UubmV3SW1hZ2UoKS53aWR0aCxcbiAgICAgIHRoaXMuc2VydmljZS5uZXdJbWFnZSgpLmhlaWdodCxcbiAgICApO1xuICAgIHRoaXMuY3R4KCkucmVzdG9yZSgpO1xuXG4gICAgdGhpcy5zYXZlSW1hZ2VDaGFuZ2UoKTtcbiAgICB0aGlzLnNlcnZpY2Uucm90YXRlLnVwZGF0ZSgocHJldikgPT4ge1xuICAgICAgcmV0dXJuIHsgc3RhdGU6IHByZXYuc3RhdGUsIHVzZXJJbnRlcmFjdDogZmFsc2UgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBzYXZlSW1hZ2VDaGFuZ2UoKSB7XG4gICAgY29uc3QgbmV3SW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBuZXdJbWFnZS5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xuICAgIG5ld0ltYWdlLnNyYyA9IHRoaXMuY2FudmFzRWxlbSgpLm5hdGl2ZUVsZW1lbnQudG9EYXRhVVJMKCdpbWFnZS9qcGVnJywgMSk7XG4gICAgdGhpcy5zZXJ2aWNlLm5ld0ltYWdlLnNldChuZXdJbWFnZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0U3R5bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHdpZHRoOiAke3RoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS53aWR0aH1weDsgaGVpZ2h0OiAke3RoaXMuc2VydmljZS5pbml0aWFsSW1hZ2UoKS5oZWlnaHR9cHhgO1xuICB9XG59XG4iLCI8Y2FudmFzXG4gIHRhYmluZGV4PVwiMVwiXG4gIChtb3VzZWRvd24pPVwibW91c2VEb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgKG1vdXNldXApPVwibW91c2VVcEhhbmRsZXIoKVwiXG4gIChtb3VzZW1vdmUpPVwibW91c2VNb3ZlSGFuZGxlcigkZXZlbnQpXCJcbiAgKHRvdWNoc3RhcnQpPVwidG91Y2hTdGFydEhhbmRsZXIoJGV2ZW50KVwiXG4gICh0b3VjaGVuZCk9XCJ0b3VjaEVuZEhhbmRsZXIoKVwiXG4gICh0b3VjaG1vdmUpPVwidG91Y2hNb3ZlSGFuZGxlcigkZXZlbnQpXCJcbiAgY2xhc3M9XCJheC1jYW52YXMtZWxlbWVudFwiXG4gICNjYW52YXNFbGVtXG4+PC9jYW52YXM+XG48YXgtYnV0dG9uXG4gIChjbGljayk9XCJjcm9wQnV0dG9uSGFuZGxlcigpXCJcbiAgW3N0eWxlXT1cInsgZGlzcGxheTogc2VydmljZS5jcm9wU3RhdGUoKS5zdGF0ZSA/ICdibG9jaycgOiAnbm9uZScgfVwiXG4gIGNsYXNzPVwiYXgtY3JvcC1zYXZlIGF4LXNtXCJcbiAgdGV4dD1cIkNyb3BcIlxuPjwvYXgtYnV0dG9uPlxuIl19
@@ -0,0 +1,69 @@
1
+ import { AXButtonModule } from '@acorex/components/button';
2
+ import { AXColorPaletteModule } from '@acorex/components/color-palette';
3
+ import { AXDecoratorModule } from '@acorex/components/decorators';
4
+ import { AXDialogModule } from '@acorex/components/dialog';
5
+ import { AXLoadingModule } from '@acorex/components/loading';
6
+ import { AXPopoverModule } from '@acorex/components/popover';
7
+ import { AXRangeSliderModule } from '@acorex/components/range-slider';
8
+ import { AXSelectBoxModule } from '@acorex/components/select-box';
9
+ import { NgModule } from '@angular/core';
10
+ import { FormsModule } from '@angular/forms';
11
+ import { AXImageEditorContainerComponent } from './image-editor-container/image-editor-container.component';
12
+ import { AXImageEditorToolbarComponent } from './image-editor-toolbar/image-editor-toolbar.component';
13
+ import { AXImageEditorColorPickerComponent } from './image-editor-tools/image-editor-color-picker/image-editor-color-picker.component';
14
+ import { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';
15
+ import { AXImageEditorPenModeChangerComponent } from './image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component';
16
+ import { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';
17
+ import * as i0 from "@angular/core";
18
+ const COMPONENT = [
19
+ AXImageEditorToolbarComponent,
20
+ AXImageEditorColorPickerComponent,
21
+ AXImageEditorPenModeChangerComponent,
22
+ AXImageEditorViewComponent,
23
+ AXImageEditorContainerComponent,
24
+ AXImageEditorCropComponent,
25
+ ];
26
+ const MODULES = [
27
+ AXButtonModule,
28
+ FormsModule,
29
+ AXRangeSliderModule,
30
+ AXSelectBoxModule,
31
+ AXColorPaletteModule,
32
+ AXPopoverModule,
33
+ AXDecoratorModule,
34
+ AXLoadingModule,
35
+ AXDialogModule,
36
+ ];
37
+ export class AXImageEditorModule {
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
39
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorModule, declarations: [AXImageEditorToolbarComponent,
40
+ AXImageEditorColorPickerComponent,
41
+ AXImageEditorPenModeChangerComponent,
42
+ AXImageEditorViewComponent,
43
+ AXImageEditorContainerComponent,
44
+ AXImageEditorCropComponent], imports: [AXButtonModule,
45
+ FormsModule,
46
+ AXRangeSliderModule,
47
+ AXSelectBoxModule,
48
+ AXColorPaletteModule,
49
+ AXPopoverModule,
50
+ AXDecoratorModule,
51
+ AXLoadingModule,
52
+ AXDialogModule], exports: [AXImageEditorToolbarComponent,
53
+ AXImageEditorColorPickerComponent,
54
+ AXImageEditorPenModeChangerComponent,
55
+ AXImageEditorViewComponent,
56
+ AXImageEditorContainerComponent,
57
+ AXImageEditorCropComponent] }); }
58
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorModule, imports: [MODULES] }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorModule, decorators: [{
61
+ type: NgModule,
62
+ args: [{
63
+ declarations: [...COMPONENT],
64
+ imports: [...MODULES],
65
+ exports: [...COMPONENT],
66
+ providers: [],
67
+ }]
68
+ }] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbWFnZS1lZGl0b3Ivc3JjL2xpYi9pbWFnZS1lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM1RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUN2SSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0RkFBNEYsQ0FBQztBQUNsSixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFN0YsTUFBTSxTQUFTLEdBQUc7SUFDaEIsNkJBQTZCO0lBQzdCLGlDQUFpQztJQUNqQyxvQ0FBb0M7SUFDcEMsMEJBQTBCO0lBQzFCLCtCQUErQjtJQUMvQiwwQkFBMEI7Q0FDM0IsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHO0lBQ2QsY0FBYztJQUNkLFdBQVc7SUFDWCxtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixjQUFjO0NBQ2YsQ0FBQztBQVFGLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGlCQTFCOUIsNkJBQTZCO1lBQzdCLGlDQUFpQztZQUNqQyxvQ0FBb0M7WUFDcEMsMEJBQTBCO1lBQzFCLCtCQUErQjtZQUMvQiwwQkFBMEIsYUFJMUIsY0FBYztZQUNkLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixjQUFjLGFBakJkLDZCQUE2QjtZQUM3QixpQ0FBaUM7WUFDakMsb0NBQW9DO1lBQ3BDLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0IsMEJBQTBCOytHQXFCZixtQkFBbUIsWUFKakIsT0FBTzs7MkZBSVQsbUJBQW1CO2tCQU4vQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ29sb3JQYWxldHRlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbG9yLXBhbGV0dGUnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERpYWxvZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhSYW5nZVNsaWRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9yYW5nZS1zbGlkZXInO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWEltYWdlRWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZS1lZGl0b3ItY29udGFpbmVyL2ltYWdlLWVkaXRvci1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYSW1hZ2VFZGl0b3JUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZS1lZGl0b3ItdG9vbGJhci9pbWFnZS1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhJbWFnZUVkaXRvckNvbG9yUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZS1lZGl0b3ItdG9vbHMvaW1hZ2UtZWRpdG9yLWNvbG9yLXBpY2tlci9pbWFnZS1lZGl0b3ItY29sb3ItcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEltYWdlRWRpdG9yQ3JvcENvbXBvbmVudCB9IGZyb20gJy4vaW1hZ2UtZWRpdG9yLXRvb2xzL2ltYWdlLWVkaXRvci1jcm9wL2ltYWdlLWVkaXRvci1jcm9wLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWEltYWdlRWRpdG9yUGVuTW9kZUNoYW5nZXJDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLWVkaXRvci10b29scy9pbWFnZS1lZGl0b3ItcGVuLW1vZGUtY2hhbmdlci9pbWFnZS1lZGl0b3ItcGVuLW1vZGUtY2hhbmdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhJbWFnZUVkaXRvclZpZXdDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLWVkaXRvci12aWV3L2ltYWdlLWVkaXRvci12aWV3LmNvbXBvbmVudCc7XG5cbmNvbnN0IENPTVBPTkVOVCA9IFtcbiAgQVhJbWFnZUVkaXRvclRvb2xiYXJDb21wb25lbnQsXG4gIEFYSW1hZ2VFZGl0b3JDb2xvclBpY2tlckNvbXBvbmVudCxcbiAgQVhJbWFnZUVkaXRvclBlbk1vZGVDaGFuZ2VyQ29tcG9uZW50LFxuICBBWEltYWdlRWRpdG9yVmlld0NvbXBvbmVudCxcbiAgQVhJbWFnZUVkaXRvckNvbnRhaW5lckNvbXBvbmVudCxcbiAgQVhJbWFnZUVkaXRvckNyb3BDb21wb25lbnQsXG5dO1xuXG5jb25zdCBNT0RVTEVTID0gW1xuICBBWEJ1dHRvbk1vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIEFYUmFuZ2VTbGlkZXJNb2R1bGUsXG4gIEFYU2VsZWN0Qm94TW9kdWxlLFxuICBBWENvbG9yUGFsZXR0ZU1vZHVsZSxcbiAgQVhQb3BvdmVyTW9kdWxlLFxuICBBWERlY29yYXRvck1vZHVsZSxcbiAgQVhMb2FkaW5nTW9kdWxlLFxuICBBWERpYWxvZ01vZHVsZSxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWy4uLkNPTVBPTkVOVF0sXG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYSW1hZ2VFZGl0b3JNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXImageEditorService {
4
+ constructor() {
5
+ this.penColor = signal('');
6
+ this.lineCap = signal('round');
7
+ this.lineWidth = signal(10);
8
+ this.penType = signal('pen');
9
+ this.toggleClear = signal({ state: false, userInteract: false });
10
+ this.cropState = signal({ state: false, userInteract: false });
11
+ this.rotate = signal({ state: 0, userInteract: false });
12
+ this.isImageLoad = signal(false);
13
+ this.newImage = signal(new Image());
14
+ this.initialImage = signal(new Image());
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorService }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageEditorService, decorators: [{
20
+ type: Injectable
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW1hZ2UtZWRpdG9yL3NyYy9saWIvaW1hZ2UtZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUEwQyxFQUFFLENBQUMsQ0FBQztRQUMvRCxZQUFPLEdBQUcsTUFBTSxDQUFnQixPQUFPLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQXNCLEtBQUssQ0FBQyxDQUFDO1FBQzdDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RCxjQUFTLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuRCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDcEM7OEdBWFksb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYSW1hZ2VFZGl0b3JTZXJ2aWNlIHtcbiAgcGVuQ29sb3IgPSBzaWduYWw8c3RyaW5nIHwgQ2FudmFzR3JhZGllbnQgfCBDYW52YXNQYXR0ZXJuPignJyk7XG4gIGxpbmVDYXAgPSBzaWduYWw8Q2FudmFzTGluZUNhcD4oJ3JvdW5kJyk7XG4gIGxpbmVXaWR0aCA9IHNpZ25hbDxudW1iZXI+KDEwKTtcbiAgcGVuVHlwZSA9IHNpZ25hbDwncGVuJyB8ICdoaWdobGlnaHQnPigncGVuJyk7XG4gIHRvZ2dsZUNsZWFyID0gc2lnbmFsKHsgc3RhdGU6IGZhbHNlLCB1c2VySW50ZXJhY3Q6IGZhbHNlIH0pO1xuICBjcm9wU3RhdGUgPSBzaWduYWwoeyBzdGF0ZTogZmFsc2UsIHVzZXJJbnRlcmFjdDogZmFsc2UgfSk7XG4gIHJvdGF0ZSA9IHNpZ25hbCh7IHN0YXRlOiAwLCB1c2VySW50ZXJhY3Q6IGZhbHNlIH0pO1xuICBpc0ltYWdlTG9hZCA9IHNpZ25hbChmYWxzZSk7XG4gIG5ld0ltYWdlID0gc2lnbmFsKG5ldyBJbWFnZSgpKTtcbiAgaW5pdGlhbEltYWdlID0gc2lnbmFsKG5ldyBJbWFnZSgpKTtcbn1cbiJdfQ==
@@ -23,7 +23,7 @@ export class AXLoadingSpinnerComponent {
23
23
  this.stroke = 3;
24
24
  }
25
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLoadingSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: { color: "color", size: "size", stroke: "stroke" }, ngImport: i0, template: `
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXLoadingSpinnerComponent, selector: "ax-loading-spinner", inputs: { text: "text", color: "color", size: "size", stroke: "stroke" }, ngImport: i0, template: `
27
27
  <span
28
28
  class="ax-loader ax-{{ color }}"
29
29
  [style.width.px]="size"
@@ -34,7 +34,7 @@ export class AXLoadingSpinnerComponent {
34
34
  @if (text) {
35
35
  <span> {{ text }} </span>
36
36
  }
37
- `, isInline: true, styles: ["ax-loading-spinner .ax-loader{animation:rotation .5s linear infinite;box-sizing:border-box;display:inline-block;height:3rem;width:3rem;border-radius:9999px;border-width:6px;border-style:solid;border-color:rgba(var(--ax-color-ghost-fore));border-bottom-color:transparent!important}ax-loading-spinner .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-500))}ax-loading-spinner .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-500))}ax-loading-spinner .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-500))}ax-loading-spinner .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-500))}ax-loading-spinner .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-500))}ax-loading-spinner .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-500))}ax-loading-spinner .ax-loader.ax-white{border-color:rgba(var(--ax-color-white))}ax-loading-spinner .ax-loader.ax-black{border-color:rgba(var(--ax-color-black))}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ax-dark .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-200))}.ax-dark .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-200))}.ax-dark .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-200))}.ax-dark .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-200))}.ax-dark .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-200))}.ax-dark .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-200))}\n"], encapsulation: i0.ViewEncapsulation.None }); }
37
+ `, isInline: true, styles: ["ax-loading-spinner .ax-loader{animation:rotation .5s linear infinite;margin-inline-end:.5rem;box-sizing:border-box;display:inline-block;height:3rem;width:3rem;border-radius:9999px;border-width:6px;border-style:solid;border-color:rgba(var(--ax-color-ghost-fore));border-bottom-color:transparent!important}ax-loading-spinner .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-500))}ax-loading-spinner .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-500))}ax-loading-spinner .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-500))}ax-loading-spinner .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-500))}ax-loading-spinner .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-500))}ax-loading-spinner .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-500))}ax-loading-spinner .ax-loader.ax-white{border-color:rgba(var(--ax-color-white))}ax-loading-spinner .ax-loader.ax-black{border-color:rgba(var(--ax-color-black))}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ax-dark .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-200))}.ax-dark .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-200))}.ax-dark .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-200))}.ax-dark .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-200))}.ax-dark .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-200))}.ax-dark .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-200))}\n"], encapsulation: i0.ViewEncapsulation.None }); }
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLoadingSpinnerComponent, decorators: [{
40
40
  type: Component,
@@ -49,12 +49,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
49
49
  @if (text) {
50
50
  <span> {{ text }} </span>
51
51
  }
52
- `, encapsulation: ViewEncapsulation.None, styles: ["ax-loading-spinner .ax-loader{animation:rotation .5s linear infinite;box-sizing:border-box;display:inline-block;height:3rem;width:3rem;border-radius:9999px;border-width:6px;border-style:solid;border-color:rgba(var(--ax-color-ghost-fore));border-bottom-color:transparent!important}ax-loading-spinner .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-500))}ax-loading-spinner .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-500))}ax-loading-spinner .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-500))}ax-loading-spinner .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-500))}ax-loading-spinner .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-500))}ax-loading-spinner .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-500))}ax-loading-spinner .ax-loader.ax-white{border-color:rgba(var(--ax-color-white))}ax-loading-spinner .ax-loader.ax-black{border-color:rgba(var(--ax-color-black))}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ax-dark .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-200))}.ax-dark .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-200))}.ax-dark .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-200))}.ax-dark .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-200))}.ax-dark .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-200))}.ax-dark .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-200))}\n"] }]
53
- }], propDecorators: { color: [{
52
+ `, encapsulation: ViewEncapsulation.None, styles: ["ax-loading-spinner .ax-loader{animation:rotation .5s linear infinite;margin-inline-end:.5rem;box-sizing:border-box;display:inline-block;height:3rem;width:3rem;border-radius:9999px;border-width:6px;border-style:solid;border-color:rgba(var(--ax-color-ghost-fore));border-bottom-color:transparent!important}ax-loading-spinner .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-500))}ax-loading-spinner .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-500))}ax-loading-spinner .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-500))}ax-loading-spinner .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-500))}ax-loading-spinner .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-500))}ax-loading-spinner .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-500))}ax-loading-spinner .ax-loader.ax-white{border-color:rgba(var(--ax-color-white))}ax-loading-spinner .ax-loader.ax-black{border-color:rgba(var(--ax-color-black))}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ax-dark .ax-loader.ax-primary{border-color:rgba(var(--ax-color-primary-200))}.ax-dark .ax-loader.ax-secondary{border-color:rgba(var(--ax-color-secondary-200))}.ax-dark .ax-loader.ax-success{border-color:rgba(var(--ax-color-success-200))}.ax-dark .ax-loader.ax-warning{border-color:rgba(var(--ax-color-warning-200))}.ax-dark .ax-loader.ax-danger{border-color:rgba(var(--ax-color-danger-200))}.ax-dark .ax-loader.ax-info{border-color:rgba(var(--ax-color-info-200))}\n"] }]
53
+ }], propDecorators: { text: [{
54
+ type: Input
55
+ }], color: [{
54
56
  type: Input
55
57
  }], size: [{
56
58
  type: Input
57
59
  }], stroke: [{
58
60
  type: Input
59
61
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb2FkaW5nL3NyYy9saWIvbG9hZGluZy1zcGlubmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFcEU7OztHQUdHO0FBa0JILE1BQU0sT0FBTyx5QkFBeUI7SUFqQnRDO1FBd0JFOzs7V0FHRztRQUVILFVBQUssR0FBOEIsT0FBTyxDQUFDO1FBRTNDOzs7V0FHRztRQUNNLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFbkI7OztXQUdHO1FBQ00sV0FBTSxHQUFHLENBQUMsQ0FBQztLQUNyQjs4R0F6QlkseUJBQXlCO2tHQUF6Qix5QkFBeUIsc0hBZjFCOzs7Ozs7Ozs7OztHQVdUOzsyRkFJVSx5QkFBeUI7a0JBakJyQyxTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7Ozs7Ozs7R0FXVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJOzhCQWNyQyxLQUFLO3NCQURKLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQU1HLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBsb2FkaW5nIHNwaW5uZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSByb3RhdGluZyBzcGlubmVyIGljb24uXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1sb2FkaW5nLXNwaW5uZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImF4LWxvYWRlciBheC17eyBjb2xvciB9fVwiXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInNpemVcIlxuICAgICAgW3N0eWxlLmJvcmRlci13aWR0aC5weF09XCJzdHJva2VcIlxuICAgICAgW3N0eWxlLmJvcmRlci1jb2xvcl09XCJjb2xvclwiXG4gICAgPjwvc3Bhbj5cbiAgICBAaWYgKHRleHQpIHtcbiAgICAgIDxzcGFuPiB7eyB0ZXh0IH19IDwvc3Bhbj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2xvYWRpbmctc3Bpbm5lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWExvYWRpbmdTcGlubmVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYWxvbmdzaWRlIHRoZSBzcGlubmVyLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0ZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBzcGlubmVyLiBDYW4gYmUgYSBwcmVkZWZpbmVkIHN0eWxlIGNvbG9yIG9yIGEgY3VzdG9tIGNvbG9yLlxuICAgKiBAZGVmYXVsdFZhbHVlICdnaG9zdCdcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbG9yOiBBWFN0eWxlQ29sb3JUeXBlIHwgc3RyaW5nID0gJ2dob3N0JztcblxuICAvKipcbiAgICogU2l6ZSBvZiB0aGUgc3Bpbm5lciwgaW4gcGl4ZWxzLiBUaGlzIGRldGVybWluZXMgYm90aCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgc3Bpbm5lci5cbiAgICogQGRlZmF1bHRWYWx1ZSAxNlxuICAgKi9cbiAgQElucHV0KCkgc2l6ZSA9IDE2O1xuXG4gIC8qKlxuICAgKiBUaGlja25lc3Mgb2YgdGhlIHNwaW5uZXIncyBib3JkZXIsIGluIHBpeGVscy4gVGhpcyBhZmZlY3RzIHRoZSB2aXN1YWwgd2VpZ2h0IG9mIHRoZSBzcGlubmVyJ3Mgb3V0bGluZS5cbiAgICogQGRlZmF1bHRWYWx1ZSAzXG4gICAqL1xuICBASW5wdXQoKSBzdHJva2UgPSAzO1xufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb2FkaW5nL3NyYy9saWIvbG9hZGluZy1zcGlubmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFcEU7OztHQUdHO0FBa0JILE1BQU0sT0FBTyx5QkFBeUI7SUFqQnRDO1FBeUJFOzs7V0FHRztRQUVILFVBQUssR0FBOEIsT0FBTyxDQUFDO1FBRTNDOzs7V0FHRztRQUNNLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFbkI7OztXQUdHO1FBQ00sV0FBTSxHQUFHLENBQUMsQ0FBQztLQUNyQjs4R0ExQlkseUJBQXlCO2tHQUF6Qix5QkFBeUIsb0lBZjFCOzs7Ozs7Ozs7OztHQVdUOzsyRkFJVSx5QkFBeUI7a0JBakJyQyxTQUFTOytCQUNFLG9CQUFvQixZQUNwQjs7Ozs7Ozs7Ozs7R0FXVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJOzhCQVFyQyxJQUFJO3NCQURILEtBQUs7Z0JBUU4sS0FBSztzQkFESixLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFNRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFN0eWxlQ29sb3JUeXBlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEEgbG9hZGluZyBzcGlubmVyIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGEgcm90YXRpbmcgc3Bpbm5lciBpY29uLlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtbG9hZGluZy1zcGlubmVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJheC1sb2FkZXIgYXgte3sgY29sb3IgfX1cIlxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpemVcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzaXplXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItd2lkdGgucHhdPVwic3Ryb2tlXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItY29sb3JdPVwiY29sb3JcIlxuICAgID48L3NwYW4+XG4gICAgQGlmICh0ZXh0KSB7XG4gICAgICA8c3Bhbj4ge3sgdGV4dCB9fSA8L3NwYW4+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkaW5nLXNwaW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhMb2FkaW5nU3Bpbm5lckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFsb25nc2lkZSB0aGUgc3Bpbm5lci5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQElucHV0KClcbiAgdGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb2xvciBvZiB0aGUgc3Bpbm5lci4gQ2FuIGJlIGEgcHJlZGVmaW5lZCBzdHlsZSBjb2xvciBvciBhIGN1c3RvbSBjb2xvci5cbiAgICogQGRlZmF1bHRWYWx1ZSAnZ2hvc3QnXG4gICAqL1xuICBASW5wdXQoKVxuICBjb2xvcjogQVhTdHlsZUNvbG9yVHlwZSB8IHN0cmluZyA9ICdnaG9zdCc7XG5cbiAgLyoqXG4gICAqIFNpemUgb2YgdGhlIHNwaW5uZXIsIGluIHBpeGVscy4gVGhpcyBkZXRlcm1pbmVzIGJvdGggdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNwaW5uZXIuXG4gICAqIEBkZWZhdWx0VmFsdWUgMTZcbiAgICovXG4gIEBJbnB1dCgpIHNpemUgPSAxNjtcblxuICAvKipcbiAgICogVGhpY2tuZXNzIG9mIHRoZSBzcGlubmVyJ3MgYm9yZGVyLCBpbiBwaXhlbHMuIFRoaXMgYWZmZWN0cyB0aGUgdmlzdWFsIHdlaWdodCBvZiB0aGUgc3Bpbm5lcidzIG91dGxpbmUuXG4gICAqIEBkZWZhdWx0VmFsdWUgM1xuICAgKi9cbiAgQElucHV0KCkgc3Ryb2tlID0gMztcbn1cbiJdfQ==
@@ -59,11 +59,11 @@ export class AXLoadingComponent extends MXBaseComponent {
59
59
  }
60
60
  }
61
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLoadingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXLoadingComponent, selector: "ax-loading", inputs: { visible: "visible", type: "type", context: "context" }, outputs: { visibleChange: "visibleChange" }, usesInheritance: true, ngImport: i0, template: ` <ng-template [cdkPortalOutlet]="_selectedPortal" (attached)="_handleAttched($event)"></ng-template> `, isInline: true, styles: ["ax-loading{position:relative}ax-loading:before,ax-loading:after{position:absolute;inset-inline-start:50%;top:50%;height:100%;width:100%;transform:translate(-50%);transform:translateY(-50%);transform:scale(0);border-radius:9999px;content:\"\"}ax-loading:before,ax-loading:after{background-color:transparent;animation:1s ease-in-out both ax-pulse;animation-duration:2s;animation-iteration-count:infinite}@keyframes ax-pulse{50%{transform:scale3d(1.05,1.05,1.05)}}ax-loading ax-loading-spinner{display:flex;gap:.75rem}.ax-loading-overlay-backdrop{background-color:rgba(var(--ax-color-surface));opacity:.85!important}.ax-loading-pane{height:100%!important;width:100%!important;bottom:0;inset-inline-end:0px;inset-inline-start:0px;top:0}.ax-loading-pane .cdk-dialog-container{display:flex!important;align-items:center;justify-content:center}.ax-loading-pane .cdk-dialog-container:focus,.ax-loading-pane .cdk-dialog-container:focus-visible,.ax-loading-pane .cdk-dialog-container:focus-within{outline:2px solid transparent;outline-offset:2px}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
62
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXLoadingComponent, selector: "ax-loading", inputs: { visible: "visible", type: "type", context: "context" }, outputs: { visibleChange: "visibleChange" }, usesInheritance: true, ngImport: i0, template: ` <ng-template [cdkPortalOutlet]="_selectedPortal" (attached)="_handleAttched($event)"></ng-template> `, isInline: true, styles: ["ax-loading{position:relative;padding-left:.25rem;padding-right:.25rem}ax-loading:before,ax-loading:after{position:absolute;inset-inline-start:50%;top:50%;height:100%;width:100%;transform:translate(-50%);transform:translateY(-50%);transform:scale(0);border-radius:9999px;content:\"\"}ax-loading:before,ax-loading:after{background-color:transparent;animation:1s ease-in-out both ax-pulse;animation-duration:2s;animation-iteration-count:infinite}@keyframes ax-pulse{50%{transform:scale3d(1.05,1.05,1.05)}}ax-loading ax-loading-spinner{display:flex;gap:.75rem}.ax-loading-overlay-backdrop{background-color:rgba(var(--ax-color-surface));opacity:.85!important}.ax-loading-pane{height:100%!important;width:100%!important;bottom:0;inset-inline-end:0px;inset-inline-start:0px;top:0}.ax-loading-pane .cdk-dialog-container{display:flex!important;align-items:center;justify-content:center}.ax-loading-pane .cdk-dialog-container:focus,.ax-loading-pane .cdk-dialog-container:focus-visible,.ax-loading-pane .cdk-dialog-container:focus-within{outline:2px solid transparent;outline-offset:2px}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
63
63
  }
64
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXLoadingComponent, decorators: [{
65
65
  type: Component,
66
- args: [{ selector: 'ax-loading', template: ` <ng-template [cdkPortalOutlet]="_selectedPortal" (attached)="_handleAttched($event)"></ng-template> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["ax-loading{position:relative}ax-loading:before,ax-loading:after{position:absolute;inset-inline-start:50%;top:50%;height:100%;width:100%;transform:translate(-50%);transform:translateY(-50%);transform:scale(0);border-radius:9999px;content:\"\"}ax-loading:before,ax-loading:after{background-color:transparent;animation:1s ease-in-out both ax-pulse;animation-duration:2s;animation-iteration-count:infinite}@keyframes ax-pulse{50%{transform:scale3d(1.05,1.05,1.05)}}ax-loading ax-loading-spinner{display:flex;gap:.75rem}.ax-loading-overlay-backdrop{background-color:rgba(var(--ax-color-surface));opacity:.85!important}.ax-loading-pane{height:100%!important;width:100%!important;bottom:0;inset-inline-end:0px;inset-inline-start:0px;top:0}.ax-loading-pane .cdk-dialog-container{display:flex!important;align-items:center;justify-content:center}.ax-loading-pane .cdk-dialog-container:focus,.ax-loading-pane .cdk-dialog-container:focus-visible,.ax-loading-pane .cdk-dialog-container:focus-within{outline:2px solid transparent;outline-offset:2px}\n"] }]
66
+ args: [{ selector: 'ax-loading', template: ` <ng-template [cdkPortalOutlet]="_selectedPortal" (attached)="_handleAttched($event)"></ng-template> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["ax-loading{position:relative;padding-left:.25rem;padding-right:.25rem}ax-loading:before,ax-loading:after{position:absolute;inset-inline-start:50%;top:50%;height:100%;width:100%;transform:translate(-50%);transform:translateY(-50%);transform:scale(0);border-radius:9999px;content:\"\"}ax-loading:before,ax-loading:after{background-color:transparent;animation:1s ease-in-out both ax-pulse;animation-duration:2s;animation-iteration-count:infinite}@keyframes ax-pulse{50%{transform:scale3d(1.05,1.05,1.05)}}ax-loading ax-loading-spinner{display:flex;gap:.75rem}.ax-loading-overlay-backdrop{background-color:rgba(var(--ax-color-surface));opacity:.85!important}.ax-loading-pane{height:100%!important;width:100%!important;bottom:0;inset-inline-end:0px;inset-inline-start:0px;top:0}.ax-loading-pane .cdk-dialog-container{display:flex!important;align-items:center;justify-content:center}.ax-loading-pane .cdk-dialog-container:focus,.ax-loading-pane .cdk-dialog-container:focus-visible,.ax-loading-pane .cdk-dialog-container:focus-within{outline:2px solid transparent;outline-offset:2px}\n"] }]
67
67
  }], propDecorators: { visibleChange: [{
68
68
  type: Output
69
69
  }], visible: [{