react-design-editor 0.0.37 → 0.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/react-design-editor.js +773 -726
  2. package/dist/react-design-editor.min.js +1 -1
  3. package/lib/Canvas.d.ts +18 -0
  4. package/lib/Canvas.js +172 -0
  5. package/lib/CanvasObject.d.ts +10 -0
  6. package/lib/CanvasObject.js +96 -0
  7. package/lib/constants/code.d.ts +19 -0
  8. package/lib/constants/code.js +22 -0
  9. package/lib/constants/defaults.d.ts +38 -0
  10. package/lib/constants/defaults.js +69 -0
  11. package/lib/constants/index.d.ts +3 -0
  12. package/lib/constants/index.js +26 -0
  13. package/lib/handlers/AlignmentHandler.d.ts +18 -0
  14. package/lib/handlers/AlignmentHandler.js +58 -0
  15. package/lib/handlers/AnimationHandler.d.ts +50 -0
  16. package/lib/handlers/AnimationHandler.js +323 -0
  17. package/lib/handlers/ChartHandler.d.ts +8 -0
  18. package/lib/handlers/ChartHandler.js +8 -0
  19. package/lib/handlers/ContextmenuHandler.d.ts +28 -0
  20. package/lib/handlers/ContextmenuHandler.js +65 -0
  21. package/lib/handlers/CropHandler.d.ts +43 -0
  22. package/lib/handlers/CropHandler.js +261 -0
  23. package/lib/handlers/CustomHandler.d.ts +7 -0
  24. package/lib/handlers/CustomHandler.js +10 -0
  25. package/lib/handlers/DrawingHandler.d.ts +28 -0
  26. package/lib/handlers/DrawingHandler.js +318 -0
  27. package/lib/handlers/ElementHandler.d.ts +80 -0
  28. package/lib/handlers/ElementHandler.js +154 -0
  29. package/lib/handlers/EventHandler.d.ts +170 -0
  30. package/lib/handlers/EventHandler.js +880 -0
  31. package/lib/handlers/FiberHandler.d.ts +6 -0
  32. package/lib/handlers/FiberHandler.js +23 -0
  33. package/lib/handlers/GridHandler.d.ts +19 -0
  34. package/lib/handlers/GridHandler.js +77 -0
  35. package/lib/handlers/GuidelineHandler.d.ts +61 -0
  36. package/lib/handlers/GuidelineHandler.js +315 -0
  37. package/lib/handlers/Handler.d.ts +622 -0
  38. package/lib/handlers/Handler.js +1640 -0
  39. package/lib/handlers/ImageHandler.d.ts +307 -0
  40. package/lib/handlers/ImageHandler.js +529 -0
  41. package/lib/handlers/InteractionHandler.d.ts +45 -0
  42. package/lib/handlers/InteractionHandler.js +164 -0
  43. package/lib/handlers/LinkHandler.d.ts +115 -0
  44. package/lib/handlers/LinkHandler.js +247 -0
  45. package/lib/handlers/NodeHandler.d.ts +50 -0
  46. package/lib/handlers/NodeHandler.js +274 -0
  47. package/lib/handlers/PortHandler.d.ts +22 -0
  48. package/lib/handlers/PortHandler.js +179 -0
  49. package/lib/handlers/ShortcutHandler.d.ts +119 -0
  50. package/lib/handlers/ShortcutHandler.js +151 -0
  51. package/lib/handlers/TooltipHandler.d.ts +33 -0
  52. package/lib/handlers/TooltipHandler.js +91 -0
  53. package/lib/handlers/TransactionHandler.d.ts +59 -0
  54. package/lib/handlers/TransactionHandler.js +137 -0
  55. package/lib/handlers/WorkareaHandler.d.ts +43 -0
  56. package/lib/handlers/WorkareaHandler.js +354 -0
  57. package/lib/handlers/ZoomHandler.d.ts +48 -0
  58. package/lib/handlers/ZoomHandler.js +143 -0
  59. package/lib/handlers/index.d.ts +23 -0
  60. package/lib/handlers/index.js +48 -0
  61. package/lib/index.d.ts +6 -0
  62. package/lib/index.js +20 -0
  63. package/lib/objects/Arrow.d.ts +2 -0
  64. package/lib/objects/Arrow.js +40 -0
  65. package/lib/objects/Chart.d.ts +10 -0
  66. package/lib/objects/Chart.js +124 -0
  67. package/lib/objects/CirclePort.d.ts +2 -0
  68. package/lib/objects/CirclePort.js +28 -0
  69. package/lib/objects/Cube.d.ts +5 -0
  70. package/lib/objects/Cube.js +71 -0
  71. package/lib/objects/CurvedLink.d.ts +2 -0
  72. package/lib/objects/CurvedLink.js +51 -0
  73. package/lib/objects/Element.d.ts +13 -0
  74. package/lib/objects/Element.js +84 -0
  75. package/lib/objects/Gif.d.ts +3 -0
  76. package/lib/objects/Gif.js +41 -0
  77. package/lib/objects/Iframe.d.ts +9 -0
  78. package/lib/objects/Iframe.js +70 -0
  79. package/lib/objects/Line.d.ts +2 -0
  80. package/lib/objects/Line.js +24 -0
  81. package/lib/objects/Link.d.ts +15 -0
  82. package/lib/objects/Link.js +106 -0
  83. package/lib/objects/Node.d.ts +59 -0
  84. package/lib/objects/Node.js +271 -0
  85. package/lib/objects/OrthogonalLink.d.ts +2 -0
  86. package/lib/objects/OrthogonalLink.js +54 -0
  87. package/lib/objects/Port.d.ts +12 -0
  88. package/lib/objects/Port.js +28 -0
  89. package/lib/objects/Svg.d.ts +8 -0
  90. package/lib/objects/Svg.js +77 -0
  91. package/lib/objects/Video.d.ts +14 -0
  92. package/lib/objects/Video.js +120 -0
  93. package/lib/objects/index.d.ts +15 -0
  94. package/lib/objects/index.js +32 -0
  95. package/lib/utils/ObjectUtil.d.ts +407 -0
  96. package/lib/utils/ObjectUtil.js +13 -0
  97. package/lib/utils/index.d.ts +1 -0
  98. package/lib/utils/index.js +13 -0
  99. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ import CustomHandler from './CustomHandler';
