@tft/interact 13.0.0 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/index.mjs +5 -5
- package/{esm2020 → esm2022}/lib/directives/account-for-scale.directive.mjs +26 -26
- package/{esm2020 → esm2022}/lib/directives/apply-scale.directive.mjs +28 -28
- package/esm2022/lib/directives/auto-scroll.directive.mjs +56 -0
- package/{esm2020 → esm2022}/lib/directives/drag-preview.directive.mjs +20 -20
- package/{esm2020 → esm2022}/lib/directives/drag-root.directive.mjs +32 -32
- package/{esm2020 → esm2022}/lib/directives/draggable.directive.mjs +320 -320
- package/{esm2020 → esm2022}/lib/directives/dropzone.directive.mjs +114 -114
- package/{esm2020 → esm2022}/lib/directives/gesturable.directive.mjs +82 -82
- package/{esm2020 → esm2022}/lib/directives/index.mjs +9 -9
- package/esm2022/lib/directives/resizable.directive.mjs +228 -0
- package/esm2022/lib/interact.module.mjs +66 -0
- package/{esm2020 → esm2022}/lib/models/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/interact.mjs +27 -27
- package/{esm2020 → esm2022}/lib/pipes/array-of-n.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/lib/pipes/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/services/interact.service.mjs +197 -197
- package/{esm2020 → esm2022}/lib/utils/helpers.mjs +34 -34
- package/{esm2020 → esm2022}/lib/utils/index.mjs +1 -1
- package/{esm2020 → esm2022}/tft-interact.mjs +4 -4
- package/{fesm2020 → fesm2022}/tft-interact.mjs +1155 -1155
- package/{fesm2020 → fesm2022}/tft-interact.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/directives/account-for-scale.directive.d.ts +15 -15
- package/lib/directives/apply-scale.directive.d.ts +11 -11
- package/lib/directives/auto-scroll.directive.d.ts +34 -34
- package/lib/directives/drag-preview.directive.d.ts +10 -10
- package/lib/directives/drag-root.directive.d.ts +15 -15
- package/lib/directives/draggable.directive.d.ts +76 -76
- package/lib/directives/dropzone.directive.d.ts +40 -40
- package/lib/directives/gesturable.directive.d.ts +27 -27
- package/lib/directives/index.d.ts +9 -9
- package/lib/directives/resizable.directive.d.ts +61 -61
- package/lib/interact.module.d.ts +20 -20
- package/lib/models/index.d.ts +1 -1
- package/lib/models/interact.d.ts +140 -140
- package/lib/pipes/array-of-n.pipe.d.ts +12 -12
- package/lib/pipes/index.d.ts +1 -1
- package/lib/services/interact.service.d.ts +83 -83
- package/lib/utils/helpers.d.ts +12 -12
- package/lib/utils/index.d.ts +1 -1
- package/package.json +9 -17
- package/tft-interact-15.0.0.tgz +0 -0
- package/esm2020/lib/directives/auto-scroll.directive.mjs +0 -56
- package/esm2020/lib/directives/resizable.directive.mjs +0 -228
- package/esm2020/lib/interact.module.mjs +0 -66
- package/fesm2015/tft-interact.mjs +0 -1203
- package/fesm2015/tft-interact.mjs.map +0 -1
- package/tft-interact-13.0.0.tgz +0 -0
- package/tft-interact.d.ts +0 -5
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Optional, SkipSelf, Output, EventEmitter, Renderer2, Inject } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import interact from 'interactjs';
|
|
4
|
+
import { InteractService } from '../services/interact.service';
|
|
5
|
+
import { DraggableDirective } from './draggable.directive';
|
|
6
|
+
import { DropzoneDirective } from './dropzone.directive';
|
|
7
|
+
import { DragRootDirective } from './drag-root.directive';
|
|
8
|
+
import { AccountForScaleDirective } from './account-for-scale.directive';
|
|
9
|
+
import { DEFAULT_REGISTRY_ID } from '../models';
|
|
10
|
+
import { AutoScrollDirective } from './auto-scroll.directive';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "../services/interact.service";
|
|
13
|
+
import * as i2 from "./drag-root.directive";
|
|
14
|
+
import * as i3 from "./account-for-scale.directive";
|
|
15
|
+
import * as i4 from "./draggable.directive";
|
|
16
|
+
import * as i5 from "./dropzone.directive";
|
|
17
|
+
import * as i6 from "./auto-scroll.directive";
|
|
18
|
+
/** @dynamic */
|
|
19
|
+
export class ResizableDirective {
|
|
20
|
+
get scale() {
|
|
21
|
+
return this.account_for_scale_dir?.scale || this.drag_root_dir?.account_for_scale_dir?.scale;
|
|
22
|
+
}
|
|
23
|
+
constructor(el, _document, interactService, renderer, drag_root_dir, account_for_scale_dir, draggable_dir, dropzone_dir, auto_scroll_dir) {
|
|
24
|
+
this.el = el;
|
|
25
|
+
this._document = _document;
|
|
26
|
+
this.interactService = interactService;
|
|
27
|
+
this.renderer = renderer;
|
|
28
|
+
this.drag_root_dir = drag_root_dir;
|
|
29
|
+
this.account_for_scale_dir = account_for_scale_dir;
|
|
30
|
+
this.draggable_dir = draggable_dir;
|
|
31
|
+
this.dropzone_dir = dropzone_dir;
|
|
32
|
+
this.auto_scroll_dir = auto_scroll_dir;
|
|
33
|
+
this.enableResizeDefault = true;
|
|
34
|
+
// TODO: should this be an input with default or should consuming user set display in styles each time
|
|
35
|
+
this.position = 'absolute';
|
|
36
|
+
this.resizeDisabled = false;
|
|
37
|
+
this.resizeStart = new EventEmitter();
|
|
38
|
+
this.resizeMove = new EventEmitter();
|
|
39
|
+
this.resizeInertiaStart = new EventEmitter();
|
|
40
|
+
this.resizeEnd = new EventEmitter();
|
|
41
|
+
this.defaultConfig = {
|
|
42
|
+
edges: { left: true, right: true, bottom: true, top: true }
|
|
43
|
+
};
|
|
44
|
+
this.activeEdges = { left: false, right: false, top: false, bottom: false };
|
|
45
|
+
this.dragRootEl = drag_root_dir?.el?.nativeElement || this._document.body;
|
|
46
|
+
}
|
|
47
|
+
ngOnInit() {
|
|
48
|
+
this.addResizePropertiesToElement(this.el.nativeElement);
|
|
49
|
+
// we check for a dropzone, we use its id as the registry id if there is on
|
|
50
|
+
// otherwise, we use DEFAULT_REGISTRY_ID as a registry id. This allows us to keep our interactable
|
|
51
|
+
// drag state organized by dropzones.
|
|
52
|
+
this.registryId = this.dropzone_dir?.dropzoneId || DEFAULT_REGISTRY_ID;
|
|
53
|
+
this.interactableId = this.draggable_dir?.interactableId || this.interactService.addDraggableToRegistry(this.registryId, this.interactableId);
|
|
54
|
+
this.interactable = this.initiateResizeEvents({ ...this.defaultConfig, ...this.resizeConfig }, this.el.nativeElement);
|
|
55
|
+
this.alignDimensionsWithInputs(this.width, this.height);
|
|
56
|
+
this.interactableSubscription = this.interactService
|
|
57
|
+
.getInteractableState(this.interactableId, this.registryId)
|
|
58
|
+
.subscribe();
|
|
59
|
+
}
|
|
60
|
+
ngOnChanges(changes) {
|
|
61
|
+
if ((changes.resizeConfig || changes.resizeDisabled) && this.interactable) {
|
|
62
|
+
this.interactable.resizable({ ...this.resizeConfig, enabled: !this.resizeDisabled, });
|
|
63
|
+
}
|
|
64
|
+
if (changes.width || changes.height) {
|
|
65
|
+
this.alignDimensionsWithInputs(this.width, this.height);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
ngOnDestroy() {
|
|
69
|
+
this.interactableSubscription.unsubscribe();
|
|
70
|
+
this.interactService.destroyInteractable(this.interactableId, this.registryId);
|
|
71
|
+
}
|
|
72
|
+
resizeListener(event) {
|
|
73
|
+
const element = this.el.nativeElement;
|
|
74
|
+
const scale = this.scale;
|
|
75
|
+
const { deltaRect } = event;
|
|
76
|
+
const deltaX = deltaRect.left / scale;
|
|
77
|
+
const deltaY = deltaRect.top / scale;
|
|
78
|
+
// We get the width and height directly from the native element because
|
|
79
|
+
// the event dimension can get out of sync when resizing with autoScroll
|
|
80
|
+
const rect = element.getBoundingClientRect();
|
|
81
|
+
const width = (rect.width + deltaRect.width) / scale;
|
|
82
|
+
const height = (rect.height + deltaRect.height) / scale;
|
|
83
|
+
this.interactService.updateSize(this.interactableId, this.registryId, { deltaX, deltaY, width, height }, this.el.nativeElement);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* hook elements into interacts resize event listeners
|
|
87
|
+
* we spread the configs so that the consuming component only overwrites the
|
|
88
|
+
* pieces that it explicitly indicates
|
|
89
|
+
* @param resizeConfig
|
|
90
|
+
* @param nativeElement
|
|
91
|
+
*/
|
|
92
|
+
initiateResizeEvents(resizeConfig, nativeElement) {
|
|
93
|
+
// TODO: This should try and get interactable from tft_draggable if it exists
|
|
94
|
+
const defaultResizeConfig = {
|
|
95
|
+
...resizeConfig,
|
|
96
|
+
enabled: !this.resizeDisabled,
|
|
97
|
+
...(this.auto_scroll_dir && {
|
|
98
|
+
autoScroll: {
|
|
99
|
+
...this.auto_scroll_dir.autoScrollConfig,
|
|
100
|
+
container: this.auto_scroll_dir.el.nativeElement
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
};
|
|
104
|
+
const interactable = this.draggable_dir?.interactable || interact(nativeElement);
|
|
105
|
+
return interactable.resizable(defaultResizeConfig)
|
|
106
|
+
.on('resizestart', (event) => {
|
|
107
|
+
this.activeEdges = event.edges;
|
|
108
|
+
if (this.auto_scroll_dir) {
|
|
109
|
+
this.subscribeToScrollEvents();
|
|
110
|
+
}
|
|
111
|
+
this.resizeStart.emit(this.mapResizeEvent(event));
|
|
112
|
+
})
|
|
113
|
+
.on('resizemove', (event) => {
|
|
114
|
+
if (this.enableResizeDefault) {
|
|
115
|
+
this.resizeListener(event);
|
|
116
|
+
}
|
|
117
|
+
const mappedEvent = this.mapResizeEvent(event);
|
|
118
|
+
this.resizeMove.emit(mappedEvent);
|
|
119
|
+
})
|
|
120
|
+
.on('resizeinertiastart', (event) => this.resizeInertiaStart.emit(this.mapResizeEvent(event)))
|
|
121
|
+
.on('resizeend', (event) => {
|
|
122
|
+
if (this.auto_scroll_dir) {
|
|
123
|
+
this.scrollEventsSubscription.unsubscribe();
|
|
124
|
+
}
|
|
125
|
+
this.activeEdges = { left: false, right: false, top: false, bottom: false };
|
|
126
|
+
this.resizeEnd.emit(this.mapResizeEvent(event));
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
mapResizeEvent(event) {
|
|
130
|
+
const target = this.el.nativeElement;
|
|
131
|
+
const relatedTarget = this.draggable_dir?.dropzone_dir?.el.nativeElement;
|
|
132
|
+
const scale = this.scale;
|
|
133
|
+
const positionInDropTarget = target && relatedTarget
|
|
134
|
+
? this.interactService.calculatePositionInElement(relatedTarget, target, scale)
|
|
135
|
+
: null;
|
|
136
|
+
return {
|
|
137
|
+
interactEvent: event,
|
|
138
|
+
resizeRef: this,
|
|
139
|
+
dragRef: this.draggable_dir,
|
|
140
|
+
dragOrigin: this.dropzone_dir,
|
|
141
|
+
dropTarget: this.el.nativeElement.dropTarget,
|
|
142
|
+
positionInDropTarget,
|
|
143
|
+
size: {
|
|
144
|
+
width: target.clientWidth / scale,
|
|
145
|
+
height: target.clientHeight / scale
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
alignDimensionsWithInputs(width, height) {
|
|
150
|
+
this.interactService.updateSize(this.interactableId, this.registryId, { deltaX: 0, deltaY: 0, width, height }, this.el.nativeElement);
|
|
151
|
+
}
|
|
152
|
+
addResizePropertiesToElement(nativeElement) {
|
|
153
|
+
this.renderer.setProperty(nativeElement, 'resizeRef', this);
|
|
154
|
+
}
|
|
155
|
+
subscribeToScrollEvents() {
|
|
156
|
+
this.scrollEventsSubscription = this.auto_scroll_dir.scrollDeltaObserver.subscribe(({ scrollLeft, scrollTop }) => {
|
|
157
|
+
const scale = this.scale;
|
|
158
|
+
const target = this.el.nativeElement;
|
|
159
|
+
const { width: prevWidth, height: prevHeight } = target.getBoundingClientRect();
|
|
160
|
+
const deltaHeight = scrollTop * (this.activeEdges.top ? -1 : this.activeEdges.bottom ? 1 : 0);
|
|
161
|
+
const deltaWidth = scrollLeft * (this.activeEdges.left ? -1 : this.activeEdges.right ? 1 : 0);
|
|
162
|
+
const height = (prevHeight + deltaHeight) / scale;
|
|
163
|
+
const width = (prevWidth + deltaWidth) / scale;
|
|
164
|
+
const deltaX = this.activeEdges.left ? (scrollLeft / scale) : 0;
|
|
165
|
+
const deltaY = this.activeEdges.top ? (scrollTop / scale) : 0;
|
|
166
|
+
this.interactService.updateSize(this.interactableId, this.registryId, { deltaX, deltaY, width, height }, this.el.nativeElement);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ResizableDirective, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.InteractService }, { token: i0.Renderer2 }, { token: i2.DragRootDirective, optional: true }, { token: i3.AccountForScaleDirective, optional: true }, { token: i4.DraggableDirective, optional: true }, { token: i5.DropzoneDirective, optional: true, skipSelf: true }, { token: i6.AutoScrollDirective, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
170
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: ResizableDirective, selector: "[tftResizable]", inputs: { enableResizeDefault: "enableResizeDefault", position: "position", resizeConfig: "resizeConfig", interactableId: "interactableId", width: "width", height: "height", resizeDisabled: "resizeDisabled" }, outputs: { resizeStart: "resizeStart", resizeMove: "resizeMove", resizeInertiaStart: "resizeInertiaStart", resizeEnd: "resizeEnd" }, host: { properties: { "style.touchAction": "this.resizeDisabled ? \"auto\" : \"none\"", "style.position": "position", "style.boxSizing": "\"border-box\"" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
171
|
+
}
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ResizableDirective, decorators: [{
|
|
173
|
+
type: Directive,
|
|
174
|
+
args: [{
|
|
175
|
+
selector: '[tftResizable]',
|
|
176
|
+
// eslint-disable-next-line @angular-eslint/no-host-metadata-property
|
|
177
|
+
host: {
|
|
178
|
+
// prevents touch events from colliding with with mouse events
|
|
179
|
+
// on touch screen
|
|
180
|
+
'[style.touchAction]': 'this.resizeDisabled ? "auto" : "none"',
|
|
181
|
+
// default to absolute here to accommodate likely use cases
|
|
182
|
+
// consuming component can easily over ride with position input
|
|
183
|
+
'[style.position]': 'position',
|
|
184
|
+
// follows interactjs suggested practices
|
|
185
|
+
'[style.boxSizing]': '"border-box"',
|
|
186
|
+
}
|
|
187
|
+
}]
|
|
188
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: Document, decorators: [{
|
|
189
|
+
type: Inject,
|
|
190
|
+
args: [DOCUMENT]
|
|
191
|
+
}] }, { type: i1.InteractService }, { type: i0.Renderer2 }, { type: i2.DragRootDirective, decorators: [{
|
|
192
|
+
type: Optional
|
|
193
|
+
}] }, { type: i3.AccountForScaleDirective, decorators: [{
|
|
194
|
+
type: Optional
|
|
195
|
+
}] }, { type: i4.DraggableDirective, decorators: [{
|
|
196
|
+
type: Optional
|
|
197
|
+
}] }, { type: i5.DropzoneDirective, decorators: [{
|
|
198
|
+
type: Optional
|
|
199
|
+
}, {
|
|
200
|
+
type: SkipSelf
|
|
201
|
+
}] }, { type: i6.AutoScrollDirective, decorators: [{
|
|
202
|
+
type: Optional
|
|
203
|
+
}, {
|
|
204
|
+
type: SkipSelf
|
|
205
|
+
}] }], propDecorators: { enableResizeDefault: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], position: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], resizeConfig: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], interactableId: [{
|
|
212
|
+
type: Input
|
|
213
|
+
}], width: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], height: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], resizeDisabled: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], resizeStart: [{
|
|
220
|
+
type: Output
|
|
221
|
+
}], resizeMove: [{
|
|
222
|
+
type: Output
|
|
223
|
+
}], resizeInertiaStart: [{
|
|
224
|
+
type: Output
|
|
225
|
+
}], resizeEnd: [{
|
|
226
|
+
type: Output
|
|
227
|
+
}] } });
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvaW50ZXJhY3Qvc3JjL2xpYi9kaXJlY3RpdmVzL3Jlc2l6YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFpQyxtQkFBbUIsRUFBa0IsTUFBTSxXQUFXLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7O0FBUTlELGVBQWU7QUFnQmYsTUFBTSxPQUFPLGtCQUFrQjtJQTZCN0IsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxDQUFDO0lBQy9GLENBQUM7SUFFRCxZQUNTLEVBQWMsRUFDSyxTQUFtQixFQUNyQyxlQUFnQyxFQUNoQyxRQUFtQixFQUNQLGFBQWlDLEVBQ2xD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Q1Asa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQWY5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLHFFQUFxRTtvQkFDckUsSUFBSSxFQUFFO3dCQUNKLDhEQUE4RDt3QkFDOUQsa0JBQWtCO3dCQUNsQixxQkFBcUIsRUFBRSx1Q0FBdUM7d0JBQzlELDJEQUEyRDt3QkFDM0QsK0RBQStEO3dCQUMvRCxrQkFBa0IsRUFBRSxVQUFVO3dCQUM5Qix5Q0FBeUM7d0JBQ3pDLG1CQUFtQixFQUFFLGNBQWM7cUJBRXBDO2lCQUNGOzswQkFvQ0ksTUFBTTsyQkFBQyxRQUFROzswQkFHZixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksUUFBUTt5Q0F4Q2QsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBJbnB1dCwgT3B0aW9uYWwsIFNraXBTZWxmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBSZW5kZXJlcjIsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgaW50ZXJhY3QgZnJvbSAnaW50ZXJhY3Rqcyc7XG5pbXBvcnQgeyBJbnRlcmFjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcmFjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2l6YWJsZU9wdGlvbnMsIFJlc2l6ZUV2ZW50LCBJbnRlcmFjdGFibGUgfSBmcm9tICdAaW50ZXJhY3Rqcy90eXBlcy9pbmRleCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZ2dhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wem9uZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcHpvbmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyYWdSb290RGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnLXJvb3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFjY291bnRGb3JTY2FsZURpcmVjdGl2ZSB9IGZyb20gJy4vYWNjb3VudC1mb3Itc2NhbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nUmVzaXplRXZlbnQsIFRmdFJlc2l6ZUV2ZW50LCBERUZBVUxUX1JFR0lTVFJZX0lELCBUZnREcmFnRWxlbWVudCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBBdXRvU2Nyb2xsRGlyZWN0aXZlIH0gZnJvbSAnLi9hdXRvLXNjcm9sbC5kaXJlY3RpdmUnO1xuXG5pbnRlcmZhY2UgQWN0aXZlRWRnZXMge1xuICB0b3A6IGJvb2xlYW47XG4gIGJvdHRvbTogYm9vbGVhbjtcbiAgbGVmdDogYm9vbGVhbjtcbiAgcmlnaHQ6IGJvb2xlYW47XG59XG4vKiogQGR5bmFtaWMgKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZnRSZXNpemFibGVdJyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAvLyBwcmV2ZW50cyB0b3VjaCBldmVudHMgZnJvbSBjb2xsaWRpbmcgd2l0aCB3aXRoIG1vdXNlIGV2ZW50c1xuICAgIC8vIG9uIHRvdWNoIHNjcmVlblxuICAgICdbc3R5bGUudG91Y2hBY3Rpb25dJzogJ3RoaXMucmVzaXplRGlzYWJsZWQgPyBcImF1dG9cIiA6IFwibm9uZVwiJyxcbiAgICAvLyBkZWZhdWx0IHRvIGFic29sdXRlIGhlcmUgdG8gYWNjb21tb2RhdGUgbGlrZWx5IHVzZSBjYXNlc1xuICAgIC8vIGNvbnN1bWluZyBjb21wb25lbnQgY2FuIGVhc2lseSBvdmVyIHJpZGUgd2l0aCBwb3NpdGlvbiBpbnB1dFxuICAgICdbc3R5bGUucG9zaXRpb25dJzogJ3Bvc2l0aW9uJyxcbiAgICAvLyBmb2xsb3dzIGludGVyYWN0anMgc3VnZ2VzdGVkIHByYWN0aWNlc1xuICAgICdbc3R5bGUuYm94U2l6aW5nXSc6ICdcImJvcmRlci1ib3hcIicsXG5cbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBlbmFibGVSZXNpemVEZWZhdWx0ID0gdHJ1ZTtcbiAgLy8gVE9ETzogc2hvdWxkIHRoaXMgYmUgYW4gaW5wdXQgd2l0aCBkZWZhdWx0IG9yIHNob3VsZCBjb25zdW1pbmcgdXNlciBzZXQgZGlzcGxheSBpbiBzdHlsZXMgZWFjaCB0aW1lXG4gIEBJbnB1dCgpIHBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgQElucHV0KCkgcmVzaXplQ29uZmlnOiBQYXJ0aWFsPEludGVyYWN0Lk9yQm9vbGVhbjxSZXNpemFibGVPcHRpb25zPj47XG4gIEBJbnB1dCgpIGludGVyYWN0YWJsZUlkOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXI7XG4gIEBJbnB1dCgpIHJlc2l6ZURpc2FibGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHJlc2l6ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxUZnRSZXNpemVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlc2l6ZU1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFRmdFJlc2l6ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVzaXplSW5lcnRpYVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxUZnRSZXNpemVFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlc2l6ZUVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGZ0UmVzaXplRXZlbnQ+KCk7XG5cbiAgZGVmYXVsdENvbmZpZzogUGFydGlhbDxJbnRlcmFjdC5PckJvb2xlYW48UmVzaXphYmxlT3B0aW9ucz4+ID0ge1xuICAgIGVkZ2VzOiB7IGxlZnQ6IHRydWUsIHJpZ2h0OiB0cnVlLCBib3R0b206IHRydWUsIHRvcDogdHJ1ZSB9XG4gIH07XG4gIHJlZ2lzdHJ5SWQ6IHN0cmluZztcbiAgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGU7XG4gIC8vIFRoZVxuICBkcmFnUm9vdEVsOiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIGFjdGl2ZUVkZ2VzOiBBY3RpdmVFZGdlcyA9IHtsZWZ0OiBmYWxzZSwgcmlnaHQ6IGZhbHNlLCB0b3A6IGZhbHNlLCBib3R0b206IGZhbHNlfVxuICBwcml2YXRlIGludGVyYWN0YWJsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGdldCBzY2FsZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFjY291bnRfZm9yX3NjYWxlX2Rpcj8uc2NhbGUgfHwgdGhpcy5kcmFnX3Jvb3RfZGlyPy5hY2NvdW50X2Zvcl9zY2FsZV9kaXI/LnNjYWxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIGludGVyYWN0U2VydmljZTogSW50ZXJhY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRyYWdfcm9vdF9kaXI/OiBEcmFnUm9vdERpcmVjdGl2ZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgYWNjb3VudF9mb3Jfc2NhbGVfZGlyPzogQWNjb3VudEZvclNjYWxlRGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZHJhZ2dhYmxlX2Rpcj86IERyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIGRyb3B6b25lX2Rpcj86IERyb3B6b25lRGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHB1YmxpYyBhdXRvX3Njcm9sbF9kaXI/OiBBdXRvU2Nyb2xsRGlyZWN0aXZlXG5cblxuICApIHtcbiAgICB0aGlzLmRyYWdSb290RWwgPSAoZHJhZ19yb290X2Rpcj8uZWw/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IHRoaXMuX2RvY3VtZW50LmJvZHk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZFJlc2l6ZVByb3BlcnRpZXNUb0VsZW1lbnQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcblxuICAgIC8vIHdlIGNoZWNrIGZvciBhIGRyb3B6b25lLCB3ZSB1c2UgaXRzIGlkIGFzIHRoZSByZWdpc3RyeSBpZCBpZiB0aGVyZSBpcyBvblxuICAgIC8vIG90aGVyd2lzZSwgd2UgdXNlIERFRkFVTFRfUkVHSVNUUllfSUQgYXMgYSByZWdpc3RyeSBpZC4gVGhpcyBhbGxvd3MgdXMgdG8ga2VlcCBvdXIgaW50ZXJhY3RhYmxlXG4gICAgLy8gZHJhZyBzdGF0ZSBvcmdhbml6ZWQgYnkgZHJvcHpvbmVzLlxuICAgIHRoaXMucmVnaXN0cnlJZCA9IHRoaXMuZHJvcHpvbmVfZGlyPy5kcm9wem9uZUlkIHx8IERFRkFVTFRfUkVHSVNUUllfSUQ7XG5cbiAgICB0aGlzLmludGVyYWN0YWJsZUlkID0gdGhpcy5kcmFnZ2FibGVfZGlyPy5pbnRlcmFjdGFibGVJZCB8fCB0aGlzLmludGVyYWN0U2VydmljZS5hZGREcmFnZ2FibGVUb1JlZ2lzdHJ5KHRoaXMucmVnaXN0cnlJZCwgdGhpcy5pbnRlcmFjdGFibGVJZCk7XG5cbiAgICB0aGlzLmludGVyYWN0YWJsZSA9IHRoaXMuaW5pdGlhdGVSZXNpemVFdmVudHMoXG4gICAgICB7Li4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi50aGlzLnJlc2l6ZUNvbmZpZyB9LFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgKTtcblxuICAgIHRoaXMuYWxpZ25EaW1lbnNpb25zV2l0aElucHV0cyh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7XG5cbiAgICB0aGlzLmludGVyYWN0YWJsZVN1YnNjcmlwdGlvbiA9IHRoaXMuaW50ZXJhY3RTZXJ2aWNlXG4gICAgICAuZ2V0SW50ZXJhY3RhYmxlU3RhdGUodGhpcy5pbnRlcmFjdGFibGVJZCwgdGhpcy5yZWdpc3RyeUlkKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgoY2hhbmdlcy5yZXNpemVDb25maWcgfHwgY2hhbmdlcy5yZXNpemVEaXNhYmxlZCkgJiYgdGhpcy5pbnRlcmFjdGFibGUpIHtcbiAgICAgIHRoaXMuaW50ZXJhY3RhYmxlLnJlc2l6YWJsZSh7Li4udGhpcy5yZXNpemVDb25maWcsIGVuYWJsZWQ6ICF0aGlzLnJlc2l6ZURpc2FibGVkLH0pO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy53aWR0aCB8fCBjaGFuZ2VzLmhlaWdodCkge1xuICAgICAgdGhpcy5hbGlnbkRpbWVuc2lvbnNXaXRoSW5wdXRzKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmludGVyYWN0YWJsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW50ZXJhY3RTZXJ2aWNlLmRlc3Ryb3lJbnRlcmFjdGFibGUodGhpcy5pbnRlcmFjdGFibGVJZCwgdGhpcy5yZWdpc3RyeUlkKTtcbiAgfVxuXG4gIHJlc2l6ZUxpc3RlbmVyKGV2ZW50OiBSZXNpemVFdmVudCkge1xuICAgIGNvbnN0IGVsZW1lbnQ6IFRmdERyYWdFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcbiAgICBjb25zdCB7ZGVsdGFSZWN0fSA9IGV2ZW50O1xuICAgIGNvbnN0IGRlbHRhWCA9IGRlbHRhUmVjdC5sZWZ0L3NjYWxlO1xuICAgIGNvbnN0IGRlbHRhWSA9IGRlbHRhUmVjdC50b3Avc2NhbGU7XG4gICAgLy8gV2UgZ2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGRpcmVjdGx5IGZyb20gdGhlIG5hdGl2ZSBlbGVtZW50IGJlY2F1c2VcbiAgICAvLyB0aGUgZXZlbnQgZGltZW5zaW9uIGNhbiBnZXQgb3V0IG9mIHN5bmMgd2hlbiByZXNpemluZyB3aXRoIGF1dG9TY3JvbGxcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB3aWR0aCA9IChyZWN0LndpZHRoICsgZGVsdGFSZWN0LndpZHRoKS9zY2FsZTtcbiAgICBjb25zdCBoZWlnaHQgPSAocmVjdC5oZWlnaHQgKyBkZWx0YVJlY3QuaGVpZ2h0KS9zY2FsZTtcblxuICAgIHRoaXMuaW50ZXJhY3RTZXJ2aWNlLnVwZGF0ZVNpemUoXG4gICAgICB0aGlzLmludGVyYWN0YWJsZUlkLFxuICAgICAgdGhpcy5yZWdpc3RyeUlkLFxuICAgICAge2RlbHRhWCwgZGVsdGFZLCB3aWR0aCwgaGVpZ2h0fSxcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqICBob29rIGVsZW1lbnRzIGludG8gaW50ZXJhY3RzIHJlc2l6ZSBldmVudCBsaXN0ZW5lcnNcbiAgICogIHdlIHNwcmVhZCB0aGUgY29uZmlncyBzbyB0aGF0IHRoZSBjb25zdW1pbmcgY29tcG9uZW50IG9ubHkgb3ZlcndyaXRlcyB0aGVcbiAgICogIHBpZWNlcyB0aGF0IGl0IGV4cGxpY2l0bHkgaW5kaWNhdGVzXG4gICAqIEBwYXJhbSByZXNpemVDb25maWdcbiAgICogQHBhcmFtIG5hdGl2ZUVsZW1lbnRcbiAgICovXG4gIGluaXRpYXRlUmVzaXplRXZlbnRzKHJlc2l6ZUNvbmZpZzogUGFydGlhbDxJbnRlcmFjdC5PckJvb2xlYW48UmVzaXphYmxlT3B0aW9ucz4+LCBuYXRpdmVFbGVtZW50OiBUZnREcmFnRWxlbWVudCkge1xuICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIHRyeSBhbmQgZ2V0IGludGVyYWN0YWJsZSBmcm9tIHRmdF9kcmFnZ2FibGUgaWYgaXQgZXhpc3RzXG4gICAgY29uc3QgZGVmYXVsdFJlc2l6ZUNvbmZpZyA9IHtcbiAgICAgIC4uLnJlc2l6ZUNvbmZpZyxcbiAgICAgIGVuYWJsZWQ6ICF0aGlzLnJlc2l6ZURpc2FibGVkLFxuICAgICAgLi4uKHRoaXMuYXV0b19zY3JvbGxfZGlyICYmIHtcbiAgICAgICAgYXV0b1Njcm9sbDoge1xuICAgICAgICAgIC4uLnRoaXMuYXV0b19zY3JvbGxfZGlyLmF1dG9TY3JvbGxDb25maWcsXG4gICAgICAgICAgY29udGFpbmVyOiB0aGlzLmF1dG9fc2Nyb2xsX2Rpci5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfTtcbiAgICBjb25zdCBpbnRlcmFjdGFibGUgPSB0aGlzLmRyYWdnYWJsZV9kaXI/LmludGVyYWN0YWJsZSB8fCBpbnRlcmFjdChuYXRpdmVFbGVtZW50KTtcbiAgICByZXR1cm4gaW50ZXJhY3RhYmxlLnJlc2l6YWJsZShkZWZhdWx0UmVzaXplQ29uZmlnKVxuICAgICAgLm9uKCdyZXNpemVzdGFydCcsIChldmVudDogTmdSZXNpemVFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2ZUVkZ2VzID0gZXZlbnQuZWRnZXMgYXMgQWN0aXZlRWRnZXM7XG4gICAgICAgIGlmICh0aGlzLmF1dG9fc2Nyb2xsX2Rpcikge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9TY3JvbGxFdmVudHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2l6ZVN0YXJ0LmVtaXQodGhpcy5tYXBSZXNpemVFdmVudChldmVudCkpXG4gICAgICB9KVxuICAgICAgLm9uKCdyZXNpemVtb3ZlJywgIChldmVudDogTmdSZXNpemVFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lbmFibGVSZXNpemVEZWZhdWx0KSB7XG4gICAgICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcihldmVudClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRFdmVudCA9IHRoaXMubWFwUmVzaXplRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLnJlc2l6ZU1vdmUuZW1pdChtYXBwZWRFdmVudClcbiAgICAgIH0pXG4gICAgICAub24oJ3Jlc2l6ZWluZXJ0aWFzdGFydCcsIChldmVudDogTmdSZXNpemVFdmVudCkgPT4gdGhpcy5yZXNpemVJbmVydGlhU3RhcnQuZW1pdCh0aGlzLm1hcFJlc2l6ZUV2ZW50KGV2ZW50KSkpXG4gICAgICAub24oJ3Jlc2l6ZWVuZCcsIChldmVudDogTmdSZXNpemVFdmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hdXRvX3Njcm9sbF9kaXIpIHtcbiAgICAgICAgICB0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlRWRnZXMgPSB7bGVmdDogZmFsc2UsIHJpZ2h0OiBmYWxzZSwgdG9wOiBmYWxzZSwgYm90dG9tOiBmYWxzZX1cblxuICAgICAgICB0aGlzLnJlc2l6ZUVuZC5lbWl0KHRoaXMubWFwUmVzaXplRXZlbnQoZXZlbnQpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbWFwUmVzaXplRXZlbnQoZXZlbnQ6IE5nUmVzaXplRXZlbnQgKTogVGZ0UmVzaXplRXZlbnQge1xuICAgIGNvbnN0IHRhcmdldCAgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgVGZ0RHJhZ0VsZW1lbnQ7XG4gICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IHRoaXMuZHJhZ2dhYmxlX2Rpcj8uZHJvcHpvbmVfZGlyPy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcbiAgICBjb25zdCBwb3NpdGlvbkluRHJvcFRhcmdldCA9IHRhcmdldCAmJiByZWxhdGVkVGFyZ2V0XG4gICAgICA/IHRoaXMuaW50ZXJhY3RTZXJ2aWNlLmNhbGN1bGF0ZVBvc2l0aW9uSW5FbGVtZW50KHJlbGF0ZWRUYXJnZXQsIHRhcmdldCwgc2NhbGUpXG4gICAgICA6IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVyYWN0RXZlbnQ6IGV2ZW50LFxuICAgICAgcmVzaXplUmVmOiB0aGlzLFxuICAgICAgZHJhZ1JlZjogdGhpcy5kcmFnZ2FibGVfZGlyLFxuICAgICAgZHJhZ09yaWdpbjogdGhpcy5kcm9wem9uZV9kaXIsXG4gICAgICBkcm9wVGFyZ2V0OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZHJvcFRhcmdldCxcbiAgICAgIHBvc2l0aW9uSW5Ecm9wVGFyZ2V0LFxuICAgICAgc2l6ZToge1xuICAgICAgICB3aWR0aDogdGFyZ2V0LmNsaWVudFdpZHRoIC8gc2NhbGUsXG4gICAgICAgIGhlaWdodDogdGFyZ2V0LmNsaWVudEhlaWdodCAvIHNjYWxlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWxpZ25EaW1lbnNpb25zV2l0aElucHV0cyh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMuaW50ZXJhY3RTZXJ2aWNlLnVwZGF0ZVNpemUoXG4gICAgICB0aGlzLmludGVyYWN0YWJsZUlkLFxuICAgICAgdGhpcy5yZWdpc3RyeUlkLFxuICAgICAge2RlbHRhWDogMCwgZGVsdGFZOiAwLCB3aWR0aCwgaGVpZ2h0fSxcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudFxuICAgICk7XG4gIH1cblxuICBhZGRSZXNpemVQcm9wZXJ0aWVzVG9FbGVtZW50KG5hdGl2ZUVsZW1lbnQ6IFRmdERyYWdFbGVtZW50KSB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShuYXRpdmVFbGVtZW50LCAncmVzaXplUmVmJywgdGhpcyk7XG4gIH1cblxuICBzdWJzY3JpYmVUb1Njcm9sbEV2ZW50cygpIHtcbiAgICB0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMuYXV0b19zY3JvbGxfZGlyLnNjcm9sbERlbHRhT2JzZXJ2ZXIuc3Vic2NyaWJlKCh7c2Nyb2xsTGVmdCwgc2Nyb2xsVG9wfSkgPT4ge1xuICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3Qge3dpZHRoOiBwcmV2V2lkdGgsIGhlaWdodDogcHJldkhlaWdodH0gPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGNvbnN0IGRlbHRhSGVpZ2h0ID0gc2Nyb2xsVG9wICogKHRoaXMuYWN0aXZlRWRnZXMudG9wID8gLTEgOiB0aGlzLmFjdGl2ZUVkZ2VzLmJvdHRvbSA/IDEgOiAwKTtcbiAgICAgIGNvbnN0IGRlbHRhV2lkdGggPSBzY3JvbGxMZWZ0ICogKHRoaXMuYWN0aXZlRWRnZXMubGVmdCA/IC0xIDogdGhpcy5hY3RpdmVFZGdlcy5yaWdodCA/IDEgOiAwKTtcblxuICAgICAgY29uc3QgaGVpZ2h0ID0gKHByZXZIZWlnaHQgKyBkZWx0YUhlaWdodCkgLyBzY2FsZTtcbiAgICAgIGNvbnN0IHdpZHRoID0gKHByZXZXaWR0aCArIGRlbHRhV2lkdGgpIC8gc2NhbGU7XG4gICAgICBjb25zdCBkZWx0YVggPSB0aGlzLmFjdGl2ZUVkZ2VzLmxlZnQgPyAoc2Nyb2xsTGVmdCAvIHNjYWxlKSA6IDA7XG4gICAgICBjb25zdCBkZWx0YVkgPSB0aGlzLmFjdGl2ZUVkZ2VzLnRvcCA/IChzY3JvbGxUb3AgLyBzY2FsZSkgOiAwO1xuICAgICAgdGhpcy5pbnRlcmFjdFNlcnZpY2UudXBkYXRlU2l6ZShcbiAgICAgICAgdGhpcy5pbnRlcmFjdGFibGVJZCxcbiAgICAgICAgdGhpcy5yZWdpc3RyeUlkLFxuICAgICAgICB7ZGVsdGFYLCBkZWx0YVksIHdpZHRoLCBoZWlnaHR9LFxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ArrayOfNPipe } from './pipes/array-of-n.pipe';
|
|
4
|
+
import { ApplyScaleDirective, DraggableDirective, DragRootDirective, AutoScrollDirective, AccountForScaleDirective, GesturableDirective, ResizableDirective, DropzoneDirective, DragPreviewDirective } from './directives';
|
|
5
|
+
import { InteractService } from './services/interact.service';
|
|
6
|
+
import { INTERACT_ROOT_CONFIG } from './models';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
const EXPORTS = [
|
|
9
|
+
DraggableDirective,
|
|
10
|
+
ResizableDirective,
|
|
11
|
+
DropzoneDirective,
|
|
12
|
+
GesturableDirective,
|
|
13
|
+
DragRootDirective,
|
|
14
|
+
AutoScrollDirective,
|
|
15
|
+
AccountForScaleDirective,
|
|
16
|
+
ApplyScaleDirective,
|
|
17
|
+
DragPreviewDirective,
|
|
18
|
+
ArrayOfNPipe,
|
|
19
|
+
];
|
|
20
|
+
export class InteractModule {
|
|
21
|
+
static forRoot(config) {
|
|
22
|
+
const defaultConfig = { cssDimensionUnit: 'px' };
|
|
23
|
+
return {
|
|
24
|
+
ngModule: InteractModule,
|
|
25
|
+
providers: [
|
|
26
|
+
{ provide: INTERACT_ROOT_CONFIG, useValue: { ...defaultConfig, ...config } },
|
|
27
|
+
InteractService
|
|
28
|
+
]
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InteractModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
32
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: InteractModule, declarations: [DraggableDirective,
|
|
33
|
+
ResizableDirective,
|
|
34
|
+
DropzoneDirective,
|
|
35
|
+
GesturableDirective,
|
|
36
|
+
DragRootDirective,
|
|
37
|
+
AutoScrollDirective,
|
|
38
|
+
AccountForScaleDirective,
|
|
39
|
+
ApplyScaleDirective,
|
|
40
|
+
DragPreviewDirective,
|
|
41
|
+
ArrayOfNPipe], imports: [CommonModule], exports: [DraggableDirective,
|
|
42
|
+
ResizableDirective,
|
|
43
|
+
DropzoneDirective,
|
|
44
|
+
GesturableDirective,
|
|
45
|
+
DragRootDirective,
|
|
46
|
+
AutoScrollDirective,
|
|
47
|
+
AccountForScaleDirective,
|
|
48
|
+
ApplyScaleDirective,
|
|
49
|
+
DragPreviewDirective,
|
|
50
|
+
ArrayOfNPipe] }); }
|
|
51
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InteractModule, imports: [CommonModule] }); }
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InteractModule, decorators: [{
|
|
54
|
+
type: NgModule,
|
|
55
|
+
args: [{
|
|
56
|
+
imports: [CommonModule],
|
|
57
|
+
// providers: [{ provide: INTERACT_ROOT_CONFIG, useValue: 'px' }],
|
|
58
|
+
declarations: [
|
|
59
|
+
...EXPORTS,
|
|
60
|
+
],
|
|
61
|
+
exports: [
|
|
62
|
+
...EXPORTS
|
|
63
|
+
]
|
|
64
|
+
}]
|
|
65
|
+
}] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9pbnRlcmFjdC9zcmMvbGliL2ludGVyYWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzTixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFJcEUsTUFBTSxPQUFPLEdBQUc7SUFDZCxrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQix3QkFBd0I7SUFDeEIsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixZQUFZO0NBQ2IsQ0FBQztBQWFGLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMEI7UUFDdkMsTUFBTSxhQUFhLEdBQXVCLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFDLENBQUE7UUFDbEUsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE1BQU0sRUFBQyxFQUFFO2dCQUMxRSxlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQUNKLENBQUM7OEdBVlUsY0FBYzsrR0FBZCxjQUFjLGlCQXZCekIsa0JBQWtCO1lBQ2xCLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsWUFBWSxhQUtGLFlBQVksYUFkdEIsa0JBQWtCO1lBQ2xCLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsd0JBQXdCO1lBQ3hCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsWUFBWTsrR0FjRCxjQUFjLFlBVGYsWUFBWTs7MkZBU1gsY0FBYztrQkFWMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLGtFQUFrRTtvQkFDbEUsWUFBWSxFQUFFO3dCQUNaLEdBQUcsT0FBTztxQkFDWDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxPQUFPO3FCQUNYO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBcnJheU9mTlBpcGUgfSBmcm9tICcuL3BpcGVzL2FycmF5LW9mLW4ucGlwZSc7XG5pbXBvcnQgeyBBcHBseVNjYWxlRGlyZWN0aXZlLCBEcmFnZ2FibGVEaXJlY3RpdmUsIERyYWdSb290RGlyZWN0aXZlLCBBdXRvU2Nyb2xsRGlyZWN0aXZlLCBBY2NvdW50Rm9yU2NhbGVEaXJlY3RpdmUsIEdlc3R1cmFibGVEaXJlY3RpdmUsIFJlc2l6YWJsZURpcmVjdGl2ZSwgRHJvcHpvbmVEaXJlY3RpdmUsIERyYWdQcmV2aWV3RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEludGVyYWN0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaW50ZXJhY3Quc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcmFjdFJvb3RDb25maWcsIElOVEVSQUNUX1JPT1RfQ09ORklHIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5cblxuY29uc3QgRVhQT1JUUyA9IFtcbiAgRHJhZ2dhYmxlRGlyZWN0aXZlLFxuICBSZXNpemFibGVEaXJlY3RpdmUsXG4gIERyb3B6b25lRGlyZWN0aXZlLFxuICBHZXN0dXJhYmxlRGlyZWN0aXZlLFxuICBEcmFnUm9vdERpcmVjdGl2ZSxcbiAgQXV0b1Njcm9sbERpcmVjdGl2ZSxcbiAgQWNjb3VudEZvclNjYWxlRGlyZWN0aXZlLFxuICBBcHBseVNjYWxlRGlyZWN0aXZlLFxuICBEcmFnUHJldmlld0RpcmVjdGl2ZSxcbiAgQXJyYXlPZk5QaXBlLFxuXTtcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgLy8gcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJTlRFUkFDVF9ST09UX0NPTkZJRywgdXNlVmFsdWU6ICdweCcgfV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC4uLkVYUE9SVFMsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICAuLi5FWFBPUlRTXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IEludGVyYWN0Um9vdENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SW50ZXJhY3RNb2R1bGU+IHtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBJbnRlcmFjdFJvb3RDb25maWcgPSB7Y3NzRGltZW5zaW9uVW5pdDogJ3B4J31cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEludGVyYWN0TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogSU5URVJBQ1RfUk9PVF9DT05GSUcsIHVzZVZhbHVlOiB7Li4uZGVmYXVsdENvbmZpZywgLi4uY29uZmlnfSB9LFxuICAgICAgICBJbnRlcmFjdFNlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './interact';
|
|
1
|
+
export * from './interact';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnRlcmFjdCc7Il19
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const INTERACT_ROOT_CONFIG = new InjectionToken('INTERACT_ROOT_CONFIG_PARAMS');
|
|
3
|
-
export const DEFAULT_REGISTRY_ID = 'DEFAULT';
|
|
4
|
-
/**
|
|
5
|
-
* Default initial value for Delta BehaviorSubject
|
|
6
|
-
*/
|
|
7
|
-
export const defaultDelta = {
|
|
8
|
-
deltaX: 0,
|
|
9
|
-
deltaY: 0,
|
|
10
|
-
targetElement: null
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Default initial value for Size BehaviorSubject
|
|
14
|
-
*/
|
|
15
|
-
export const defaultSize = {
|
|
16
|
-
width: null,
|
|
17
|
-
height: null,
|
|
18
|
-
targetElement: null
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Default initial value for Position BehaviorSubject
|
|
22
|
-
*/
|
|
23
|
-
export const defaultPosition = {
|
|
24
|
-
x: 0,
|
|
25
|
-
y: 0,
|
|
26
|
-
targetElement: null
|
|
27
|
-
};
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const INTERACT_ROOT_CONFIG = new InjectionToken('INTERACT_ROOT_CONFIG_PARAMS');
|
|
3
|
+
export const DEFAULT_REGISTRY_ID = 'DEFAULT';
|
|
4
|
+
/**
|
|
5
|
+
* Default initial value for Delta BehaviorSubject
|
|
6
|
+
*/
|
|
7
|
+
export const defaultDelta = {
|
|
8
|
+
deltaX: 0,
|
|
9
|
+
deltaY: 0,
|
|
10
|
+
targetElement: null
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Default initial value for Size BehaviorSubject
|
|
14
|
+
*/
|
|
15
|
+
export const defaultSize = {
|
|
16
|
+
width: null,
|
|
17
|
+
height: null,
|
|
18
|
+
targetElement: null
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Default initial value for Position BehaviorSubject
|
|
22
|
+
*/
|
|
23
|
+
export const defaultPosition = {
|
|
24
|
+
x: 0,
|
|
25
|
+
y: 0,
|
|
26
|
+
targetElement: null
|
|
27
|
+
};
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvbW9kZWxzL2ludGVyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXFCLDZCQUE2QixDQUFDLENBQUM7QUFFMUcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBQzdDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFVO0lBQ2pDLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7SUFDVCxhQUFhLEVBQUUsSUFBSTtDQUNwQixDQUFDO0FBQ0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVM7SUFDL0IsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLGFBQWEsRUFBRSxJQUFJO0NBQ3BCLENBQUE7QUFDRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBYTtJQUN2QyxDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0lBQ0osYUFBYSxFQUFFLElBQUk7Q0FDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyb3B6b25lRGlyZWN0aXZlLCBEcmFnZ2FibGVEaXJlY3RpdmUsIEdlc3R1cmFibGVEaXJlY3RpdmUsIFJlc2l6YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUG9pbnQsIERyYWdFdmVudCwgUmVzaXplRXZlbnQsIEludGVyYWN0YWJsZSwgRHJvcEV2ZW50LCBHZXN0dXJlRXZlbnQgfSBmcm9tICdAaW50ZXJhY3Rqcy90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuXG5leHBvcnQgdHlwZSBDc3NEaW1lbnNpb25Vbml0ID0gJ3B4JyB8ICdlbSc7XG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0Um9vdENvbmZpZyB7XG4gIGNzc0RpbWVuc2lvblVuaXQ6IENzc0RpbWVuc2lvblVuaXQ7XG59XG5leHBvcnQgY29uc3QgSU5URVJBQ1RfUk9PVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SW50ZXJhY3RSb290Q29uZmlnPignSU5URVJBQ1RfUk9PVF9DT05GSUdfUEFSQU1TJyk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFR0lTVFJZX0lEID0gJ0RFRkFVTFQnO1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgdmFsdWUgZm9yIERlbHRhIEJlaGF2aW9yU3ViamVjdFxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdERlbHRhOiBEZWx0YSA9IHtcbiAgZGVsdGFYOiAwLFxuICBkZWx0YVk6IDAsXG4gIHRhcmdldEVsZW1lbnQ6IG51bGxcbn07XG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCB2YWx1ZSBmb3IgU2l6ZSBCZWhhdmlvclN1YmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTaXplOiBTaXplID0ge1xuICB3aWR0aDogbnVsbCxcbiAgaGVpZ2h0OiBudWxsLFxuICB0YXJnZXRFbGVtZW50OiBudWxsXG59XG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCB2YWx1ZSBmb3IgUG9zaXRpb24gQmVoYXZpb3JTdWJqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0UG9zaXRpb246IFBvc2l0aW9uID0ge1xuICB4OiAwLFxuICB5OiAwLFxuICB0YXJnZXRFbGVtZW50OiBudWxsXG59XG4vKipcbiAqIFRoZSBzaGFwZSBvZiB0aGUgc3RhdGUvZXZlbnRzL2JlaGF2aW9yIHN5c3RlbSBmb3IgZWFjaCBkcm9wem9uZVxuICogYW5kIHRoZSBERUZBVUxUX1JFR0lTVFJZX0lEIHN5c3RlbSAoZm9yIGRyb3AgY29tcG9uZW50cyBpbml0aWFsaXplZCBvdXRzaWRlXG4gKiBvZiBhIGRyb3B6b25lKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGFibGVTeXN0ZW0ge1xuICBkZWx0YXMkOiBCZWhhdmlvclN1YmplY3Q8RGVsdGE+O1xuICBwb3NpdGlvbiQ6IEJlaGF2aW9yU3ViamVjdDxQb3NpdGlvbj47XG4gIHNpemUkOiBCZWhhdmlvclN1YmplY3Q8U2l6ZSAmIERlbHRhPjtcblxuICBpbnRlcmFjdGFibGUkOiBPYnNlcnZhYmxlPFRmdENvb3Jkcz47XG59XG4vKipcbiAqIFRoZSBrZXkgbWFwIG9mIEludGVyYWN0YWJsZVN5c3RlbXMuIE9uZSBmb3IgdGhlIGRyYWcgY29tcG9uZW50c1xuICogdGhhdCBvcmlnaW5hdGVkIG91dHNpZGUgb2YgYSBkcm9wem9uZSwgcGx1cyBvbmUgZm9yIGVhY2ggZHJvcHpvbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlUmVnaXN0cnkge1xuICBba2V5OiBzdHJpbmddOiBJbnRlcmFjdGFibGVTeXN0ZW1cbn1cblxuLyoqXG4gKiBIVE1MRWxlbWVudCB3aXRoIGhlbHBmdWwgZHJhZyBkaXJlY3RpdmVzIGF0dGFjaGVkIHRvIGZhY2lsaXRhdGUgbW92aW5nIGRyYWcgZGF0YSBiZXR3ZWVuIGRyb3B6b25lc1xuICovXG5leHBvcnQgdHlwZSBUZnREcmFnRWxlbWVudCA9IEhUTUxFbGVtZW50ICYge1xuICBkcmFnUmVmPzogRHJhZ2dhYmxlRGlyZWN0aXZlXG4gIGRyYWdPcmlnaW4/OiBEcm9wem9uZURpcmVjdGl2ZVxuICBkcm9wVGFyZ2V0PzogRHJvcHpvbmVEaXJlY3RpdmVcbn1cblxuLyoqXG4gKiBIVE1MRWxlbWVudCB3aXRoIGhlbHBmdWwgZHJhZyBkaXJlY3RpdmVzIGF0dGFjaGVkIHRvIGZhY2lsaXRhdGUgbW92aW5nIGRyYWcgZGF0YSBiZXR3ZWVuIGRyb3B6b25lc1xuICovXG4gZXhwb3J0IHR5cGUgVGZ0UmVzaXplRWxlbWVudCA9IEhUTUxFbGVtZW50ICYge1xuICByZXNpemVSZWY/OiBSZXNpemFibGVEaXJlY3RpdmVcbn1cblxuLyoqXG4gKiBFeHRlbmRzIHRoZSBpbnRlcmFjdCBkcm9wIGV2ZW50cyBieSBhZGRpbmcgcmVmZXJlbmNlIHRvIHRoZSBkcm9wcGVkIGNvbXBvbmVudHMgZHJhZ1xuICogZGlyZWN0aXZlIHRvIHRoZSBodG1sIGVsZW1lbnQuIFRoaXMgZ2l2ZXMgdGhlIGRyb3B6b25lIGFjY2VzcyB0byB0aGluZ3MgbGlrZSBkYXRhXG4gKiBhbmQgcGFyZW50IGRyb3B6b25lIG9mIHRoZSBkcm9wcGVkIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgTmdEcm9wRXZlbnQgPSBEcm9wRXZlbnQgJiB7XG4gIGRyYWdnYWJsZTogIEludGVyYWN0YWJsZSAmIHtcbiAgICB0YXJnZXQ6IFRmdERyYWdFbGVtZW50O1xuICB9O1xuICByZWxhdGVkVGFyZ2V0OiBUZnREcmFnRWxlbWVudDtcbn07XG4vKipcbiAqIEV4dGVuZHMgdGhlIGludGVyYWN0IHJlc2l6ZSBldmVudHMgYnkgYWRkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBkcmFnUmVmXG4gKiBkaXJlY3RpdmUgdG8gdGhlIGh0bWwgZWxlbWVudC5cbiAqL1xuZXhwb3J0IHR5cGUgIE5nUmVzaXplRXZlbnQgPSBSZXNpemVFdmVudCAmIHtcbiAgZHJhZ2dhYmxlOiAgSW50ZXJhY3RhYmxlICYge1xuICAgIHRhcmdldDogVGZ0RHJhZ0VsZW1lbnQ7XG4gIH07XG59O1xuLyoqXG4gKiBXZSBleHRlbmQgdGhlIGludGVyYWN0IERyYWdFdmVudCBhIGxpdHRsZSBoZXJlLCBhZGRpbmcgdG8gdGhlIHRhcmdldCBlbGVtZW50IHJlZmVyZW5jZXMgZm9yOlxuICogIC0gdGhlIGNvbXBvbmVudCB3ZSBhcmUgZHJhZ2dpbmcgKGRyYWdSZWYpXG4gKiAgLSB0aGUgZHJvcHpvbmUgY29tcG9uZW50IHdoZXJlIHRoZSBkcmFnIGNvbXBvbmVudCBvcmlnaW5hdGVkIChkcmFnT3JpZ2luKVxuICogIC0gdGhlIGRyb3B6b25lIGNvbXBvbmVudCB0aGF0IGl0IHdhcyBkcm9wcGVkIGluIChkcm9wVGFyZ2V0KVxuICogVGhpcyBoZWxwcyB1cyB0byBwYXNzIHJlZmVyZW5jZXMgdG8gZGlyZWN0aXZlIGNsYXNzZXMgYXMgZXZlbnRzIGxpa2UgZHJhZ2VudGVyIGFuZCBkcmFnIGV4aXQgaGFwcGVucy5cbiAqIFdlIHVzZSB0aGVzZSByZWZlcmVuY2VzIHRvIGVtaXQgYSAobW9zdGx5KSBjb25zaXN0ZW50IGV2ZW50IGFjcm9zcyBkcmFnLCBkcm9wLCByZXNpemUgZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIE5nRHJhZ0V2ZW50ID0gRHJhZ0V2ZW50ICYge1xuICBkcm9wem9uZTogeyB0YXJnZXQ6IEhUTUxFbGVtZW50fSxcbiAgdGFyZ2V0OiBUZnREcmFnRWxlbWVudFxufTtcbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIHJlc2l6aW5nLCBkcmFnZ2luZywgZHJvcHBpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZnRJbnRlcmFjdGFibGVFdmVudCB7XG4gIGRyYWdSZWY6IERyYWdnYWJsZURpcmVjdGl2ZTtcbiAgZHJhZ09yaWdpbj86IERyb3B6b25lRGlyZWN0aXZlO1xuICBkcm9wVGFyZ2V0PzogRHJvcHpvbmVEaXJlY3RpdmU7XG4gIHBvc2l0aW9uSW5Ecm9wVGFyZ2V0OiBQb2ludDtcbn1cbi8qKlxuICogRXZlbnQgZW1pdHRlZCBvbiBkcm9wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZ0RHJvcEV2ZW50IGV4dGVuZHMgVGZ0SW50ZXJhY3RhYmxlRXZlbnQge1xuICBpbnRlcmFjdEV2ZW50OiBOZ0Ryb3BFdmVudFxufVxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIG9uIGRyYWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZnREcmFnRXZlbnQgZXh0ZW5kcyBUZnRJbnRlcmFjdGFibGVFdmVudCB7XG4gIGludGVyYWN0RXZlbnQ6IE5nRHJhZ0V2ZW50XG59XG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgb24gcmVzaXplXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZ0UmVzaXplRXZlbnQgZXh0ZW5kcyBUZnRJbnRlcmFjdGFibGVFdmVudCB7XG4gIGludGVyYWN0RXZlbnQ6IFJlc2l6ZUV2ZW50LFxuICByZXNpemVSZWY6IFJlc2l6YWJsZURpcmVjdGl2ZVxuICBzaXplOiB7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUZnRDb29yZHM9IERlbHRhICYgUG9zaXRpb24gJiBTaXplO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlbHRhIHtcbiAgZGVsdGFYOiBudW1iZXIgfCBudWxsO1xuICBkZWx0YVk6IG51bWJlciB8IG51bGw7XG4gIHRhcmdldEVsZW1lbnQ6IFRmdERyYWdFbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIHg6IG51bWJlciB8IG51bGw7XG4gIHk6IG51bWJlciB8IG51bGw7XG4gIHRhcmdldEVsZW1lbnQ6IFRmdERyYWdFbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaXplIHtcbiAgd2lkdGg6IG51bWJlciB8IG51bGw7XG4gIGhlaWdodDogbnVtYmVyIHwgbnVsbDtcbiAgdGFyZ2V0RWxlbWVudDogVGZ0UmVzaXplRWxlbWVudCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGZ0R2VzdHVyZUV2ZW50IHtcbiAgZ2VzdHVyZVJlZjogR2VzdHVyYWJsZURpcmVjdGl2ZTtcbiAgaW50ZXJhY3RFdmVudDogR2VzdHVyZUV2ZW50O1xufVxuIl19
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ArrayOfNPipe {
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* @param n the number to make an array of
|
|
7
|
-
* @param max the max length of the array (useful for limiting rendering in ngFor loop)
|
|
8
|
-
*/
|
|
9
|
-
transform(n, max) {
|
|
10
|
-
const length = ((max && max < n) || n === Infinity) ? max : n;
|
|
11
|
-
return new Array(length).fill(length).map((x, i) => i);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
17
|
-
type: Pipe,
|
|
18
|
-
args: [{
|
|
19
|
-
name: 'arrayOfN'
|
|
20
|
-
}]
|
|
21
|
-
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ArrayOfNPipe {
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param n the number to make an array of
|
|
7
|
+
* @param max the max length of the array (useful for limiting rendering in ngFor loop)
|
|
8
|
+
*/
|
|
9
|
+
transform(n, max) {
|
|
10
|
+
const length = ((max && max < n) || n === Infinity) ? max : n;
|
|
11
|
+
return new Array(length).fill(length).map((x, i) => i);
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ArrayOfNPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
14
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: ArrayOfNPipe, name: "arrayOfN" }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ArrayOfNPipe, decorators: [{
|
|
17
|
+
type: Pipe,
|
|
18
|
+
args: [{
|
|
19
|
+
name: 'arrayOfN'
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktb2Ytbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9pbnRlcmFjdC9zcmMvbGliL3BpcGVzL2FycmF5LW9mLW4ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLFlBQVk7SUFFdkI7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxDQUFTLEVBQUUsR0FBVztRQUM5QixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OEdBVlUsWUFBWTs0R0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUh4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnYXJyYXlPZk4nXG59KVxuZXhwb3J0IGNsYXNzIEFycmF5T2ZOUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIC8qKlxuICAgKiBcbiAgICogQHBhcmFtIG4gdGhlIG51bWJlciB0byBtYWtlIGFuIGFycmF5IG9mIFxuICAgKiBAcGFyYW0gbWF4IHRoZSBtYXggbGVuZ3RoIG9mIHRoZSBhcnJheSAodXNlZnVsIGZvciBsaW1pdGluZyByZW5kZXJpbmcgaW4gbmdGb3IgbG9vcClcbiAgICovXG4gIHRyYW5zZm9ybShuOiBudW1iZXIsIG1heDogbnVtYmVyKTogYW55IHtcbiAgICBjb25zdCBsZW5ndGggPSAoKG1heCAmJiBtYXggPCBuKSB8fCBuID09PSBJbmZpbml0eSkgPyBtYXggOiBuO1xuICAgIHJldHVybiBuZXcgQXJyYXkobGVuZ3RoKS5maWxsKGxlbmd0aCkubWFwKCh4LGkpPT4gaSk7IFxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './array-of-n.pipe';
|
|
1
|
+
export * from './array-of-n.pipe';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvcGlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXktb2Ytbi5waXBlJzsiXX0=
|