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,323 @@
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 animejs_1 = __importDefault(require("animejs"));
7
+ class AnimationHandler {
8
+ constructor(handler) {
9
+ /**
10
+ * Play the animation
11
+ * @param {string} id
12
+ * @param {boolean} [hasControls]
13
+ * @returns
14
+ */
15
+ this.play = (id, hasControls) => {
16
+ const findObject = this.handler.findById(id);
17
+ if (!findObject) {
18
+ return;
19
+ }
20
+ if (findObject.anime) {
21
+ findObject.anime.restart();
22
+ return;
23
+ }
24
+ if (findObject.animation.type === 'none') {
25
+ return;
26
+ }
27
+ const instance = this.getAnime(findObject, hasControls);
28
+ if (instance) {
29
+ findObject.set('anime', instance);
30
+ findObject.set({
31
+ hasControls: false,
32
+ lockMovementX: true,
33
+ lockMovementY: true,
34
+ hoverCursor: 'pointer',
35
+ });
36
+ this.handler.canvas.requestRenderAll();
37
+ instance.play();
38
+ }
39
+ };
40
+ /**
41
+ * Pause the animation
42
+ * @param {string} id
43
+ * @returns
44
+ */
45
+ this.pause = (id) => {
46
+ const findObject = this.handler.findById(id);
47
+ if (!findObject) {
48
+ return;
49
+ }
50
+ findObject.anime.pause();
51
+ };
52
+ /**
53
+ * Stop the animation
54
+ * @param {string} id
55
+ * @param {boolean} [hasControls=true]
56
+ * @returns
57
+ */
58
+ this.stop = (id, hasControls = true) => {
59
+ const findObject = this.handler.findById(id);
60
+ if (!findObject) {
61
+ return;
62
+ }
63
+ this.resetAnimation(findObject, hasControls);
64
+ };
65
+ /**
66
+ * Restart the animation
67
+ * @param {string} id
68
+ * @returns
69
+ */
70
+ this.restart = (id) => {
71
+ const findObject = this.handler.findById(id);
72
+ if (!findObject) {
73
+ return;
74
+ }
75
+ if (!findObject.anime) {
76
+ return;
77
+ }
78
+ this.stop(id);
79
+ this.play(id);
80
+ };
81
+ /**
82
+ * Reset animation
83
+ *
84
+ * @param {FabricObject} obj
85
+ * @param {boolean} [hasControls=true]
86
+ * @returns
87
+ */
88
+ this.resetAnimation = (obj, hasControls = true) => {
89
+ if (!obj.anime) {
90
+ return;
91
+ }
92
+ let option;
93
+ if (this.handler.editable) {
94
+ option = {
95
+ anime: null,
96
+ hasControls,
97
+ lockMovementX: !hasControls,
98
+ lockMovementY: !hasControls,
99
+ hoverCursor: hasControls ? 'move' : 'pointer',
100
+ };
101
+ }
102
+ else {
103
+ option = {
104
+ anime: null,
105
+ hasControls: false,
106
+ lockMovementX: true,
107
+ lockMovementY: true,
108
+ hoverCursor: 'pointer',
109
+ };
110
+ }
111
+ animejs_1.default.remove(obj);
112
+ const { type } = obj.animation;
113
+ if (type === 'fade') {
114
+ Object.assign(option, {
115
+ opacity: obj.originOpacity,
116
+ originOpacity: null,
117
+ });
118
+ }
119
+ else if (type === 'bounce') {
120
+ if (obj.animation.bounce === 'vertical') {
121
+ Object.assign(option, {
122
+ top: obj.originTop,
123
+ originTop: null,
124
+ });
125
+ }
126
+ else {
127
+ Object.assign(option, {
128
+ left: obj.originLeft,
129
+ originLeft: null,
130
+ });
131
+ }
132
+ }
133
+ else if (type === 'shake') {
134
+ if (obj.animation.shake === 'vertical') {
135
+ Object.assign(option, {
136
+ top: obj.originTop,
137
+ originTop: null,
138
+ });
139
+ }
140
+ else {
141
+ Object.assign(option, {
142
+ left: obj.originLeft,
143
+ originLeft: null,
144
+ });
145
+ }
146
+ }
147
+ else if (type === 'scaling') {
148
+ Object.assign(option, {
149
+ scaleX: obj.originScaleX,
150
+ scaleY: obj.originScaleY,
151
+ originScaleX: null,
152
+ originScaleY: null,
153
+ });
154
+ }
155
+ else if (type === 'rotation') {
156
+ Object.assign(option, {
157
+ angle: obj.originAngle,
158
+ rotation: obj.originAngle,
159
+ left: obj.originLeft,
160
+ top: obj.originTop,
161
+ originLeft: null,
162
+ originTop: null,
163
+ originAngle: null,
164
+ });
165
+ }
166
+ else if (type === 'flash') {
167
+ Object.assign(option, {
168
+ fill: obj.originFill,
169
+ stroke: obj.originStroke,
170
+ originFill: null,
171
+ originStroke: null,
172
+ });
173
+ }
174
+ else {
175
+ console.warn('Not supported type.');
176
+ }
177
+ obj.set(option);
178
+ this.handler.canvas.renderAll();
179
+ };
180
+ /**
181
+ * Get animation option
182
+ *
183
+ * @param {FabricObject} obj
184
+ * @param {boolean} [hasControls]
185
+ * @returns
186
+ */
187
+ this.getAnime = (obj, hasControls) => {
188
+ const { delay = 0, duration = 100, autoplay = true, loop = true, type, ...other } = obj.animation;
189
+ const option = {
190
+ targets: obj,
191
+ delay,
192
+ loop,
193
+ autoplay,
194
+ duration,
195
+ direction: 'alternate',
196
+ begin: () => {
197
+ obj.set({
198
+ hasControls: false,
199
+ lockMovementX: true,
200
+ lockMovementY: true,
201
+ hoverCursor: 'pointer',
202
+ });
203
+ this.handler.canvas.requestRenderAll();
204
+ },
205
+ update: (instance) => {
206
+ if (type === 'flash') {
207
+ // I don't know why it works. Magic code...
208
+ const fill = instance.animations[0].currentValue;
209
+ const stroke = instance.animations[1].currentValue;
210
+ obj.set('fill', '');
211
+ obj.set('fill', fill);
212
+ obj.set('stroke', stroke);
213
+ }
214
+ else if (type === 'rotation') {
215
+ let angle = instance.animations[0].currentValue;
216
+ if (typeof angle === 'string') {
217
+ angle = parseInt(angle, 10);
218
+ }
219
+ obj.rotate(angle);
220
+ this.handler.canvas.requestRenderAll();
221
+ return;
222
+ }
223
+ obj.setCoords();
224
+ this.handler.canvas.requestRenderAll();
225
+ },
226
+ complete: () => {
227
+ this.resetAnimation(obj, hasControls);
228
+ },
229
+ };
230
+ if (type === 'fade') {
231
+ const { opacity = 0 } = other;
232
+ obj.set('originOpacity', obj.opacity);
233
+ Object.assign(option, {
234
+ opacity,
235
+ easing: 'easeInQuad',
236
+ });
237
+ }
238
+ else if (type === 'bounce') {
239
+ const { offset = 1 } = other;
240
+ if (other.bounce === 'vertical') {
241
+ obj.set('originTop', obj.top);
242
+ Object.assign(option, {
243
+ top: obj.top + offset,
244
+ easing: 'easeInQuad',
245
+ });
246
+ }
247
+ else {
248
+ obj.set('originLeft', obj.left);
249
+ Object.assign(option, {
250
+ left: obj.left + offset,
251
+ easing: 'easeInQuad',
252
+ });
253
+ }
254
+ }
255
+ else if (type === 'shake') {
256
+ const { offset = 1 } = other;
257
+ if (other.shake === 'vertical') {
258
+ obj.set('originTop', obj.top);
259
+ Object.assign(option, {
260
+ top: obj.top + offset,
261
+ delay: 0,
262
+ elasticity: 1000,
263
+ duration: 500,
264
+ });
265
+ }
266
+ else {
267
+ obj.set('originLeft', obj.left);
268
+ Object.assign(option, {
269
+ left: obj.left + offset,
270
+ delay: 0,
271
+ elasticity: 1000,
272
+ duration: 500,
273
+ });
274
+ }
275
+ }
276
+ else if (type === 'scaling') {
277
+ const { scale = 2 } = other;
278
+ obj.set('originScaleX', obj.scaleX);
279
+ obj.set('originScaleY', obj.scaleY);
280
+ obj.set({
281
+ originScaleX: obj.scaleX,
282
+ originScaleY: obj.scaleY,
283
+ });
284
+ const scaleX = obj.scaleX * scale;
285
+ const scaleY = obj.scaleY * scale;
286
+ Object.assign(option, {
287
+ scaleX,
288
+ scaleY,
289
+ easing: 'easeInQuad',
290
+ });
291
+ }
292
+ else if (type === 'rotation') {
293
+ const { angle = 360 } = other;
294
+ obj.set('rotation', obj.angle);
295
+ obj.set('originAngle', obj.angle);
296
+ obj.set('originLeft', obj.left);
297
+ obj.set('originTop', obj.top);
298
+ Object.assign(option, {
299
+ rotation: angle,
300
+ easing: 'linear',
301
+ direction: 'normal',
302
+ });
303
+ }
304
+ else if (type === 'flash') {
305
+ const { fill = obj.fill, stroke = obj.stroke } = other;
306
+ obj.set('originFill', obj.fill);
307
+ obj.set('originStroke', obj.stroke);
308
+ Object.assign(option, {
309
+ fill,
310
+ stroke,
311
+ easing: 'easeInQuad',
312
+ });
313
+ }
314
+ else {
315
+ console.warn('Not supported type.');
316
+ return null;
317
+ }
318
+ return animejs_1.default(option);
319
+ };
320
+ this.handler = handler;
321
+ }
322
+ }
323
+ exports.default = AnimationHandler;
@@ -0,0 +1,8 @@
1
+ import * as echarts from 'echarts';
2
+ import Handler from './Handler';
3
+ declare class ChartHandler {
4
+ handler?: Handler;
5
+ instance?: echarts.ECharts;
6
+ constructor(handler: Handler);
7
+ }
8
+ export default ChartHandler;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ChartHandler {
4
+ constructor(handler) {
5
+ this.handler = handler;
6
+ }
7
+ }
8
+ exports.default = ChartHandler;
@@ -0,0 +1,28 @@
1
+ /// <reference types="lodash" />
2
+ import { Handler } from '.';
3
+ declare class ContextmenuHandler {
4
+ handler: Handler;
5
+ contextmenuEl: HTMLDivElement;
6
+ constructor(handler: Handler);
7
+ /**
8
+ * Initialize contextmenu
9
+ *
10
+ */
11
+ initialize(): void;
12
+ /**
13
+ * Destroy contextmenu
14
+ *
15
+ */
16
+ destory(): void;
17
+ /**
18
+ * Show context menu
19
+ *
20
+ */
21
+ show: import("lodash").DebouncedFunc<(e: any, target: any) => Promise<void>>;
22
+ /**
23
+ * Hide context menu
24
+ *
25
+ */
26
+ hide: import("lodash").DebouncedFunc<() => void>;
27
+ }
28
+ export default ContextmenuHandler;
@@ -0,0 +1,65 @@
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 react_dom_1 = __importDefault(require("react-dom"));
7
+ const debounce_1 = __importDefault(require("lodash/debounce"));
8
+ class ContextmenuHandler {
9
+ constructor(handler) {
10
+ /**
11
+ * Show context menu
12
+ *
13
+ */
14
+ this.show = debounce_1.default(async (e, target) => {
15
+ const { onContext } = this.handler;
16
+ while (this.contextmenuEl.hasChildNodes()) {
17
+ this.contextmenuEl.removeChild(this.contextmenuEl.firstChild);
18
+ }
19
+ const contextmenu = document.createElement('div');
20
+ contextmenu.className = 'rde-contextmenu-right';
21
+ const element = await onContext(this.contextmenuEl, e, target);
22
+ if (!element) {
23
+ return;
24
+ }
25
+ contextmenu.innerHTML = element;
26
+ this.contextmenuEl.appendChild(contextmenu);
27
+ react_dom_1.default.render(element, contextmenu);
28
+ this.contextmenuEl.classList.remove('contextmenu-hidden');
29
+ const { clientX: left, clientY: top } = e;
30
+ this.contextmenuEl.style.left = `${left}px`;
31
+ this.contextmenuEl.style.top = `${top}px`;
32
+ }, 100);
33
+ /**
34
+ * Hide context menu
35
+ *
36
+ */
37
+ this.hide = debounce_1.default(() => {
38
+ if (this.contextmenuEl) {
39
+ this.contextmenuEl.classList.add('contextmenu-hidden');
40
+ }
41
+ }, 100);
42
+ this.handler = handler;
43
+ this.initialize();
44
+ }
45
+ /**
46
+ * Initialize contextmenu
47
+ *
48
+ */
49
+ initialize() {
50
+ this.contextmenuEl = document.createElement('div');
51
+ this.contextmenuEl.id = `${this.handler.id}_contextmenu`;
52
+ this.contextmenuEl.className = 'rde-contextmenu contextmenu-hidden';
53
+ document.body.appendChild(this.contextmenuEl);
54
+ }
55
+ /**
56
+ * Destroy contextmenu
57
+ *
58
+ */
59
+ destory() {
60
+ if (this.contextmenuEl) {
61
+ document.body.removeChild(this.contextmenuEl);
62
+ }
63
+ }
64
+ }
65
+ exports.default = ContextmenuHandler;
@@ -0,0 +1,43 @@
1
+ import { fabric } from 'fabric';
2
+ import { Handler } from '.';
3
+ import { FabricImage } from '../utils';
4
+ declare class CropHandler {
5
+ handler: Handler;
6
+ cropRect: fabric.Rect;
7
+ cropObject: FabricImage;
8
+ constructor(handler: Handler);
9
+ /**
10
+ * Validate crop type
11
+ *
12
+ * @returns
13
+ */
14
+ validType: () => boolean;
15
+ /**
16
+ * Start crop image
17
+ *
18
+ */
19
+ start: () => void;
20
+ /**
21
+ * Finish crop image
22
+ *
23
+ */
24
+ finish: () => void;
25
+ /**
26
+ * Cancel crop
27
+ *
28
+ */
29
+ cancel: () => void;
30
+ /**
31
+ * Resize crop
32
+ *
33
+ * @param {FabricEvent} opt
34
+ */
35
+ resize: (opt: fabric.IEvent) => void;
36
+ /**
37
+ * Resize crop
38
+ *
39
+ * @param {FabricEvent} opt
40
+ */
41
+ moving: (opt: fabric.IEvent) => void;
42
+ }
43
+ export default CropHandler;