2
+ declare class FiberHandler extends CustomHandler {
3
+ protected initialze(): void;
4
+ private mousedown;
5
+ }
6
+ export default FiberHandler;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const CustomHandler_1 = __importDefault(require("./CustomHandler"));
7
+ class FiberHandler extends CustomHandler_1.default {
8
+ initialze() {
9
+ this.handler.canvas.on('mouse:down', this.mousedown);
10
+ }
11
+ mousedown(opt) {
12
+ const { subTargets } = opt;
13
+ if (subTargets.length) {
14
+ const target = subTargets[0];
15
+ console.log(target);
16
+ if (target.type === 'container') {
17
+ }
18
+ else if (target.type === 'coreContainer') {
19
+ }
20
+ }
21
+ }
22
+ }
23
+ exports.default = FiberHandler;
@@ -0,0 +1,19 @@
1
+ import { fabric } from 'fabric';
2
+ import Handler from './Handler';
3
+ import { FabricObject } from '../utils';
4
+ declare class GridHandler {
5
+ handler?: Handler;
6
+ constructor(handler: Handler);
7
+ /**
8
+ * Init grid
9
+ *
10
+ */
11
+ initialize: () => void;
12
+ /**
13
+ * Set coords in grid
14
+ * @param {(FabricObject | fabric.ActiveSelection)} target
15
+ * @returns
16
+ */
17
+ setCoords: (target: FabricObject | fabric.ActiveSelection) => void;
18
+ }
19
+ export default GridHandler;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fabric_1 = require("fabric");
4
+ class GridHandler {
5
+ constructor(handler) {
6
+ /**
7
+ * Init grid
8
+ *
9
+ */
10
+ this.initialize = () => {
11
+ const { grid, lineColor, borderColor, enabled } = this.handler.gridOption;
12
+ if (enabled && grid) {
13
+ const width = 5000;
14
+ const gridLength = width / grid;
15
+ const lineOptions = {
16
+ stroke: lineColor,
17
+ selectable: false,
18
+ evented: false,
19
+ id: 'grid',
20
+ };
21
+ for (let i = 0; i < gridLength; i++) {
22
+ const distance = i * grid;
23
+ const fhorizontal = new fabric_1.fabric.Line([distance, -width, distance, width], lineOptions);
24
+ const shorizontal = new fabric_1.fabric.Line([distance - width, -width, distance - width, width], lineOptions);
25
+ this.handler.canvas.add(fhorizontal);
26
+ this.handler.canvas.add(shorizontal);
27
+ const fvertical = new fabric_1.fabric.Line([-width, distance - width, width, distance - width], lineOptions);
28
+ const svertical = new fabric_1.fabric.Line([-width, distance, width, distance], lineOptions);
29
+ this.handler.canvas.add(fvertical);
30
+ this.handler.canvas.add(svertical);
31
+ if (i % 5 === 0) {
32
+ fhorizontal.set({ stroke: borderColor });
33
+ shorizontal.set({ stroke: borderColor });
34
+ fvertical.set({ stroke: borderColor });
35
+ svertical.set({ stroke: borderColor });
36
+ }
37
+ }
38
+ }
39
+ };
40
+ /**
41
+ * Set coords in grid
42
+ * @param {(FabricObject | fabric.ActiveSelection)} target
43
+ * @returns
44
+ */
45
+ this.setCoords = (target) => {
46
+ const { gridOption: { enabled, grid, snapToGrid }, } = this.handler;
47
+ if (enabled && grid && snapToGrid) {
48
+ if (target.type === 'activeSelection') {
49
+ const activeSelection = target;
50
+ activeSelection.set({
51
+ left: Math.round(target.left / grid) * grid,
52
+ top: Math.round(target.top / grid) * grid,
53
+ });
54
+ activeSelection.setCoords();
55
+ activeSelection.getObjects().forEach((obj) => {
56
+ if (obj.superType === 'node') {
57
+ const left = target.left + obj.left + target.width / 2;
58
+ const top = target.top + obj.top + target.height / 2;
59
+ this.handler.portHandler.setCoords({ ...obj, left, top });
60
+ }
61
+ });
62
+ return;
63
+ }
64
+ const obj = target;
65
+ obj.set({
66
+ left: Math.round(target.left / grid) * grid,
67
+ top: Math.round(target.top / grid) * grid,
68
+ });
69
+ target.setCoords();
70
+ this.handler.portHandler.setCoords(target);
71
+ }
72
+ };
73
+ this.handler = handler;
74
+ this.initialize();
75
+ }
76
+ }
77
+ exports.default = GridHandler;
@@ -0,0 +1,61 @@
1
+ import { FabricEvent, FabricObject } from '../utils';
2
+ import Handler from './Handler';
3
+ declare class GuidelineHandler {
4
+ handler: Handler;
5
+ verticalLines: {
6
+ x?: number;
7
+ y1?: number;
8
+ y2?: number;
9
+ }[];
10
+ horizontalLines: {
11
+ y?: number;
12
+ x1?: number;
13
+ x2?: number;
14
+ }[];
15
+ ctx: CanvasRenderingContext2D;
16
+ viewportTransform: number[];
17
+ aligningLineOffset: number;
18
+ aligningLineMargin: number;
19
+ aligningLineWidth: number;
20
+ aligningLineColor: string;
21
+ zoom: number;
22
+ constructor(handler: Handler);
23
+ /**
24
+ * Initialize guideline handler
25
+ *
26
+ */
27
+ initialize(): void;
28
+ /**
29
+ * Destroy guideline handler
30
+ *
31
+ * @author salgum1114
32
+ */
33
+ destroy(): void;
34
+ /**
35
+ * Before the render
36
+ *
37
+ * @param {FabricEvent} _opt
38
+ */
39
+ beforeRender: (_opt: FabricEvent) => void;
40
+ /**
41
+ * After the render
42
+ *
43
+ * @param {FabricEvent} _opt
44
+ */
45
+ afterRender: (_opt: FabricEvent) => void;
46
+ drawVerticalLine: (coords: {
47
+ x?: number;
48
+ y1?: number;
49
+ y2?: number;
50
+ }) => void;
51
+ drawHorizontalLine: (coords: {
52
+ y?: number;
53
+ x1?: number;
54
+ x2?: number;
55
+ }) => void;
56
+ drawLine: (x1: number, y1: number, x2: number, y2: number) => void;
57
+ isInRange: (v1: number, v2: number) => boolean;
58
+ movingGuidelines: (target: FabricObject) => void;
59
+ scalingGuidelines: (_target: FabricObject) => void;
60
+ }
61
+ export default GuidelineHandler;
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fabric_1 = require("fabric");
4
+ class GuidelineHandler {
5
+ constructor(handler) {
6
+ this.aligningLineOffset = 5;
7
+ this.aligningLineMargin = 4;
8
+ this.aligningLineWidth = 1;
9
+ this.aligningLineColor = 'rgb(255, 0, 0)';
10
+ this.zoom = 1;
11
+ /**
12
+ * Before the render
13
+ *
14
+ * @param {FabricEvent} _opt
15
+ */
16
+ this.beforeRender = (_opt) => {
17
+ this.handler.canvas.clearContext(this.handler.guidelineHandler.ctx);
18
+ };
19
+ /**
20
+ * After the render
21
+ *
22
+ * @param {FabricEvent} _opt
23
+ */
24
+ this.afterRender = (_opt) => {
25
+ for (let i = this.handler.guidelineHandler.verticalLines.length; i--;) {
26
+ this.handler.guidelineHandler.drawVerticalLine(this.handler.guidelineHandler.verticalLines[i]);
27
+ }
28
+ for (let i = this.handler.guidelineHandler.horizontalLines.length; i--;) {
29
+ this.handler.guidelineHandler.drawHorizontalLine(this.handler.guidelineHandler.horizontalLines[i]);
30
+ }
31
+ this.handler.guidelineHandler.verticalLines.length = 0;
32
+ this.handler.guidelineHandler.horizontalLines.length = 0;
33
+ };
34
+ this.drawVerticalLine = (coords) => {
35
+ this.drawLine(coords.x + 0.5, coords.y1 > coords.y2 ? coords.y2 : coords.y1, coords.x + 0.5, coords.y2 > coords.y1 ? coords.y2 : coords.y1);
36
+ };
37
+ this.drawHorizontalLine = (coords) => {
38
+ this.drawLine(coords.x1 > coords.x2 ? coords.x2 : coords.x1, coords.y + 0.5, coords.x2 > coords.x1 ? coords.x2 : coords.x1, coords.y + 0.5);
39
+ };
40
+ this.drawLine = (x1, y1, x2, y2) => {
41
+ const { ctx, aligningLineWidth, aligningLineColor, viewportTransform, zoom } = this;
42
+ ctx.save();
43
+ ctx.lineWidth = aligningLineWidth;
44
+ ctx.strokeStyle = aligningLineColor;
45
+ ctx.beginPath();
46
+ ctx.moveTo(x1 * zoom + viewportTransform[4], y1 * zoom + viewportTransform[5]);
47
+ ctx.lineTo(x2 * zoom + viewportTransform[4], y2 * zoom + viewportTransform[5]);
48
+ ctx.stroke();
49
+ ctx.restore();
50
+ };
51
+ this.isInRange = (v1, v2) => {
52
+ const { aligningLineMargin } = this;
53
+ v1 = Math.round(v1);
54
+ v2 = Math.round(v2);
55
+ for (let i = v1 - aligningLineMargin, len = v1 + aligningLineMargin; i <= len; i++) {
56
+ if (i === v2) {
57
+ return true;
58
+ }
59
+ }
60
+ return false;
61
+ };
62
+ this.movingGuidelines = (target) => {
63
+ const canvasObjects = this.handler.canvas.getObjects();
64
+ const activeObjectCenter = target.getCenterPoint();
65
+ const activeObjectLeft = activeObjectCenter.x;
66
+ const activeObjectTop = activeObjectCenter.y;
67
+ const activeObjectBoundingRect = target.getBoundingRect();
68
+ const activeObjectHeight = activeObjectBoundingRect.height / this.viewportTransform[3];
69
+ const activeObjectWidth = activeObjectBoundingRect.width / this.viewportTransform[0];
70
+ let horizontalInTheRange = false;
71
+ let verticalInTheRange = false;
72
+ const { _currentTransform: transform } = this.handler.canvas;
73
+ if (!transform) {
74
+ return;
75
+ }
76
+ // It should be trivial to DRY this up by encapsulating (repeating) creation of x1, x2, y1, and y2 into functions,
77
+ // but we're not doing it here for perf. reasons -- as this a function that's invoked on every mouse move
78
+ for (let i = canvasObjects.length; i--;) {
79
+ if (canvasObjects[i] === target ||
80
+ canvasObjects[i].superType === 'port' ||
81
+ canvasObjects[i].superType === 'link' ||
82
+ !canvasObjects[i].evented) {
83
+ continue;
84
+ }
85
+ const objectCenter = canvasObjects[i].getCenterPoint();
86
+ const objectLeft = objectCenter.x;
87
+ const objectTop = objectCenter.y;
88
+ const objectBoundingRect = canvasObjects[i].getBoundingRect();
89
+ const objectHeight = objectBoundingRect.height / this.viewportTransform[3];
90
+ const objectWidth = objectBoundingRect.width / this.viewportTransform[0];
91
+ // snap by the horizontal center line
92
+ if (this.isInRange(objectLeft, activeObjectLeft)) {
93
+ verticalInTheRange = true;
94
+ if (canvasObjects[i].id === 'workarea') {
95
+ const y1 = -5000;
96
+ const y2 = 5000;
97
+ this.verticalLines.push({
98
+ x: objectLeft,
99
+ y1,
100
+ y2,
101
+ });
102
+ }
103
+ else {
104
+ this.verticalLines.push({
105
+ x: objectLeft,
106
+ y1: objectTop < activeObjectTop
107
+ ? objectTop - objectHeight / 2 - this.aligningLineOffset
108
+ : objectTop + objectHeight / 2 + this.aligningLineOffset,
109
+ y2: activeObjectTop > objectTop
110
+ ? activeObjectTop + activeObjectHeight / 2 + this.aligningLineOffset
111
+ : activeObjectTop - activeObjectHeight / 2 - this.aligningLineOffset,
112
+ });
113
+ }
114
+ target.setPositionByOrigin(new fabric_1.fabric.Point(objectLeft, activeObjectTop), 'center', 'center');
115
+ }
116
+ // snap by the left edge
117
+ if (this.isInRange(objectLeft - objectWidth / 2, activeObjectLeft - activeObjectWidth / 2)) {
118
+ verticalInTheRange = true;
119
+ if (canvasObjects[i].id === 'workarea') {
120
+ const workarea = canvasObjects[i];
121
+ const y1 = -5000;
122
+ const y2 = 5000;
123
+ let x = objectLeft - objectWidth / 2;
124
+ if (workarea.layout === 'fullscreen') {
125
+ x = 0;
126
+ }
127
+ this.verticalLines.push({
128
+ x,
129
+ y1,
130
+ y2,
131
+ });
132
+ }
133
+ else {
134
+ this.verticalLines.push({
135
+ x: objectLeft - objectWidth / 2,
136
+ y1: objectTop < activeObjectTop
137
+ ? objectTop - objectHeight / 2 - this.aligningLineOffset
138
+ : objectTop + objectHeight / 2 + this.aligningLineOffset,
139
+ y2: activeObjectTop > objectTop
140
+ ? activeObjectTop + activeObjectHeight / 2 + this.aligningLineOffset
141
+ : activeObjectTop - activeObjectHeight / 2 - this.aligningLineOffset,
142
+ });
143
+ }
144
+ target.setPositionByOrigin(new fabric_1.fabric.Point(objectLeft - objectWidth / 2 + activeObjectWidth / 2, activeObjectTop), 'center', 'center');
145
+ }
146
+ // snap by the right edge
147
+ if (this.isInRange(objectLeft + objectWidth / 2, activeObjectLeft + activeObjectWidth / 2)) {
148
+ verticalInTheRange = true;
149
+ if (canvasObjects[i].id === 'workarea') {
150
+ const workarea = canvasObjects[i];
151
+ const y1 = -5000;
152
+ const y2 = 5000;
153
+ let x = objectLeft + objectWidth / 2;
154
+ if (workarea.layout === 'fullscreen') {
155
+ x = this.handler.canvas.getWidth();
156
+ }
157
+ this.verticalLines.push({
158
+ x,
159
+ y1,
160
+ y2,
161
+ });
162
+ }
163
+ else {
164
+ this.verticalLines.push({
165
+ x: objectLeft + objectWidth / 2,
166
+ y1: objectTop < activeObjectTop
167
+ ? objectTop - objectHeight / 2 - this.aligningLineOffset
168
+ : objectTop + objectHeight / 2 + this.aligningLineOffset,
169
+ y2: activeObjectTop > objectTop
170
+ ? activeObjectTop + activeObjectHeight / 2 + this.aligningLineOffset
171
+ : activeObjectTop - activeObjectHeight / 2 - this.aligningLineOffset,
172
+ });
173
+ }
174
+ target.setPositionByOrigin(new fabric_1.fabric.Point(objectLeft + objectWidth / 2 - activeObjectWidth / 2, activeObjectTop), 'center', 'center');
175
+ }
176
+ // snap by the vertical center line
177
+ if (this.isInRange(objectTop, activeObjectTop)) {
178
+ horizontalInTheRange = true;
179
+ if (canvasObjects[i].id === 'workarea') {
180
+ const x1 = -5000;
181
+ const x2 = 5000;
182
+ this.horizontalLines.push({
183
+ y: objectTop,
184
+ x1,
185
+ x2,
186
+ });
187
+ }
188
+ else {
189
+ this.horizontalLines.push({
190
+ y: objectTop,
191
+ x1: objectLeft < activeObjectLeft
192
+ ? objectLeft - objectWidth / 2 - this.aligningLineOffset
193
+ : objectLeft + objectWidth / 2 + this.aligningLineOffset,
194
+ x2: activeObjectLeft > objectLeft
195
+ ? activeObjectLeft + activeObjectWidth / 2 + this.aligningLineOffset
196
+ : activeObjectLeft - activeObjectWidth / 2 - this.aligningLineOffset,
197
+ });
198
+ }
199
+ target.setPositionByOrigin(new fabric_1.fabric.Point(activeObjectLeft, objectTop), 'center', 'center');
200
+ }
201
+ // snap by the top edge
202
+ if (this.isInRange(objectTop - objectHeight / 2, activeObjectTop - activeObjectHeight / 2)) {
203
+ horizontalInTheRange = true;
204
+ if (canvasObjects[i].id === 'workarea') {
205
+ const workarea = canvasObjects[i];
206
+ const x1 = -5000;
207
+ const x2 = 5000;
208
+ let y = objectTop - objectHeight / 2;
209
+ if (workarea.layout === 'fullscreen') {
210
+ y = 0;
211
+ }
212
+ this.horizontalLines.push({
213
+ y,
214
+ x1,
215
+ x2,
216
+ });
217
+ }
218
+ else {
219
+ this.horizontalLines.push({
220
+ y: objectTop - objectHeight / 2,
221
+ x1: objectLeft < activeObjectLeft
222
+ ? objectLeft - objectWidth / 2 - this.aligningLineOffset
223
+ : objectLeft + objectWidth / 2 + this.aligningLineOffset,
224
+ x2: activeObjectLeft > objectLeft
225
+ ? activeObjectLeft + activeObjectWidth / 2 + this.aligningLineOffset
226
+ : activeObjectLeft - activeObjectWidth / 2 - this.aligningLineOffset,
227
+ });
228
+ }
229
+ target.setPositionByOrigin(new fabric_1.fabric.Point(activeObjectLeft, objectTop - objectHeight / 2 + activeObjectHeight / 2), 'center', 'center');
230
+ }
231
+ // snap by the bottom edge
232
+ if (this.isInRange(objectTop + objectHeight / 2, activeObjectTop + activeObjectHeight / 2)) {
233
+ horizontalInTheRange = true;
234
+ if (canvasObjects[i].id === 'workarea') {
235
+ const workarea = canvasObjects[i];
236
+ const x1 = -5000;
237
+ const x2 = 5000;
238
+ let y = objectTop + objectHeight / 2;
239
+ if (workarea.layout === 'fullscreen') {
240
+ y = this.handler.canvas.getHeight();
241
+ }
242
+ this.horizontalLines.push({
243
+ y,
244
+ x1,
245
+ x2,
246
+ });
247
+ }
248
+ else {
249
+ this.horizontalLines.push({
250
+ y: objectTop + objectHeight / 2,
251
+ x1: objectLeft < activeObjectLeft
252
+ ? objectLeft - objectWidth / 2 - this.aligningLineOffset
253
+ : objectLeft + objectWidth / 2 + this.aligningLineOffset,
254
+ x2: activeObjectLeft > objectLeft
255
+ ? activeObjectLeft + activeObjectWidth / 2 + this.aligningLineOffset
256
+ : activeObjectLeft - activeObjectWidth / 2 - this.aligningLineOffset,
257
+ });
258
+ }
259
+ target.setPositionByOrigin(new fabric_1.fabric.Point(activeObjectLeft, objectTop + objectHeight / 2 - activeObjectHeight / 2), 'center', 'center');
260
+ }
261
+ }
262
+ if (!horizontalInTheRange) {
263
+ this.horizontalLines.length = 0;
264
+ }
265
+ if (!verticalInTheRange) {
266
+ this.verticalLines.length = 0;
267
+ }
268
+ };
269
+ this.scalingGuidelines = (_target) => {
270
+ // TODO... object scaling guideline
271
+ };
272
+ this.handler = handler;
273
+ this.initialize();
274
+ }
275
+ /**
276
+ * Initialize guideline handler
277
+ *
278
+ */
279
+ initialize() {
280
+ if (this.handler.guidelineOption.enabled) {
281
+ // @ts-ignore
282
+ this.handler.canvas.on({
283
+ 'before:render': this.beforeRender,
284
+ 'after:render': this.afterRender,
285
+ });
286
+ }
287
+ else {
288
+ this.handler.canvas.off({
289
+ 'before:render': this.beforeRender,
290
+ 'after:render': this.afterRender,
291
+ });
292
+ }
293
+ this.ctx = this.handler.canvas.getSelectionContext();
294
+ this.aligningLineOffset = 5;
295
+ this.aligningLineMargin = 4;
296
+ this.aligningLineWidth = 1;
297
+ this.aligningLineColor = 'rgb(255, 0, 0)';
298
+ this.viewportTransform = this.handler.canvas.viewportTransform;
299
+ this.zoom = 1;
300
+ this.verticalLines = [];
301
+ this.horizontalLines = [];
302
+ }
303
+ /**
304
+ * Destroy guideline handler
305
+ *
306
+ * @author salgum1114
307
+ */
308
+ destroy() {
309
+ this.handler.canvas.off({
310
+ 'before:render': this.beforeRender,
311
+ 'after:render': this.afterRender,
312
+ });
313
+ }
314
+ }
315
+ exports.default = GuidelineHandler;