react-design-editor 0.0.33 → 0.0.37

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 (95) hide show
  1. package/README.md +37 -33
  2. package/dist/react-design-editor.js +20849 -11309
  3. package/dist/react-design-editor.min.js +1 -1
  4. package/dist/react-design-editor.min.js.LICENSE.txt +3 -10
  5. package/package.json +35 -31
  6. package/lib/Canvas.d.ts +0 -32
  7. package/lib/Canvas.js +0 -162
  8. package/lib/CanvasObject.d.ts +0 -10
  9. package/lib/CanvasObject.js +0 -96
  10. package/lib/constants/defaults.d.ts +0 -37
  11. package/lib/constants/defaults.js +0 -68
  12. package/lib/constants/index.d.ts +0 -2
  13. package/lib/constants/index.js +0 -24
  14. package/lib/handlers/AlignmentHandler.d.ts +0 -18
  15. package/lib/handlers/AlignmentHandler.js +0 -58
  16. package/lib/handlers/AnimationHandler.d.ts +0 -50
  17. package/lib/handlers/AnimationHandler.js +0 -320
  18. package/lib/handlers/ChartHandler.d.ts +0 -8
  19. package/lib/handlers/ChartHandler.js +0 -8
  20. package/lib/handlers/ContextmenuHandler.d.ts +0 -28
  21. package/lib/handlers/ContextmenuHandler.js +0 -65
  22. package/lib/handlers/CropHandler.d.ts +0 -43
  23. package/lib/handlers/CropHandler.js +0 -261
  24. package/lib/handlers/DrawingHandler.d.ts +0 -28
  25. package/lib/handlers/DrawingHandler.js +0 -318
  26. package/lib/handlers/ElementHandler.d.ts +0 -80
  27. package/lib/handlers/ElementHandler.js +0 -154
  28. package/lib/handlers/EventHandler.d.ts +0 -170
  29. package/lib/handlers/EventHandler.js +0 -877
  30. package/lib/handlers/GridHandler.d.ts +0 -19
  31. package/lib/handlers/GridHandler.js +0 -77
  32. package/lib/handlers/GuidelineHandler.d.ts +0 -61
  33. package/lib/handlers/GuidelineHandler.js +0 -314
  34. package/lib/handlers/Handler.d.ts +0 -603
  35. package/lib/handlers/Handler.js +0 -1612
  36. package/lib/handlers/ImageHandler.d.ts +0 -307
  37. package/lib/handlers/ImageHandler.js +0 -529
  38. package/lib/handlers/InteractionHandler.d.ts +0 -45
  39. package/lib/handlers/InteractionHandler.js +0 -159
  40. package/lib/handlers/LinkHandler.d.ts +0 -115
  41. package/lib/handlers/LinkHandler.js +0 -247
  42. package/lib/handlers/NodeHandler.d.ts +0 -50
  43. package/lib/handlers/NodeHandler.js +0 -274
  44. package/lib/handlers/PortHandler.d.ts +0 -22
  45. package/lib/handlers/PortHandler.js +0 -179
  46. package/lib/handlers/ShortcutHandler.d.ts +0 -119
  47. package/lib/handlers/ShortcutHandler.js +0 -150
  48. package/lib/handlers/TooltipHandler.d.ts +0 -33
  49. package/lib/handlers/TooltipHandler.js +0 -91
  50. package/lib/handlers/TransactionHandler.d.ts +0 -59
  51. package/lib/handlers/TransactionHandler.js +0 -139
  52. package/lib/handlers/WorkareaHandler.d.ts +0 -43
  53. package/lib/handlers/WorkareaHandler.js +0 -354
  54. package/lib/handlers/ZoomHandler.d.ts +0 -48
  55. package/lib/handlers/ZoomHandler.js +0 -143
  56. package/lib/handlers/index.d.ts +0 -21
  57. package/lib/handlers/index.js +0 -44
  58. package/lib/index.d.ts +0 -5
  59. package/lib/index.js +0 -19
  60. package/lib/objects/Arrow.d.ts +0 -2
  61. package/lib/objects/Arrow.js +0 -39
  62. package/lib/objects/Chart.d.ts +0 -10
  63. package/lib/objects/Chart.js +0 -123
  64. package/lib/objects/CirclePort.d.ts +0 -2
  65. package/lib/objects/CirclePort.js +0 -28
  66. package/lib/objects/Cube.d.ts +0 -5
  67. package/lib/objects/Cube.js +0 -71
  68. package/lib/objects/CurvedLink.d.ts +0 -2
  69. package/lib/objects/CurvedLink.js +0 -49
  70. package/lib/objects/Element.d.ts +0 -13
  71. package/lib/objects/Element.js +0 -83
  72. package/lib/objects/Gif.d.ts +0 -3
  73. package/lib/objects/Gif.js +0 -38
  74. package/lib/objects/Iframe.d.ts +0 -9
  75. package/lib/objects/Iframe.js +0 -69
  76. package/lib/objects/Line.d.ts +0 -2
  77. package/lib/objects/Line.js +0 -24
  78. package/lib/objects/Link.d.ts +0 -15
  79. package/lib/objects/Link.js +0 -104
  80. package/lib/objects/Node.d.ts +0 -59
  81. package/lib/objects/Node.js +0 -271
  82. package/lib/objects/OrthogonalLink.d.ts +0 -2
  83. package/lib/objects/OrthogonalLink.js +0 -52
  84. package/lib/objects/Port.d.ts +0 -12
  85. package/lib/objects/Port.js +0 -28
  86. package/lib/objects/Svg.d.ts +0 -8
  87. package/lib/objects/Svg.js +0 -59
  88. package/lib/objects/Video.d.ts +0 -14
  89. package/lib/objects/Video.js +0 -119
  90. package/lib/objects/index.d.ts +0 -15
  91. package/lib/objects/index.js +0 -32
  92. package/lib/utils/ObjectUtil.d.ts +0 -400
  93. package/lib/utils/ObjectUtil.js +0 -13
  94. package/lib/utils/index.d.ts +0 -1
  95. package/lib/utils/index.js +0 -13
