@alauda-fe/dynamic-plugin-shared 0.0.1-alpha.12 → 0.0.1-alpha.14

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 (60) hide show
  1. package/assets/images/overview-banner.svg +1 -0
  2. package/components/deleting-tag/component.d.ts +7 -0
  3. package/components/index.d.ts +6 -1
  4. package/components/list-display/component.d.ts +15 -0
  5. package/components/multi-search/action-input/component.d.ts +122 -0
  6. package/components/multi-search/form/component.d.ts +66 -0
  7. package/components/multi-search/index.d.ts +4 -0
  8. package/components/multi-search/multi-search-tags/component.d.ts +27 -0
  9. package/components/multi-search/types.d.ts +33 -0
  10. package/components/multi-search/utils.d.ts +24 -0
  11. package/components/mutable/directive.d.ts +83 -0
  12. package/components/mutable/element.d.ts +10 -0
  13. package/components/mutable/index.d.ts +8 -0
  14. package/components/mutable/mosaic/component.d.ts +32 -0
  15. package/components/mutable/mosaic/directive.d.ts +9 -0
  16. package/components/mutable/util.d.ts +18 -0
  17. package/components/overview-banner/component.d.ts +11 -0
  18. package/components/table/component.d.ts +88 -0
  19. package/components/table/constants.d.ts +3 -0
  20. package/components/table/helper.d.ts +2 -0
  21. package/components/table/helpers.directive.d.ts +21 -0
  22. package/components/table/index.d.ts +5 -0
  23. package/components/table/types.d.ts +71 -0
  24. package/components/table/util.service.d.ts +13 -0
  25. package/esm2022/components/deleting-tag/component.mjs +16 -0
  26. package/esm2022/components/index.mjs +7 -2
  27. package/esm2022/components/list-display/component.mjs +46 -0
  28. package/esm2022/components/multi-search/action-input/component.mjs +675 -0
  29. package/esm2022/components/multi-search/form/component.mjs +322 -0
  30. package/esm2022/components/multi-search/index.mjs +5 -0
  31. package/esm2022/components/multi-search/multi-search-tags/component.mjs +67 -0
  32. package/esm2022/components/multi-search/types.mjs +2 -0
  33. package/esm2022/components/multi-search/utils.mjs +46 -0
  34. package/esm2022/components/mutable/directive.mjs +351 -0
  35. package/esm2022/components/mutable/element.mjs +23 -0
  36. package/esm2022/components/mutable/index.mjs +15 -0
  37. package/esm2022/components/mutable/mosaic/component.mjs +76 -0
  38. package/esm2022/components/mutable/mosaic/directive.mjs +24 -0
  39. package/esm2022/components/mutable/util.mjs +16 -0
  40. package/esm2022/components/overview-banner/component.mjs +17 -0
  41. package/esm2022/components/table/component.mjs +321 -0
  42. package/esm2022/components/table/constants.mjs +4 -0
  43. package/esm2022/components/table/helper.mjs +16 -0
  44. package/esm2022/components/table/helpers.directive.mjs +19 -0
  45. package/esm2022/components/table/index.mjs +6 -0
  46. package/esm2022/components/table/types.mjs +2 -0
  47. package/esm2022/components/table/util.service.mjs +81 -0
  48. package/esm2022/form/base-form-container.mjs +2 -2
  49. package/esm2022/k8s-resource-list/footer/component.mjs +3 -3
  50. package/esm2022/page-deactivate/deactivate.directive.mjs +2 -2
  51. package/esm2022/page-deactivate/deactivate.guard.mjs +2 -3
  52. package/esm2022/page-deactivate/deactivate.service.mjs +4 -14
  53. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs +2228 -222
  54. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs.map +1 -1
  55. package/package.json +1 -1
  56. package/page-deactivate/deactivate.guard.d.ts +0 -2
  57. package/page-deactivate/deactivate.service.d.ts +1 -1
  58. package/styles/lib.scss +1 -1
  59. package/components/terminating-tag/component.d.ts +0 -7
  60. package/esm2022/components/terminating-tag/component.mjs +0 -16
