@tft/interact 12.5.3 → 13.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/index.mjs +6 -0
- package/esm2020/lib/directives/account-for-scale.directive.mjs +26 -0
- package/esm2020/lib/directives/apply-scale.directive.mjs +28 -0
- package/esm2020/lib/directives/auto-scroll.directive.mjs +56 -0
- package/esm2020/lib/directives/drag-preview.directive.mjs +20 -0
- package/esm2020/lib/directives/drag-root.directive.mjs +32 -0
- package/esm2020/lib/directives/draggable.directive.mjs +320 -0
- package/esm2020/lib/directives/dropzone.directive.mjs +114 -0
- package/esm2020/lib/directives/gesturable.directive.mjs +82 -0
- package/esm2020/lib/directives/index.mjs +10 -0
- package/esm2020/lib/directives/resizable.directive.mjs +228 -0
- package/esm2020/lib/interact.module.mjs +66 -0
- package/esm2020/lib/models/index.mjs +2 -0
- package/esm2020/lib/models/interact.mjs +28 -0
- package/esm2020/lib/pipes/array-of-n.pipe.mjs +22 -0
- package/esm2020/lib/pipes/index.mjs +2 -0
- package/esm2020/lib/services/interact.service.mjs +197 -0
- package/esm2020/lib/utils/helpers.mjs +35 -0
- package/esm2020/lib/utils/index.mjs +2 -0
- package/esm2020/tft-interact.mjs +5 -0
- package/fesm2015/{tft-interact.js → tft-interact.mjs} +355 -257
- package/fesm2015/tft-interact.mjs.map +1 -0
- package/fesm2020/tft-interact.mjs +1192 -0
- package/fesm2020/tft-interact.mjs.map +1 -0
- package/lib/directives/account-for-scale.directive.d.ts +3 -0
- package/lib/directives/apply-scale.directive.d.ts +3 -0
- package/lib/directives/auto-scroll.directive.d.ts +3 -0
- package/lib/directives/drag-preview.directive.d.ts +3 -0
- package/lib/directives/drag-root.directive.d.ts +3 -0
- package/lib/directives/draggable.directive.d.ts +3 -0
- package/lib/directives/dropzone.directive.d.ts +3 -0
- package/lib/directives/gesturable.directive.d.ts +3 -0
- package/lib/directives/resizable.directive.d.ts +3 -0
- package/lib/interact.module.d.ts +15 -0
- package/lib/pipes/array-of-n.pipe.d.ts +3 -0
- package/lib/services/interact.service.d.ts +3 -0
- package/package.json +23 -10
- package/tft-interact-13.0.0.tgz +0 -0
- package/tft-interact.d.ts +1 -2
- package/bundles/tft-interact.umd.js +0 -1526
- package/bundles/tft-interact.umd.js.map +0 -1
- package/esm2015/index.js +0 -6
- package/esm2015/index.js.map +0 -1
- package/esm2015/index.metadata.json +0 -1
- package/esm2015/lib/directives/account-for-scale.directive.js +0 -26
- package/esm2015/lib/directives/account-for-scale.directive.js.map +0 -1
- package/esm2015/lib/directives/account-for-scale.directive.metadata.json +0 -1
- package/esm2015/lib/directives/account-for-scale.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/apply-scale.directive.js +0 -26
- package/esm2015/lib/directives/apply-scale.directive.js.map +0 -1
- package/esm2015/lib/directives/apply-scale.directive.metadata.json +0 -1
- package/esm2015/lib/directives/apply-scale.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/auto-scroll.directive.js +0 -54
- package/esm2015/lib/directives/auto-scroll.directive.js.map +0 -1
- package/esm2015/lib/directives/auto-scroll.directive.metadata.json +0 -1
- package/esm2015/lib/directives/auto-scroll.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/drag-preview.directive.js +0 -20
- package/esm2015/lib/directives/drag-preview.directive.js.map +0 -1
- package/esm2015/lib/directives/drag-preview.directive.metadata.json +0 -1
- package/esm2015/lib/directives/drag-preview.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/drag-root.directive.js +0 -27
- package/esm2015/lib/directives/drag-root.directive.js.map +0 -1
- package/esm2015/lib/directives/drag-root.directive.metadata.json +0 -1
- package/esm2015/lib/directives/drag-root.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/draggable.directive.js +0 -286
- package/esm2015/lib/directives/draggable.directive.js.map +0 -1
- package/esm2015/lib/directives/draggable.directive.metadata.json +0 -1
- package/esm2015/lib/directives/draggable.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/dropzone.directive.js +0 -105
- package/esm2015/lib/directives/dropzone.directive.js.map +0 -1
- package/esm2015/lib/directives/dropzone.directive.metadata.json +0 -1
- package/esm2015/lib/directives/dropzone.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/gesturable.directive.js +0 -77
- package/esm2015/lib/directives/gesturable.directive.js.map +0 -1
- package/esm2015/lib/directives/gesturable.directive.metadata.json +0 -1
- package/esm2015/lib/directives/gesturable.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/directives/index.js +0 -10
- package/esm2015/lib/directives/index.js.map +0 -1
- package/esm2015/lib/directives/index.metadata.json +0 -1
- package/esm2015/lib/directives/resizable.directive.js +0 -201
- package/esm2015/lib/directives/resizable.directive.js.map +0 -1
- package/esm2015/lib/directives/resizable.directive.metadata.json +0 -1
- package/esm2015/lib/directives/resizable.directive.ngfactory.js.map +0 -1
- package/esm2015/lib/interact.module.js +0 -43
- package/esm2015/lib/interact.module.js.map +0 -1
- package/esm2015/lib/interact.module.metadata.json +0 -1
- package/esm2015/lib/interact.module.ngfactory.js.map +0 -1
- package/esm2015/lib/models/index.js +0 -2
- package/esm2015/lib/models/index.js.map +0 -1
- package/esm2015/lib/models/index.metadata.json +0 -1
- package/esm2015/lib/models/interact.js +0 -28
- package/esm2015/lib/models/interact.js.map +0 -1
- package/esm2015/lib/models/interact.metadata.json +0 -1
- package/esm2015/lib/pipes/array-of-n.pipe.js +0 -18
- package/esm2015/lib/pipes/array-of-n.pipe.js.map +0 -1
- package/esm2015/lib/pipes/array-of-n.pipe.metadata.json +0 -1
- package/esm2015/lib/pipes/array-of-n.pipe.ngfactory.js.map +0 -1
- package/esm2015/lib/pipes/index.js +0 -2
- package/esm2015/lib/pipes/index.js.map +0 -1
- package/esm2015/lib/pipes/index.metadata.json +0 -1
- package/esm2015/lib/services/interact.service.js +0 -196
- package/esm2015/lib/services/interact.service.js.map +0 -1
- package/esm2015/lib/services/interact.service.metadata.json +0 -1
- package/esm2015/lib/services/interact.service.ngfactory.js.map +0 -1
- package/esm2015/lib/utils/helpers.js +0 -35
- package/esm2015/lib/utils/helpers.js.map +0 -1
- package/esm2015/lib/utils/helpers.metadata.json +0 -1
- package/esm2015/lib/utils/index.js +0 -2
- package/esm2015/lib/utils/index.js.map +0 -1
- package/esm2015/lib/utils/index.metadata.json +0 -1
- package/esm2015/tft-interact.js +0 -7
- package/esm2015/tft-interact.js.map +0 -1
- package/esm2015/tft-interact.metadata.json +0 -1
- package/fesm2015/tft-interact.js.map +0 -1
- package/tft-interact-12.5.3.tgz +0 -0
- package/tft-interact.metadata.json +0 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Output, EventEmitter, Renderer2, Optional, HostBinding } from '@angular/core';
|
|
2
|
+
import interact from 'interactjs';
|
|
3
|
+
import { InteractService } from '../services/interact.service';
|
|
4
|
+
import { AccountForScaleDirective } from './account-for-scale.directive';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../services/interact.service";
|
|
7
|
+
import * as i2 from "./account-for-scale.directive";
|
|
8
|
+
export class DropzoneDirective {
|
|
9
|
+
constructor(el, renderer, interactService, account_for_scale_dir) {
|
|
10
|
+
this.el = el;
|
|
11
|
+
this.renderer = renderer;
|
|
12
|
+
this.interactService = interactService;
|
|
13
|
+
this.account_for_scale_dir = account_for_scale_dir;
|
|
14
|
+
this.dropzoneConfig = {};
|
|
15
|
+
this.position = 'relative';
|
|
16
|
+
// proxies to pass interact events through to consumer of directive
|
|
17
|
+
this.dropActivate = new EventEmitter();
|
|
18
|
+
this.dragEnter = new EventEmitter();
|
|
19
|
+
this.dragLeave = new EventEmitter();
|
|
20
|
+
this.dragDrop = new EventEmitter();
|
|
21
|
+
}
|
|
22
|
+
get scale() {
|
|
23
|
+
return this.account_for_scale_dir?.scale;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
// connects
|
|
27
|
+
this.dropzone = this.connectDropzoneEvents(this.el.nativeElement, this.dropzoneConfig);
|
|
28
|
+
this.dropzoneId = this.interactService.addRegistryToSystem(this.dropzoneId);
|
|
29
|
+
}
|
|
30
|
+
ngOnChanges(changes) {
|
|
31
|
+
if (!changes.dropzoneConfig || !this.dropzone)
|
|
32
|
+
return;
|
|
33
|
+
// this.dropzone.unset();
|
|
34
|
+
// this.dropzone = this.connectDropzoneEvents(this.el.nativeElement, this.dropzoneConfig)
|
|
35
|
+
this.dropzone.dropzone(this.dropzoneConfig);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Connects element to interacts dropzone events and returns a reference to the interactable
|
|
39
|
+
* @param nativeElement the element to tie drop events to
|
|
40
|
+
* @param dropzoneConfig the interact configuration to use when connecting
|
|
41
|
+
*/
|
|
42
|
+
connectDropzoneEvents(nativeElement, dropzoneConfig) {
|
|
43
|
+
return interact(nativeElement).dropzone(dropzoneConfig)
|
|
44
|
+
// TODO: investigate when this fires in different scenarios
|
|
45
|
+
.on('dropactivate', (event) => {
|
|
46
|
+
this.dropActivate.emit(this.mapDropzoneEvent(event));
|
|
47
|
+
})
|
|
48
|
+
.on('dragenter', (event) => {
|
|
49
|
+
this.renderer.setProperty(event.relatedTarget, 'dropTarget', this);
|
|
50
|
+
this.dragEnter.emit(this.mapDropzoneEvent(event));
|
|
51
|
+
})
|
|
52
|
+
.on('dragleave', (event) => {
|
|
53
|
+
if (event.relatedTarget.dropTarget === this) {
|
|
54
|
+
this.renderer.setProperty(event.relatedTarget, 'dropTarget', null);
|
|
55
|
+
}
|
|
56
|
+
this.dragLeave.emit(this.mapDropzoneEvent(event));
|
|
57
|
+
})
|
|
58
|
+
.on('drop', (event) => {
|
|
59
|
+
this.dragDrop.emit(this.mapDropzoneEvent(event));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Maps the drop event emitted by interact to something a little easier to use
|
|
64
|
+
* @param event the drop event emitted by interact, extended with extra fields we added to
|
|
65
|
+
*/
|
|
66
|
+
mapDropzoneEvent(event) {
|
|
67
|
+
const zoneElement = event.target;
|
|
68
|
+
const dragElement = event.relatedTarget?.dragRef?.previewRef;
|
|
69
|
+
const scale = this.scale;
|
|
70
|
+
const positionInDropTarget = zoneElement && dragElement
|
|
71
|
+
? this.interactService.calculatePositionInElement(zoneElement, dragElement, scale)
|
|
72
|
+
: null;
|
|
73
|
+
return {
|
|
74
|
+
interactEvent: event,
|
|
75
|
+
dragRef: dragElement.dragRef,
|
|
76
|
+
dragOrigin: dragElement.dragOrigin,
|
|
77
|
+
dropTarget: event.relatedTarget.dropTarget,
|
|
78
|
+
positionInDropTarget
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
DropzoneDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DropzoneDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.InteractService }, { token: i2.AccountForScaleDirective, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
83
|
+
DropzoneDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: DropzoneDirective, selector: "[tftDropzone]", inputs: { dropzoneId: "dropzoneId", dropzoneConfig: "dropzoneConfig", dropzoneData: "dropzoneData", position: "position" }, outputs: { dropActivate: "dropActivate", dragEnter: "dragEnter", dragLeave: "dragLeave", dragDrop: "dragDrop" }, host: { properties: { "id": "dropzoneId", "style.position": "this.position" } }, usesOnChanges: true, ngImport: i0 });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: DropzoneDirective, decorators: [{
|
|
85
|
+
type: Directive,
|
|
86
|
+
args: [{
|
|
87
|
+
selector: '[tftDropzone]',
|
|
88
|
+
host: {
|
|
89
|
+
'[id]': 'dropzoneId'
|
|
90
|
+
}
|
|
91
|
+
}]
|
|
92
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.InteractService }, { type: i2.AccountForScaleDirective, decorators: [{
|
|
93
|
+
type: Optional
|
|
94
|
+
}] }]; }, propDecorators: { dropzoneId: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], dropzoneConfig: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], dropzoneData: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], position: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}, {
|
|
103
|
+
type: HostBinding,
|
|
104
|
+
args: ['style.position']
|
|
105
|
+
}], dropActivate: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}], dragEnter: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], dragLeave: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}], dragDrop: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9pbnRlcmFjdC9zcmMvbGliL2RpcmVjdGl2ZXMvZHJvcHpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUE0QixTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SixPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFFbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBU3pFLE1BQU0sT0FBTyxpQkFBaUI7SUFvQjVCLFlBQ1MsRUFBYyxFQUNiLFFBQW1CLEVBQ25CLGVBQWdDLEVBQ3BCLHFCQUFnRDtRQUg3RCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDcEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUEyQjtRQXJCN0QsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBS2YsYUFBUSxHQUFtQixVQUFVLENBQUM7UUFDckUsbUVBQW1FO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDaEQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBQzdDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUM3QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUM7SUFZbEQsQ0FBQztJQVJMLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBUUQsUUFBUTtRQUNO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a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQU43QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLFlBQVk7cUJBQ3JCO2lCQUNGOzswQkF5QkksUUFBUTs0Q0F0QkYsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR3lCLFFBQVE7c0JBRHRDLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUVuQixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBSZW5kZXJlcjIsIE9wdGlvbmFsLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGludGVyYWN0IGZyb20gJ2ludGVyYWN0anMnO1xuaW1wb3J0IHsgRHJvcHpvbmVPcHRpb25zLCBJbnRlcmFjdGFibGUgfSBmcm9tICdAaW50ZXJhY3Rqcy90eXBlcy9pbmRleCc7XG5pbXBvcnQgeyBJbnRlcmFjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcmFjdC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nRHJvcEV2ZW50LCBUZnREcmFnRWxlbWVudCwgVGZ0RHJvcEV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEFjY291bnRGb3JTY2FsZURpcmVjdGl2ZSB9IGZyb20gJy4vYWNjb3VudC1mb3Itc2NhbGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgUG9zaXRpb25PcHRpb24gPSAncmVsYXRpdmUnIHwgJ2Fic29sdXRlJyB8ICdmaXhlZCcgfCAnc3RhdGljJyB8ICdzdGlja3knIHwgJ3Vuc2V0JyB8ICdpbmhlcml0JyB8ICdpbml0aWFsJyB8ICdyZXZlcnQnXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGZ0RHJvcHpvbmVdJyxcbiAgaG9zdDoge1xuICAgICdbaWRdJzogJ2Ryb3B6b25lSWQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRHJvcHpvbmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgZHJvcHpvbmVJZDogc3RyaW5nO1xuICBASW5wdXQoKSBkcm9wem9uZUNvbmZpZzogRHJvcHpvbmVPcHRpb25zID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIEBJbnB1dCgpIGRyb3B6b25lRGF0YTogYW55O1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnc3R5bGUucG9zaXRpb24nKSBwb3NpdGlvbjogUG9zaXRpb25PcHRpb24gPSAncmVsYXRpdmUnO1xuICAvLyBwcm94aWVzIHRvIHBhc3MgaW50ZXJhY3QgZXZlbnRzIHRocm91Z2ggdG8gY29uc3VtZXIgb2YgZGlyZWN0aXZlXG4gIEBPdXRwdXQoKSBkcm9wQWN0aXZhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFRmdERyb3BFdmVudD4oKTtcbiAgQE91dHB1dCgpIGRyYWdFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VGZ0RHJvcEV2ZW50PigpO1xuICBAT3V0cHV0KCkgZHJhZ0xlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxUZnREcm9wRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBkcmFnRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8VGZ0RHJvcEV2ZW50PigpO1xuXG4gIGRyb3B6b25lOiBJbnRlcmFjdGFibGU7XG5cbiAgZ2V0IHNjYWxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudF9mb3Jfc2NhbGVfZGlyPy5zY2FsZTtcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgaW50ZXJhY3RTZXJ2aWNlOiBJbnRlcmFjdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhY2NvdW50X2Zvcl9zY2FsZV9kaXI/OiBBY2NvdW50Rm9yU2NhbGVEaXJlY3RpdmVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBjb25uZWN0c1xuICAgIHRoaXMuZHJvcHpvbmUgPSB0aGlzLmNvbm5lY3REcm9wem9uZUV2ZW50cyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZHJvcHpvbmVDb25maWcpO1xuICAgIHRoaXMuZHJvcHpvbmVJZCA9IHRoaXMuaW50ZXJhY3RTZXJ2aWNlLmFkZFJlZ2lzdHJ5VG9TeXN0ZW0odGhpcy5kcm9wem9uZUlkKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZighY2hhbmdlcy5kcm9wem9uZUNvbmZpZyB8fCAhdGhpcy5kcm9wem9uZSkgcmV0dXJuO1xuICAgIC8vIHRoaXMuZHJvcHpvbmUudW5zZXQoKTtcbiAgICAvLyB0aGlzLmRyb3B6b25lID0gdGhpcy5jb25uZWN0RHJvcHpvbmVFdmVudHModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmRyb3B6b25lQ29uZmlnKVxuICAgIHRoaXMuZHJvcHpvbmUuZHJvcHpvbmUodGhpcy5kcm9wem9uZUNvbmZpZylcbiAgfVxuICAvKipcbiAgKiBDb25uZWN0cyBlbGVtZW50IHRvIGludGVyYWN0cyBkcm9wem9uZSBldmVudHMgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGludGVyYWN0YWJsZVxuICAqIEBwYXJhbSBuYXRpdmVFbGVtZW50IHRoZSBlbGVtZW50IHRvIHRpZSBkcm9wIGV2ZW50cyB0b1xuICAqIEBwYXJhbSBkcm9wem9uZUNvbmZpZyB0aGUgaW50ZXJhY3QgY29uZmlndXJhdGlvbiB0byB1c2Ugd2hlbiBjb25uZWN0aW5nXG4gICovXG4gIGNvbm5lY3REcm9wem9uZUV2ZW50cyhuYXRpdmVFbGVtZW50LCBkcm9wem9uZUNvbmZpZzogRHJvcHpvbmVPcHRpb25zKSB7XG4gICAgcmV0dXJuIGludGVyYWN0KG5hdGl2ZUVsZW1lbnQpLmRyb3B6b25lKGRyb3B6b25lQ29uZmlnKVxuICAgICAgLy8gVE9ETzogaW52ZXN0aWdhdGUgd2hlbiB0aGlzIGZpcmVzIGluIGRpZmZlcmVudCBzY2VuYXJpb3NcbiAgICAgIC5vbignZHJvcGFjdGl2YXRlJywgKGV2ZW50OiBOZ0Ryb3BFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmRyb3BBY3RpdmF0ZS5lbWl0KHRoaXMubWFwRHJvcHpvbmVFdmVudChldmVudCkpO1xuICAgICAgfSlcbiAgICAgIC5vbignZHJhZ2VudGVyJywgKGV2ZW50OiBOZ0Ryb3BFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGV2ZW50LnJlbGF0ZWRUYXJnZXQsICdkcm9wVGFyZ2V0JywgdGhpcylcbiAgICAgICAgdGhpcy5kcmFnRW50ZXIuZW1pdCh0aGlzLm1hcERyb3B6b25lRXZlbnQoZXZlbnQpKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2RyYWdsZWF2ZScsIChldmVudDogTmdEcm9wRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCBldmVudC5yZWxhdGVkVGFyZ2V0LmRyb3BUYXJnZXQgPT09IHRoaXMpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGV2ZW50LnJlbGF0ZWRUYXJnZXQsICdkcm9wVGFyZ2V0JywgbnVsbClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyYWdMZWF2ZS5lbWl0KHRoaXMubWFwRHJvcHpvbmVFdmVudChldmVudCkpO1xuICAgICAgfSlcbiAgICAgIC5vbignZHJvcCcsICAoZXZlbnQ6IE5nRHJvcEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ0Ryb3AuZW1pdCh0aGlzLm1hcERyb3B6b25lRXZlbnQoZXZlbnQpKTtcbiAgICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBNYXBzIHRoZSBkcm9wIGV2ZW50IGVtaXR0ZWQgYnkgaW50ZXJhY3QgdG8gc29tZXRoaW5nIGEgbGl0dGxlIGVhc2llciB0byB1c2VcbiAgICogQHBhcmFtIGV2ZW50IHRoZSBkcm9wIGV2ZW50IGVtaXR0ZWQgYnkgaW50ZXJhY3QsIGV4dGVuZGVkIHdpdGggZXh0cmEgZmllbGRzIHdlIGFkZGVkIHRvXG4gICAqL1xuICBtYXBEcm9wem9uZUV2ZW50KGV2ZW50OiBOZ0Ryb3BFdmVudCk6IFRmdERyb3BFdmVudCB7XG4gICAgY29uc3Qgem9uZUVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgZHJhZ0VsZW1lbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0Py5kcmFnUmVmPy5wcmV2aWV3UmVmIGFzIFRmdERyYWdFbGVtZW50O1xuICAgIGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcbiAgICBjb25zdCBwb3NpdGlvbkluRHJvcFRhcmdldCA9IHpvbmVFbGVtZW50ICYmIGRyYWdFbGVtZW50XG4gICAgPyB0aGlzLmludGVyYWN0U2VydmljZS5jYWxjdWxhdGVQb3NpdGlvbkluRWxlbWVudCh6b25lRWxlbWVudCwgZHJhZ0VsZW1lbnQsIHNjYWxlKVxuICAgIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgaW50ZXJhY3RFdmVudDogZXZlbnQsXG4gICAgICBkcmFnUmVmOiBkcmFnRWxlbWVudC5kcmFnUmVmLFxuICAgICAgZHJhZ09yaWdpbjogZHJhZ0VsZW1lbnQuZHJhZ09yaWdpbixcbiAgICAgIGRyb3BUYXJnZXQ6IGV2ZW50LnJlbGF0ZWRUYXJnZXQuZHJvcFRhcmdldCxcbiAgICAgIHBvc2l0aW9uSW5Ecm9wVGFyZ2V0XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Output, EventEmitter, Optional } from '@angular/core';
|
|
2
|
+
import interact from 'interactjs';
|
|
3
|
+
import { DraggableDirective } from '../directives';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../directives";
|
|
6
|
+
/** @dynamic */
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
export class GesturableDirective {
|
|
9
|
+
constructor(el, draggable_dir) {
|
|
10
|
+
this.el = el;
|
|
11
|
+
this.draggable_dir = draggable_dir;
|
|
12
|
+
this.gestureDisabled = false;
|
|
13
|
+
// pipes all interact events to event emitters
|
|
14
|
+
this.gestureStart = new EventEmitter();
|
|
15
|
+
this.gestureMove = new EventEmitter();
|
|
16
|
+
this.gestureEnd = new EventEmitter();
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.gesturableId = this.draggable_dir?.interactableId || 'id';
|
|
20
|
+
this.interactable = this.initiateGestureEvents(this.gestureConfig, this.el.nativeElement);
|
|
21
|
+
this.setGestureConfig();
|
|
22
|
+
}
|
|
23
|
+
// TODO: watch config here as well and update interactable
|
|
24
|
+
ngOnChanges(changes) {
|
|
25
|
+
// we do this here instead of using a setter on the input so that it
|
|
26
|
+
// will only run once when there is a change to x and y
|
|
27
|
+
if (changes.gestureConfig || changes.gestureDisabled) {
|
|
28
|
+
if (!this.interactable)
|
|
29
|
+
return;
|
|
30
|
+
this.setGestureConfig();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
setGestureConfig() {
|
|
34
|
+
const enabled = !this.gestureDisabled;
|
|
35
|
+
const gestureConfig = { ...this.gestureConfig, enabled };
|
|
36
|
+
this.interactable.gesturable(gestureConfig);
|
|
37
|
+
}
|
|
38
|
+
initiateGestureEvents(gestureConfig, nativeElement) {
|
|
39
|
+
const defaultConfig = {
|
|
40
|
+
enabled: !this.gestureDisabled,
|
|
41
|
+
};
|
|
42
|
+
const interactable = this.draggable_dir?.interactable || interact(nativeElement);
|
|
43
|
+
return interactable.gesturable({ ...defaultConfig, ...gestureConfig })
|
|
44
|
+
.on('gesturestart', (event) => {
|
|
45
|
+
this.gestureStart.emit({ gestureRef: this, interactEvent: event });
|
|
46
|
+
})
|
|
47
|
+
.on('gesturemove', (event) => {
|
|
48
|
+
this.gestureMove.emit({ gestureRef: this, interactEvent: event });
|
|
49
|
+
})
|
|
50
|
+
.on('gestureend', (event) => {
|
|
51
|
+
this.gestureEnd.emit({ gestureRef: this, interactEvent: event });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
GesturableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: GesturableDirective, deps: [{ token: i0.ElementRef }, { token: i1.DraggableDirective, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
56
|
+
GesturableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", type: GesturableDirective, selector: "[tftGesturable]", inputs: { gesturableId: "gesturableId", gestureDisabled: "gestureDisabled", gestureConfig: "gestureConfig" }, outputs: { gestureStart: "gestureStart", gestureMove: "gestureMove", gestureEnd: "gestureEnd" }, host: { properties: { "id": "gesturableId" } }, usesOnChanges: true, ngImport: i0 });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: GesturableDirective, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{
|
|
60
|
+
selector: '[tftGesturable]',
|
|
61
|
+
// eslint-disable-next-line @angular-eslint/no-host-metadata-property
|
|
62
|
+
host: {
|
|
63
|
+
// '[style.touchAction]': 'this.gestureDisabled ? "auto" : "none"',
|
|
64
|
+
'[id]': 'gesturableId',
|
|
65
|
+
}
|
|
66
|
+
}]
|
|
67
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DraggableDirective, decorators: [{
|
|
68
|
+
type: Optional
|
|
69
|
+
}] }]; }, propDecorators: { gesturableId: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], gestureDisabled: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], gestureConfig: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], gestureStart: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}], gestureMove: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}], gestureEnd: [{
|
|
80
|
+
type: Output
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzdHVyYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvZGlyZWN0aXZlcy9nZXN0dXJhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUNsRCxZQUFZLEVBQUUsUUFBUSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFJbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFbkQsZUFBZTtBQVNmLDhEQUE4RDtBQUM5RCxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQ1MsRUFBYyxFQUNELGFBQWtDO1FBRC9DLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDRCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFaL0Msb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFakMsOENBQThDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDbkQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNsRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFRdkQsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsb0VBQW9FO1FBQ3BFLHVEQUF1RDtRQUN2RCxJQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUNuRCxJQUFHLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQUUsT0FBTztZQUM5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDdEMsTUFBTSxhQUFhLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQTZELEVBQUUsYUFBMEI7UUFFN0csTUFBTSxhQUFhLEdBQXNCO1lBQ3ZDLE9BQU8sRUFBRyxDQUFDLElBQUksQ0FBQyxlQUFlO1NBQ2hDLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakYsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxhQUFhLEVBQUMsQ0FBQzthQUNqRSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUNsRSxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUNqRSxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUNoRSxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7O2dIQXpEVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQVQvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLHFFQUFxRTtvQkFDckUsSUFBSSxFQUFFO3dCQUNKLG1FQUFtRTt3QkFDbkUsTUFBTSxFQUFFLGNBQWM7cUJBQ3ZCO2lCQUNGOzswQkFpQkksUUFBUTs0Q0FiRixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LFxuICAgRXZlbnRFbWl0dGVyLCBPcHRpb25hbCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgaW50ZXJhY3QgZnJvbSAnaW50ZXJhY3Rqcyc7XG5pbXBvcnQgeyBEcmFnZ2FibGVPcHRpb25zLCBHZXN0dXJhYmxlT3B0aW9ucywgSW50ZXJhY3RhYmxlLCBHZXN0dXJlRXZlbnQgfSBmcm9tICdAaW50ZXJhY3Rqcy90eXBlcy9pbmRleCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUZnRDb29yZHMsIFRmdEdlc3R1cmVFdmVudCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBEcmFnZ2FibGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcblxuLyoqIEBkeW5hbWljICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGZ0R2VzdHVyYWJsZV0nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIC8vICdbc3R5bGUudG91Y2hBY3Rpb25dJzogJ3RoaXMuZ2VzdHVyZURpc2FibGVkID8gXCJhdXRvXCIgOiBcIm5vbmVcIicsXG4gICAgJ1tpZF0nOiAnZ2VzdHVyYWJsZUlkJyxcbiAgfVxufSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgR2VzdHVyYWJsZURpcmVjdGl2ZTxEID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBnZXN0dXJhYmxlSWQ6IHN0cmluZztcbiAgQElucHV0KCkgZ2VzdHVyZURpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGdlc3R1cmVDb25maWc6IFBhcnRpYWw8SW50ZXJhY3QuT3JCb29sZWFuPERyYWdnYWJsZU9wdGlvbnM+PjtcbiAgLy8gcGlwZXMgYWxsIGludGVyYWN0IGV2ZW50cyB0byBldmVudCBlbWl0dGVyc1xuICBAT3V0cHV0KCkgZ2VzdHVyZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxUZnRHZXN0dXJlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBnZXN0dXJlTW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGZ0R2VzdHVyZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgZ2VzdHVyZUVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGZ0R2VzdHVyZUV2ZW50PigpO1xuXG4gIGludGVyYWN0YWJsZVN0YXRlOiBPYnNlcnZhYmxlPFRmdENvb3Jkcz47XG4gIGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRyYWdnYWJsZV9kaXI/OiBEcmFnZ2FibGVEaXJlY3RpdmUsXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXN0dXJhYmxlSWQgPSB0aGlzLmRyYWdnYWJsZV9kaXI/LmludGVyYWN0YWJsZUlkIHx8ICdpZCc7XG4gICAgdGhpcy5pbnRlcmFjdGFibGUgPSB0aGlzLmluaXRpYXRlR2VzdHVyZUV2ZW50cyh0aGlzLmdlc3R1cmVDb25maWcsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5zZXRHZXN0dXJlQ29uZmlnKCk7XG4gIH1cblxuICAvLyBUT0RPOiB3YXRjaCBjb25maWcgaGVyZSBhcyB3ZWxsIGFuZCB1cGRhdGUgaW50ZXJhY3RhYmxlXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyB3ZSBkbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiB1c2luZyBhIHNldHRlciBvbiB0aGUgaW5wdXQgc28gdGhhdCBpdFxuICAgIC8vIHdpbGwgb25seSBydW4gb25jZSB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIHRvIHggYW5kIHlcbiAgICBpZihjaGFuZ2VzLmdlc3R1cmVDb25maWcgfHwgY2hhbmdlcy5nZXN0dXJlRGlzYWJsZWQpIHtcbiAgICAgIGlmKCF0aGlzLmludGVyYWN0YWJsZSkgcmV0dXJuO1xuICAgICAgdGhpcy5zZXRHZXN0dXJlQ29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0R2VzdHVyZUNvbmZpZygpIHtcbiAgICBjb25zdCBlbmFibGVkID0gIXRoaXMuZ2VzdHVyZURpc2FibGVkO1xuICAgIGNvbnN0IGdlc3R1cmVDb25maWcgPSB7Li4udGhpcy5nZXN0dXJlQ29uZmlnLCBlbmFibGVkfTtcbiAgICB0aGlzLmludGVyYWN0YWJsZS5nZXN0dXJhYmxlKGdlc3R1cmVDb25maWcpO1xuICB9XG5cbiAgaW5pdGlhdGVHZXN0dXJlRXZlbnRzKGdlc3R1cmVDb25maWc6IFBhcnRpYWw8SW50ZXJhY3QuT3JCb29sZWFuPEdlc3R1cmFibGVPcHRpb25zPj4sIG5hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBHZXN0dXJhYmxlT3B0aW9ucyA9IHtcbiAgICAgIGVuYWJsZWQ6ICAhdGhpcy5nZXN0dXJlRGlzYWJsZWQsXG4gICAgfTtcbiAgICBjb25zdCBpbnRlcmFjdGFibGUgPSB0aGlzLmRyYWdnYWJsZV9kaXI/LmludGVyYWN0YWJsZSB8fCBpbnRlcmFjdChuYXRpdmVFbGVtZW50KTtcblxuICAgIHJldHVybiBpbnRlcmFjdGFibGUuZ2VzdHVyYWJsZSh7Li4uZGVmYXVsdENvbmZpZywgLi4uZ2VzdHVyZUNvbmZpZ30pXG4gICAgICAub24oJ2dlc3R1cmVzdGFydCcsIChldmVudDogR2VzdHVyZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZ2VzdHVyZVN0YXJ0LmVtaXQoe2dlc3R1cmVSZWY6IHRoaXMsIGludGVyYWN0RXZlbnQ6IGV2ZW50fSlcbiAgICAgIH0pXG4gICAgICAub24oJ2dlc3R1cmVtb3ZlJywgKGV2ZW50OiBHZXN0dXJlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5nZXN0dXJlTW92ZS5lbWl0KHtnZXN0dXJlUmVmOiB0aGlzLCBpbnRlcmFjdEV2ZW50OiBldmVudH0pXG4gICAgICB9KVxuICAgICAgLm9uKCdnZXN0dXJlZW5kJywgKGV2ZW50OiBHZXN0dXJlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5nZXN0dXJlRW5kLmVtaXQoe2dlc3R1cmVSZWY6IHRoaXMsIGludGVyYWN0RXZlbnQ6IGV2ZW50fSlcbiAgICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './draggable.directive';
|
|
2
|
+
export * from './dropzone.directive';
|
|
3
|
+
export * from './resizable.directive';
|
|
4
|
+
export * from './drag-preview.directive';
|
|
5
|
+
export * from './gesturable.directive';
|
|
6
|
+
export * from './drag-root.directive';
|
|
7
|
+
export * from './account-for-scale.directive';
|
|
8
|
+
export * from './apply-scale.directive';
|
|
9
|
+
export * from './auto-scroll.directive';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZHJhZ2dhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3B6b25lLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2l6YWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLXByZXZpZXcuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VzdHVyYWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLXJvb3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYWNjb3VudC1mb3Itc2NhbGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXBwbHktc2NhbGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0by1zY3JvbGwuZGlyZWN0aXZlJztcbiJdfQ==
|
|
@@ -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
|
+
constructor(el, _document, interactService, renderer, drag_root_dir, account_for_scale_dir, draggable_dir, dropzone_dir, auto_scroll_dir) {
|
|
21
|
+
this.el = el;
|
|
22
|
+
this._document = _document;
|
|
23
|
+
this.interactService = interactService;
|
|
24
|
+
this.renderer = renderer;
|
|
25
|
+
this.drag_root_dir = drag_root_dir;
|
|
26
|
+
this.account_for_scale_dir = account_for_scale_dir;
|
|
27
|
+
this.draggable_dir = draggable_dir;
|
|
28
|
+
this.dropzone_dir = dropzone_dir;
|
|
29
|
+
this.auto_scroll_dir = auto_scroll_dir;
|
|
30
|
+
this.enableResizeDefault = true;
|
|
31
|
+
// TODO: should this be an input with default or should consuming user set display in styles each time
|
|
32
|
+
this.position = 'absolute';
|
|
33
|
+
this.resizeDisabled = false;
|
|
34
|
+
this.resizeStart = new EventEmitter();
|
|
35
|
+
this.resizeMove = new EventEmitter();
|
|
36
|
+
this.resizeInertiaStart = new EventEmitter();
|
|
37
|
+
this.resizeEnd = new EventEmitter();
|
|
38
|
+
this.defaultConfig = {
|
|
39
|
+
edges: { left: true, right: true, bottom: true, top: true }
|
|
40
|
+
};
|
|
41
|
+
this.activeEdges = { left: false, right: false, top: false, bottom: false };
|
|
42
|
+
this.dragRootEl = drag_root_dir?.el?.nativeElement || this._document.body;
|
|
43
|
+
}
|
|
44
|
+
get scale() {
|
|
45
|
+
return this.account_for_scale_dir?.scale || this.drag_root_dir?.account_for_scale_dir?.scale;
|
|
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
|
+
}
|
|
170
|
+
ResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", 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 });
|
|
171
|
+
ResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.1", 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 });
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", 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: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvaW50ZXJhY3Qvc3JjL2xpYi9kaXJlY3RpdmVzL3Jlc2l6YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFpQyxtQkFBbUIsRUFBa0IsTUFBTSxXQUFXLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7O0FBUTlELGVBQWU7QUFnQmYsTUFBTSxPQUFPLGtCQUFrQjtJQWlDN0IsWUFDUyxFQUFjLEVBQ0ssU0FBbUIsRUFDckMsZUFBZ0MsRUFDaEMsUUFBbUIsRUFDUCxhQUFpQyxFQUNsQyxxQkFBZ0QsRUFDL0MsYUFBa0MsRUFDdEIsWUFBZ0MsRUFDakMsZUFBcUM7UUFSN0QsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNLLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDckMsb0JBQWUsR0FB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R0FuQ1Asa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBZjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIscUVBQXFFO29CQUNyRSxJQUFJLEVBQUU7d0JBQ0osOERBQThEO3dCQUM5RCxrQkFBa0I7d0JBQ2xCLHFCQUFxQixFQUFFLHVDQUF1Qzt3QkFDOUQsMkRBQTJEO3dCQUMzRCwrREFBK0Q7d0JBQy9ELGtCQUFrQixFQUFFLFVBQVU7d0JBQzlCLHlDQUF5Qzt3QkFDekMsbUJBQW1CLEVBQUUsY0FBYztxQkFFcEM7aUJBQ0Y7bUZBb0N3QyxRQUFROzBCQUE1QyxNQUFNOzJCQUFDLFFBQVE7OzBCQUdmLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxRQUFROzRDQXhDZCxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCwgU2tpcFNlbGYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFJlbmRlcmVyMiwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCBpbnRlcmFjdCBmcm9tICdpbnRlcmFjdGpzJztcbmltcG9ydCB7IEludGVyYWN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVyYWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzaXphYmxlT3B0aW9ucywgUmVzaXplRXZlbnQsIEludGVyYWN0YWJsZSB9IGZyb20gJ0BpbnRlcmFjdGpzL3R5cGVzL2luZGV4JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHJhZ2dhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnZ2FibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyb3B6b25lRGlyZWN0aXZlIH0gZnJvbSAnLi9kcm9wem9uZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHJhZ1Jvb3REaXJlY3RpdmUgfSBmcm9tICcuL2RyYWctcm9vdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQWNjb3VudEZvclNjYWxlRGlyZWN0aXZlIH0gZnJvbSAnLi9hY2NvdW50LWZvci1zY2FsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdSZXNpemVFdmVudCwgVGZ0UmVzaXplRXZlbnQsIERFRkFVTFRfUkVHSVNUUllfSUQsIFRmdERyYWdFbGVtZW50IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEF1dG9TY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuL2F1dG8tc2Nyb2xsLmRpcmVjdGl2ZSc7XG5cbmludGVyZmFjZSBBY3RpdmVFZGdlcyB7XG4gIHRvcDogYm9vbGVhbjtcbiAgYm90dG9tOiBib29sZWFuO1xuICBsZWZ0OiBib29sZWFuO1xuICByaWdodDogYm9vbGVhbjtcbn1cbi8qKiBAZHluYW1pYyAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RmdFJlc2l6YWJsZV0nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIC8vIHByZXZlbnRzIHRvdWNoIGV2ZW50cyBmcm9tIGNvbGxpZGluZyB3aXRoIHdpdGggbW91c2UgZXZlbnRzXG4gICAgLy8gb24gdG91Y2ggc2NyZWVuXG4gICAgJ1tzdHlsZS50b3VjaEFjdGlvbl0nOiAndGhpcy5yZXNpemVEaXNhYmxlZCA/IFwiYXV0b1wiIDogXCJub25lXCInLFxuICAgIC8vIGRlZmF1bHQgdG8gYWJzb2x1dGUgaGVyZSB0byBhY2NvbW1vZGF0ZSBsaWtlbHkgdXNlIGNhc2VzXG4gICAgLy8gY29uc3VtaW5nIGNvbXBvbmVudCBjYW4gZWFzaWx5IG92ZXIgcmlkZSB3aXRoIHBvc2l0aW9uIGlucHV0XG4gICAgJ1tzdHlsZS5wb3NpdGlvbl0nOiAncG9zaXRpb24nLFxuICAgIC8vIGZvbGxvd3MgaW50ZXJhY3RqcyBzdWdnZXN0ZWQgcHJhY3RpY2VzXG4gICAgJ1tzdHlsZS5ib3hTaXppbmddJzogJ1wiYm9yZGVyLWJveFwiJyxcblxuICB9XG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGVuYWJsZVJlc2l6ZURlZmF1bHQgPSB0cnVlO1xuICAvLyBUT0RPOiBzaG91bGQgdGhpcyBiZSBhbiBpbnB1dCB3aXRoIGRlZmF1bHQgb3Igc2hvdWxkIGNvbnN1bWluZyB1c2VyIHNldCBkaXNwbGF5IGluIHN0eWxlcyBlYWNoIHRpbWVcbiAgQElucHV0KCkgcG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICBASW5wdXQoKSByZXNpemVDb25maWc6IFBhcnRpYWw8SW50ZXJhY3QuT3JCb29sZWFuPFJlc2l6YWJsZU9wdGlvbnM+PjtcbiAgQElucHV0KCkgaW50ZXJhY3RhYmxlSWQ6IHN0cmluZztcblxuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlcjtcbiAgQElucHV0KCkgcmVzaXplRGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcmVzaXplU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRmdFJlc2l6ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVzaXplTW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGZ0UmVzaXplRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZXNpemVJbmVydGlhU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRmdFJlc2l6ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVzaXplRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxUZnRSZXNpemVFdmVudD4oKTtcblxuICBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsPEludGVyYWN0Lk9yQm9vbGVhbjxSZXNpemFibGVPcHRpb25zPj4gPSB7XG4gICAgZWRnZXM6IHsgbGVmdDogdHJ1ZSwgcmlnaHQ6IHRydWUsIGJvdHRvbTogdHJ1ZSwgdG9wOiB0cnVlIH1cbiAgfTtcbiAgcmVnaXN0cnlJZDogc3RyaW5nO1xuICBpbnRlcmFjdGFibGU6IEludGVyYWN0YWJsZTtcbiAgLy8gVGhlXG4gIGRyYWdSb290RWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgYWN0aXZlRWRnZXM6IEFjdGl2ZUVkZ2VzID0ge2xlZnQ6IGZhbHNlLCByaWdodDogZmFsc2UsIHRvcDogZmFsc2UsIGJvdHRvbTogZmFsc2V9XG4gIHByaXZhdGUgaW50ZXJhY3RhYmxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgZ2V0IHNjYWxlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudF9mb3Jfc2NhbGVfZGlyPy5zY2FsZSB8fCB0aGlzLmRyYWdfcm9vdF9kaXI/LmFjY291bnRfZm9yX3NjYWxlX2Rpcj8uc2NhbGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHByaXZhdGUgaW50ZXJhY3RTZXJ2aWNlOiBJbnRlcmFjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZHJhZ19yb290X2Rpcj86IERyYWdSb290RGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBhY2NvdW50X2Zvcl9zY2FsZV9kaXI/OiBBY2NvdW50Rm9yU2NhbGVEaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkcmFnZ2FibGVfZGlyPzogRHJhZ2dhYmxlRGlyZWN0aXZlLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgZHJvcHpvbmVfZGlyPzogRHJvcHpvbmVEaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHVibGljIGF1dG9fc2Nyb2xsX2Rpcj86IEF1dG9TY3JvbGxEaXJlY3RpdmVcblxuXG4gICkge1xuICAgIHRoaXMuZHJhZ1Jvb3RFbCA9IChkcmFnX3Jvb3RfZGlyPy5lbD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkgfHwgdGhpcy5fZG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWRkUmVzaXplUHJvcGVydGllc1RvRWxlbWVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgLy8gd2UgY2hlY2sgZm9yIGEgZHJvcHpvbmUsIHdlIHVzZSBpdHMgaWQgYXMgdGhlIHJlZ2lzdHJ5IGlkIGlmIHRoZXJlIGlzIG9uXG4gICAgLy8gb3RoZXJ3aXNlLCB3ZSB1c2UgREVGQVVMVF9SRUdJU1RSWV9JRCBhcyBhIHJlZ2lzdHJ5IGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIG91ciBpbnRlcmFjdGFibGVcbiAgICAvLyBkcmFnIHN0YXRlIG9yZ2FuaXplZCBieSBkcm9wem9uZXMuXG4gICAgdGhpcy5yZWdpc3RyeUlkID0gdGhpcy5kcm9wem9uZV9kaXI/LmRyb3B6b25lSWQgfHwgREVGQVVMVF9SRUdJU1RSWV9JRDtcblxuICAgIHRoaXMuaW50ZXJhY3RhYmxlSWQgPSB0aGlzLmRyYWdnYWJsZV9kaXI/LmludGVyYWN0YWJsZUlkIHx8IHRoaXMuaW50ZXJhY3RTZXJ2aWNlLmFkZERyYWdnYWJsZVRvUmVnaXN0cnkodGhpcy5yZWdpc3RyeUlkLCB0aGlzLmludGVyYWN0YWJsZUlkKTtcblxuICAgIHRoaXMuaW50ZXJhY3RhYmxlID0gdGhpcy5pbml0aWF0ZVJlc2l6ZUV2ZW50cyhcbiAgICAgIHsuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLnRoaXMucmVzaXplQ29uZmlnIH0sXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuXG4gICAgdGhpcy5hbGlnbkRpbWVuc2lvbnNXaXRoSW5wdXRzKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcblxuICAgIHRoaXMuaW50ZXJhY3RhYmxlU3Vic2NyaXB0aW9uID0gdGhpcy5pbnRlcmFjdFNlcnZpY2VcbiAgICAgIC5nZXRJbnRlcmFjdGFibGVTdGF0ZSh0aGlzLmludGVyYWN0YWJsZUlkLCB0aGlzLnJlZ2lzdHJ5SWQpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKChjaGFuZ2VzLnJlc2l6ZUNvbmZpZyB8fCBjaGFuZ2VzLnJlc2l6ZURpc2FibGVkKSAmJiB0aGlzLmludGVyYWN0YWJsZSkge1xuICAgICAgdGhpcy5pbnRlcmFjdGFibGUucmVzaXphYmxlKHsuLi50aGlzLnJlc2l6ZUNvbmZpZywgZW5hYmxlZDogIXRoaXMucmVzaXplRGlzYWJsZWQsfSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLndpZHRoIHx8IGNoYW5nZXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLmFsaWduRGltZW5zaW9uc1dpdGhJbnB1dHModGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaW50ZXJhY3RhYmxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbnRlcmFjdFNlcnZpY2UuZGVzdHJveUludGVyYWN0YWJsZSh0aGlzLmludGVyYWN0YWJsZUlkLCB0aGlzLnJlZ2lzdHJ5SWQpO1xuICB9XG5cbiAgcmVzaXplTGlzdGVuZXIoZXZlbnQ6IFJlc2l6ZUV2ZW50KSB7XG4gICAgY29uc3QgZWxlbWVudDogVGZ0RHJhZ0VsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlO1xuICAgIGNvbnN0IHtkZWx0YVJlY3R9ID0gZXZlbnQ7XG4gICAgY29uc3QgZGVsdGFYID0gZGVsdGFSZWN0LmxlZnQvc2NhbGU7XG4gICAgY29uc3QgZGVsdGFZID0gZGVsdGFSZWN0LnRvcC9zY2FsZTtcbiAgICAvLyBXZSBnZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgZGlyZWN0bHkgZnJvbSB0aGUgbmF0aXZlIGVsZW1lbnQgYmVjYXVzZVxuICAgIC8vIHRoZSBldmVudCBkaW1lbnNpb24gY2FuIGdldCBvdXQgb2Ygc3luYyB3aGVuIHJlc2l6aW5nIHdpdGggYXV0b1Njcm9sbFxuICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHdpZHRoID0gKHJlY3Qud2lkdGggKyBkZWx0YVJlY3Qud2lkdGgpL3NjYWxlO1xuICAgIGNvbnN0IGhlaWdodCA9IChyZWN0LmhlaWdodCArIGRlbHRhUmVjdC5oZWlnaHQpL3NjYWxlO1xuXG4gICAgdGhpcy5pbnRlcmFjdFNlcnZpY2UudXBkYXRlU2l6ZShcbiAgICAgIHRoaXMuaW50ZXJhY3RhYmxlSWQsXG4gICAgICB0aGlzLnJlZ2lzdHJ5SWQsXG4gICAgICB7ZGVsdGFYLCBkZWx0YVksIHdpZHRoLCBoZWlnaHR9LFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogIGhvb2sgZWxlbWVudHMgaW50byBpbnRlcmFjdHMgcmVzaXplIGV2ZW50IGxpc3RlbmVyc1xuICAgKiAgd2Ugc3ByZWFkIHRoZSBjb25maWdzIHNvIHRoYXQgdGhlIGNvbnN1bWluZyBjb21wb25lbnQgb25seSBvdmVyd3JpdGVzIHRoZVxuICAgKiAgcGllY2VzIHRoYXQgaXQgZXhwbGljaXRseSBpbmRpY2F0ZXNcbiAgICogQHBhcmFtIHJlc2l6ZUNvbmZpZ1xuICAgKiBAcGFyYW0gbmF0aXZlRWxlbWVudFxuICAgKi9cbiAgaW5pdGlhdGVSZXNpemVFdmVudHMocmVzaXplQ29uZmlnOiBQYXJ0aWFsPEludGVyYWN0Lk9yQm9vbGVhbjxSZXNpemFibGVPcHRpb25zPj4sIG5hdGl2ZUVsZW1lbnQ6IFRmdERyYWdFbGVtZW50KSB7XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgdHJ5IGFuZCBnZXQgaW50ZXJhY3RhYmxlIGZyb20gdGZ0X2RyYWdnYWJsZSBpZiBpdCBleGlzdHNcbiAgICBjb25zdCBkZWZhdWx0UmVzaXplQ29uZmlnID0ge1xuICAgICAgLi4ucmVzaXplQ29uZmlnLFxuICAgICAgZW5hYmxlZDogIXRoaXMucmVzaXplRGlzYWJsZWQsXG4gICAgICAuLi4odGhpcy5hdXRvX3Njcm9sbF9kaXIgJiYge1xuICAgICAgICBhdXRvU2Nyb2xsOiB7XG4gICAgICAgICAgLi4udGhpcy5hdXRvX3Njcm9sbF9kaXIuYXV0b1Njcm9sbENvbmZpZyxcbiAgICAgICAgICBjb250YWluZXI6IHRoaXMuYXV0b19zY3JvbGxfZGlyLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9O1xuICAgIGNvbnN0IGludGVyYWN0YWJsZSA9IHRoaXMuZHJhZ2dhYmxlX2Rpcj8uaW50ZXJhY3RhYmxlIHx8IGludGVyYWN0KG5hdGl2ZUVsZW1lbnQpO1xuICAgIHJldHVybiBpbnRlcmFjdGFibGUucmVzaXphYmxlKGRlZmF1bHRSZXNpemVDb25maWcpXG4gICAgICAub24oJ3Jlc2l6ZXN0YXJ0JywgKGV2ZW50OiBOZ1Jlc2l6ZUV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlRWRnZXMgPSBldmVudC5lZGdlcyBhcyBBY3RpdmVFZGdlcztcbiAgICAgICAgaWYgKHRoaXMuYXV0b19zY3JvbGxfZGlyKSB7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1Njcm9sbEV2ZW50cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzaXplU3RhcnQuZW1pdCh0aGlzLm1hcFJlc2l6ZUV2ZW50KGV2ZW50KSlcbiAgICAgIH0pXG4gICAgICAub24oJ3Jlc2l6ZW1vdmUnLCAgKGV2ZW50OiBOZ1Jlc2l6ZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVJlc2l6ZURlZmF1bHQpIHtcbiAgICAgICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKGV2ZW50KVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hcHBlZEV2ZW50ID0gdGhpcy5tYXBSZXNpemVFdmVudChldmVudCk7XG4gICAgICAgIHRoaXMucmVzaXplTW92ZS5lbWl0KG1hcHBlZEV2ZW50KVxuICAgICAgfSlcbiAgICAgIC5vbigncmVzaXplaW5lcnRpYXN0YXJ0JywgKGV2ZW50OiBOZ1Jlc2l6ZUV2ZW50KSA9PiB0aGlzLnJlc2l6ZUluZXJ0aWFTdGFydC5lbWl0KHRoaXMubWFwUmVzaXplRXZlbnQoZXZlbnQpKSlcbiAgICAgIC5vbigncmVzaXplZW5kJywgKGV2ZW50OiBOZ1Jlc2l6ZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9fc2Nyb2xsX2Rpcikge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVFZGdlcyA9IHtsZWZ0OiBmYWxzZSwgcmlnaHQ6IGZhbHNlLCB0b3A6IGZhbHNlLCBib3R0b206IGZhbHNlfVxuXG4gICAgICAgIHRoaXMucmVzaXplRW5kLmVtaXQodGhpcy5tYXBSZXNpemVFdmVudChldmVudCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBtYXBSZXNpemVFdmVudChldmVudDogTmdSZXNpemVFdmVudCApOiBUZnRSZXNpemVFdmVudCB7XG4gICAgY29uc3QgdGFyZ2V0ICA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBUZnREcmFnRWxlbWVudDtcbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gdGhpcy5kcmFnZ2FibGVfZGlyPy5kcm9wem9uZV9kaXI/LmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlO1xuICAgIGNvbnN0IHBvc2l0aW9uSW5Ecm9wVGFyZ2V0ID0gdGFyZ2V0ICYmIHJlbGF0ZWRUYXJnZXRcbiAgICAgID8gdGhpcy5pbnRlcmFjdFNlcnZpY2UuY2FsY3VsYXRlUG9zaXRpb25JbkVsZW1lbnQocmVsYXRlZFRhcmdldCwgdGFyZ2V0LCBzY2FsZSlcbiAgICAgIDogbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgaW50ZXJhY3RFdmVudDogZXZlbnQsXG4gICAgICByZXNpemVSZWY6IHRoaXMsXG4gICAgICBkcmFnUmVmOiB0aGlzLmRyYWdnYWJsZV9kaXIsXG4gICAgICBkcmFnT3JpZ2luOiB0aGlzLmRyb3B6b25lX2RpcixcbiAgICAgIGRyb3BUYXJnZXQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudC5kcm9wVGFyZ2V0LFxuICAgICAgcG9zaXRpb25JbkRyb3BUYXJnZXQsXG4gICAgICBzaXplOiB7XG4gICAgICAgIHdpZHRoOiB0YXJnZXQuY2xpZW50V2lkdGggLyBzY2FsZSxcbiAgICAgICAgaGVpZ2h0OiB0YXJnZXQuY2xpZW50SGVpZ2h0IC8gc2NhbGVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhbGlnbkRpbWVuc2lvbnNXaXRoSW5wdXRzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnRlcmFjdFNlcnZpY2UudXBkYXRlU2l6ZShcbiAgICAgIHRoaXMuaW50ZXJhY3RhYmxlSWQsXG4gICAgICB0aGlzLnJlZ2lzdHJ5SWQsXG4gICAgICB7ZGVsdGFYOiAwLCBkZWx0YVk6IDAsIHdpZHRoLCBoZWlnaHR9LFxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIGFkZFJlc2l6ZVByb3BlcnRpZXNUb0VsZW1lbnQobmF0aXZlRWxlbWVudDogVGZ0RHJhZ0VsZW1lbnQpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KG5hdGl2ZUVsZW1lbnQsICdyZXNpemVSZWYnLCB0aGlzKTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvU2Nyb2xsRXZlbnRzKCkge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uID0gdGhpcy5hdXRvX3Njcm9sbF9kaXIuc2Nyb2xsRGVsdGFPYnNlcnZlci5zdWJzY3JpYmUoKHtzY3JvbGxMZWZ0LCBzY3JvbGxUb3B9KSA9PiB7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCB7d2lkdGg6IHByZXZXaWR0aCwgaGVpZ2h0OiBwcmV2SGVpZ2h0fSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgY29uc3QgZGVsdGFIZWlnaHQgPSBzY3JvbGxUb3AgKiAodGhpcy5hY3RpdmVFZGdlcy50b3AgPyAtMSA6IHRoaXMuYWN0aXZlRWRnZXMuYm90dG9tID8gMSA6IDApO1xuICAgICAgY29uc3QgZGVsdGFXaWR0aCA9IHNjcm9sbExlZnQgKiAodGhpcy5hY3RpdmVFZGdlcy5sZWZ0ID8gLTEgOiB0aGlzLmFjdGl2ZUVkZ2VzLnJpZ2h0ID8gMSA6IDApO1xuXG4gICAgICBjb25zdCBoZWlnaHQgPSAocHJldkhlaWdodCArIGRlbHRhSGVpZ2h0KSAvIHNjYWxlO1xuICAgICAgY29uc3Qgd2lkdGggPSAocHJldldpZHRoICsgZGVsdGFXaWR0aCkgLyBzY2FsZTtcbiAgICAgIGNvbnN0IGRlbHRhWCA9IHRoaXMuYWN0aXZlRWRnZXMubGVmdCA/IChzY3JvbGxMZWZ0IC8gc2NhbGUpIDogMDtcbiAgICAgIGNvbnN0IGRlbHRhWSA9IHRoaXMuYWN0aXZlRWRnZXMudG9wID8gKHNjcm9sbFRvcCAvIHNjYWxlKSA6IDA7XG4gICAgICB0aGlzLmludGVyYWN0U2VydmljZS51cGRhdGVTaXplKFxuICAgICAgICB0aGlzLmludGVyYWN0YWJsZUlkLFxuICAgICAgICB0aGlzLnJlZ2lzdHJ5SWQsXG4gICAgICAgIHtkZWx0YVgsIGRlbHRhWSwgd2lkdGgsIGhlaWdodH0sXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -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
|
+
}
|
|
32
|
+
InteractModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: InteractModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
33
|
+
InteractModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: InteractModule, declarations: [DraggableDirective,
|
|
34
|
+
ResizableDirective,
|
|
35
|
+
DropzoneDirective,
|
|
36
|
+
GesturableDirective,
|
|
37
|
+
DragRootDirective,
|
|
38
|
+
AutoScrollDirective,
|
|
39
|
+
AccountForScaleDirective,
|
|
40
|
+
ApplyScaleDirective,
|
|
41
|
+
DragPreviewDirective,
|
|
42
|
+
ArrayOfNPipe], imports: [CommonModule], exports: [DraggableDirective,
|
|
43
|
+
ResizableDirective,
|
|
44
|
+
DropzoneDirective,
|
|
45
|
+
GesturableDirective,
|
|
46
|
+
DragRootDirective,
|
|
47
|
+
AutoScrollDirective,
|
|
48
|
+
AccountForScaleDirective,
|
|
49
|
+
ApplyScaleDirective,
|
|
50
|
+
DragPreviewDirective,
|
|
51
|
+
ArrayOfNPipe] });
|
|
52
|
+
InteractModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: InteractModule, imports: [[CommonModule]] });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9pbnRlcmFjdC9zcmMvbGliL2ludGVyYWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzTixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFJcEUsTUFBTSxPQUFPLEdBQUc7SUFDZCxrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQix3QkFBd0I7SUFDeEIsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixZQUFZO0NBQ2IsQ0FBQztBQWFGLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMEI7UUFDdkMsTUFBTSxhQUFhLEdBQXVCLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFDLENBQUE7UUFDbEUsT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsRUFBQyxHQUFHLGFBQWEsRUFBRSxHQUFHLE1BQU0sRUFBQyxFQUFFO2dCQUMxRSxlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzJHQVZVLGNBQWM7NEdBQWQsY0FBYyxpQkF2QnpCLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLFlBQVksYUFLRixZQUFZLGFBZHRCLGtCQUFrQjtRQUNsQixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLHdCQUF3QjtRQUN4QixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLFlBQVk7NEdBY0QsY0FBYyxZQVRoQixDQUFDLFlBQVksQ0FBQzsyRkFTWixjQUFjO2tCQVYxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsa0VBQWtFO29CQUNsRSxZQUFZLEVBQUU7d0JBQ1osR0FBRyxPQUFPO3FCQUNYO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLE9BQU87cUJBQ1g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFycmF5T2ZOUGlwZSB9IGZyb20gJy4vcGlwZXMvYXJyYXktb2Ytbi5waXBlJztcbmltcG9ydCB7IEFwcGx5U2NhbGVEaXJlY3RpdmUsIERyYWdnYWJsZURpcmVjdGl2ZSwgRHJhZ1Jvb3REaXJlY3RpdmUsIEF1dG9TY3JvbGxEaXJlY3RpdmUsIEFjY291bnRGb3JTY2FsZURpcmVjdGl2ZSwgR2VzdHVyYWJsZURpcmVjdGl2ZSwgUmVzaXphYmxlRGlyZWN0aXZlLCBEcm9wem9uZURpcmVjdGl2ZSwgRHJhZ1ByZXZpZXdEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgSW50ZXJhY3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9pbnRlcmFjdC5zZXJ2aWNlJztcbmltcG9ydCB7IEludGVyYWN0Um9vdENvbmZpZywgSU5URVJBQ1RfUk9PVF9DT05GSUcgfSBmcm9tICcuL21vZGVscyc7XG5cblxuXG5jb25zdCBFWFBPUlRTID0gW1xuICBEcmFnZ2FibGVEaXJlY3RpdmUsXG4gIFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgRHJvcHpvbmVEaXJlY3RpdmUsXG4gIEdlc3R1cmFibGVEaXJlY3RpdmUsXG4gIERyYWdSb290RGlyZWN0aXZlLFxuICBBdXRvU2Nyb2xsRGlyZWN0aXZlLFxuICBBY2NvdW50Rm9yU2NhbGVEaXJlY3RpdmUsXG4gIEFwcGx5U2NhbGVEaXJlY3RpdmUsXG4gIERyYWdQcmV2aWV3RGlyZWN0aXZlLFxuICBBcnJheU9mTlBpcGUsXG5dO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAvLyBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElOVEVSQUNUX1JPT1RfQ09ORklHLCB1c2VWYWx1ZTogJ3B4JyB9XSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgLi4uRVhQT1JUUyxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIC4uLkVYUE9SVFNcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmFjdE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogSW50ZXJhY3RSb290Q29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJbnRlcmFjdE1vZHVsZT4ge1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWc6IEludGVyYWN0Um9vdENvbmZpZyA9IHtjc3NEaW1lbnNpb25Vbml0OiAncHgnfVxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSW50ZXJhY3RNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBJTlRFUkFDVF9ST09UX0NPTkZJRywgdXNlVmFsdWU6IHsuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWd9IH0sXG4gICAgICAgIEludGVyYWN0U2VydmljZVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './interact';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnRlcmFjdCc7Il19
|
|
@@ -0,0 +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
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ludGVyYWN0L3NyYy9saWIvbW9kZWxzL2ludGVyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXFCLDZCQUE2QixDQUFDLENBQUM7QUFFMUcsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBQzdDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFVO0lBQ2pDLE1BQU0sRUFBRSxDQUFDO0lBQ1QsTUFBTSxFQUFFLENBQUM7SUFDVCxhQUFhLEVBQUUsSUFBSTtDQUNwQixDQUFDO0FBQ0Y7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVM7SUFDL0IsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVBQUUsSUFBSTtJQUNaLGFBQWEsRUFBRSxJQUFJO0NBQ3BCLENBQUE7QUFDRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBYTtJQUN2QyxDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0lBQ0osYUFBYSxFQUFFLElBQUk7Q0FDcEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyb3B6b25lRGlyZWN0aXZlLCBEcmFnZ2FibGVEaXJlY3RpdmUsIEdlc3R1cmFibGVEaXJlY3RpdmUsIFJlc2l6YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUG9pbnQsIERyYWdFdmVudCwgUmVzaXplRXZlbnQsIEludGVyYWN0YWJsZSwgRHJvcEV2ZW50LCBHZXN0dXJlRXZlbnQgfSBmcm9tICdAaW50ZXJhY3Rqcy90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuXG5leHBvcnQgdHlwZSBDc3NEaW1lbnNpb25Vbml0ID0gJ3B4JyB8ICdlbSc7XG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0Um9vdENvbmZpZyB7XG4gIGNzc0RpbWVuc2lvblVuaXQ6IENzc0RpbWVuc2lvblVuaXQ7XG59XG5leHBvcnQgY29uc3QgSU5URVJBQ1RfUk9PVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48SW50ZXJhY3RSb290Q29uZmlnPignSU5URVJBQ1RfUk9PVF9DT05GSUdfUEFSQU1TJyk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFR0lTVFJZX0lEID0gJ0RFRkFVTFQnO1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgdmFsdWUgZm9yIERlbHRhIEJlaGF2aW9yU3ViamVjdFxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdERlbHRhOiBEZWx0YSA9IHtcbiAgZGVsdGFYOiAwLFxuICBkZWx0YVk6IDAsXG4gIHRhcmdldEVsZW1lbnQ6IG51bGxcbn07XG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCB2YWx1ZSBmb3IgU2l6ZSBCZWhhdmlvclN1YmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRTaXplOiBTaXplID0ge1xuICB3aWR0aDogbnVsbCxcbiAgaGVpZ2h0OiBudWxsLFxuICB0YXJnZXRFbGVtZW50OiBudWxsXG59XG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCB2YWx1ZSBmb3IgUG9zaXRpb24gQmVoYXZpb3JTdWJqZWN0XG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0UG9zaXRpb246IFBvc2l0aW9uID0ge1xuICB4OiAwLFxuICB5OiAwLFxuICB0YXJnZXRFbGVtZW50OiBudWxsXG59XG4vKipcbiAqIFRoZSBzaGFwZSBvZiB0aGUgc3RhdGUvZXZlbnRzL2JlaGF2aW9yIHN5c3RlbSBmb3IgZWFjaCBkcm9wem9uZVxuICogYW5kIHRoZSBERUZBVUxUX1JFR0lTVFJZX0lEIHN5c3RlbSAoZm9yIGRyb3AgY29tcG9uZW50cyBpbml0aWFsaXplZCBvdXRzaWRlXG4gKiBvZiBhIGRyb3B6b25lKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcmFjdGFibGVTeXN0ZW0ge1xuICBkZWx0YXMkOiBCZWhhdmlvclN1YmplY3Q8RGVsdGE+O1xuICBwb3NpdGlvbiQ6IEJlaGF2aW9yU3ViamVjdDxQb3NpdGlvbj47XG4gIHNpemUkOiBCZWhhdmlvclN1YmplY3Q8U2l6ZSAmIERlbHRhPjtcblxuICBpbnRlcmFjdGFibGUkOiBPYnNlcnZhYmxlPFRmdENvb3Jkcz47XG59XG4vKipcbiAqIFRoZSBrZXkgbWFwIG9mIEludGVyYWN0YWJsZVN5c3RlbXMuIE9uZSBmb3IgdGhlIGRyYWcgY29tcG9uZW50c1xuICogdGhhdCBvcmlnaW5hdGVkIG91dHNpZGUgb2YgYSBkcm9wem9uZSwgcGx1cyBvbmUgZm9yIGVhY2ggZHJvcHpvbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3RhYmxlUmVnaXN0cnkge1xuICBba2V5OiBzdHJpbmddOiBJbnRlcmFjdGFibGVTeXN0ZW1cbn1cblxuLyoqXG4gKiBIVE1MRWxlbWVudCB3aXRoIGhlbHBmdWwgZHJhZyBkaXJlY3RpdmVzIGF0dGFjaGVkIHRvIGZhY2lsaXRhdGUgbW92aW5nIGRyYWcgZGF0YSBiZXR3ZWVuIGRyb3B6b25lc1xuICovXG5leHBvcnQgdHlwZSBUZnREcmFnRWxlbWVudCA9IEhUTUxFbGVtZW50ICYge1xuICBkcmFnUmVmPzogRHJhZ2dhYmxlRGlyZWN0aXZlXG4gIGRyYWdPcmlnaW4/OiBEcm9wem9uZURpcmVjdGl2ZVxuICBkcm9wVGFyZ2V0PzogRHJvcHpvbmVEaXJlY3RpdmVcbn1cblxuLyoqXG4gKiBIVE1MRWxlbWVudCB3aXRoIGhlbHBmdWwgZHJhZyBkaXJlY3RpdmVzIGF0dGFjaGVkIHRvIGZhY2lsaXRhdGUgbW92aW5nIGRyYWcgZGF0YSBiZXR3ZWVuIGRyb3B6b25lc1xuICovXG4gZXhwb3J0IHR5cGUgVGZ0UmVzaXplRWxlbWVudCA9IEhUTUxFbGVtZW50ICYge1xuICByZXNpemVSZWY/OiBSZXNpemFibGVEaXJlY3RpdmVcbn1cblxuLyoqXG4gKiBFeHRlbmRzIHRoZSBpbnRlcmFjdCBkcm9wIGV2ZW50cyBieSBhZGRpbmcgcmVmZXJlbmNlIHRvIHRoZSBkcm9wcGVkIGNvbXBvbmVudHMgZHJhZ1xuICogZGlyZWN0aXZlIHRvIHRoZSBodG1sIGVsZW1lbnQuIFRoaXMgZ2l2ZXMgdGhlIGRyb3B6b25lIGFjY2VzcyB0byB0aGluZ3MgbGlrZSBkYXRhXG4gKiBhbmQgcGFyZW50IGRyb3B6b25lIG9mIHRoZSBkcm9wcGVkIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgTmdEcm9wRXZlbnQgPSBEcm9wRXZlbnQgJiB7XG4gIGRyYWdnYWJsZTogIEludGVyYWN0YWJsZSAmIHtcbiAgICB0YXJnZXQ6IFRmdERyYWdFbGVtZW50O1xuICB9O1xuICByZWxhdGVkVGFyZ2V0OiBUZnREcmFnRWxlbWVudDtcbn07XG4vKipcbiAqIEV4dGVuZHMgdGhlIGludGVyYWN0IHJlc2l6ZSBldmVudHMgYnkgYWRkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBkcmFnUmVmXG4gKiBkaXJlY3RpdmUgdG8gdGhlIGh0bWwgZWxlbWVudC5cbiAqL1xuZXhwb3J0IHR5cGUgIE5nUmVzaXplRXZlbnQgPSBSZXNpemVFdmVudCAmIHtcbiAgZHJhZ2dhYmxlOiAgSW50ZXJhY3RhYmxlICYge1xuICAgIHRhcmdldDogVGZ0RHJhZ0VsZW1lbnQ7XG4gIH07XG59O1xuLyoqXG4gKiBXZSBleHRlbmQgdGhlIGludGVyYWN0IERyYWdFdmVudCBhIGxpdHRsZSBoZXJlLCBhZGRpbmcgdG8gdGhlIHRhcmdldCBlbGVtZW50IHJlZmVyZW5jZXMgZm9yOlxuICogIC0gdGhlIGNvbXBvbmVudCB3ZSBhcmUgZHJhZ2dpbmcgKGRyYWdSZWYpXG4gKiAgLSB0aGUgZHJvcHpvbmUgY29tcG9uZW50IHdoZXJlIHRoZSBkcmFnIGNvbXBvbmVudCBvcmlnaW5hdGVkIChkcmFnT3JpZ2luKVxuICogIC0gdGhlIGRyb3B6b25lIGNvbXBvbmVudCB0aGF0IGl0IHdhcyBkcm9wcGVkIGluIChkcm9wVGFyZ2V0KVxuICogVGhpcyBoZWxwcyB1cyB0byBwYXNzIHJlZmVyZW5jZXMgdG8gZGlyZWN0aXZlIGNsYXNzZXMgYXMgZXZlbnRzIGxpa2UgZHJhZ2VudGVyIGFuZCBkcmFnIGV4aXQgaGFwcGVucy5cbiAqIFdlIHVzZSB0aGVzZSByZWZlcmVuY2VzIHRvIGVtaXQgYSAobW9zdGx5KSBjb25zaXN0ZW50IGV2ZW50IGFjcm9zcyBkcmFnLCBkcm9wLCByZXNpemUgZXZlbnQuXG4gKi9cbmV4cG9ydCB0eXBlIE5nRHJhZ0V2ZW50ID0gRHJhZ0V2ZW50ICYge1xuICBkcm9wem9uZTogeyB0YXJnZXQ6IEhUTUxFbGVtZW50fSxcbiAgdGFyZ2V0OiBUZnREcmFnRWxlbWVudFxufTtcbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIHJlc2l6aW5nLCBkcmFnZ2luZywgZHJvcHBpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZnRJbnRlcmFjdGFibGVFdmVudCB7XG4gIGRyYWdSZWY6IERyYWdnYWJsZURpcmVjdGl2ZTtcbiAgZHJhZ09yaWdpbj86IERyb3B6b25lRGlyZWN0aXZlO1xuICBkcm9wVGFyZ2V0PzogRHJvcHpvbmVEaXJlY3RpdmU7XG4gIHBvc2l0aW9uSW5Ecm9wVGFyZ2V0OiBQb2ludDtcbn1cbi8qKlxuICogRXZlbnQgZW1pdHRlZCBvbiBkcm9wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZ0RHJvcEV2ZW50IGV4dGVuZHMgVGZ0SW50ZXJhY3RhYmxlRXZlbnQge1xuICBpbnRlcmFjdEV2ZW50OiBOZ0Ryb3BFdmVudFxufVxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIG9uIGRyYWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZnREcmFnRXZlbnQgZXh0ZW5kcyBUZnRJbnRlcmFjdGFibGVFdmVudCB7XG4gIGludGVyYWN0RXZlbnQ6IE5nRHJhZ0V2ZW50XG59XG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgb24gcmVzaXplXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGZ0UmVzaXplRXZlbnQgZXh0ZW5kcyBUZnRJbnRlcmFjdGFibGVFdmVudCB7XG4gIGludGVyYWN0RXZlbnQ6IFJlc2l6ZUV2ZW50LFxuICByZXNpemVSZWY6IFJlc2l6YWJsZURpcmVjdGl2ZVxuICBzaXplOiB7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUZnRDb29yZHM9IERlbHRhICYgUG9zaXRpb24gJiBTaXplO1xuXG5leHBvcnQgaW50ZXJmYWNlIERlbHRhIHtcbiAgZGVsdGFYOiBudW1iZXIgfCBudWxsO1xuICBkZWx0YVk6IG51bWJlciB8IG51bGw7XG4gIHRhcmdldEVsZW1lbnQ6IFRmdERyYWdFbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XG4gIHg6IG51bWJlciB8IG51bGw7XG4gIHk6IG51bWJlciB8IG51bGw7XG4gIHRhcmdldEVsZW1lbnQ6IFRmdERyYWdFbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaXplIHtcbiAgd2lkdGg6IG51bWJlciB8IG51bGw7XG4gIGhlaWdodDogbnVtYmVyIHwgbnVsbDtcbiAgdGFyZ2V0RWxlbWVudDogVGZ0UmVzaXplRWxlbWVudCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGZ0R2VzdHVyZUV2ZW50IHtcbiAgZ2VzdHVyZVJlZjogR2VzdHVyYWJsZURpcmVjdGl2ZTtcbiAgaW50ZXJhY3RFdmVudDogR2VzdHVyZUV2ZW50O1xufVxuIl19
|