@@ -1,150 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Shortcut Handler Class
5
- *
6
- * @author salgum1114
7
- * @class ShortcutHandler
8
- */
9
- class ShortcutHandler {
10
- constructor(handler) {
11
- /**
12
- * Whether keydown Escape
13
- *
14
- * @param {KeyboardEvent} e
15
- * @returns
16
- */
17
- this.isEscape = (e) => {
18
- return e.keyCode === 27 && this.keyEvent.esc;
19
- };
20
- /**
21
- * Whether keydown Q
22
- *
23
- * @param {KeyboardEvent} e
24
- * @returns
25
- */
26
- this.isQ = (e) => {
27
- return e.keyCode === 81;
28
- };
29
- /**
30
- * Whether keydown W
31
- *
32
- * @param {KeyboardEvent} e
33
- * @returns
34
- */
35
- this.isW = (e) => {
36
- return e.keyCode === 87;
37
- };
38
- /**
39
- * Whether keydown Delete or Backpsace
40
- *
41
- * @param {KeyboardEvent} e
42
- * @returns
43
- */
44
- this.isDelete = (e) => {
45
- return (e.keyCode === 8 || e.keyCode === 46 || e.keyCode === 127) && this.keyEvent.del;
46
- };
47
- /**
48
- * Whether keydown Arrow
49
- *
50
- * @param {KeyboardEvent} e
51
- * @returns
52
- */
53
- this.isArrow = (e) => {
54
- return e.code.includes('Arrow') && this.keyEvent.move;
55
- };
56
- /**
57
- * Whether keydown Ctrl + A
58
- *
59
- * @param {KeyboardEvent} e
60
- * @returns
61
- */
62
- this.isCtrlA = (e) => {
63
- return e.ctrlKey && e.keyCode === 65 && this.keyEvent.all;
64
- };
65
- /**
66
- * Whether keydown Ctrl + C
67
- *
68
- * @param {KeyboardEvent} e
69
- * @returns
70
- */
71
- this.isCtrlC = (e) => {
72
- return e.ctrlKey && e.keyCode === 67 && this.keyEvent.copy;
73
- };
74
- /**
75
- * Whether keydown Ctrl + V
76
- *
77
- * @param {KeyboardEvent} e
78
- * @returns
79
- */
80
- this.isCtrlV = (e) => {
81
- return e.ctrlKey && e.keyCode === 86 && this.keyEvent.paste;
82
- };
83
- /**
84
- * Whether keydown Ctrl + Z
85
- *
86
- * @param {KeyboardEvent} e
87
- * @returns
88
- */
89
- this.isCtrlZ = (e) => {
90
- return e.ctrlKey && e.keyCode === 90 && this.keyEvent.transaction;
91
- };
92
- /**
93
- * Whether keydown Ctrl + Y
94
- *
95
- * @param {KeyboardEvent} e
96
- * @returns
97
- */
98
- this.isCtrlY = (e) => {
99
- return e.ctrlKey && e.keyCode === 89 && this.keyEvent.transaction;
100
- };
101
- /**
102
- * Whether keydown Plus Or Equal
103
- *
104
- * @param {KeyboardEvent} e
105
- * @returns
106
- */
107
- this.isPlus = (e) => {
108
- return e.keyCode === 187 && this.keyEvent.zoom;
109
- };
110
- /**
111
- * Whether keydown Minus
112
- *
113
- * @param {KeyboardEvent} e
114
- * @returns
115
- */
116
- this.isMinus = (e) => {
117
- return e.keyCode === 189 && this.keyEvent.zoom;
118
- };
119
- /**
120
- * Whether keydown O
121
- *
122
- * @param {KeyboardEvent} e
123
- * @returns
124
- */
125
- this.isO = (e) => {
126
- return e.keyCode === 79 && this.keyEvent.zoom;
127
- };
128
- /**
129
- * Whether keydown P
130
- *
131
- * @param {KeyboardEvent} e
132
- * @returns
133
- */
134
- this.isP = (e) => {
135
- return e.keyCode === 80 && this.keyEvent.zoom;
136
- };
137
- /**
138
- * Whether keydown Ctrl + X
139
- *
140
- * @param {KeyboardEvent} e
141
- * @returns
142
- */
143
- this.isCtrlX = (e) => {
144
- return e.ctrlKey && e.keyCode === 88 && this.keyEvent.cut;
145
- };
146
- this.handler = handler;
147
- this.keyEvent = handler.keyEvent;
148
- }
149
- }
150
- exports.default = ShortcutHandler;
@@ -1,33 +0,0 @@
1
- /// <reference types="lodash" />
2
- import Handler from './Handler';
3
- import { FabricObject } from '../utils';
4
- declare class TooltipHandler {
5
- handler: Handler;
6
- tooltipEl: HTMLDivElement;
7
- target?: fabric.Object;
8
- constructor(handler: Handler);
9
- /**
10
- * Initialize tooltip
11
- *
12
- * @author salgum1114
13
- */
14
- initialize(): void;
15
- /**
16
- * Destroy tooltip
17
- *
18
- * @author salgum1114
19
- */
20
- destroy(): void;
21
- /**
22
- * Show tooltip
23
- *
24
- * @param {FabricObject} [target]
25
- */
26
- show: ((target?: FabricObject) => Promise<void>) & import("lodash").Cancelable;
27
- /**
28
- * Hide tooltip
29
- * @param {fabric.Object} [_target]
30
- */
31
- hide: ((_target?: fabric.Object) => void) & import("lodash").Cancelable;
32
- }
33
- export default TooltipHandler;
@@ -1,91 +0,0 @@
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 TooltipHandler {
9
- constructor(handler) {
10
- /**
11
- * Show tooltip
12
- *
13
- * @param {FabricObject} [target]
14
- */
15
- this.show = debounce_1.default(async (target) => {
16
- if (target.tooltip && target.tooltip.enabled) {
17
- while (this.tooltipEl.hasChildNodes()) {
18
- this.tooltipEl.removeChild(this.tooltipEl.firstChild);
19
- }
20
- const tooltip = document.createElement('div');
21
- tooltip.className = 'rde-tooltip-right';
22
- let element = target.name;
23
- const { onTooltip } = this.handler;
24
- if (onTooltip) {
25
- element = await onTooltip(this.tooltipEl, target);
26
- if (!element) {
27
- return;
28
- }
29
- }
30
- tooltip.innerHTML = element;
31
- this.tooltipEl.appendChild(tooltip);
32
- react_dom_1.default.render(element, tooltip);
33
- this.tooltipEl.classList.remove('tooltip-hidden');
34
- const zoom = this.handler.canvas.getZoom();
35
- const { clientHeight } = this.tooltipEl;
36
- const { width, height, scaleX, scaleY } = target;
37
- const { left, top } = target.getBoundingRect();
38
- const { _offset: offset } = this.handler.canvas.calcOffset();
39
- const objWidthDiff = width * scaleX * zoom;
40
- const objHeightDiff = (height * scaleY * zoom) / 2 - clientHeight / 2;
41
- const calcLeft = offset.left + left + objWidthDiff;
42
- const calcTop = offset.top + top + objHeightDiff;
43
- if (document.body.clientWidth <= calcLeft + this.tooltipEl.offsetWidth) {
44
- this.tooltipEl.style.left = `${left + offset.left - this.tooltipEl.offsetWidth}px`;
45
- tooltip.className = 'rde-tooltip-left';
46
- }
47
- else {
48
- this.tooltipEl.style.left = `${calcLeft}px`;
49
- }
50
- this.tooltipEl.style.top = `${calcTop}px`;
51
- this.handler.target = target;
52
- }
53
- }, 100);
54
- /**
55
- * Hide tooltip
56
- * @param {fabric.Object} [_target]
57
- */
58
- this.hide = debounce_1.default((_target) => {
59
- this.handler.target = null;
60
- if (this.tooltipEl) {
61
- this.tooltipEl.classList.add('tooltip-hidden');
62
- }
63
- }, 100);
64
- this.handler = handler;
65
- if (!handler.editable) {
66
- this.initialize();
67
- }
68
- }
69
- /**
70
- * Initialize tooltip
71
- *
72
- * @author salgum1114
73
- */
74
- initialize() {
75
- this.tooltipEl = document.createElement('div');
76
- this.tooltipEl.id = `${this.handler.id}_tooltip`;
77
- this.tooltipEl.className = 'rde-tooltip tooltip-hidden';
78
- document.body.appendChild(this.tooltipEl);
79
- }
80
- /**
81
- * Destroy tooltip
82
- *
83
- * @author salgum1114
84
- */
85
- destroy() {
86
- if (this.tooltipEl) {
87
- document.body.removeChild(this.tooltipEl);
88
- }
89
- }
90
- }
91
- exports.default = TooltipHandler;
@@ -1,59 +0,0 @@
1
- /// <reference types="lodash" />
2
- import Handler from './Handler';
3
- import { FabricObject } from '../utils';
4
- export declare type TransactionType = 'add' | 'remove' | 'moved' | 'scaled' | 'rotated' | 'skewed' | 'group' | 'ungroup' | 'paste' | 'bringForward' | 'bringToFront' | 'sendBackwards' | 'sendToBack' | 'redo' | 'undo';
5
- export interface TransactionTransform {
6
- scaleX?: number;
7
- scaleY?: number;
8
- skewX?: number;
9
- skewY?: number;
10
- angle?: number;
11
- left?: number;
12
- top?: number;
13
- flipX?: number;
14
- flipY?: number;
15
- originX?: string;
16
- originY?: string;
17
- }
18
- export interface TransactionEvent {
19
- json: string;
20
- type: TransactionType;
21
- }
22
- declare class TransactionHandler {
23
- handler: Handler;
24
- redos: TransactionEvent[];
25
- undos: TransactionEvent[];
26
- active: boolean;
27
- state: FabricObject[];
28
- constructor(handler: Handler);
29
- /**
30
- * Initialize transaction handler
31
- *
32
- */
33
- initialize: () => void;
34
- /**
35
- * Save transaction
36
- *
37
- * @param {TransactionType} type
38
- * @param {*} [canvasJSON]
39
- * @param {boolean} [isWorkarea=true]
40
- */
41
- save: (type: TransactionType, canvasJSON?: any, _isWorkarea?: boolean) => void;
42
- /**
43
- * Undo transaction
44
- *
45
- */
46
- undo: (() => void) & import("lodash").Cancelable;
47
- /**
48
- * Redo transaction
49
- *
50
- */
51
- redo: (() => void) & import("lodash").Cancelable;
52
- /**
53
- * Replay transaction
54
- *
55
- * @param {TransactionEvent} transaction
56
- */
57
- replay: (transaction: TransactionEvent) => void;
58
- }
59
- export default TransactionHandler;
@@ -1,139 +0,0 @@
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 fabric_1 = require("fabric");
7
- const throttle_1 = __importDefault(require("lodash/throttle"));
8
- class TransactionHandler {
9
- constructor(handler) {
10
- this.active = false;
11
- this.state = [];
12
- /**
13
- * Initialize transaction handler
14
- *
15
- */
16
- this.initialize = () => {
17
- this.redos = [];
18
- this.undos = [];
19
- this.state = [];
20
- this.active = false;
21
- };
22
- /**
23
- * Save transaction
24
- *
25
- * @param {TransactionType} type
26
- * @param {*} [canvasJSON]
27
- * @param {boolean} [isWorkarea=true]
28
- */
29
- this.save = (type, canvasJSON, _isWorkarea = true) => {
30
- if (!this.handler.keyEvent.transaction) {
31
- return;
32
- }
33
- try {
34
- if (this.state) {
35
- const json = JSON.stringify(this.state);
36
- this.redos = [];
37
- this.undos.push({
38
- type,
39
- json,
40
- });
41
- }
42
- const { objects } = canvasJSON || this.handler.canvas.toJSON(this.handler.propertiesToInclude);
43
- this.state = objects.filter(obj => {
44
- if (obj.id === 'workarea') {
45
- return false;
46
- }
47
- else if (obj.id === 'grid') {
48
- return false;
49
- }
50
- else if (obj.superType === 'port') {
51
- return false;
52
- }
53
- return true;
54
- });
55
- }
56
- catch (error) {
57
- console.error(error);
58
- }
59
- };
60
- /**
61
- * Undo transaction
62
- *
63
- */
64
- this.undo = throttle_1.default(() => {
65
- const undo = this.undos.pop();
66
- if (!undo) {
67
- return;
68
- }
69
- this.redos.push({
70
- type: 'redo',
71
- json: JSON.stringify(this.state),
72
- });
73
- this.replay(undo);
74
- }, 100);
75
- /**
76
- * Redo transaction
77
- *
78
- */
79
- this.redo = throttle_1.default(() => {
80
- const redo = this.redos.pop();
81
- if (!redo) {
82
- return;
83
- }
84
- this.undos.push({
85
- type: 'undo',
86
- json: JSON.stringify(this.state),
87
- });
88
- this.replay(redo);
89
- }, 100);
90
- /**
91
- * Replay transaction
92
- *
93
- * @param {TransactionEvent} transaction
94
- */
95
- this.replay = (transaction) => {
96
- const objects = JSON.parse(transaction.json);
97
- this.state = objects;
98
- this.active = true;
99
- this.handler.canvas.renderOnAddRemove = false;
100
- this.handler.clear();
101
- this.handler.canvas.discardActiveObject();
102
- fabric_1.fabric.util.enlivenObjects(objects, (enlivenObjects) => {
103
- enlivenObjects.forEach(obj => {
104
- const targetIndex = this.handler.canvas._objects.length;
105
- if (obj.superType === 'node') {
106
- this.handler.canvas.insertAt(obj, targetIndex, false);
107
- this.handler.portHandler.create(obj);
108
- }
109
- else if (obj.superType === 'link') {
110
- const link = obj;
111
- this.handler.objects = this.handler.getObjects();
112
- this.handler.linkHandler.create({
113
- type: 'curvedLink',
114
- fromNodeId: link.fromNode?.id,
115
- fromPortId: link.fromPort?.id,
116
- toNodeId: link.toNode?.id,
117
- toPortId: link.toPort?.id,
118
- });
119
- }
120
- else {
121
- this.handler.canvas.insertAt(obj, targetIndex, false);
122
- }
123
- });
124
- this.handler.canvas.renderOnAddRemove = true;
125
- this.active = false;
126
- this.handler.canvas.renderAll();
127
- this.handler.objects = this.handler.getObjects();
128
- if (this.handler.onTransaction) {
129
- this.handler.onTransaction(transaction);
130
- }
131
- }, null);
132
- };
133
- this.handler = handler;
134
- if (this.handler.editable) {
135
- this.initialize();
136
- }
137
- }
138
- }
139
- exports.default = TransactionHandler;
@@ -1,43 +0,0 @@
1
- import { Handler } from '.';
2
- import { WorkareaLayout, WorkareaObject, FabricImage } from '../utils';
3
- declare class WorkareaHandler {
4
- handler: Handler;
5
- constructor(handler: Handler);
6
- /**
7
- * Initialize workarea
8
- *
9
- * @author salgum1114
10
- */
11
- initialize(): void;
12
- /**
13
- * Set the layout on workarea
14
- * @param {WorkareaLayout} layout
15
- * @returns
16
- */
17
- setLayout: (layout: WorkareaLayout) => void;
18
- /**
19
- * Set the responsive image on Workarea
20
- * @param {string | File} [source]
21
- * @param {boolean} [loaded]
22
- * @returns
23
- */
24
- setResponsiveImage: (source: string | File, loaded?: boolean) => Promise<WorkareaObject>;
25
- /**
26
- * Set the image on Workarea
27
- * @param {string | File} source
28
- * @param {boolean} [loaded=false]
29
- * @returns
30
- */
31
- setImage: (source: string | File, loaded?: boolean) => Promise<WorkareaObject>;
32
- /**
33
- * Calculate scale to the image
34
- *
35
- * @param {FabricImage} [image]
36
- * @returns
37
- */
38
- calculateScale: (image?: FabricImage) => {
39
- scaleX: number;
40
- scaleY: number;
41
- };
42
- }
43
- export default WorkareaHandler;