ngx-fabric-wrapper 10.0.0 → 12.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.
@@ -0,0 +1,193 @@
1
+ import { Component, Input, Output, EventEmitter, ViewChild, HostBinding, ViewEncapsulation } from '@angular/core';
2
+ import { FabricDirective } from './fabric.directive';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./fabric.directive";
5
+ export class FabricComponent {
6
+ constructor() {
7
+ this.json = null;
8
+ this.zoom = null;
9
+ this.width = null;
10
+ this.height = null;
11
+ this.disabled = false;
12
+ this.useFabricClass = true;
13
+ this.dataLoaded = new EventEmitter();
14
+ this.drop = new EventEmitter();
15
+ this.dragover = new EventEmitter();
16
+ this.dragenter = new EventEmitter();
17
+ this.dragleave = new EventEmitter();
18
+ this.mouseup = new EventEmitter();
19
+ this.mousedown = new EventEmitter();
20
+ this.mouseover = new EventEmitter();
21
+ this.mouseout = new EventEmitter();
22
+ this.mousemove = new EventEmitter();
23
+ this.mousewheel = new EventEmitter();
24
+ this.mousedblclick = new EventEmitter();
25
+ this.mouseupBefore = new EventEmitter();
26
+ this.mousedownBefore = new EventEmitter();
27
+ this.mousemoveBefore = new EventEmitter();
28
+ this.mouseUp = new EventEmitter();
29
+ this.mouseDown = new EventEmitter();
30
+ this.mouseOver = new EventEmitter();
31
+ this.mouseOut = new EventEmitter();
32
+ this.mouseMove = new EventEmitter();
33
+ this.mouseWheel = new EventEmitter();
34
+ this.mouseDblclick = new EventEmitter();
35
+ this.mouseUpBefore = new EventEmitter();
36
+ this.mouseDownBefore = new EventEmitter();
37
+ this.mouseMoveBefore = new EventEmitter();
38
+ this.pathCreated = new EventEmitter();
39
+ this.alterRender = new EventEmitter();
40
+ this.objectAdded = new EventEmitter();
41
+ this.objectMoved = new EventEmitter();
42
+ this.objectScaled = new EventEmitter();
43
+ this.objectSkewed = new EventEmitter();
44
+ this.objectRotated = new EventEmitter();
45
+ this.objectRemoved = new EventEmitter();
46
+ this.objectModified = new EventEmitter();
47
+ this.objectSelected = new EventEmitter();
48
+ this.objectMoving = new EventEmitter();
49
+ this.objectScaling = new EventEmitter();
50
+ this.objectSkewing = new EventEmitter();
51
+ this.objectRotating = new EventEmitter();
52
+ this.selectionCleared = new EventEmitter();
53
+ this.selectionCreated = new EventEmitter();
54
+ this.selectionUpdated = new EventEmitter();
55
+ this.beforeTransform = new EventEmitter();
56
+ this.beforeSelectionCleared = new EventEmitter();
57
+ }
58
+ set data(data) {
59
+ this.setJSON(data);
60
+ }
61
+ ngAfterViewInit() {
62
+ if (this.json != null) {
63
+ this.setJSON(this.json, true);
64
+ }
65
+ }
66
+ setJSON(json, force) {
67
+ if (force || json !== this.json) {
68
+ if (this.directiveRef) {
69
+ this.directiveRef.loadFromJSON(json, () => {
70
+ if (this.directiveRef && this.directiveRef.fabric()) {
71
+ this.dataLoaded.emit(this.directiveRef.fabric());
72
+ }
73
+ });
74
+ }
75
+ this.json = json;
76
+ }
77
+ }
78
+ }
79
+ FabricComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: FabricComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
+ FabricComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: FabricComponent, selector: "fabric", inputs: { data: "data", zoom: "zoom", width: "width", height: "height", disabled: "disabled", config: "config", useFabricClass: "useFabricClass" }, outputs: { dataLoaded: "dataLoaded", drop: "drop", dragover: "dragover", dragenter: "dragenter", dragleave: "dragleave", mouseup: "mouseup", mousedown: "mousedown", mouseover: "mouseover", mouseout: "mouseout", mousemove: "mousemove", mousewheel: "mousewheel", mousedblclick: "mousedblclick", mouseupBefore: "mouseupBefore", mousedownBefore: "mousedownBefore", mousemoveBefore: "mousemoveBefore", mouseUp: "mouseUp", mouseDown: "mouseDown", mouseOver: "mouseOver", mouseOut: "mouseOut", mouseMove: "mouseMove", mouseWheel: "mouseWheel", mouseDblclick: "mouseDblclick", mouseUpBefore: "mouseUpBefore", mouseDownBefore: "mouseDownBefore", mouseMoveBefore: "mouseMoveBefore", pathCreated: "pathCreated", alterRender: "alterRender", objectAdded: "objectAdded", objectMoved: "objectMoved", objectScaled: "objectScaled", objectSkewed: "objectSkewed", objectRotated: "objectRotated", objectRemoved: "objectRemoved", objectModified: "objectModified", objectSelected: "objectSelected", objectMoving: "objectMoving", objectScaling: "objectScaling", objectSkewing: "objectSkewing", objectRotating: "objectRotating", selectionCleared: "selectionCleared", selectionCreated: "selectionCreated", selectionUpdated: "selectionUpdated", beforeTransform: "beforeTransform", beforeSelectionCleared: "beforeSelectionCleared" }, host: { properties: { "class.fabric": "this.useFabricClass" } }, viewQueries: [{ propertyName: "directiveRef", first: true, predicate: FabricDirective, descendants: true, static: true }], exportAs: ["ngxFabric"], ngImport: i0, template: "<canvas [fabric]=\"config\" [zoom]=\"zoom\" [width]=\"width\" [height]=\"height\" [disabled]=\"disabled\" (drop)=\"drop.emit($event)\" (dragover)=\"dragover.emit($event)\" (dragenter)=\"dragenter.emit($event)\" (dragleave)=\"dragleave.emit($event)\" (mouseup)=\"mouseup.emit($event)\" (mousedown)=\"mousedown.emit($event)\" (mouseover)=\"mouseover.emit($event)\" (mouseout)=\"mouseout.emit($event)\" (mousemove)=\"mousemove.emit($event)\" (mousewheel)=\"mousewheel.emit($event)\" (mousedblclick)=\"mousedblclick.emit($event)\" (mouseupBefore)=\"mouseupBefore.emit($event)\" (mousedownBefore)=\"mousedownBefore.emit($event)\" (mousemoveBefore)=\"mousemoveBefore.emit($event)\" (mouseUp)=\"mouseUp.emit($event)\" (mouseDown)=\"mouseDown.emit($event)\" (mouseOver)=\"mouseOver.emit($event)\" (mouseOut)=\"mouseOut.emit($event)\" (mouseMove)=\"mouseMove.emit($event)\" (mouseWheel)=\"mouseWheel.emit($event)\" (mouseDblclick)=\"mouseDblclick.emit($event)\" (mouseUpBefore)=\"mouseUpBefore.emit($event)\" (mouseDownBefore)=\"mouseDownBefore.emit($event)\" (mouseMoveBefore)=\"mouseMoveBefore.emit($event)\" (pathCreated)=\"pathCreated.emit($event)\" (alterRender)=\"alterRender.emit($event)\" (objectAdded)=\"objectAdded.emit($event)\" (objectMoved)=\"objectMoved.emit($event)\" (objectScaled)=\"objectScaled.emit($event)\" (objectSkewed)=\"objectSkewed.emit($event)\" (objectRotated)=\"objectRotated.emit($event)\" (objectRemoved)=\"objectRemoved.emit($event)\" (objectModified)=\"objectModified.emit($event)\" (objectSelected)=\"objectSelected.emit($event)\" (objectMoving)=\"objectMoving.emit($event)\" (objectScaling)=\"objectScaling.emit($event)\" (objectSkewing)=\"objectSkewing.emit($event)\" (objectRotating)=\"objectRotating.emit($event)\" (selectionCleared)=\"selectionCleared.emit($event)\" (selectionCreated)=\"selectionCreated.emit($event)\" (selectionUpdated)=\"selectionUpdated.emit($event)\" (beforeTransform)=\"beforeTransform.emit($event)\" (beforeSelectionCleared)=\"beforeSelectionCleared.emit($event)\">\n</canvas>\n", styles: ["fabric[fxflex]{display:flex;flex-direction:column;min-width:0;min-height:0}fabric.fabric{width:100%;height:100%}\n"], directives: [{ type: i1.FabricDirective, selector: "[fabric]", inputs: ["zoom", "width", "height", "disabled", "fabric"], outputs: ["drop", "dragover", "dragenter", "dragleave", "mouseup", "mousedown", "mouseover", "mouseout", "mousemove", "mousewheel", "mousedblclick", "mouseupBefore", "mousedownBefore", "mousemoveBefore", "mouseUp", "mouseDown", "mouseOver", "mouseOut", "mouseMove", "mouseWheel", "mouseDblclick", "mouseUpBefore", "mouseDownBefore", "mouseMoveBefore", "pathCreated", "alterRender", "objectAdded", "objectMoved", "objectScaled", "objectSkewed", "objectRotated", "objectRemoved", "objectModified", "objectSelected", "objectMoving", "objectScaling", "objectSkewing", "objectRotating", "selectionCleared", "selectionCreated", "selectionUpdated", "beforeTransform", "beforeSelectionCleared"], exportAs: ["ngxFabric"] }], encapsulation: i0.ViewEncapsulation.None });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: FabricComponent, decorators: [{
82
+ type: Component,
83
+ args: [{ selector: 'fabric', exportAs: 'ngxFabric', encapsulation: ViewEncapsulation.None, template: "<canvas [fabric]=\"config\" [zoom]=\"zoom\" [width]=\"width\" [height]=\"height\" [disabled]=\"disabled\" (drop)=\"drop.emit($event)\" (dragover)=\"dragover.emit($event)\" (dragenter)=\"dragenter.emit($event)\" (dragleave)=\"dragleave.emit($event)\" (mouseup)=\"mouseup.emit($event)\" (mousedown)=\"mousedown.emit($event)\" (mouseover)=\"mouseover.emit($event)\" (mouseout)=\"mouseout.emit($event)\" (mousemove)=\"mousemove.emit($event)\" (mousewheel)=\"mousewheel.emit($event)\" (mousedblclick)=\"mousedblclick.emit($event)\" (mouseupBefore)=\"mouseupBefore.emit($event)\" (mousedownBefore)=\"mousedownBefore.emit($event)\" (mousemoveBefore)=\"mousemoveBefore.emit($event)\" (mouseUp)=\"mouseUp.emit($event)\" (mouseDown)=\"mouseDown.emit($event)\" (mouseOver)=\"mouseOver.emit($event)\" (mouseOut)=\"mouseOut.emit($event)\" (mouseMove)=\"mouseMove.emit($event)\" (mouseWheel)=\"mouseWheel.emit($event)\" (mouseDblclick)=\"mouseDblclick.emit($event)\" (mouseUpBefore)=\"mouseUpBefore.emit($event)\" (mouseDownBefore)=\"mouseDownBefore.emit($event)\" (mouseMoveBefore)=\"mouseMoveBefore.emit($event)\" (pathCreated)=\"pathCreated.emit($event)\" (alterRender)=\"alterRender.emit($event)\" (objectAdded)=\"objectAdded.emit($event)\" (objectMoved)=\"objectMoved.emit($event)\" (objectScaled)=\"objectScaled.emit($event)\" (objectSkewed)=\"objectSkewed.emit($event)\" (objectRotated)=\"objectRotated.emit($event)\" (objectRemoved)=\"objectRemoved.emit($event)\" (objectModified)=\"objectModified.emit($event)\" (objectSelected)=\"objectSelected.emit($event)\" (objectMoving)=\"objectMoving.emit($event)\" (objectScaling)=\"objectScaling.emit($event)\" (objectSkewing)=\"objectSkewing.emit($event)\" (objectRotating)=\"objectRotating.emit($event)\" (selectionCleared)=\"selectionCleared.emit($event)\" (selectionCreated)=\"selectionCreated.emit($event)\" (selectionUpdated)=\"selectionUpdated.emit($event)\" (beforeTransform)=\"beforeTransform.emit($event)\" (beforeSelectionCleared)=\"beforeSelectionCleared.emit($event)\">\n</canvas>\n", styles: ["fabric[fxflex]{display:flex;flex-direction:column;min-width:0;min-height:0}fabric.fabric{width:100%;height:100%}\n"] }]
84
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
85
+ type: Input
86
+ }], zoom: [{
87
+ type: Input
88
+ }], width: [{
89
+ type: Input
90
+ }], height: [{
91
+ type: Input
92
+ }], disabled: [{
93
+ type: Input
94
+ }], config: [{
95
+ type: Input
96
+ }], useFabricClass: [{
97
+ type: HostBinding,
98
+ args: ['class.fabric']
99
+ }, {
100
+ type: Input
101
+ }], dataLoaded: [{
102
+ type: Output
103
+ }], drop: [{
104
+ type: Output
105
+ }], dragover: [{
106
+ type: Output
107
+ }], dragenter: [{
108
+ type: Output
109
+ }], dragleave: [{
110
+ type: Output
111
+ }], mouseup: [{
112
+ type: Output
113
+ }], mousedown: [{
114
+ type: Output
115
+ }], mouseover: [{
116
+ type: Output
117
+ }], mouseout: [{
118
+ type: Output
119
+ }], mousemove: [{
120
+ type: Output
121
+ }], mousewheel: [{
122
+ type: Output
123
+ }], mousedblclick: [{
124
+ type: Output
125
+ }], mouseupBefore: [{
126
+ type: Output
127
+ }], mousedownBefore: [{
128
+ type: Output
129
+ }], mousemoveBefore: [{
130
+ type: Output
131
+ }], mouseUp: [{
132
+ type: Output
133
+ }], mouseDown: [{
134
+ type: Output
135
+ }], mouseOver: [{
136
+ type: Output
137
+ }], mouseOut: [{
138
+ type: Output
139
+ }], mouseMove: [{
140
+ type: Output
141
+ }], mouseWheel: [{
142
+ type: Output
143
+ }], mouseDblclick: [{
144
+ type: Output
145
+ }], mouseUpBefore: [{
146
+ type: Output
147
+ }], mouseDownBefore: [{
148
+ type: Output
149
+ }], mouseMoveBefore: [{
150
+ type: Output
151
+ }], pathCreated: [{
152
+ type: Output
153
+ }], alterRender: [{
154
+ type: Output
155
+ }], objectAdded: [{
156
+ type: Output
157
+ }], objectMoved: [{
158
+ type: Output
159
+ }], objectScaled: [{
160
+ type: Output
161
+ }], objectSkewed: [{
162
+ type: Output
163
+ }], objectRotated: [{
164
+ type: Output
165
+ }], objectRemoved: [{
166
+ type: Output
167
+ }], objectModified: [{
168
+ type: Output
169
+ }], objectSelected: [{
170
+ type: Output
171
+ }], objectMoving: [{
172
+ type: Output
173
+ }], objectScaling: [{
174
+ type: Output
175
+ }], objectSkewing: [{
176
+ type: Output
177
+ }], objectRotating: [{
178
+ type: Output
179
+ }], selectionCleared: [{
180
+ type: Output
181
+ }], selectionCreated: [{
182
+ type: Output
183
+ }], selectionUpdated: [{
184
+ type: Output
185
+ }], beforeTransform: [{
186
+ type: Output
187
+ }], beforeSelectionCleared: [{
188
+ type: Output
189
+ }], directiveRef: [{
190
+ type: ViewChild,
191
+ args: [FabricDirective, { static: true }]
192
+ }] } });
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvbGliL2ZhYnJpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9mYWJyaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFDRCxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFDMUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVdyRCxNQUFNLE9BQU8sZUFBZTtJQTBFMUI7UUF6RVEsU0FBSSxHQUFRLElBQUksQ0FBQztRQU9oQixTQUFJLEdBQWtCLElBQUksQ0FBQztRQUUzQixVQUFLLEdBQWtCLElBQUksQ0FBQztRQUM1QixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUU3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBSzFCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRTlCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXBDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUUxQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNyQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV0QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN2QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV6QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUUzQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUk1QyxDQUFDO0lBdkVoQixJQUNJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQXNFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLElBQVksRUFBRSxLQUFlO1FBQzNDLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtvQkFDeEMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztxQkFDbEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7NEdBOUZVLGVBQWU7Z0dBQWYsZUFBZSw0a0RBd0VmLGVBQWUsdUZDdkY1QixrL0RBRUE7MkZEYWEsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxRQUFRLFlBQ1IsV0FBVyxpQkFHTixpQkFBaUIsQ0FBQyxJQUFJOzBFQU1qQyxJQUFJO3NCQURQLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csY0FBYztzQkFEdEIsV0FBVzt1QkFBQyxjQUFjOztzQkFDMUIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUV1QyxZQUFZO3NCQUF6RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsXG4gIEFmdGVyVmlld0luaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLCBIb3N0QmluZGluZywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmFicmljRGlyZWN0aXZlIH0gZnJvbSAnLi9mYWJyaWMuZGlyZWN0aXZlJztcblxuaW1wb3J0IHsgRmFicmljQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnLi9mYWJyaWMuaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZhYnJpYycsXG4gIGV4cG9ydEFzOiAnbmd4RmFicmljJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYnJpYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9mYWJyaWMuY29tcG9uZW50LmNzcycgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGYWJyaWNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBqc29uOiBhbnkgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKGRhdGE6IHN0cmluZykge1xuICAgIHRoaXMuc2V0SlNPTihkYXRhKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHpvb206IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGNvbmZpZz86IEZhYnJpY0NvbmZpZ0ludGVyZmFjZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZhYnJpYycpXG4gIEBJbnB1dCgpIHVzZUZhYnJpY0NsYXNzOiBib29sZWFuID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgZGF0YUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBkcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkcmFnb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZHJhZ2VudGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkcmFnbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCkgbW91c2V1cCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2Vkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZW92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNld2hlZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlZGJsY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNldXBCZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlZG93bkJlZm9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2Vtb3ZlQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIG1vdXNlVXAgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlRG93biA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2VPdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZU91dCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2VNb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZVdoZWVsID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZURibGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZVVwQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZURvd25CZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlTW92ZUJlZm9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBwYXRoQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWx0ZXJSZW5kZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCkgb2JqZWN0QWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdE1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvYmplY3RTY2FsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdFNrZXdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0Um90YXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0TW9kaWZpZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvYmplY3RNb3ZpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdFNjYWxpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdFNrZXdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdFJvdGF0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvblVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCkgYmVmb3JlVHJhbnNmb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBiZWZvcmVTZWxlY3Rpb25DbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZChGYWJyaWNEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGRpcmVjdGl2ZVJlZj86IEZhYnJpY0RpcmVjdGl2ZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmpzb24gIT0gbnVsbCkge1xuICAgICAgdGhpcy5zZXRKU09OKHRoaXMuanNvbiwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRKU09OKGpzb246IHN0cmluZywgZm9yY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGZvcmNlIHx8IGpzb24gIT09IHRoaXMuanNvbikge1xuICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlUmVmKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlUmVmLmxvYWRGcm9tSlNPTihqc29uLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlUmVmICYmIHRoaXMuZGlyZWN0aXZlUmVmLmZhYnJpYygpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFMb2FkZWQuZW1pdCh0aGlzLmRpcmVjdGl2ZVJlZi5mYWJyaWMoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5qc29uID0ganNvbjtcbiAgICB9XG4gIH1cbn1cbiIsIjxjYW52YXMgW2ZhYnJpY109XCJjb25maWdcIiBbem9vbV09XCJ6b29tXCIgW3dpZHRoXT1cIndpZHRoXCIgW2hlaWdodF09XCJoZWlnaHRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoZHJvcCk9XCJkcm9wLmVtaXQoJGV2ZW50KVwiIChkcmFnb3Zlcik9XCJkcmFnb3Zlci5lbWl0KCRldmVudClcIiAoZHJhZ2VudGVyKT1cImRyYWdlbnRlci5lbWl0KCRldmVudClcIiAoZHJhZ2xlYXZlKT1cImRyYWdsZWF2ZS5lbWl0KCRldmVudClcIiAobW91c2V1cCk9XCJtb3VzZXVwLmVtaXQoJGV2ZW50KVwiIChtb3VzZWRvd24pPVwibW91c2Vkb3duLmVtaXQoJGV2ZW50KVwiIChtb3VzZW92ZXIpPVwibW91c2VvdmVyLmVtaXQoJGV2ZW50KVwiIChtb3VzZW91dCk9XCJtb3VzZW91dC5lbWl0KCRldmVudClcIiAobW91c2Vtb3ZlKT1cIm1vdXNlbW92ZS5lbWl0KCRldmVudClcIiAobW91c2V3aGVlbCk9XCJtb3VzZXdoZWVsLmVtaXQoJGV2ZW50KVwiIChtb3VzZWRibGNsaWNrKT1cIm1vdXNlZGJsY2xpY2suZW1pdCgkZXZlbnQpXCIgKG1vdXNldXBCZWZvcmUpPVwibW91c2V1cEJlZm9yZS5lbWl0KCRldmVudClcIiAobW91c2Vkb3duQmVmb3JlKT1cIm1vdXNlZG93bkJlZm9yZS5lbWl0KCRldmVudClcIiAobW91c2Vtb3ZlQmVmb3JlKT1cIm1vdXNlbW92ZUJlZm9yZS5lbWl0KCRldmVudClcIiAobW91c2VVcCk9XCJtb3VzZVVwLmVtaXQoJGV2ZW50KVwiIChtb3VzZURvd24pPVwibW91c2VEb3duLmVtaXQoJGV2ZW50KVwiIChtb3VzZU92ZXIpPVwibW91c2VPdmVyLmVtaXQoJGV2ZW50KVwiIChtb3VzZU91dCk9XCJtb3VzZU91dC5lbWl0KCRldmVudClcIiAobW91c2VNb3ZlKT1cIm1vdXNlTW92ZS5lbWl0KCRldmVudClcIiAobW91c2VXaGVlbCk9XCJtb3VzZVdoZWVsLmVtaXQoJGV2ZW50KVwiIChtb3VzZURibGNsaWNrKT1cIm1vdXNlRGJsY2xpY2suZW1pdCgkZXZlbnQpXCIgKG1vdXNlVXBCZWZvcmUpPVwibW91c2VVcEJlZm9yZS5lbWl0KCRldmVudClcIiAobW91c2VEb3duQmVmb3JlKT1cIm1vdXNlRG93bkJlZm9yZS5lbWl0KCRldmVudClcIiAobW91c2VNb3ZlQmVmb3JlKT1cIm1vdXNlTW92ZUJlZm9yZS5lbWl0KCRldmVudClcIiAocGF0aENyZWF0ZWQpPVwicGF0aENyZWF0ZWQuZW1pdCgkZXZlbnQpXCIgKGFsdGVyUmVuZGVyKT1cImFsdGVyUmVuZGVyLmVtaXQoJGV2ZW50KVwiIChvYmplY3RBZGRlZCk9XCJvYmplY3RBZGRlZC5lbWl0KCRldmVudClcIiAob2JqZWN0TW92ZWQpPVwib2JqZWN0TW92ZWQuZW1pdCgkZXZlbnQpXCIgKG9iamVjdFNjYWxlZCk9XCJvYmplY3RTY2FsZWQuZW1pdCgkZXZlbnQpXCIgKG9iamVjdFNrZXdlZCk9XCJvYmplY3RTa2V3ZWQuZW1pdCgkZXZlbnQpXCIgKG9iamVjdFJvdGF0ZWQpPVwib2JqZWN0Um90YXRlZC5lbWl0KCRldmVudClcIiAob2JqZWN0UmVtb3ZlZCk9XCJvYmplY3RSZW1vdmVkLmVtaXQoJGV2ZW50KVwiIChvYmplY3RNb2RpZmllZCk9XCJvYmplY3RNb2RpZmllZC5lbWl0KCRldmVudClcIiAob2JqZWN0U2VsZWN0ZWQpPVwib2JqZWN0U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCIgKG9iamVjdE1vdmluZyk9XCJvYmplY3RNb3ZpbmcuZW1pdCgkZXZlbnQpXCIgKG9iamVjdFNjYWxpbmcpPVwib2JqZWN0U2NhbGluZy5lbWl0KCRldmVudClcIiAob2JqZWN0U2tld2luZyk9XCJvYmplY3RTa2V3aW5nLmVtaXQoJGV2ZW50KVwiIChvYmplY3RSb3RhdGluZyk9XCJvYmplY3RSb3RhdGluZy5lbWl0KCRldmVudClcIiAoc2VsZWN0aW9uQ2xlYXJlZCk9XCJzZWxlY3Rpb25DbGVhcmVkLmVtaXQoJGV2ZW50KVwiIChzZWxlY3Rpb25DcmVhdGVkKT1cInNlbGVjdGlvbkNyZWF0ZWQuZW1pdCgkZXZlbnQpXCIgKHNlbGVjdGlvblVwZGF0ZWQpPVwic2VsZWN0aW9uVXBkYXRlZC5lbWl0KCRldmVudClcIiAoYmVmb3JlVHJhbnNmb3JtKT1cImJlZm9yZVRyYW5zZm9ybS5lbWl0KCRldmVudClcIiAoYmVmb3JlU2VsZWN0aW9uQ2xlYXJlZCk9XCJiZWZvcmVTZWxlY3Rpb25DbGVhcmVkLmVtaXQoJGV2ZW50KVwiPlxuPC9jYW52YXM+XG4iXX0=
@@ -0,0 +1,310 @@
1
+ import { fabric } from 'fabric';
2
+ import ResizeObserver from 'resize-observer-polyfill';
3
+ import { Directive, Optional, Inject, Input, Output, EventEmitter } from '@angular/core';
4
+ import { FABRIC_CONFIG, FabricConfig, FabricEvents } from './fabric.interfaces';
5
+ import * as i0 from "@angular/core";
6
+ export class FabricDirective {
7
+ constructor(zone, elementRef, differs, defaults) {
8
+ this.zone = zone;
9
+ this.elementRef = elementRef;
10
+ this.differs = differs;
11
+ this.defaults = defaults;
12
+ this.instance = null;
13
+ this.ro = null;
14
+ this.objectsJSON = null;
15
+ this.initialZoom = null;
16
+ this.initialWidth = null;
17
+ this.initialHeight = null;
18
+ this.configDiff = null;
19
+ this.disabled = false;
20
+ this.drop = new EventEmitter();
21
+ this.dragover = new EventEmitter();
22
+ this.dragenter = new EventEmitter();
23
+ this.dragleave = new EventEmitter();
24
+ this.mouseup = new EventEmitter();
25
+ this.mousedown = new EventEmitter();
26
+ this.mouseover = new EventEmitter();
27
+ this.mouseout = new EventEmitter();
28
+ this.mousemove = new EventEmitter();
29
+ this.mousewheel = new EventEmitter();
30
+ this.mousedblclick = new EventEmitter();
31
+ this.mouseupBefore = new EventEmitter();
32
+ this.mousedownBefore = new EventEmitter();
33
+ this.mousemoveBefore = new EventEmitter();
34
+ this.mouseUp = new EventEmitter();
35
+ this.mouseDown = new EventEmitter();
36
+ this.mouseOver = new EventEmitter();
37
+ this.mouseOut = new EventEmitter();
38
+ this.mouseMove = new EventEmitter();
39
+ this.mouseWheel = new EventEmitter();
40
+ this.mouseDblclick = new EventEmitter();
41
+ this.mouseUpBefore = new EventEmitter();
42
+ this.mouseDownBefore = new EventEmitter();
43
+ this.mouseMoveBefore = new EventEmitter();
44
+ this.pathCreated = new EventEmitter();
45
+ this.alterRender = new EventEmitter();
46
+ this.objectAdded = new EventEmitter();
47
+ this.objectMoved = new EventEmitter();
48
+ this.objectScaled = new EventEmitter();
49
+ this.objectSkewed = new EventEmitter();
50
+ this.objectRotated = new EventEmitter();
51
+ this.objectRemoved = new EventEmitter();
52
+ this.objectModified = new EventEmitter();
53
+ this.objectSelected = new EventEmitter();
54
+ this.objectMoving = new EventEmitter();
55
+ this.objectScaling = new EventEmitter();
56
+ this.objectSkewing = new EventEmitter();
57
+ this.objectRotating = new EventEmitter();
58
+ this.selectionCleared = new EventEmitter();
59
+ this.selectionCreated = new EventEmitter();
60
+ this.selectionUpdated = new EventEmitter();
61
+ this.beforeTransform = new EventEmitter();
62
+ this.beforeSelectionCleared = new EventEmitter();
63
+ }
64
+ set zoom(zoom) {
65
+ this.setZoom(zoom);
66
+ }
67
+ set width(width) {
68
+ this.setWidth(width);
69
+ }
70
+ set height(height) {
71
+ this.setHeight(height);
72
+ }
73
+ ngOnInit() {
74
+ const params = new FabricConfig(this.defaults);
75
+ params.assign(this.config); // Custom configuration
76
+ this.zone.runOutsideAngular(() => {
77
+ if (!this.disabled) {
78
+ this.instance = new fabric.Canvas(this.elementRef.nativeElement, params);
79
+ }
80
+ else {
81
+ this.instance = new fabric.StaticCanvas(this.elementRef.nativeElement, params);
82
+ }
83
+ if (this.initialZoom) {
84
+ this.setZoom(this.initialZoom);
85
+ }
86
+ if (this.initialWidth) {
87
+ this.setWidth(this.initialWidth);
88
+ }
89
+ if (this.initialHeight) {
90
+ this.setHeight(this.initialHeight);
91
+ }
92
+ if (this.objectsJSON !== null) {
93
+ this.loadFromJSON(this.objectsJSON);
94
+ }
95
+ });
96
+ // Add native Fabric event handling
97
+ FabricEvents.forEach((eventName) => {
98
+ const fabricEvent = eventName.replace(/([A-Z])/g, (c) => `:${c.toLowerCase()}`);
99
+ if (this.instance) {
100
+ this.instance.on(fabricEvent, (event) => {
101
+ this.zone.run(() => {
102
+ if (this[eventName].observers.length) {
103
+ this[eventName].emit(event);
104
+ }
105
+ });
106
+ });
107
+ }
108
+ });
109
+ if (!this.configDiff) {
110
+ this.configDiff = this.differs.find(this.config || {}).create();
111
+ this.configDiff.diff(this.config || {});
112
+ }
113
+ this.zone.runOutsideAngular(() => {
114
+ this.ro = new ResizeObserver((entries, observer) => {
115
+ const element = this.elementRef.nativeElement.parentElement.parentElement;
116
+ if (!this.initialWidth) {
117
+ this.setWidth(element.offsetWidth);
118
+ }
119
+ if (!this.initialHeight) {
120
+ this.setHeight(element.offsetHeight);
121
+ }
122
+ });
123
+ this.ro.observe(this.elementRef.nativeElement.parentElement.parentElement);
124
+ });
125
+ }
126
+ ngOnDestroy() {
127
+ if (this.ro) {
128
+ this.ro.disconnect();
129
+ }
130
+ if (this.instance) {
131
+ this.objectsJSON = this.instance.toObject();
132
+ this.instance.dispose();
133
+ delete this.instance;
134
+ this.instance = null;
135
+ }
136
+ }
137
+ ngDoCheck() {
138
+ if (this.configDiff) {
139
+ const changes = this.configDiff.diff(this.config || {});
140
+ if (changes) {
141
+ this.ngOnDestroy();
142
+ this.ngOnInit();
143
+ }
144
+ }
145
+ }
146
+ ngOnChanges(changes) {
147
+ if (this.instance && changes['disabled']) {
148
+ if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {
149
+ this.ngOnDestroy();
150
+ this.ngOnInit();
151
+ }
152
+ }
153
+ }
154
+ fabric() {
155
+ return this.instance;
156
+ }
157
+ clear() {
158
+ if (this.instance) {
159
+ this.instance.clear();
160
+ }
161
+ }
162
+ render() {
163
+ if (this.instance) {
164
+ this.instance.renderAll();
165
+ }
166
+ }
167
+ setZoom(zoom) {
168
+ this.initialZoom = zoom;
169
+ if (this.instance) {
170
+ this.instance.setZoom(zoom);
171
+ }
172
+ }
173
+ setWidth(width) {
174
+ this.initialWidth = width;
175
+ if (this.instance) {
176
+ this.instance.setWidth(width);
177
+ }
178
+ }
179
+ setHeight(height) {
180
+ this.initialHeight = height;
181
+ if (this.instance) {
182
+ this.instance.setHeight(height);
183
+ }
184
+ }
185
+ loadFromJSON(json, callback, reviverOpt) {
186
+ if (this.instance) {
187
+ this.instance.loadFromJSON(json, () => {
188
+ let renderAll = true;
189
+ if (callback) {
190
+ renderAll = callback();
191
+ }
192
+ if (renderAll && this.instance) {
193
+ this.instance.renderAll();
194
+ }
195
+ }, reviverOpt);
196
+ }
197
+ }
198
+ }
199
+ FabricDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: FabricDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: FABRIC_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
200
+ FabricDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.5", type: FabricDirective, selector: "[fabric]", inputs: { zoom: "zoom", width: "width", height: "height", disabled: "disabled", config: ["fabric", "config"] }, outputs: { drop: "drop", dragover: "dragover", dragenter: "dragenter", dragleave: "dragleave", mouseup: "mouseup", mousedown: "mousedown", mouseover: "mouseover", mouseout: "mouseout", mousemove: "mousemove", mousewheel: "mousewheel", mousedblclick: "mousedblclick", mouseupBefore: "mouseupBefore", mousedownBefore: "mousedownBefore", mousemoveBefore: "mousemoveBefore", mouseUp: "mouseUp", mouseDown: "mouseDown", mouseOver: "mouseOver", mouseOut: "mouseOut", mouseMove: "mouseMove", mouseWheel: "mouseWheel", mouseDblclick: "mouseDblclick", mouseUpBefore: "mouseUpBefore", mouseDownBefore: "mouseDownBefore", mouseMoveBefore: "mouseMoveBefore", pathCreated: "pathCreated", alterRender: "alterRender", objectAdded: "objectAdded", objectMoved: "objectMoved", objectScaled: "objectScaled", objectSkewed: "objectSkewed", objectRotated: "objectRotated", objectRemoved: "objectRemoved", objectModified: "objectModified", objectSelected: "objectSelected", objectMoving: "objectMoving", objectScaling: "objectScaling", objectSkewing: "objectSkewing", objectRotating: "objectRotating", selectionCleared: "selectionCleared", selectionCreated: "selectionCreated", selectionUpdated: "selectionUpdated", beforeTransform: "beforeTransform", beforeSelectionCleared: "beforeSelectionCleared" }, exportAs: ["ngxFabric"], usesOnChanges: true, ngImport: i0 });
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: FabricDirective, decorators: [{
202
+ type: Directive,
203
+ args: [{
204
+ selector: '[fabric]',
205
+ exportAs: 'ngxFabric'
206
+ }]
207
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: undefined, decorators: [{
208
+ type: Optional
209
+ }, {
210
+ type: Inject,
211
+ args: [FABRIC_CONFIG]
212
+ }] }]; }, propDecorators: { zoom: [{
213
+ type: Input
214
+ }], width: [{
215
+ type: Input
216
+ }], height: [{
217
+ type: Input
218
+ }], disabled: [{
219
+ type: Input
220
+ }], config: [{
221
+ type: Input,
222
+ args: ['fabric']
223
+ }], drop: [{
224
+ type: Output
225
+ }], dragover: [{
226
+ type: Output
227
+ }], dragenter: [{
228
+ type: Output
229
+ }], dragleave: [{
230
+ type: Output
231
+ }], mouseup: [{
232
+ type: Output
233
+ }], mousedown: [{
234
+ type: Output
235
+ }], mouseover: [{
236
+ type: Output
237
+ }], mouseout: [{
238
+ type: Output
239
+ }], mousemove: [{
240
+ type: Output
241
+ }], mousewheel: [{
242
+ type: Output
243
+ }], mousedblclick: [{
244
+ type: Output
245
+ }], mouseupBefore: [{
246
+ type: Output
247
+ }], mousedownBefore: [{
248
+ type: Output
249
+ }], mousemoveBefore: [{
250
+ type: Output
251
+ }], mouseUp: [{
252
+ type: Output
253
+ }], mouseDown: [{
254
+ type: Output
255
+ }], mouseOver: [{
256
+ type: Output
257
+ }], mouseOut: [{
258
+ type: Output
259
+ }], mouseMove: [{
260
+ type: Output
261
+ }], mouseWheel: [{
262
+ type: Output
263
+ }], mouseDblclick: [{
264
+ type: Output
265
+ }], mouseUpBefore: [{
266
+ type: Output
267
+ }], mouseDownBefore: [{
268
+ type: Output
269
+ }], mouseMoveBefore: [{
270
+ type: Output
271
+ }], pathCreated: [{
272
+ type: Output
273
+ }], alterRender: [{
274
+ type: Output
275
+ }], objectAdded: [{
276
+ type: Output
277
+ }], objectMoved: [{
278
+ type: Output
279
+ }], objectScaled: [{
280
+ type: Output
281
+ }], objectSkewed: [{
282
+ type: Output
283
+ }], objectRotated: [{
284
+ type: Output
285
+ }], objectRemoved: [{
286
+ type: Output
287
+ }], objectModified: [{
288
+ type: Output
289
+ }], objectSelected: [{
290
+ type: Output
291
+ }], objectMoving: [{
292
+ type: Output
293
+ }], objectScaling: [{
294
+ type: Output
295
+ }], objectSkewing: [{
296
+ type: Output
297
+ }], objectRotating: [{
298
+ type: Output
299
+ }], selectionCleared: [{
300
+ type: Output
301
+ }], selectionCreated: [{
302
+ type: Output
303
+ }], selectionUpdated: [{
304
+ type: Output
305
+ }], beforeTransform: [{
306
+ type: Output
307
+ }], beforeSelectionCleared: [{
308
+ type: Output
309
+ }] } });
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvbGliL2ZhYnJpYy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxPQUFPLGNBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBRWxDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUNxQixNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFDckIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBTXpELE1BQU0sT0FBTyxlQUFlO0lBaUYxQixZQUFvQixJQUFZLEVBQ3RCLFVBQXNCLEVBQVUsT0FBd0IsRUFDckIsUUFBK0I7UUFGeEQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBdUI7UUFsRnBFLGFBQVEsR0FBK0MsSUFBSSxDQUFDO1FBRTVELE9BQUUsR0FBMEIsSUFBSSxDQUFDO1FBRWpDLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUVsQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUVwQyxlQUFVLEdBQXVDLElBQUksQ0FBQztRQWdCckQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUl6QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNuQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxjQUFTLEdB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UztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmFicmljIH0gZnJvbSAnZmFicmljJztcblxuaW1wb3J0IFJlc2l6ZU9ic2VydmVyIGZyb20gJ3Jlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbCc7XG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgT3B0aW9uYWwsIEluamVjdCxcbiAgT25Jbml0LCBPbkRlc3Ryb3ksIERvQ2hlY2ssIE9uQ2hhbmdlcyxcbiAgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUsIEVsZW1lbnRSZWYsXG4gIEtleVZhbHVlRGlmZmVyLCBLZXlWYWx1ZURpZmZlcnMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRkFCUklDX0NPTkZJRywgRmFicmljQ29uZmlnLCBGYWJyaWNDb25maWdJbnRlcmZhY2UsXG4gIEZhYnJpY0V2ZW50LCBGYWJyaWNFdmVudHMgfSBmcm9tICcuL2ZhYnJpYy5pbnRlcmZhY2VzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZhYnJpY10nLFxuICBleHBvcnRBczogJ25neEZhYnJpYydcbn0pXG5leHBvcnQgY2xhc3MgRmFicmljRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERvQ2hlY2ssIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgaW5zdGFuY2U6IGZhYnJpYy5DYW52YXMgfCBmYWJyaWMuU3RhdGljQ2FudmFzIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBybzogUmVzaXplT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG9iamVjdHNKU09OOiBvYmplY3QgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGluaXRpYWxab29tOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0aWFsV2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGluaXRpYWxIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY29uZmlnRGlmZjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgc2V0IHpvb20oem9vbTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRab29tKHpvb20pO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHdpZHRoKHdpZHRoOiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFdpZHRoKHdpZHRoKTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaGVpZ2h0KGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRIZWlnaHQoaGVpZ2h0KTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdmYWJyaWMnKSBjb25maWc/OiBGYWJyaWNDb25maWdJbnRlcmZhY2U7XG5cbiAgQE91dHB1dCgpIGRyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGRyYWdvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkcmFnZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGRyYWdsZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBtb3VzZXVwID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZWRvd24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2VvdXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2V3aGVlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2VkYmxjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2V1cEJlZm9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2Vkb3duQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZW1vdmVCZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCkgbW91c2VVcCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2VEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZU92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlT3V0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb3VzZU1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlV2hlZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlRGJsY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlVXBCZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG1vdXNlRG93bkJlZm9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbW91c2VNb3ZlQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIHBhdGhDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhbHRlclJlbmRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBvYmplY3RBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0TW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdFNjYWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0U2tld2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvYmplY3RSb3RhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvYmplY3RSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvYmplY3RNb2RpZmllZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9iamVjdE1vdmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0U2NhbGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0U2tld2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb2JqZWN0Um90YXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKSBiZWZvcmVUcmFuc2Zvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGJlZm9yZVNlbGVjdGlvbkNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkFCUklDX0NPTkZJRykgcHJpdmF0ZSBkZWZhdWx0czogRmFicmljQ29uZmlnSW50ZXJmYWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBGYWJyaWNDb25maWcodGhpcy5kZWZhdWx0cyk7XG5cbiAgICBwYXJhbXMuYXNzaWduKHRoaXMuY29uZmlnKTsgLy8gQ3VzdG9tIGNvbmZpZ3VyYXRpb25cblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBmYWJyaWMuQ2FudmFzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBmYWJyaWMuU3RhdGljQ2FudmFzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwYXJhbXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pbml0aWFsWm9vbSkge1xuICAgICAgICB0aGlzLnNldFpvb20odGhpcy5pbml0aWFsWm9vbSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmluaXRpYWxXaWR0aCkge1xuICAgICAgICB0aGlzLnNldFdpZHRoKHRoaXMuaW5pdGlhbFdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaW5pdGlhbEhlaWdodCkge1xuICAgICAgICB0aGlzLnNldEhlaWdodCh0aGlzLmluaXRpYWxIZWlnaHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vYmplY3RzSlNPTiAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmxvYWRGcm9tSlNPTih0aGlzLm9iamVjdHNKU09OKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEFkZCBuYXRpdmUgRmFicmljIGV2ZW50IGhhbmRsaW5nXG4gICAgRmFicmljRXZlbnRzLmZvckVhY2goKGV2ZW50TmFtZTogRmFicmljRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGZhYnJpY0V2ZW50ID0gZXZlbnROYW1lLnJlcGxhY2UoLyhbQS1aXSkvZywgKGMpID0+IGA6JHtjLnRvTG93ZXJDYXNlKCl9YCk7XG5cbiAgICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uub24oZmFicmljRXZlbnQsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpc1tldmVudE5hbWVdLm9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpc1tldmVudE5hbWVdLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5jb25maWdEaWZmKSB7XG4gICAgICB0aGlzLmNvbmZpZ0RpZmYgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLmNvbmZpZyB8fCB7fSkuY3JlYXRlKCk7XG5cbiAgICAgIHRoaXMuY29uZmlnRGlmZi5kaWZmKHRoaXMuY29uZmlnIHx8IHt9KTtcbiAgICB9XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5ybyA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbFdpZHRoKSB7XG4gICAgICAgICAgdGhpcy5zZXRXaWR0aChlbGVtZW50Lm9mZnNldFdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsSGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5zZXRIZWlnaHQoZWxlbWVudC5vZmZzZXRIZWlnaHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yby5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ybykge1xuICAgICAgdGhpcy5yby5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMub2JqZWN0c0pTT04gPSB0aGlzLmluc3RhbmNlLnRvT2JqZWN0KCk7XG5cbiAgICAgIHRoaXMuaW5zdGFuY2UuZGlzcG9zZSgpO1xuXG4gICAgICBkZWxldGUgdGhpcy5pbnN0YW5jZTtcblxuICAgICAgdGhpcy5pbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZ0RpZmYpIHtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmNvbmZpZ0RpZmYuZGlmZih0aGlzLmNvbmZpZyB8fCB7fSk7XG5cbiAgICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLm5nT25Jbml0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluc3RhbmNlICYmIGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlc1snZGlzYWJsZWQnXS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICB0aGlzLm5nT25Jbml0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZhYnJpYygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICB0aGlzLmluc3RhbmNlLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5yZW5kZXJBbGwoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Wm9vbSh6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxab29tID0gem9vbTtcblxuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFpvb20oem9vbSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFdpZHRoKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxXaWR0aCA9IHdpZHRoO1xuXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0V2lkdGgod2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWlnaHQoaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxIZWlnaHQgPSBoZWlnaHQ7XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRIZWlnaHQoaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZEZyb21KU09OKGpzb246IGFueSwgY2FsbGJhY2s/OiBGdW5jdGlvbiwgcmV2aXZlck9wdD86IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICB0aGlzLmluc3RhbmNlLmxvYWRGcm9tSlNPTihqc29uLCAoKSA9PiB7XG4gICAgICAgIGxldCByZW5kZXJBbGwgPSB0cnVlO1xuXG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIHJlbmRlckFsbCA9IGNhbGxiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVuZGVyQWxsICYmIHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICB0aGlzLmluc3RhbmNlLnJlbmRlckFsbCgpO1xuICAgICAgICB9XG4gICAgICB9LCByZXZpdmVyT3B0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const FABRIC_CONFIG = new InjectionToken('FABRIC_CONFIG');
3
+ export const FabricEvents = [
4
+ 'drop',
5
+ 'dragover',
6
+ 'dragenter',
7
+ 'dragleave',
8
+ 'mouseup',
9
+ 'mousedown',
10
+ 'mouseover',
11
+ 'mouseout',
12
+ 'mousemove',
13
+ 'mousewheel',
14
+ 'mousedblclick',
15
+ 'mouseupBefore',
16
+ 'mousedownBefore',
17
+ 'mousemoveBefore',
18
+ 'mouseUp',
19
+ 'mouseDown',
20
+ 'mouseOver',
21
+ 'mouseOut',
22
+ 'mouseMove',
23
+ 'mouseWheel',
24
+ 'mouseDblclick',
25
+ 'mouseUpBefore',
26
+ 'mouseDownBefore',
27
+ 'mouseMoveBefore',
28
+ 'pathCreated',
29
+ 'alterRender',
30
+ 'objectAdded',
31
+ 'objectMoved',
32
+ 'objectScaled',
33
+ 'objectSkewed',
34
+ 'objectRotated',
35
+ 'objectRemoved',
36
+ 'objectModified',
37
+ 'objectSelected',
38
+ 'objectMoving',
39
+ 'objectScaling',
40
+ 'objectSkewing',
41
+ 'objectRotating',
42
+ 'selectionCleared',
43
+ 'selectionCreated',
44
+ 'selectionUpdated',
45
+ 'beforeTransform',
46
+ 'beforeSelectionCleared'
47
+ ];
48
+ export class FabricConfig {
49
+ constructor(config = {}) {
50
+ this.assign(config);
51
+ }
52
+ assign(config = {}) {
53
+ for (const key in config) {
54
+ this[key] = config[key];
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9mYWJyaWMuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBd0IsZUFBZSxDQUFDLENBQUM7QUFXeEYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFrQjtJQUN6QyxNQUFNO0lBQ04sVUFBVTtJQUNWLFdBQVc7SUFDWCxXQUFXO0lBRVgsU0FBUztJQUNULFdBQVc7SUFDWCxXQUFXO0lBQ1gsVUFBVTtJQUNWLFdBQVc7SUFDWCxZQUFZO0lBQ1osZUFBZTtJQUNmLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBRWpCLFNBQVM7SUFDVCxXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLGVBQWU7SUFDZixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUVqQixhQUFhO0lBQ2IsYUFBYTtJQUViLGFBQWE7SUFDYixhQUFhO0lBQ2IsY0FBYztJQUNkLGNBQWM7SUFDZCxlQUFlO0lBQ2YsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGVBQWU7SUFDZixlQUFlO0lBQ2YsZ0JBQWdCO0lBRWhCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBRWxCLGlCQUFpQjtJQUNqQix3QkFBd0I7Q0FDekIsQ0FBQztBQXVERixNQUFNLE9BQU8sWUFBWTtJQW9EdkIsWUFBWSxTQUFnQyxFQUFFO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFnQyxFQUFFO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxHQUF5QixDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQWtDLENBQVUsQ0FBQztTQUN2RjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGQUJSSUNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEZhYnJpY0NvbmZpZ0ludGVyZmFjZT4oJ0ZBQlJJQ19DT05GSUcnKTtcblxuZXhwb3J0IHR5cGUgRmFicmljRXZlbnQgPSAnZHJvcCcgfCAnZHJhZ292ZXInIHwgJ2RyYWdlbnRlcicgfCAnZHJhZ2xlYXZlJyB8ICdtb3VzZXVwJyB8XG4gICdtb3VzZWRvd24nIHwgJ21vdXNlb3ZlcicgfCAnbW91c2VvdXQnIHwgJ21vdXNlbW92ZScgfCAnbW91c2V3aGVlbCcgfCAnbW91c2VkYmxjbGljaycgfFxuICAnbW91c2V1cEJlZm9yZScgfCAnbW91c2Vkb3duQmVmb3JlJyB8ICdtb3VzZW1vdmVCZWZvcmUnIHwgJ21vdXNlVXAnIHwgJ21vdXNlRG93bicgfFxuICAnbW91c2VPdmVyJyB8ICdtb3VzZU91dCcgfCAnbW91c2VNb3ZlJyB8ICdtb3VzZVdoZWVsJyB8ICdtb3VzZURibGNsaWNrJyB8ICdtb3VzZVVwQmVmb3JlJyB8ICdtb3VzZURvd25CZWZvcmUnIHxcbiAgJ21vdXNlTW92ZUJlZm9yZScgfCAncGF0aENyZWF0ZWQnIHwgJ2FsdGVyUmVuZGVyJyB8ICdvYmplY3RBZGRlZCcgfCAnb2JqZWN0TW92ZWQnIHwgJ29iamVjdFNjYWxlZCcgfFxuICAnb2JqZWN0U2tld2VkJyB8ICdvYmplY3RSb3RhdGVkJyB8ICdvYmplY3RSZW1vdmVkJyB8ICdvYmplY3RNb2RpZmllZCcgfCAnb2JqZWN0U2VsZWN0ZWQnIHxcbiAgJ29iamVjdE1vdmluZycgfCAnb2JqZWN0U2NhbGluZycgfCAnb2JqZWN0U2tld2luZycgfCAnb2JqZWN0Um90YXRpbmcnIHwgJ3NlbGVjdGlvbkNsZWFyZWQnIHxcbiAgJ3NlbGVjdGlvbkNyZWF0ZWQnIHwgJ3NlbGVjdGlvblVwZGF0ZWQnIHwgJ2JlZm9yZVRyYW5zZm9ybScgfCAnYmVmb3JlU2VsZWN0aW9uQ2xlYXJlZCcgO1xuXG5leHBvcnQgY29uc3QgRmFicmljRXZlbnRzOiBGYWJyaWNFdmVudFtdID0gW1xuICAnZHJvcCcsXG4gICdkcmFnb3ZlcicsXG4gICdkcmFnZW50ZXInLFxuICAnZHJhZ2xlYXZlJyxcblxuICAnbW91c2V1cCcsXG4gICdtb3VzZWRvd24nLFxuICAnbW91c2VvdmVyJyxcbiAgJ21vdXNlb3V0JyxcbiAgJ21vdXNlbW92ZScsXG4gICdtb3VzZXdoZWVsJyxcbiAgJ21vdXNlZGJsY2xpY2snLFxuICAnbW91c2V1cEJlZm9yZScsXG4gICdtb3VzZWRvd25CZWZvcmUnLFxuICAnbW91c2Vtb3ZlQmVmb3JlJyxcblxuICAnbW91c2VVcCcsXG4gICdtb3VzZURvd24nLFxuICAnbW91c2VPdmVyJyxcbiAgJ21vdXNlT3V0JyxcbiAgJ21vdXNlTW92ZScsXG4gICdtb3VzZVdoZWVsJyxcbiAgJ21vdXNlRGJsY2xpY2snLFxuICAnbW91c2VVcEJlZm9yZScsXG4gICdtb3VzZURvd25CZWZvcmUnLFxuICAnbW91c2VNb3ZlQmVmb3JlJyxcblxuICAncGF0aENyZWF0ZWQnLFxuICAnYWx0ZXJSZW5kZXInLFxuXG4gICdvYmplY3RBZGRlZCcsXG4gICdvYmplY3RNb3ZlZCcsXG4gICdvYmplY3RTY2FsZWQnLFxuICAnb2JqZWN0U2tld2VkJyxcbiAgJ29iamVjdFJvdGF0ZWQnLFxuICAnb2JqZWN0UmVtb3ZlZCcsXG4gICdvYmplY3RNb2RpZmllZCcsXG4gICdvYmplY3RTZWxlY3RlZCcsXG4gICdvYmplY3RNb3ZpbmcnLFxuICAnb2JqZWN0U2NhbGluZycsXG4gICdvYmplY3RTa2V3aW5nJyxcbiAgJ29iamVjdFJvdGF0aW5nJyxcblxuICAnc2VsZWN0aW9uQ2xlYXJlZCcsXG4gICdzZWxlY3Rpb25DcmVhdGVkJyxcbiAgJ3NlbGVjdGlvblVwZGF0ZWQnLFxuXG4gICdiZWZvcmVUcmFuc2Zvcm0nLFxuICAnYmVmb3JlU2VsZWN0aW9uQ2xlYXJlZCdcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFicmljQ29uZmlnSW50ZXJmYWNlIHtcbiAgYWxsb3dUb3VjaFNjcm9sbGluZz86IGJvb2xlYW4sXG4gIGFsdEFjdGlvbktleT86IHN0cmluZyxcbiAgYWx0U2VsZWN0aW9uS2V5Pzogc3RyaW5nLFxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmcgfCBhbnksXG4gIGJhY2tncm91bmRJbWFnZT86IGFueSxcbiAgYmFja2dyb3VuZFZwdD86IGJvb2xlYW4sXG4gIGNlbnRlcmVkS2V5Pzogc3RyaW5nLFxuICBjZW50ZXJlZFJvdGF0aW9uPzogYm9vbGVhbixcbiAgY2VudGVyZWRTY2FsaW5nPzogYm9vbGVhbixcbiAgY2xpcFRvPzogRmFicmljQ2xpcFRvRnVuY3Rpb24sXG4gIGNvbnRhaW5lckNsYXNzPzogc3RyaW5nLFxuICBjb250cm9sc0Fib3ZlT3ZlcmxheT86IGJvb2xlYW4sXG4gIGRlZmF1bHRDdXJzb3I/OiBzdHJpbmcsXG4gIGVuYWJsZVJldGluYVNjYWxpbmc/OiBib29sZWFuLFxuICBmaXJlTWlkZGxlQ2xpY2s/OiBib29sZWFuLFxuICBmaXJlUmlnaHRDbGljaz86IGJvb2xlYW4sXG4gIGZyZWVEcmF3aW5nQ3Vyc29yPzogc3RyaW5nLFxuICBGWF9EVVJBVElPTj86IG51bWJlcixcbiAgaG92ZXJDdXJzb3I/OiBzdHJpbmcsXG4gIGltYWdlU21vb3RoaW5nRW5hYmxlZD86IGJvb2xlYW4sXG4gIGluY2x1ZGVEZWZhdWx0VmFsdWVzPzogYm9vbGVhbixcbiAgaW50ZXJhY3RpdmU/OiBib29sZWFuLFxuICBpc0RyYXdpbmdNb2RlPzogYm9vbGVhbixcbiAgbW92ZUN1cnNvcj86IHN0cmluZyxcbiAgbm90QWxsb3dlZEN1cnNvcj86IHN0cmluZyxcbiAgb3ZlcmxheUNvbG9yPzogc3RyaW5nIHwgYW55LFxuICBvdmVybGF5SW1hZ2U/OiBhbnksXG4gIG92ZXJsYXlWcHQ/OiBib29sZWFuLFxuICBwZXJQaXhlbFRhcmdldEZpbmQ/OiBib29sZWFuLFxuICBwcmVzZXJ2ZU9iamVjdFN0YWNraW5nPzogYm9vbGVhbixcbiAgcmVuZGVyT25BZGRSZW1vdmU/OiBib29sZWFuLFxuICByb3RhdGlvbkN1cnNvcj86IHN0cmluZyxcbiAgc2VsZWN0aW9uPzogYm9vbGVhbixcbiAgc2VsZWN0aW9uQm9yZGVyQ29sb3I/OiBzdHJpbmcsXG4gIHNlbGVjdGlvbkNvbG9yPzogc3RyaW5nLFxuICBzZWxlY3Rpb25EYXNoQXJyYXk/OiBhbnlbXSxcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nLFxuICBzZWxlY3Rpb25MaW5lV2lkdGg/OiBudW1iZXIsXG4gIHNraXBPZmZzY3JlZW4/OiBib29sZWFuLFxuICBza2lwVGFyZ2V0RmluZD86IGJvb2xlYW4sXG4gIHNuYXBBbmdsZT86IG51bWJlcixcbiAgc25hcFRocmVzaG9sZD86IG51bWJlcixcbiAgc3RhdGVmdWw/OiBib29sZWFuLFxuICBzdG9wQ29udGV4dE1lbnU/OiBib29sZWFuLFxuICBzdmdWaWV3cG9ydFRyYW5zZm9ybWF0aW9uPzogYm9vbGVhbixcbiAgdGFyZ2V0RmluZFRvVG9sZXJhbmNlPzogbnVtYmVyLFxuICB1bmlTY2FsZUtleT86IHN0cmluZyxcbiAgdW5pU2NhbGVUcmFuc2Zvcm0/OiBib29sZWFuLFxuICB2aWV3cG9ydFRyYW5zZm9ybT86IGFueVtdLFxuICB2cHRDb29yZHM/OiBhbnlcbn1cblxuZXhwb3J0IGNsYXNzIEZhYnJpY0NvbmZpZyBpbXBsZW1lbnRzIEZhYnJpY0NvbmZpZ0ludGVyZmFjZSB7XG4gIGFsbG93VG91Y2hTY3JvbGxpbmc/OiBib29sZWFuO1xuICBhbHRBY3Rpb25LZXk/OiBzdHJpbmc7XG4gIGFsdFNlbGVjdGlvbktleT86IHN0cmluZztcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nIHwgYW55O1xuICBiYWNrZ3JvdW5kSW1hZ2U/OiBhbnk7XG4gIGJhY2tncm91bmRWcHQ/OiBib29sZWFuO1xuICBjZW50ZXJlZEtleT86IHN0cmluZztcbiAgY2VudGVyZWRSb3RhdGlvbj86IGJvb2xlYW47XG4gIGNlbnRlcmVkU2NhbGluZz86IGJvb2xlYW47XG4gIGNsaXBUbz86IEZhYnJpY0NsaXBUb0Z1bmN0aW9uO1xuICBjb250YWluZXJDbGFzcz86IHN0cmluZztcbiAgY29udHJvbHNBYm92ZU92ZXJsYXk/OiBib29sZWFuO1xuICBkZWZhdWx0Q3Vyc29yPzogc3RyaW5nO1xuICBlbmFibGVSZXRpbmFTY2FsaW5nPzogYm9vbGVhbjtcbiAgZmlyZU1pZGRsZUNsaWNrPzogYm9vbGVhbjtcbiAgZmlyZVJpZ2h0Q2xpY2s/OiBib29sZWFuO1xuICBmcmVlRHJhd2luZ0N1cnNvcj86IHN0cmluZztcbiAgRlhfRFVSQVRJT04/OiBudW1iZXI7XG4gIGhvdmVyQ3Vyc29yPzogc3RyaW5nO1xuICBpbWFnZVNtb290aGluZ0VuYWJsZWQ/OiBib29sZWFuO1xuICBpbmNsdWRlRGVmYXVsdFZhbHVlcz86IGJvb2xlYW47XG4gIGludGVyYWN0aXZlPzogYm9vbGVhbjtcbiAgaXNEcmF3aW5nTW9kZT86IGJvb2xlYW47XG4gIG1vdmVDdXJzb3I/OiBzdHJpbmc7XG4gIG5vdEFsbG93ZWRDdXJzb3I/OiBzdHJpbmc7XG4gIG92ZXJsYXlDb2xvcjogc3RyaW5nIHwgYW55O1xuICBvdmVybGF5SW1hZ2U6IGFueTtcbiAgb3ZlcmxheVZwdD86IGJvb2xlYW47XG4gIHBlclBpeGVsVGFyZ2V0RmluZD86IGJvb2xlYW47XG4gIHByZXNlcnZlT2JqZWN0U3RhY2tpbmc/OiBib29sZWFuO1xuICByZW5kZXJPbkFkZFJlbW92ZT86IGJvb2xlYW47XG4gIHJvdGF0aW9uQ3Vyc29yPzogc3RyaW5nO1xuICBzZWxlY3Rpb24/OiBib29sZWFuO1xuICBzZWxlY3Rpb25Cb3JkZXJDb2xvcj86IHN0cmluZztcbiAgc2VsZWN0aW9uQ29sb3I/OiBzdHJpbmc7XG4gIHNlbGVjdGlvbkRhc2hBcnJheT86IGFueVtdO1xuICBzZWxlY3Rpb25LZXk/OiBzdHJpbmc7XG4gIHNlbGVjdGlvbkxpbmVXaWR0aD86IG51bWJlcjtcbiAgc2tpcE9mZnNjcmVlbj86IGJvb2xlYW47XG4gIHNraXBUYXJnZXRGaW5kPzogYm9vbGVhbjtcbiAgc25hcEFuZ2xlPzogbnVtYmVyO1xuICBzbmFwVGhyZXNob2xkPzogbnVtYmVyO1xuICBzdGF0ZWZ1bD86IGJvb2xlYW47XG4gIHN0b3BDb250ZXh0TWVudT86IGJvb2xlYW47XG4gIHN2Z1ZpZXdwb3J0VHJhbnNmb3JtYXRpb24/OiBib29sZWFuO1xuICB0YXJnZXRGaW5kVG9Ub2xlcmFuY2U/OiBudW1iZXI7XG4gIHVuaVNjYWxlS2V5Pzogc3RyaW5nO1xuICB1bmlTY2FsZVRyYW5zZm9ybT86IGJvb2xlYW47XG4gIHZpZXdwb3J0VHJhbnNmb3JtPzogYW55W107XG4gIHZwdENvb3Jkcz86IGFueTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEZhYnJpY0NvbmZpZ0ludGVyZmFjZSA9IHt9KSB7XG4gICAgdGhpcy5hc3NpZ24oY29uZmlnKTtcbiAgfVxuXG4gIGFzc2lnbihjb25maWc6IEZhYnJpY0NvbmZpZ0ludGVyZmFjZSA9IHt9KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29uZmlnKSB7XG4gICAgICB0aGlzW2tleSBhcyBrZXlvZiBGYWJyaWNDb25maWddID0gY29uZmlnW2tleSBhcyBrZXlvZiBGYWJyaWNDb25maWdJbnRlcmZhY2VdIGFzIG5ldmVyO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBGYWJyaWNDbGlwVG9GdW5jdGlvbiA9IChjdHg6IGFueSkgPT4gdm9pZDtcbiJdfQ==