react-design-editor 0.0.37 → 0.0.38

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 (97) hide show
  1. package/lib/Canvas.d.ts +18 -0
  2. package/lib/Canvas.js +172 -0
  3. package/lib/CanvasObject.d.ts +10 -0
  4. package/lib/CanvasObject.js +96 -0
  5. package/lib/constants/code.d.ts +19 -0
  6. package/lib/constants/code.js +22 -0
  7. package/lib/constants/defaults.d.ts +38 -0
  8. package/lib/constants/defaults.js +69 -0
  9. package/lib/constants/index.d.ts +3 -0
  10. package/lib/constants/index.js +26 -0
  11. package/lib/handlers/AlignmentHandler.d.ts +18 -0
  12. package/lib/handlers/AlignmentHandler.js +58 -0
  13. package/lib/handlers/AnimationHandler.d.ts +50 -0
  14. package/lib/handlers/AnimationHandler.js +323 -0
  15. package/lib/handlers/ChartHandler.d.ts +8 -0
  16. package/lib/handlers/ChartHandler.js +8 -0
  17. package/lib/handlers/ContextmenuHandler.d.ts +28 -0
  18. package/lib/handlers/ContextmenuHandler.js +65 -0
  19. package/lib/handlers/CropHandler.d.ts +43 -0
  20. package/lib/handlers/CropHandler.js +261 -0
  21. package/lib/handlers/CustomHandler.d.ts +7 -0
  22. package/lib/handlers/CustomHandler.js +10 -0
  23. package/lib/handlers/DrawingHandler.d.ts +28 -0
  24. package/lib/handlers/DrawingHandler.js +318 -0
  25. package/lib/handlers/ElementHandler.d.ts +80 -0
  26. package/lib/handlers/ElementHandler.js +154 -0
  27. package/lib/handlers/EventHandler.d.ts +170 -0
  28. package/lib/handlers/EventHandler.js +880 -0
  29. package/lib/handlers/FiberHandler.d.ts +6 -0
  30. package/lib/handlers/FiberHandler.js +23 -0
  31. package/lib/handlers/GridHandler.d.ts +19 -0
  32. package/lib/handlers/GridHandler.js +77 -0
  33. package/lib/handlers/GuidelineHandler.d.ts +61 -0
  34. package/lib/handlers/GuidelineHandler.js +315 -0
  35. package/lib/handlers/Handler.d.ts +622 -0
  36. package/lib/handlers/Handler.js +1638 -0
  37. package/lib/handlers/ImageHandler.d.ts +307 -0
  38. package/lib/handlers/ImageHandler.js +529 -0
  39. package/lib/handlers/InteractionHandler.d.ts +45 -0
  40. package/lib/handlers/InteractionHandler.js +164 -0
  41. package/lib/handlers/LinkHandler.d.ts +115 -0
  42. package/lib/handlers/LinkHandler.js +247 -0
  43. package/lib/handlers/NodeHandler.d.ts +50 -0
  44. package/lib/handlers/NodeHandler.js +274 -0
  45. package/lib/handlers/PortHandler.d.ts +22 -0
  46. package/lib/handlers/PortHandler.js +179 -0
  47. package/lib/handlers/ShortcutHandler.d.ts +119 -0
  48. package/lib/handlers/ShortcutHandler.js +151 -0
  49. package/lib/handlers/TooltipHandler.d.ts +33 -0
  50. package/lib/handlers/TooltipHandler.js +91 -0
  51. package/lib/handlers/TransactionHandler.d.ts +59 -0
  52. package/lib/handlers/TransactionHandler.js +137 -0
  53. package/lib/handlers/WorkareaHandler.d.ts +43 -0
  54. package/lib/handlers/WorkareaHandler.js +354 -0
  55. package/lib/handlers/ZoomHandler.d.ts +48 -0
  56. package/lib/handlers/ZoomHandler.js +143 -0
  57. package/lib/handlers/index.d.ts +23 -0
  58. package/lib/handlers/index.js +48 -0
  59. package/lib/index.d.ts +6 -0
  60. package/lib/index.js +20 -0
  61. package/lib/objects/Arrow.d.ts +2 -0
  62. package/lib/objects/Arrow.js +40 -0
  63. package/lib/objects/Chart.d.ts +10 -0
  64. package/lib/objects/Chart.js +124 -0
  65. package/lib/objects/CirclePort.d.ts +2 -0
  66. package/lib/objects/CirclePort.js +28 -0
  67. package/lib/objects/Cube.d.ts +5 -0
  68. package/lib/objects/Cube.js +71 -0
  69. package/lib/objects/CurvedLink.d.ts +2 -0
  70. package/lib/objects/CurvedLink.js +51 -0
  71. package/lib/objects/Element.d.ts +13 -0
  72. package/lib/objects/Element.js +84 -0
  73. package/lib/objects/Gif.d.ts +3 -0
  74. package/lib/objects/Gif.js +41 -0
  75. package/lib/objects/Iframe.d.ts +9 -0
  76. package/lib/objects/Iframe.js +70 -0
  77. package/lib/objects/Line.d.ts +2 -0
  78. package/lib/objects/Line.js +24 -0
  79. package/lib/objects/Link.d.ts +15 -0
  80. package/lib/objects/Link.js +106 -0
  81. package/lib/objects/Node.d.ts +59 -0
  82. package/lib/objects/Node.js +271 -0
  83. package/lib/objects/OrthogonalLink.d.ts +2 -0
  84. package/lib/objects/OrthogonalLink.js +54 -0
  85. package/lib/objects/Port.d.ts +12 -0
  86. package/lib/objects/Port.js +28 -0
  87. package/lib/objects/Svg.d.ts +8 -0
  88. package/lib/objects/Svg.js +59 -0
  89. package/lib/objects/Video.d.ts +14 -0
  90. package/lib/objects/Video.js +120 -0
  91. package/lib/objects/index.d.ts +15 -0
  92. package/lib/objects/index.js +32 -0
  93. package/lib/utils/ObjectUtil.d.ts +407 -0
  94. package/lib/utils/ObjectUtil.js +13 -0
  95. package/lib/utils/index.d.ts +1 -0
  96. package/lib/utils/index.js +13 -0
  97. 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;