@@ -0,0 +1,351 @@
1
+ import { ContentChildren, Directive, ElementRef, EventEmitter, HostListener, Input, Output, QueryList, } from '@angular/core';
2
+ import { coerceElement, isSelfOrParent } from './element';
3
+ import { isL, isT, toNumber, toPx } from './util';
4
+ import * as i0 from "@angular/core";
5
+ export const MUTABLE_BASIC_OPTIONS = {
6
+ directions: [true, true, true, true],
7
+ resizeThreshold: 5,
8
+ cursors: {
9
+ move: 'move',
10
+ },
11
+ };
12
+ export class DragHandleDirective {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DragHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: DragHandleDirective, isStandalone: true, selector: "[aclDragHandle]", ngImport: i0 }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DragHandleDirective, decorators: [{
17
+ type: Directive,
18
+ args: [{
19
+ selector: '[aclDragHandle]',
20
+ standalone: true,
21
+ }]
22
+ }] });
23
+ export class MutableDirective {
24
+ set aclMutableOptions(options) {
25
+ this.computedOptions = {
26
+ ...MUTABLE_BASIC_OPTIONS,
27
+ ...options,
28
+ };
29
+ }
30
+ onMouseDown(event) {
31
+ if (!isSelfOrParent(event.target, this.element)) {
32
+ return;
33
+ }
34
+ const cursor = this.getMutableCursor(event);
35
+ if (cursor === this.computedOptions.cursors.move) {
36
+ this.setDragging(cursor, event);
37
+ this.aclDragStarted.emit(this.element);
38
+ }
39
+ else if (this.aclResizable && cursor.includes('-resize')) {
40
+ this.setResizing(cursor, event);
41
+ this.aclResizeStarted.emit(this.element);
42
+ }
43
+ }
44
+ onMouseMove(event) {
45
+ this.element.style.cursor = this.getMutableCursor(event);
46
+ if (this.isDragging) {
47
+ this.dragElement(event);
48
+ this.aclOnDrag.emit(this.element);
49
+ }
50
+ if (this.isResizingX || this.isResizingY) {
51
+ this.isResizingX && this.resizeElementX(event);
52
+ this.isResizingY && this.resizeElementY(event);
53
+ this.aclOnResize.emit(this.element);
54
+ }
55
+ }
56
+ onMouseUp() {
57
+ if (this.aclDraggable) {
58
+ this.setDragging(null, null);
59
+ this.aclDragEnded.emit(this.element);
60
+ }
61
+ if (this.aclResizable) {
62
+ this.setResizing(null, null);
63
+ this.aclResizeEnded.emit(this.element);
64
+ }
65
+ }
66
+ constructor(el) {
67
+ this.el = el;
68
+ this.computedOptions = MUTABLE_BASIC_OPTIONS;
69
+ /** Allow for stretch shrink, the default is open */
70
+ this.aclResizable = true;
71
+ /** Allow for drag and drop, the default is open */
72
+ this.aclDraggable = true;
73
+ /** In the process of the resize triggering events */
74
+ this.aclOnResize = new EventEmitter();
75
+ /** Drag in the process of the triggering event */
76
+ this.aclOnDrag = new EventEmitter();
77
+ /** Emits when the user start drag. */
78
+ this.aclDragStarted = new EventEmitter();
79
+ this.aclDragEnded = new EventEmitter();
80
+ /** Emits when the user start resize */
81
+ this.aclResizeStarted = new EventEmitter();
82
+ this.aclResizeEnded = new EventEmitter();
83
+ this.isDragging = false;
84
+ this.isResizingX = false;
85
+ this.isResizingY = false;
86
+ this.mousePoint = { x: 0, y: 0 };
87
+ this.element = null;
88
+ this.resizeInitXRight = 0;
89
+ this.resizeInitYBottom = 0;
90
+ this.element = this.el.nativeElement;
91
+ this._initCursor = this.element.style.cursor;
92
+ }
93
+ /** Gets the boundary element, based on the `boundaryElement` value. */
94
+ getBoundaryElement() {
95
+ const boundary = this.aclDragBoundary;
96
+ if (!boundary) {
97
+ return this.element.parentNode;
98
+ }
99
+ if (typeof boundary === 'string') {
100
+ return this.element.closest(boundary);
101
+ }
102
+ return coerceElement(boundary);
103
+ }
104
+ ensureInParent(point) {
105
+ const parent = this.getBoundaryElement();
106
+ const elementRect = this.element.getBoundingClientRect();
107
+ if (point.x < 0) {
108
+ point.x = 0;
109
+ }
110
+ else if (point.x >= parent.clientWidth - elementRect.width) {
111
+ point.x = parent.clientWidth - elementRect.width;
112
+ }
113
+ if (point.y < 0) {
114
+ point.y = 0;
115
+ }
116
+ else if (point.y >= parent.clientHeight - elementRect.height) {
117
+ point.y = parent.clientHeight - elementRect.height;
118
+ }
119
+ return point;
120
+ }
121
+ dragElement(event) {
122
+ const parentElement = this.getBoundaryElement();
123
+ const parentRect = {
124
+ left: parentElement.getBoundingClientRect().left + parentElement.scrollLeft,
125
+ top: parentElement.getBoundingClientRect().top + parentElement.scrollTop,
126
+ };
127
+ const { x, y } = this.ensureInParent({
128
+ x: event.clientX -
129
+ parentRect.left -
130
+ this.parentBorder.left -
131
+ this.mousePoint.x,
132
+ y: event.clientY -
133
+ parentRect.top -
134
+ this.parentBorder.top -
135
+ this.mousePoint.y,
136
+ });
137
+ if (this.computedOptions.dragRange) {
138
+ const [t, r, b, l] = this.computedOptions.dragRange.map((key, index) => {
139
+ if (typeof key === 'number') {
140
+ return ((key / 100) *
141
+ ([1, 3].includes(index)
142
+ ? parentElement.clientWidth
143
+ : parentElement.clientHeight));
144
+ }
145
+ if (typeof key === 'string' && key.includes('px')) {
146
+ return toNumber(key);
147
+ }
148
+ console.error('DragRange in mutableOptions is invalid!');
149
+ return 0;
150
+ });
151
+ this.element.style.left = toPx(Math.max(l, Math.min(x, parentElement.clientWidth - r)));
152
+ this.element.style.top = toPx(Math.max(t, Math.min(y, parentElement.clientHeight - b)));
153
+ return;
154
+ }
155
+ this.element.style.left = toPx(x);
156
+ this.element.style.top = toPx(y);
157
+ }
158
+ initDragging(event) {
159
+ const rect = this.element.getBoundingClientRect();
160
+ this.mousePoint.x = event.clientX - rect.left;
161
+ this.mousePoint.y = event.clientY - rect.top;
162
+ const { borderLeft, borderTop } = getComputedStyle(this.getBoundaryElement());
163
+ this.parentBorder = {
164
+ left: toNumber(borderLeft),
165
+ top: toNumber(borderTop),
166
+ };
167
+ }
168
+ setDragging(cursor, event) {
169
+ this.isDragging = cursor === this.computedOptions.cursors.move;
170
+ if (this.isDragging) {
171
+ this.initDragging(event);
172
+ }
173
+ }
174
+ resizeElementX(event) {
175
+ if (this.isResizeOutOfBoundary(event, 'horizontal')) {
176
+ return;
177
+ }
178
+ const elementRect = this.element.getBoundingClientRect();
179
+ let width;
180
+ const { minWidth, maxWidth, left } = getComputedStyle(this.element);
181
+ const computedMinWidth = Math.max(toNumber(minWidth), this.elementBorder.left + this.elementBorder.right);
182
+ if (isL(this.resizeCursor)) {
183
+ const targetLeft = event.clientX - this.mousePoint.x;
184
+ const computedWidth = this.resizeInitXRight - targetLeft;
185
+ width = Math.max(toNumber(maxWidth)
186
+ ? Math.min(computedWidth, toNumber(maxWidth))
187
+ : computedWidth, computedMinWidth);
188
+ this.element.style.left = toPx(toNumber(left) + elementRect.width - width);
189
+ }
190
+ else {
191
+ const targetRight = event.clientX + this.mousePoint.x;
192
+ const computedWidth = targetRight - elementRect.left;
193
+ width = Math.max(toNumber(maxWidth)
194
+ ? Math.min(computedWidth, toNumber(maxWidth))
195
+ : computedWidth, computedMinWidth);
196
+ }
197
+ if (width < this.elementBorder.left + this.elementBorder.right) {
198
+ return;
199
+ }
200
+ this.element.style.width = toPx(width);
201
+ }
202
+ resizeElementY(event) {
203
+ if (this.isResizeOutOfBoundary(event, 'vertical')) {
204
+ return;
205
+ }
206
+ const elementRect = this.element.getBoundingClientRect();
207
+ const { minHeight, maxHeight, top } = getComputedStyle(this.element);
208
+ const computedMinHeight = Math.max(toNumber(minHeight), this.elementBorder.top + this.elementBorder.bottom);
209
+ let height;
210
+ if (isT(this.resizeCursor)) {
211
+ const targetTop = event.clientY - this.mousePoint.y;
212
+ const computedHeight = this.resizeInitYBottom - targetTop;
213
+ height = Math.max(toNumber(maxHeight)
214
+ ? Math.min(computedHeight, toNumber(maxHeight))
215
+ : computedHeight, computedMinHeight);
216
+ this.element.style.top = toPx(toNumber(top) + elementRect.height - height);
217
+ }
218
+ else {
219
+ const targetBottom = event.clientY + this.mousePoint.y;
220
+ const computedHeight = targetBottom - elementRect.top;
221
+ height = Math.max(toNumber(maxHeight)
222
+ ? Math.min(computedHeight, toNumber(maxHeight))
223
+ : computedHeight, computedMinHeight);
224
+ }
225
+ if (height < this.elementBorder.top + this.elementBorder.bottom) {
226
+ return;
227
+ }
228
+ this.element.style.height = toPx(height);
229
+ }
230
+ initResizing(event) {
231
+ const elementRect = this.element.getBoundingClientRect();
232
+ this.resizeInitXRight = elementRect.right;
233
+ this.resizeInitYBottom = elementRect.bottom;
234
+ this.mousePoint.x = isL(this.resizeCursor)
235
+ ? event.clientX - elementRect.left
236
+ : elementRect.right - event.clientX;
237
+ this.mousePoint.y = isT(this.resizeCursor)
238
+ ? event.clientY - elementRect.top
239
+ : elementRect.bottom - event.clientY;
240
+ const { borderLeft, borderTop, borderBottom, borderRight } = getComputedStyle(this.element);
241
+ this.elementBorder = {
242
+ left: toNumber(borderLeft),
243
+ top: toNumber(borderTop),
244
+ bottom: toNumber(borderBottom),
245
+ right: toNumber(borderRight),
246
+ };
247
+ }
248
+ setResizing(cursor, event) {
249
+ if (cursor == null || !cursor.includes('-resize')) {
250
+ this.isResizingX = false;
251
+ this.isResizingY = false;
252
+ return;
253
+ }
254
+ cursor = cursor.replace('-resize', '');
255
+ this.isResizingX = cursor.includes('e') || cursor.includes('w');
256
+ this.isResizingY = cursor.includes('s') || cursor.includes('n');
257
+ this.initResizing(event);
258
+ }
259
+ // eslint-disable-next-line sonarjs/cognitive-complexity
260
+ getMutableCursor(event) {
261
+ if (this.isResizingX || this.isResizingY) {
262
+ return;
263
+ }
264
+ const elementRect = this.element.getBoundingClientRect();
265
+ const resizeThreshold = this.computedOptions.resizeThreshold;
266
+ const pt = {
267
+ x: event.clientX,
268
+ y: event.clientY,
269
+ };
270
+ let cursor = '';
271
+ const dragThreshold = this.aclResizable ? resizeThreshold : 0;
272
+ if (this.aclDraggable &&
273
+ pt.x < elementRect.right - dragThreshold &&
274
+ pt.x > elementRect.left + dragThreshold &&
275
+ pt.y < elementRect.bottom - dragThreshold &&
276
+ pt.y > elementRect.top + dragThreshold &&
277
+ (!this.handles?.length ||
278
+ this.handles?.some(h => isSelfOrParent(event.target, h.nativeElement)))) {
279
+ cursor = this.computedOptions.cursors.move;
280
+ }
281
+ if (this.aclResizable && !cursor) {
282
+ if (pt.y >= elementRect.top &&
283
+ pt.y <= elementRect.top + resizeThreshold) {
284
+ cursor += 'n';
285
+ }
286
+ else if (pt.y >= elementRect.bottom - resizeThreshold &&
287
+ pt.y <= elementRect.bottom) {
288
+ cursor += 's';
289
+ }
290
+ if (pt.x >= elementRect.left &&
291
+ pt.x <= elementRect.left + resizeThreshold) {
292
+ cursor += 'w';
293
+ }
294
+ else if (pt.x >= elementRect.right - resizeThreshold &&
295
+ pt.x <= elementRect.right) {
296
+ cursor += 'e';
297
+ }
298
+ cursor = cursor ? cursor + '-resize' : '';
299
+ }
300
+ this.resizeCursor = cursor;
301
+ return cursor || this._initCursor;
302
+ }
303
+ isResizeOutOfBoundary(event, direction) {
304
+ const parentElement = this.getBoundaryElement();
305
+ const eventProp = direction === 'horizontal' ? 'clientX' : 'clientY';
306
+ const parentProp = direction === 'horizontal' ? 'clientWidth' : 'clientHeight';
307
+ return event[eventProp] < 0 || event[eventProp] > parentElement[parentProp];
308
+ }
309
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MutableDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
310
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: MutableDirective, isStandalone: true, selector: "[aclMutable]", inputs: { aclResizable: "aclResizable", aclDraggable: "aclDraggable", aclDragBoundary: "aclDragBoundary", aclMutableOptions: "aclMutableOptions" }, outputs: { aclOnResize: "aclOnResize", aclOnDrag: "aclOnDrag", aclDragStarted: "aclDragStarted", aclDragEnded: "aclDragEnded", aclResizeStarted: "aclResizeStarted", aclResizeEnded: "aclResizeEnded" }, host: { listeners: { "document:mousedown": "onMouseDown($event)", "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp()" } }, queries: [{ propertyName: "handles", predicate: DragHandleDirective, descendants: true, read: ElementRef }], ngImport: i0 }); }
311
+ }
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MutableDirective, decorators: [{
313
+ type: Directive,
314
+ args: [{
315
+ selector: '[aclMutable]',
316
+ standalone: true,
317
+ }]
318
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { aclResizable: [{
319
+ type: Input
320
+ }], aclDraggable: [{
321
+ type: Input
322
+ }], aclDragBoundary: [{
323
+ type: Input
324
+ }], aclMutableOptions: [{
325
+ type: Input
326
+ }], aclOnResize: [{
327
+ type: Output
328
+ }], aclOnDrag: [{
329
+ type: Output
330
+ }], aclDragStarted: [{
331
+ type: Output
332
+ }], aclDragEnded: [{
333
+ type: Output
334
+ }], aclResizeStarted: [{
335
+ type: Output
336
+ }], aclResizeEnded: [{
337
+ type: Output
338
+ }], handles: [{
339
+ type: ContentChildren,
340
+ args: [DragHandleDirective, { read: ElementRef, descendants: true }]
341
+ }], onMouseDown: [{
342
+ type: HostListener,
343
+ args: ['document:mousedown', ['$event']]
344
+ }], onMouseMove: [{
345
+ type: HostListener,
346
+ args: ['document:mousemove', ['$event']]
347
+ }], onMouseUp: [{
348
+ type: HostListener,
349
+ args: ['document:mouseup']
350
+ }] } });
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2NvbXBvbmVudHMvbXV0YWJsZS9kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUQsT0FBTyxFQUFnQixHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBWWhFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFtQjtJQUNuRCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDcEMsZUFBZSxFQUFFLENBQUM7SUFDbEIsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07S0FDYjtDQUNGLENBQUM7QUFXRixNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7a0dBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBT0QsTUFBTSxPQUFPLGdCQUFnQjtJQVUzQixJQUNJLGlCQUFpQixDQUFDLE9BQXVCO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsR0FBRyxxQkFBcUI7WUFDeEIsR0FBRyxPQUFPO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUF1Q0QsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQXFC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c0JBQXBCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFHRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBVUcsV0FBVztzQkFEbkIsTUFBTTtnQkFJWSxTQUFTO3NCQUEzQixNQUFNO2dCQUVZLGNBQWM7c0JBQWhDLE1BQU07Z0JBQ1ksWUFBWTtzQkFBOUIsTUFBTTtnQkFFWSxnQkFBZ0I7c0JBQWxDLE1BQU07Z0JBQ1ksY0FBYztzQkFBaEMsTUFBTTtnQkFHUCxPQUFPO3NCQUROLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBd0I3RSxXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUI5QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUI5QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb2VyY2VFbGVtZW50LCBpc1NlbGZPclBhcmVudCB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBSZXNpemVDdXJzb3IsIGlzTCwgaXNULCB0b051bWJlciwgdG9QeCB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCB0eXBlIERyYWdSYW5nZSA9IG51bWJlciB8IHN0cmluZztcbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZU9wdGlvbnMge1xuICBkaXJlY3Rpb25zPzogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dOyAvLyB0b3AgcmlnaHQgYm90dG9tIGxlZnQ7XG4gIHJlc2l6ZVRocmVzaG9sZD86IG51bWJlcjtcbiAgY3Vyc29ycz86IHtcbiAgICBtb3ZlOiBzdHJpbmc7XG4gIH07XG4gIGRyYWdSYW5nZT86IFtEcmFnUmFuZ2UsIERyYWdSYW5nZSwgRHJhZ1JhbmdlLCBEcmFnUmFuZ2VdO1xufVxuXG5leHBvcnQgY29uc3QgTVVUQUJMRV9CQVNJQ19PUFRJT05TOiBNdXRhYmxlT3B0aW9ucyA9IHtcbiAgZGlyZWN0aW9uczogW3RydWUsIHRydWUsIHRydWUsIHRydWVdLFxuICByZXNpemVUaHJlc2hvbGQ6IDUsXG4gIGN1cnNvcnM6IHtcbiAgICBtb3ZlOiAnbW92ZScsXG4gIH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thY2xEcmFnSGFuZGxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERyYWdIYW5kbGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FjbE11dGFibGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTXV0YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgY29tcHV0ZWRPcHRpb25zOiBNdXRhYmxlT3B0aW9ucyA9IE1VVEFCTEVfQkFTSUNfT1BUSU9OUztcblxuICAvKiogQWxsb3cgZm9yIHN0cmV0Y2ggc2hyaW5rLCB0aGUgZGVmYXVsdCBpcyBvcGVuICovXG4gIEBJbnB1dCgpIGFjbFJlc2l6YWJsZSA9IHRydWU7XG4gIC8qKiBBbGxvdyBmb3IgZHJhZyBhbmQgZHJvcCwgdGhlIGRlZmF1bHQgaXMgb3BlbiAqL1xuICBASW5wdXQoKSBhY2xEcmFnZ2FibGUgPSB0cnVlO1xuICAvKiogRGVmaW5lIGRyYWcgYm91bmRhcnksIGFzIGJvZHkgKi9cbiAgQElucHV0KCkgYWNsRHJhZ0JvdW5kYXJ5OiBzdHJpbmcgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IEhUTUxFbGVtZW50O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBhY2xNdXRhYmxlT3B0aW9ucyhvcHRpb25zOiBNdXRhYmxlT3B0aW9ucykge1xuICAgIHRoaXMuY29tcHV0ZWRPcHRpb25zID0ge1xuICAgICAgLi4uTVVUQUJMRV9CQVNJQ19PUFRJT05TLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEluIHRoZSBwcm9jZXNzIG9mIHRoZSByZXNpemUgdHJpZ2dlcmluZyBldmVudHMgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGFjbE9uUmVzaXplID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcblxuICAvKiogRHJhZyBpbiB0aGUgcHJvY2VzcyBvZiB0aGUgdHJpZ2dlcmluZyBldmVudCAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgYWNsT25EcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHVzZXIgc3RhcnQgZHJhZy4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjbERyYWdTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxIVE1MRWxlbWVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjbERyYWdFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB1c2VyIHN0YXJ0IHJlc2l6ZSAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgYWNsUmVzaXplU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBhY2xSZXNpemVFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SFRNTEVsZW1lbnQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihEcmFnSGFuZGxlRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGhhbmRsZXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBpc0RyYWdnaW5nID0gZmFsc2U7XG5cbiAgaXNSZXNpemluZ1ggPSBmYWxzZTtcblxuICBpc1Jlc2l6aW5nWSA9IGZhbHNlO1xuXG4gIG1vdXNlUG9pbnQgPSB7IHg6IDAsIHk6IDAgfTtcblxuICBwYXJlbnRCb3JkZXI6IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlciB9O1xuXG4gIGVsZW1lbnRCb3JkZXI6IHsgbGVmdDogbnVtYmVyOyB0b3A6IG51bWJlcjsgcmlnaHQ6IG51bWJlcjsgYm90dG9tOiBudW1iZXIgfTtcblxuICBlbGVtZW50OiBIVE1MRWxlbWVudCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdEN1cnNvcjogc3RyaW5nO1xuXG4gIHJlc2l6ZUN1cnNvcjogUmVzaXplQ3Vyc29yO1xuICByZXNpemVJbml0WFJpZ2h0ID0gMDtcbiAgcmVzaXplSW5pdFlCb3R0b20gPSAwO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCFpc1NlbGZPclBhcmVudChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIHRoaXMuZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3Vyc29yID0gdGhpcy5nZXRNdXRhYmxlQ3Vyc29yKGV2ZW50KTtcblxuICAgIGlmIChjdXJzb3IgPT09IHRoaXMuY29tcHV0ZWRPcHRpb25zLmN1cnNvcnMubW92ZSkge1xuICAgICAgdGhpcy5zZXREcmFnZ2luZyhjdXJzb3IsIGV2ZW50KTtcbiAgICAgIHRoaXMuYWNsRHJhZ1N0YXJ0ZWQuZW1pdCh0aGlzLmVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY2xSZXNpemFibGUgJiYgY3Vyc29yLmluY2x1ZGVzKCctcmVzaXplJykpIHtcbiAgICAgIHRoaXMuc2V0UmVzaXppbmcoY3Vyc29yLCBldmVudCk7XG4gICAgICB0aGlzLmFjbFJlc2l6ZVN0YXJ0ZWQuZW1pdCh0aGlzLmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmN1cnNvciA9IHRoaXMuZ2V0TXV0YWJsZUN1cnNvcihldmVudCk7XG5cbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICB0aGlzLmRyYWdFbGVtZW50KGV2ZW50KTtcbiAgICAgIHRoaXMuYWNsT25EcmFnLmVtaXQodGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1Jlc2l6aW5nWCB8fCB0aGlzLmlzUmVzaXppbmdZKSB7XG4gICAgICB0aGlzLmlzUmVzaXppbmdYICYmIHRoaXMucmVzaXplRWxlbWVudFgoZXZlbnQpO1xuICAgICAgdGhpcy5pc1Jlc2l6aW5nWSAmJiB0aGlzLnJlc2l6ZUVsZW1lbnRZKGV2ZW50KTtcbiAgICAgIHRoaXMuYWNsT25SZXNpemUuZW1pdCh0aGlzLmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnKVxuICBvbk1vdXNlVXAoKSB7XG4gICAgaWYgKHRoaXMuYWNsRHJhZ2dhYmxlKSB7XG4gICAgICB0aGlzLnNldERyYWdnaW5nKG51bGwsIG51bGwpO1xuICAgICAgdGhpcy5hY2xEcmFnRW5kZWQuZW1pdCh0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjbFJlc2l6YWJsZSkge1xuICAgICAgdGhpcy5zZXRSZXNpemluZyhudWxsLCBudWxsKTtcbiAgICAgIHRoaXMuYWNsUmVzaXplRW5kZWQuZW1pdCh0aGlzLmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuX2luaXRDdXJzb3IgPSB0aGlzLmVsZW1lbnQuc3R5bGUuY3Vyc29yO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGJvdW5kYXJ5IGVsZW1lbnQsIGJhc2VkIG9uIHRoZSBgYm91bmRhcnlFbGVtZW50YCB2YWx1ZS4gKi9cbiAgcHJpdmF0ZSBnZXRCb3VuZGFyeUVsZW1lbnQoKSB7XG4gICAgY29uc3QgYm91bmRhcnkgPSB0aGlzLmFjbERyYWdCb3VuZGFyeTtcblxuICAgIGlmICghYm91bmRhcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGJvdW5kYXJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbG9zZXN0KGJvdW5kYXJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29lcmNlRWxlbWVudChib3VuZGFyeSk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUluUGFyZW50KHBvaW50OiBQb2ludCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0Qm91bmRhcnlFbGVtZW50KCk7XG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKHBvaW50LnggPCAwKSB7XG4gICAgICBwb2ludC54ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBvaW50LnggPj0gcGFyZW50LmNsaWVudFdpZHRoIC0gZWxlbWVudFJlY3Qud2lkdGgpIHtcbiAgICAgIHBvaW50LnggPSBwYXJlbnQuY2xpZW50V2lkdGggLSBlbGVtZW50UmVjdC53aWR0aDtcbiAgICB9XG5cbiAgICBpZiAocG9pbnQueSA8IDApIHtcbiAgICAgIHBvaW50LnkgPSAwO1xuICAgIH0gZWxzZSBpZiAocG9pbnQueSA+PSBwYXJlbnQuY2xpZW50SGVpZ2h0IC0gZWxlbWVudFJlY3QuaGVpZ2h0KSB7XG4gICAgICBwb2ludC55ID0gcGFyZW50LmNsaWVudEhlaWdodCAtIGVsZW1lbnRSZWN0LmhlaWdodDtcbiAgICB9XG4gICAgcmV0dXJuIHBvaW50O1xuICB9XG5cbiAgZHJhZ0VsZW1lbnQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5nZXRCb3VuZGFyeUVsZW1lbnQoKTtcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0ge1xuICAgICAgbGVmdDpcbiAgICAgICAgcGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgcGFyZW50RWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgdG9wOiBwYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHBhcmVudEVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgIH07XG5cbiAgICBjb25zdCB7IHgsIHkgfSA9IHRoaXMuZW5zdXJlSW5QYXJlbnQoe1xuICAgICAgeDpcbiAgICAgICAgZXZlbnQuY2xpZW50WCAtXG4gICAgICAgIHBhcmVudFJlY3QubGVmdCAtXG4gICAgICAgIHRoaXMucGFyZW50Qm9yZGVyLmxlZnQgLVxuICAgICAgICB0aGlzLm1vdXNlUG9pbnQueCxcbiAgICAgIHk6XG4gICAgICAgIGV2ZW50LmNsaWVudFkgLVxuICAgICAgICBwYXJlbnRSZWN0LnRvcCAtXG4gICAgICAgIHRoaXMucGFyZW50Qm9yZGVyLnRvcCAtXG4gICAgICAgIHRoaXMubW91c2VQb2ludC55LFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29tcHV0ZWRPcHRpb25zLmRyYWdSYW5nZSkge1xuICAgICAgY29uc3QgW3QsIHIsIGIsIGxdID0gdGhpcy5jb21wdXRlZE9wdGlvbnMuZHJhZ1JhbmdlLm1hcCgoa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGtleSAvIDEwMCkgKlxuICAgICAgICAgICAgKFsxLCAzXS5pbmNsdWRlcyhpbmRleClcbiAgICAgICAgICAgICAgPyBwYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoXG4gICAgICAgICAgICAgIDogcGFyZW50RWxlbWVudC5jbGllbnRIZWlnaHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYga2V5LmluY2x1ZGVzKCdweCcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRvTnVtYmVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcignRHJhZ1JhbmdlIGluIG11dGFibGVPcHRpb25zIGlzIGludmFsaWQhJyk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9IHRvUHgoXG4gICAgICAgIE1hdGgubWF4KGwsIE1hdGgubWluKHgsIHBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGggLSByKSksXG4gICAgICApO1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IHRvUHgoXG4gICAgICAgIE1hdGgubWF4KHQsIE1hdGgubWluKHksIHBhcmVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gYikpLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9IHRvUHgoeCk7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IHRvUHgoeSk7XG4gIH1cblxuICBpbml0RHJhZ2dpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgdGhpcy5tb3VzZVBvaW50LnggPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuXG4gICAgdGhpcy5tb3VzZVBvaW50LnkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG5cbiAgICBjb25zdCB7IGJvcmRlckxlZnQsIGJvcmRlclRvcCB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShcbiAgICAgIHRoaXMuZ2V0Qm91bmRhcnlFbGVtZW50KCksXG4gICAgKTtcblxuICAgIHRoaXMucGFyZW50Qm9yZGVyID0ge1xuICAgICAgbGVmdDogdG9OdW1iZXIoYm9yZGVyTGVmdCksXG4gICAgICB0b3A6IHRvTnVtYmVyKGJvcmRlclRvcCksXG4gICAgfTtcbiAgfVxuXG4gIHNldERyYWdnaW5nKGN1cnNvcjogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGN1cnNvciA9PT0gdGhpcy5jb21wdXRlZE9wdGlvbnMuY3Vyc29ycy5tb3ZlO1xuXG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy5pbml0RHJhZ2dpbmcoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2l6ZUVsZW1lbnRYKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNSZXNpemVPdXRPZkJvdW5kYXJ5KGV2ZW50LCAnaG9yaXpvbnRhbCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IHdpZHRoO1xuICAgIGNvbnN0IHsgbWluV2lkdGgsIG1heFdpZHRoLCBsZWZ0IH0gPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7XG4gICAgY29uc3QgY29tcHV0ZWRNaW5XaWR0aCA9IE1hdGgubWF4KFxuICAgICAgdG9OdW1iZXIobWluV2lkdGgpLFxuICAgICAgdGhpcy5lbGVtZW50Qm9yZGVyLmxlZnQgKyB0aGlzLmVsZW1lbnRCb3JkZXIucmlnaHQsXG4gICAgKTtcblxuICAgIGlmIChpc0wodGhpcy5yZXNpemVDdXJzb3IpKSB7XG4gICAgICBjb25zdCB0YXJnZXRMZWZ0ID0gZXZlbnQuY2xpZW50WCAtIHRoaXMubW91c2VQb2ludC54O1xuICAgICAgY29uc3QgY29tcHV0ZWRXaWR0aCA9IHRoaXMucmVzaXplSW5pdFhSaWdodCAtIHRhcmdldExlZnQ7XG5cbiAgICAgIHdpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgIHRvTnVtYmVyKG1heFdpZHRoKVxuICAgICAgICAgID8gTWF0aC5taW4oY29tcHV0ZWRXaWR0aCwgdG9OdW1iZXIobWF4V2lkdGgpKVxuICAgICAgICAgIDogY29tcHV0ZWRXaWR0aCxcbiAgICAgICAgY29tcHV0ZWRNaW5XaWR0aCxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gdG9QeChcbiAgICAgICAgdG9OdW1iZXIobGVmdCkgKyBlbGVtZW50UmVjdC53aWR0aCAtIHdpZHRoLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0UmlnaHQgPSBldmVudC5jbGllbnRYICsgdGhpcy5tb3VzZVBvaW50Lng7XG5cbiAgICAgIGNvbnN0IGNvbXB1dGVkV2lkdGggPSB0YXJnZXRSaWdodCAtIGVsZW1lbnRSZWN0LmxlZnQ7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KFxuICAgICAgICB0b051bWJlcihtYXhXaWR0aClcbiAgICAgICAgICA/IE1hdGgubWluKGNvbXB1dGVkV2lkdGgsIHRvTnVtYmVyKG1heFdpZHRoKSlcbiAgICAgICAgICA6IGNvbXB1dGVkV2lkdGgsXG4gICAgICAgIGNvbXB1dGVkTWluV2lkdGgsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh3aWR0aCA8IHRoaXMuZWxlbWVudEJvcmRlci5sZWZ0ICsgdGhpcy5lbGVtZW50Qm9yZGVyLnJpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gdG9QeCh3aWR0aCk7XG4gIH1cblxuICByZXNpemVFbGVtZW50WShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLmlzUmVzaXplT3V0T2ZCb3VuZGFyeShldmVudCwgJ3ZlcnRpY2FsJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50UmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB7IG1pbkhlaWdodCwgbWF4SGVpZ2h0LCB0b3AgfSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTtcbiAgICBjb25zdCBjb21wdXRlZE1pbkhlaWdodCA9IE1hdGgubWF4KFxuICAgICAgdG9OdW1iZXIobWluSGVpZ2h0KSxcbiAgICAgIHRoaXMuZWxlbWVudEJvcmRlci50b3AgKyB0aGlzLmVsZW1lbnRCb3JkZXIuYm90dG9tLFxuICAgICk7XG5cbiAgICBsZXQgaGVpZ2h0O1xuXG4gICAgaWYgKGlzVCh0aGlzLnJlc2l6ZUN1cnNvcikpIHtcbiAgICAgIGNvbnN0IHRhcmdldFRvcCA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLm1vdXNlUG9pbnQueTtcblxuICAgICAgY29uc3QgY29tcHV0ZWRIZWlnaHQgPSB0aGlzLnJlc2l6ZUluaXRZQm90dG9tIC0gdGFyZ2V0VG9wO1xuXG4gICAgICBoZWlnaHQgPSBNYXRoLm1heChcbiAgICAgICAgdG9OdW1iZXIobWF4SGVpZ2h0KVxuICAgICAgICAgID8gTWF0aC5taW4oY29tcHV0ZWRIZWlnaHQsIHRvTnVtYmVyKG1heEhlaWdodCkpXG4gICAgICAgICAgOiBjb21wdXRlZEhlaWdodCxcbiAgICAgICAgY29tcHV0ZWRNaW5IZWlnaHQsXG4gICAgICApO1xuXG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gdG9QeChcbiAgICAgICAgdG9OdW1iZXIodG9wKSArIGVsZW1lbnRSZWN0LmhlaWdodCAtIGhlaWdodCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRhcmdldEJvdHRvbSA9IGV2ZW50LmNsaWVudFkgKyB0aGlzLm1vdXNlUG9pbnQueTtcblxuICAgICAgY29uc3QgY29tcHV0ZWRIZWlnaHQgPSB0YXJnZXRCb3R0b20gLSBlbGVtZW50UmVjdC50b3A7XG5cbiAgICAgIGhlaWdodCA9IE1hdGgubWF4KFxuICAgICAgICB0b051bWJlcihtYXhIZWlnaHQpXG4gICAgICAgICAgPyBNYXRoLm1pbihjb21wdXRlZEhlaWdodCwgdG9OdW1iZXIobWF4SGVpZ2h0KSlcbiAgICAgICAgICA6IGNvbXB1dGVkSGVpZ2h0LFxuICAgICAgICBjb21wdXRlZE1pbkhlaWdodCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChoZWlnaHQgPCB0aGlzLmVsZW1lbnRCb3JkZXIudG9wICsgdGhpcy5lbGVtZW50Qm9yZGVyLmJvdHRvbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdG9QeChoZWlnaHQpO1xuICB9XG5cbiAgaW5pdFJlc2l6aW5nKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICB0aGlzLnJlc2l6ZUluaXRYUmlnaHQgPSBlbGVtZW50UmVjdC5yaWdodDtcbiAgICB0aGlzLnJlc2l6ZUluaXRZQm90dG9tID0gZWxlbWVudFJlY3QuYm90dG9tO1xuXG4gICAgdGhpcy5tb3VzZVBvaW50LnggPSBpc0wodGhpcy5yZXNpemVDdXJzb3IpXG4gICAgICA/IGV2ZW50LmNsaWVudFggLSBlbGVtZW50UmVjdC5sZWZ0XG4gICAgICA6IGVsZW1lbnRSZWN0LnJpZ2h0IC0gZXZlbnQuY2xpZW50WDtcblxuICAgIHRoaXMubW91c2VQb2ludC55ID0gaXNUKHRoaXMucmVzaXplQ3Vyc29yKVxuICAgICAgPyBldmVudC5jbGllbnRZIC0gZWxlbWVudFJlY3QudG9wXG4gICAgICA6IGVsZW1lbnRSZWN0LmJvdHRvbSAtIGV2ZW50LmNsaWVudFk7XG5cbiAgICBjb25zdCB7IGJvcmRlckxlZnQsIGJvcmRlclRvcCwgYm9yZGVyQm90dG9tLCBib3JkZXJSaWdodCB9ID1cbiAgICAgIGdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLmVsZW1lbnRCb3JkZXIgPSB7XG4gICAgICBsZWZ0OiB0b051bWJlcihib3JkZXJMZWZ0KSxcbiAgICAgIHRvcDogdG9OdW1iZXIoYm9yZGVyVG9wKSxcbiAgICAgIGJvdHRvbTogdG9OdW1iZXIoYm9yZGVyQm90dG9tKSxcbiAgICAgIHJpZ2h0OiB0b051bWJlcihib3JkZXJSaWdodCksXG4gICAgfTtcbiAgfVxuXG4gIHNldFJlc2l6aW5nKGN1cnNvcjogc3RyaW5nLCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChjdXJzb3IgPT0gbnVsbCB8fCAhY3Vyc29yLmluY2x1ZGVzKCctcmVzaXplJykpIHtcbiAgICAgIHRoaXMuaXNSZXNpemluZ1ggPSBmYWxzZTtcblxuICAgICAgdGhpcy5pc1Jlc2l6aW5nWSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3Vyc29yID0gY3Vyc29yLnJlcGxhY2UoJy1yZXNpemUnLCAnJyk7XG5cbiAgICB0aGlzLmlzUmVzaXppbmdYID0gY3Vyc29yLmluY2x1ZGVzKCdlJykgfHwgY3Vyc29yLmluY2x1ZGVzKCd3Jyk7XG5cbiAgICB0aGlzLmlzUmVzaXppbmdZID0gY3Vyc29yLmluY2x1ZGVzKCdzJykgfHwgY3Vyc29yLmluY2x1ZGVzKCduJyk7XG5cbiAgICB0aGlzLmluaXRSZXNpemluZyhldmVudCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuICBnZXRNdXRhYmxlQ3Vyc29yKGV2ZW50OiBNb3VzZUV2ZW50KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc1Jlc2l6aW5nWCB8fCB0aGlzLmlzUmVzaXppbmdZKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgcmVzaXplVGhyZXNob2xkID0gdGhpcy5jb21wdXRlZE9wdGlvbnMucmVzaXplVGhyZXNob2xkO1xuXG4gICAgY29uc3QgcHQgPSB7XG4gICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICB9O1xuXG4gICAgbGV0IGN1cnNvciA9ICcnO1xuICAgIGNvbnN0IGRyYWdUaHJlc2hvbGQgPSB0aGlzLmFjbFJlc2l6YWJsZSA/IHJlc2l6ZVRocmVzaG9sZCA6IDA7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFjbERyYWdnYWJsZSAmJlxuICAgICAgcHQueCA8IGVsZW1lbnRSZWN0LnJpZ2h0IC0gZHJhZ1RocmVzaG9sZCAmJlxuICAgICAgcHQueCA+IGVsZW1lbnRSZWN0LmxlZnQgKyBkcmFnVGhyZXNob2xkICYmXG4gICAgICBwdC55IDwgZWxlbWVudFJlY3QuYm90dG9tIC0gZHJhZ1RocmVzaG9sZCAmJlxuICAgICAgcHQueSA+IGVsZW1lbnRSZWN0LnRvcCArIGRyYWdUaHJlc2hvbGQgJiZcbiAgICAgICghdGhpcy5oYW5kbGVzPy5sZW5ndGggfHxcbiAgICAgICAgdGhpcy5oYW5kbGVzPy5zb21lKGggPT5cbiAgICAgICAgICBpc1NlbGZPclBhcmVudChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGgubmF0aXZlRWxlbWVudCksXG4gICAgICAgICkpXG4gICAgKSB7XG4gICAgICBjdXJzb3IgPSB0aGlzLmNvbXB1dGVkT3B0aW9ucy5jdXJzb3JzLm1vdmU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWNsUmVzaXphYmxlICYmICFjdXJzb3IpIHtcbiAgICAgIGlmIChcbiAgICAgICAgcHQueSA+PSBlbGVtZW50UmVjdC50b3AgJiZcbiAgICAgICAgcHQueSA8PSBlbGVtZW50UmVjdC50b3AgKyByZXNpemVUaHJlc2hvbGRcbiAgICAgICkge1xuICAgICAgICBjdXJzb3IgKz0gJ24nO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcHQueSA+PSBlbGVtZW50UmVjdC5ib3R0b20gLSByZXNpemVUaHJlc2hvbGQgJiZcbiAgICAgICAgcHQueSA8PSBlbGVtZW50UmVjdC5ib3R0b21cbiAgICAgICkge1xuICAgICAgICBjdXJzb3IgKz0gJ3MnO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHB0LnggPj0gZWxlbWVudFJlY3QubGVmdCAmJlxuICAgICAgICBwdC54IDw9IGVsZW1lbnRSZWN0LmxlZnQgKyByZXNpemVUaHJlc2hvbGRcbiAgICAgICkge1xuICAgICAgICBjdXJzb3IgKz0gJ3cnO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcHQueCA+PSBlbGVtZW50UmVjdC5yaWdodCAtIHJlc2l6ZVRocmVzaG9sZCAmJlxuICAgICAgICBwdC54IDw9IGVsZW1lbnRSZWN0LnJpZ2h0XG4gICAgICApIHtcbiAgICAgICAgY3Vyc29yICs9ICdlJztcbiAgICAgIH1cblxuICAgICAgY3Vyc29yID0gY3Vyc29yID8gY3Vyc29yICsgJy1yZXNpemUnIDogJyc7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNpemVDdXJzb3IgPSBjdXJzb3IgYXMgUmVzaXplQ3Vyc29yO1xuXG4gICAgcmV0dXJuIGN1cnNvciB8fCB0aGlzLl9pbml0Q3Vyc29yO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc2l6ZU91dE9mQm91bmRhcnkoXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnLFxuICApIHtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5nZXRCb3VuZGFyeUVsZW1lbnQoKTtcblxuICAgIGNvbnN0IGV2ZW50UHJvcCA9IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2NsaWVudFgnIDogJ2NsaWVudFknO1xuICAgIGNvbnN0IHBhcmVudFByb3AgPVxuICAgICAgZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnY2xpZW50V2lkdGgnIDogJ2NsaWVudEhlaWdodCc7XG5cbiAgICByZXR1cm4gZXZlbnRbZXZlbnRQcm9wXSA8IDAgfHwgZXZlbnRbZXZlbnRQcm9wXSA+IHBhcmVudEVsZW1lbnRbcGFyZW50UHJvcF07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { ElementRef } from '@angular/core';
2
+ /**
3
+ * To judge whether the parent element
4
+ */
5
+ export const isSelfOrParent = (element, target) => {
6
+ while (element) {
7
+ if (element === target) {
8
+ return true;
9
+ }
10
+ element = element.parentNode;
11
+ }
12
+ return false;
13
+ };
14
+ /**
15
+ * Coerces an ElementRef or an Element into an element.
16
+ * Useful for APIs that can accept either a ref or the native element itself.
17
+ */
18
+ export function coerceElement(elementOrRef) {
19
+ return elementOrRef instanceof ElementRef
20
+ ? elementOrRef.nativeElement
21
+ : elementOrRef;
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9jb21wb25lbnRzL211dGFibGUvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBb0IsRUFBRSxNQUFtQixFQUFFLEVBQUU7SUFDMUUsT0FBTyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBeUIsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFJLFlBQStCO0lBQzlELE9BQU8sWUFBWSxZQUFZLFVBQVU7UUFDdkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhO1FBQzVCLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUbyBqdWRnZSB3aGV0aGVyIHRoZSBwYXJlbnQgZWxlbWVudFxuICovXG5leHBvcnQgY29uc3QgaXNTZWxmT3JQYXJlbnQgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIHRhcmdldDogSFRNTEVsZW1lbnQpID0+IHtcbiAgd2hpbGUgKGVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudCA9PT0gdGFyZ2V0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBDb2VyY2VzIGFuIEVsZW1lbnRSZWYgb3IgYW4gRWxlbWVudCBpbnRvIGFuIGVsZW1lbnQuXG4gKiBVc2VmdWwgZm9yIEFQSXMgdGhhdCBjYW4gYWNjZXB0IGVpdGhlciBhIHJlZiBvciB0aGUgbmF0aXZlIGVsZW1lbnQgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlRWxlbWVudDxUPihlbGVtZW50T3JSZWY6IEVsZW1lbnRSZWY8VD4gfCBUKTogVCB7XG4gIHJldHVybiBlbGVtZW50T3JSZWYgaW5zdGFuY2VvZiBFbGVtZW50UmVmXG4gICAgPyBlbGVtZW50T3JSZWYubmF0aXZlRWxlbWVudFxuICAgIDogZWxlbWVudE9yUmVmO1xufVxuIl19
@@ -0,0 +1,15 @@
1
+ import { MosaicComponent } from './mosaic/component';
2
+ import { MosaicLeftDirective, MosaicRightDirective } from './mosaic/directive';
3
+ import { DragHandleDirective, MutableDirective } from './directive';
4
+ export * from './mosaic/component';
5
+ export * from './mosaic/directive';
6
+ export * from './directive';
7
+ export * from './util';
8
+ export const MUTABLE_MODULE = [
9
+ MutableDirective,
10
+ MosaicRightDirective,
11
+ MosaicLeftDirective,
12
+ MosaicComponent,
13
+ DragHandleDirective,
14
+ ];
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvY29tcG9uZW50cy9tdXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEUsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsbUJBQW1CO0NBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vc2FpY0NvbXBvbmVudCB9IGZyb20gJy4vbW9zYWljL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBNb3NhaWNMZWZ0RGlyZWN0aXZlLCBNb3NhaWNSaWdodERpcmVjdGl2ZSB9IGZyb20gJy4vbW9zYWljL2RpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcmFnSGFuZGxlRGlyZWN0aXZlLCBNdXRhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL21vc2FpYy9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb3NhaWMvZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbCc7XG5leHBvcnQgY29uc3QgTVVUQUJMRV9NT0RVTEUgPSBbXG4gIE11dGFibGVEaXJlY3RpdmUsXG4gIE1vc2FpY1JpZ2h0RGlyZWN0aXZlLFxuICBNb3NhaWNMZWZ0RGlyZWN0aXZlLFxuICBNb3NhaWNDb21wb25lbnQsXG4gIERyYWdIYW5kbGVEaXJlY3RpdmUsXG5dIGFzIGNvbnN0O1xuIl19
@@ -0,0 +1,76 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { MonacoEditorConfig } from 'ng-monaco-editor';
4
+ import { Observable, combineLatest, map } from 'rxjs';
5
+ import { toNumber, toPercent } from '../util';
6
+ import { ObservableInput, publishRef } from '../../../utils';
7
+ import { MutableDirective } from '../directive';
8
+ import { AsyncPipe, NgStyle } from '@angular/common';
9
+ import * as i0 from "@angular/core";
10
+ export class MosaicComponent {
11
+ constructor() {
12
+ this.left = 0;
13
+ this.right = 0;
14
+ this.splitLocation = 50;
15
+ this.mutableOptions$ = combineLatest([this.left$, this.right$]).pipe(map(([left, right]) => ({
16
+ dragRange: [0, right, 100, left],
17
+ cursors: {
18
+ move: 'col-resize',
19
+ },
20
+ })), publishRef());
21
+ this.leftInset = {
22
+ top: '0',
23
+ right: toPercent(this.splitLocation),
24
+ bottom: '0',
25
+ left: '0',
26
+ };
27
+ this.rightInset = {
28
+ top: '0',
29
+ right: '0',
30
+ bottom: '0',
31
+ left: toPercent(100 - this.splitLocation),
32
+ };
33
+ this.splitInset = this.rightInset;
34
+ }
35
+ drag(element, root) {
36
+ requestAnimationFrame(() => {
37
+ this.leftInset = {
38
+ top: '0',
39
+ right: toPercent(1 - toNumber(element.style.left) / root.clientWidth, 100),
40
+ bottom: '0',
41
+ left: '0',
42
+ };
43
+ this.rightInset = {
44
+ top: '0',
45
+ right: '0',
46
+ bottom: '0',
47
+ left: toPercent(toNumber(element.style.left) / root.clientWidth, 100),
48
+ };
49
+ });
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MosaicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: MosaicComponent, isStandalone: true, selector: "acl-mosaic", inputs: { left: "left", right: "right", splitLocation: "splitLocation" }, providers: [
53
+ { provide: MonacoEditorConfig, useValue: { autoLayoutInterval: 1 } },
54
+ ], ngImport: i0, template: "<div\n class=\"mosaic-root\"\n #root\n>\n <div\n class=\"mosaic-left\"\n [ngStyle]=\"leftInset\"\n >\n <ng-content select=\"[aclMosaicLeft]\"></ng-content>\n </div>\n <div\n class=\"mosaic-split\"\n [ngStyle]=\"splitInset\"\n aclMutable\n (aclOnDrag)=\"drag($event, root)\"\n [aclMutableOptions]=\"mutableOptions$ | async\"\n [aclResizable]=\"false\"\n ></div>\n <div\n class=\"mosaic-right\"\n [ngStyle]=\"rightInset\"\n >\n <ng-content select=\"[aclMosaicRight]\"></ng-content>\n </div>\n</div>\n", styles: [".mosaic-root{position:relative;width:100%;min-height:400px;overflow:hidden}.mosaic-split{position:absolute;margin-left:-1px;width:2px;z-index:1;background-color:rgb(var(--aui-color-n-10))}.mosaic-split:hover{width:4px;margin-left:-2px}.mosaic-left,.mosaic-right{height:100%;position:absolute}.mutable-box{width:50px;height:50px;position:absolute;background-color:#444}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: MutableDirective, selector: "[aclMutable]", inputs: ["aclResizable", "aclDraggable", "aclDragBoundary", "aclMutableOptions"], outputs: ["aclOnResize", "aclOnDrag", "aclDragStarted", "aclDragEnded", "aclResizeStarted", "aclResizeEnded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
+ }
56
+ __decorate([
57
+ ObservableInput(),
58
+ __metadata("design:type", Observable)
59
+ ], MosaicComponent.prototype, "left$", void 0);
60
+ __decorate([
61
+ ObservableInput(),
62
+ __metadata("design:type", Observable)
63
+ ], MosaicComponent.prototype, "right$", void 0);
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MosaicComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'acl-mosaic', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgStyle, AsyncPipe, MutableDirective], providers: [
67
+ { provide: MonacoEditorConfig, useValue: { autoLayoutInterval: 1 } },
68
+ ], template: "<div\n class=\"mosaic-root\"\n #root\n>\n <div\n class=\"mosaic-left\"\n [ngStyle]=\"leftInset\"\n >\n <ng-content select=\"[aclMosaicLeft]\"></ng-content>\n </div>\n <div\n class=\"mosaic-split\"\n [ngStyle]=\"splitInset\"\n aclMutable\n (aclOnDrag)=\"drag($event, root)\"\n [aclMutableOptions]=\"mutableOptions$ | async\"\n [aclResizable]=\"false\"\n ></div>\n <div\n class=\"mosaic-right\"\n [ngStyle]=\"rightInset\"\n >\n <ng-content select=\"[aclMosaicRight]\"></ng-content>\n </div>\n</div>\n", styles: [".mosaic-root{position:relative;width:100%;min-height:400px;overflow:hidden}.mosaic-split{position:absolute;margin-left:-1px;width:2px;z-index:1;background-color:rgb(var(--aui-color-n-10))}.mosaic-split:hover{width:4px;margin-left:-2px}.mosaic-left,.mosaic-right{height:100%;position:absolute}.mutable-box{width:50px;height:50px;position:absolute;background-color:#444}\n"] }]
69
+ }], propDecorators: { left: [{
70
+ type: Input
71
+ }], left$: [], right: [{
72
+ type: Input
73
+ }], right$: [], splitLocation: [{
74
+ type: Input
75
+ }] } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2NvbXBvbmVudHMvbXV0YWJsZS9tb3NhaWMvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2NvbXBvbmVudHMvbXV0YWJsZS9tb3NhaWMvdGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFhLGdCQUFnQixFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWFyRCxNQUFNLE9BQU8sZUFBZTtJQVg1QjtRQVlXLFNBQUksR0FBYyxDQUFDLENBQUM7UUFJcEIsVUFBSyxHQUFjLENBQUMsQ0FBQztRQUs5QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQixvQkFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQ0QsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ2hCLENBQUM7WUFDQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7WUFDaEMsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxZQUFZO2FBQ25CO1NBQ0YsQ0FBbUIsQ0FDdkIsRUFDRCxVQUFVLEVBQUUsQ0FDYixDQUFDO1FBRUYsY0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEdBQUc7WUFDUixLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDcEMsTUFBTSxFQUFFLEdBQUc7WUFDWCxJQUFJLEVBQUUsR0FBRztTQUNWLENBQUM7UUFFRixlQUFVLEdBQUc7WUFDWCxHQUFHLEVBQUUsR0FBRztZQUNSLEtBQUssRUFBRSxHQUFHO1lBQ1YsTUFBTSxFQUFFLEdBQUc7WUFDWCxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzFDLENBQUM7UUFFRixlQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztLQXFCOUI7SUFuQkMsSUFBSSxDQUFDLE9BQW9CLEVBQUUsSUFBb0I7UUFDN0MscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQ2YsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsS0FBSyxFQUFFLFNBQVMsQ0FDZCxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFDbkQsR0FBRyxDQUNKO2dCQUNELE1BQU0sRUFBRSxHQUFHO2dCQUNYLElBQUksRUFBRSxHQUFHO2FBQ1YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLEdBQUc7Z0JBQ2hCLEdBQUcsRUFBRSxHQUFHO2dCQUNSLEtBQUssRUFBRSxHQUFHO2dCQUNWLE1BQU0sRUFBRSxHQUFHO2dCQUNYLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUM7YUFDdEUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0EzRFUsZUFBZTtrR0FBZixlQUFlLG1JQUpmO1lBQ1QsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7U0FDckUsMEJDbEJILGtpQkF5QkEsNGFEVlksT0FBTyxzRUFBRSxTQUFTLDhDQUFFLGdCQUFnQjs7QUFROUM7SUFEQyxlQUFlLEVBQUU7OEJBQ1YsVUFBVTs4Q0FBWTtBQUk5QjtJQURDLGVBQWUsRUFBRTs4QkFDVCxVQUFVOytDQUFZOzJGQVBwQixlQUFlO2tCQVgzQixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLGFBQ3BDO3dCQUNULEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFO3FCQUNyRTs4QkFHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBRU4sS0FBSyxNQUVJLEtBQUs7c0JBQWIsS0FBSztnQkFFTixNQUFNLE1BR04sYUFBYTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJ25nLW1vbmFjby1lZGl0b3InO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRvTnVtYmVyLCB0b1BlcmNlbnQgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCwgcHVibGlzaFJlZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IERyYWdSYW5nZSwgTXV0YWJsZURpcmVjdGl2ZSwgTXV0YWJsZU9wdGlvbnMgfSBmcm9tICcuLi9kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLW1vc2FpYycsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzdHlsZXMuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nU3R5bGUsIEFzeW5jUGlwZSwgTXV0YWJsZURpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTW9uYWNvRWRpdG9yQ29uZmlnLCB1c2VWYWx1ZTogeyBhdXRvTGF5b3V0SW50ZXJ2YWw6IDEgfSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNb3NhaWNDb21wb25lbnQge1xuICBASW5wdXQoKSBsZWZ0OiBEcmFnUmFuZ2UgPSAwO1xuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgbGVmdCQhOiBPYnNlcnZhYmxlPERyYWdSYW5nZT47XG5cbiAgQElucHV0KCkgcmlnaHQ6IERyYWdSYW5nZSA9IDA7XG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByaWdodCQhOiBPYnNlcnZhYmxlPERyYWdSYW5nZT47XG5cbiAgQElucHV0KClcbiAgc3BsaXRMb2NhdGlvbiA9IDUwO1xuXG4gIG11dGFibGVPcHRpb25zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubGVmdCQsIHRoaXMucmlnaHQkXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW2xlZnQsIHJpZ2h0XSkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBkcmFnUmFuZ2U6IFswLCByaWdodCwgMTAwLCBsZWZ0XSxcbiAgICAgICAgICBjdXJzb3JzOiB7XG4gICAgICAgICAgICBtb3ZlOiAnY29sLXJlc2l6ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkgYXMgTXV0YWJsZU9wdGlvbnMsXG4gICAgKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgbGVmdEluc2V0ID0ge1xuICAgIHRvcDogJzAnLFxuICAgIHJpZ2h0OiB0b1BlcmNlbnQodGhpcy5zcGxpdExvY2F0aW9uKSxcbiAgICBib3R0b206ICcwJyxcbiAgICBsZWZ0OiAnMCcsXG4gIH07XG5cbiAgcmlnaHRJbnNldCA9IHtcbiAgICB0b3A6ICcwJyxcbiAgICByaWdodDogJzAnLFxuICAgIGJvdHRvbTogJzAnLFxuICAgIGxlZnQ6IHRvUGVyY2VudCgxMDAgLSB0aGlzLnNwbGl0TG9jYXRpb24pLFxuICB9O1xuXG4gIHNwbGl0SW5zZXQgPSB0aGlzLnJpZ2h0SW5zZXQ7XG5cbiAgZHJhZyhlbGVtZW50OiBIVE1MRWxlbWVudCwgcm9vdDogSFRNTERpdkVsZW1lbnQpIHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5sZWZ0SW5zZXQgPSB7XG4gICAgICAgIHRvcDogJzAnLFxuICAgICAgICByaWdodDogdG9QZXJjZW50KFxuICAgICAgICAgIDEgLSB0b051bWJlcihlbGVtZW50LnN0eWxlLmxlZnQpIC8gcm9vdC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAxMDAsXG4gICAgICAgICksXG4gICAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgICBsZWZ0OiAnMCcsXG4gICAgICB9O1xuICAgICAgdGhpcy5yaWdodEluc2V0ID0ge1xuICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgICAgYm90dG9tOiAnMCcsXG4gICAgICAgIGxlZnQ6IHRvUGVyY2VudCh0b051bWJlcihlbGVtZW50LnN0eWxlLmxlZnQpIC8gcm9vdC5jbGllbnRXaWR0aCwgMTAwKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJtb3NhaWMtcm9vdFwiXG4gICNyb290XG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vc2FpYy1sZWZ0XCJcbiAgICBbbmdTdHlsZV09XCJsZWZ0SW5zZXRcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FjbE1vc2FpY0xlZnRdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibW9zYWljLXNwbGl0XCJcbiAgICBbbmdTdHlsZV09XCJzcGxpdEluc2V0XCJcbiAgICBhY2xNdXRhYmxlXG4gICAgKGFjbE9uRHJhZyk9XCJkcmFnKCRldmVudCwgcm9vdClcIlxuICAgIFthY2xNdXRhYmxlT3B0aW9uc109XCJtdXRhYmxlT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgW2FjbFJlc2l6YWJsZV09XCJmYWxzZVwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibW9zYWljLXJpZ2h0XCJcbiAgICBbbmdTdHlsZV09XCJyaWdodEluc2V0XCJcbiAgPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthY2xNb3NhaWNSaWdodF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MosaicLeftDirective {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MosaicLeftDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: MosaicLeftDirective, selector: "acl-mosaic[aclMosaicLeft]", ngImport: i0 }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MosaicLeftDirective, decorators: [{
8
+ type: Directive,
9
+ args: [{
10
+ selector: 'acl-mosaic[aclMosaicLeft]',
11
+ }]
12
+ }] });
13
+ export class MosaicRightDirective {
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MosaicRightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.1", type: MosaicRightDirective, isStandalone: true, selector: "acl-mosaic[aclMosaicRight]", ngImport: i0 }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: MosaicRightDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: 'acl-mosaic[aclMosaicRight]',
21
+ standalone: true,
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2NvbXBvbmVudHMvbXV0YWJsZS9tb3NhaWMvZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzFDLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3RDOztBQU9ELE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhY2wtbW9zYWljW2FjbE1vc2FpY0xlZnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgTW9zYWljTGVmdERpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdhY2wtbW9zYWljW2FjbE1vc2FpY1JpZ2h0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE1vc2FpY1JpZ2h0RGlyZWN0aXZlIHt9XG4iXX0=
@@ -0,0 +1,16 @@
1
+ const removeSuffix = (str) => str.replace('-resize', '');
2
+ /** 如果cursor存在类似 n-resize、ne-resize,都代表是top 方向 */
3
+ export const isT = (cursor) => removeSuffix(cursor).includes('n');
4
+ /** 是否是right */
5
+ export const isR = (cursor) => removeSuffix(cursor).includes('e');
6
+ /** 是否是bottom */
7
+ export const isB = (cursor) => removeSuffix(cursor).includes('s');
8
+ /** 是否是left */
9
+ export const isL = (cursor) => removeSuffix(cursor).includes('w');
10
+ export const toPx = (num) => num + 'px';
11
+ export const toPercent = (num, base = 1) => num * base + '%';
12
+ export const toNumber = (str) => {
13
+ const p = parseFloat(str);
14
+ return isNaN(p) ? 0 : p;
15
+ };
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9jb21wb25lbnRzL211dGFibGUvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQWlCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLGlEQUFpRDtBQUNqRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLGVBQWU7QUFDZixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLGNBQWM7QUFDZCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztBQUNoRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7SUFDdEMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGN1cnNvciBzdHlsZSBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0NTUy9jdXJzb3JcbiAqL1xuZXhwb3J0IHR5cGUgQ3Vyc29yWCA9ICdlJyB8ICd3JztcbmV4cG9ydCB0eXBlIEN1cnNvclkgPSAnbicgfCAncyc7XG5cbmV4cG9ydCB0eXBlIEN1cnNvciA9IEN1cnNvclggfCBDdXJzb3JZIHwgYCR7Q3Vyc29yWX0ke0N1cnNvclh9YDtcbmV4cG9ydCB0eXBlIFJlc2l6ZUN1cnNvciA9IGAke0N1cnNvcn0tcmVzaXplYDtcblxuY29uc3QgcmVtb3ZlU3VmZml4ID0gKHN0cjogUmVzaXplQ3Vyc29yKSA9PiBzdHIucmVwbGFjZSgnLXJlc2l6ZScsICcnKTtcbi8qKiDlpoLmnpxjdXJzb3LlrZjlnKjnsbvkvLwgbi1yZXNpemXjgIFuZS1yZXNpemXvvIzpg73ku6PooajmmK90b3Ag5pa55ZCRICovXG5leHBvcnQgY29uc3QgaXNUID0gKGN1cnNvcjogUmVzaXplQ3Vyc29yKSA9PiByZW1vdmVTdWZmaXgoY3Vyc29yKS5pbmNsdWRlcygnbicpO1xuLyoqIOaYr+WQpuaYr3JpZ2h0ICovXG5leHBvcnQgY29uc3QgaXNSID0gKGN1cnNvcjogUmVzaXplQ3Vyc29yKSA9PiByZW1vdmVTdWZmaXgoY3Vyc29yKS5pbmNsdWRlcygnZScpO1xuLyoqIOaYr+WQpuaYr2JvdHRvbSAqL1xuZXhwb3J0IGNvbnN0IGlzQiA9IChjdXJzb3I6IFJlc2l6ZUN1cnNvcikgPT4gcmVtb3ZlU3VmZml4KGN1cnNvcikuaW5jbHVkZXMoJ3MnKTtcbi8qKiDmmK/lkKbmmK9sZWZ0ICovXG5leHBvcnQgY29uc3QgaXNMID0gKGN1cnNvcjogUmVzaXplQ3Vyc29yKSA9PiByZW1vdmVTdWZmaXgoY3Vyc29yKS5pbmNsdWRlcygndycpO1xuXG5leHBvcnQgY29uc3QgdG9QeCA9IChudW06IG51bWJlcikgPT4gbnVtICsgJ3B4JztcbmV4cG9ydCBjb25zdCB0b1BlcmNlbnQgPSAobnVtOiBudW1iZXIsIGJhc2UgPSAxKSA9PiBudW0gKiBiYXNlICsgJyUnO1xuZXhwb3J0IGNvbnN0IHRvTnVtYmVyID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHAgPSBwYXJzZUZsb2F0KHN0cik7XG4gIHJldHVybiBpc05hTihwKSA/IDAgOiBwO1xufTtcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { IconComponent } from '@alauda/ui';
2
+ import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class OverviewBannerComponent {
5
+ constructor() {
6
+ this.option = {};
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: OverviewBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: OverviewBannerComponent, isStandalone: true, selector: "acl-overview-banner", inputs: { option: "option" }, ngImport: i0, template: "<div class=\"overview-banner--wrapper\">\n <div class=\"overview-banner\">\n <div class=\"overview-banner__icon\">\n <aui-icon\n class=\"acl-colorful-icon highlight\"\n [icon]=\"'bicolor:' + option?.icon\"\n ></aui-icon>\n </div>\n <div class=\"overview-banner__content\">\n <div class=\"overview-banner__title\">\n {{ option?.title }}\n </div>\n <div class=\"overview-banner__description\">\n {{ option?.description }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".overview-banner{display:flex;align-items:center;padding:24px}.overview-banner--wrapper{border-radius:var(--aui-border-radius-l);margin-bottom:var(--aui-spacing-xl);background-color:rgb(var(--aui-color-primary));background-image:url(/assets/images/overview-banner.svg);background-size:cover;background-position:center}.overview-banner__icon{margin-right:20px}.overview-banner__icon aui-icon{display:flex;font-size:56px;width:1em;height:1em}.overview-banner__content{color:#fff}.overview-banner__title{font-size:24px;line-height:36px;font-weight:var(--aui-font-weight-bolder)}.overview-banner__description{margin-top:4px;font-size:var(--aui-font-size-m)}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: OverviewBannerComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'acl-overview-banner', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [IconComponent], template: "<div class=\"overview-banner--wrapper\">\n <div class=\"overview-banner\">\n <div class=\"overview-banner__icon\">\n <aui-icon\n class=\"acl-colorful-icon highlight\"\n [icon]=\"'bicolor:' + option?.icon\"\n ></aui-icon>\n </div>\n <div class=\"overview-banner__content\">\n <div class=\"overview-banner__title\">\n {{ option?.title }}\n </div>\n <div class=\"overview-banner__description\">\n {{ option?.description }}\n </div>\n </div>\n </div>\n</div>\n", styles: [".overview-banner{display:flex;align-items:center;padding:24px}.overview-banner--wrapper{border-radius:var(--aui-border-radius-l);margin-bottom:var(--aui-spacing-xl);background-color:rgb(var(--aui-color-primary));background-image:url(/assets/images/overview-banner.svg);background-size:cover;background-position:center}.overview-banner__icon{margin-right:20px}.overview-banner__icon aui-icon{display:flex;font-size:56px;width:1em;height:1em}.overview-banner__content{color:#fff}.overview-banner__title{font-size:24px;line-height:36px;font-weight:var(--aui-font-weight-bolder)}.overview-banner__description{margin-top:4px;font-size:var(--aui-font-size-m)}\n"] }]
14
+ }], propDecorators: { option: [{
15
+ type: Input
16
+ }] } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL2NvbXBvbmVudHMvb3ZlcnZpZXctYmFubmVyL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy9jb21wb25lbnRzL292ZXJ2aWV3LWJhbm5lci90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBaUIxRSxNQUFNLE9BQU8sdUJBQXVCO0lBVHBDO1FBV0UsV0FBTSxHQUFHLEVBQTBCLENBQUM7S0FDckM7OEdBSFksdUJBQXVCO2tHQUF2Qix1QkFBdUIsNkdDbEJwQyxraEJBa0JBLHlzQkRGWSxhQUFhOzsyRkFFWix1QkFBdUI7a0JBVG5DLFNBQVM7K0JBQ0UscUJBQXFCLHVCQUdWLEtBQUssbUJBQ1QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxhQUFhLENBQUM7OEJBSXhCLE1BQU07c0JBREwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnZpZXdCYW5uZXJPcHRpb24ge1xuICBpY29uOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1vdmVydmlldy1iYW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJ3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc3R5bGVzLnNjc3MnXSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSWNvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE92ZXJ2aWV3QmFubmVyQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgb3B0aW9uID0ge30gYXMgT3ZlcnZpZXdCYW5uZXJPcHRpb247XG59XG4iLCI8ZGl2IGNsYXNzPVwib3ZlcnZpZXctYmFubmVyLS13cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJvdmVydmlldy1iYW5uZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcnZpZXctYmFubmVyX19pY29uXCI+XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgY2xhc3M9XCJhY2wtY29sb3JmdWwtaWNvbiBoaWdobGlnaHRcIlxuICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgb3B0aW9uPy5pY29uXCJcbiAgICAgID48L2F1aS1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvdmVydmlldy1iYW5uZXJfX2NvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVydmlldy1iYW5uZXJfX3RpdGxlXCI+XG4gICAgICAgIHt7IG9wdGlvbj8udGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3LWJhbm5lcl9fZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgb3B0aW9uPy5kZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=