@tmagic/stage 1.5.0-beta.9 → 1.5.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.
- package/dist/tmagic-stage.js +21 -13
- package/dist/tmagic-stage.umd.cjs +21 -13
- package/package.json +6 -5
- package/src/ActionManager.ts +3 -0
- package/src/DragResizeHelper.ts +0 -14
- package/src/MoveableActionsAble.ts +15 -0
- package/src/StageCore.ts +3 -0
- package/src/const.ts +1 -0
- package/src/moveable-able.css +6 -0
- package/src/types.ts +3 -0
- package/types/index.d.ts +7 -3
package/dist/tmagic-stage.js
CHANGED
|
@@ -43,6 +43,7 @@ const SELECTED_CLASS = "tmagic-stage-selected-area";
|
|
|
43
43
|
var AbleActionEventType = /* @__PURE__ */ ((AbleActionEventType2) => {
|
|
44
44
|
AbleActionEventType2["SELECT_PARENT"] = "select-parent";
|
|
45
45
|
AbleActionEventType2["REMOVE"] = "remove";
|
|
46
|
+
AbleActionEventType2["RERENDER"] = "rerender";
|
|
46
47
|
return AbleActionEventType2;
|
|
47
48
|
})(AbleActionEventType || {});
|
|
48
49
|
var ContainerHighlightType = /* @__PURE__ */ ((ContainerHighlightType2) => {
|
|
@@ -603,21 +604,9 @@ class DragResizeHelper {
|
|
|
603
604
|
el.after(ghostEl);
|
|
604
605
|
return ghostEl;
|
|
605
606
|
}
|
|
606
|
-
setGhostElChildrenId(el) {
|
|
607
|
-
for (const child of Array.from(el.children)) {
|
|
608
|
-
const el2 = child;
|
|
609
|
-
const id = getIdFromEl()(el2);
|
|
610
|
-
if (id) {
|
|
611
|
-
setIdToEl()(el2, `${GHOST_EL_ID_PREFIX}${id}`);
|
|
612
|
-
}
|
|
613
|
-
if (child.children.length) {
|
|
614
|
-
this.setGhostElChildrenId(child);
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
607
|
}
|
|
619
608
|
|
|
620
|
-
const ableCss = ".moveable-button {\n width: 20px;\n height: 20px;\n background: #4af;\n border-radius: 4px;\n appearance: none;\n border: 0;\n color: white;\n font-size: 12px;\n font-weight: bold;\n margin-left: 2px;\n position: relative;\n}\n.moveable-remove-button:before, .moveable-remove-button:after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) rotate(45deg);\n width: 14px;\n height: 2px;\n background: #fff;\n border-radius: 1px;\n cursor: pointer;\n}\n.moveable-remove-button:after {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n\n.moveable-select-parent-arrow-top-icon {\n transform: rotateZ(-45deg);\n width: 4px;\n height: 4px;\n border-color: #fff;\n border-width: 2px 2px 0 0;\n border-style: solid;\n position: absolute;\n left: 4px;\n top: 4px;\n}\n\n.moveable-select-parent-arrow-body-icon {\n width: 7px;\n height: 11px;\n border-color: #fff;\n border-width: 0 0 2px 2px;\n border-style: solid;\n}\n\n.moveable-drag-area-button {\n cursor: move;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon {\n width: 2px;\n height: 2px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-top {\n transform: rotateZ(-45deg) translateX(-50%);\n left: 50%;\n top: 3px;\n transform-origin: left;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-bottom {\n transform: rotateZ(135deg) translateX(-50%);\n transform-origin: left;\n left: 50%;\n top: auto;\n bottom: 3px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-right {\n transform: rotateZ(45deg) translateY(-50%);\n transform-origin: top;\n right: 3px;\n left: auto;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-left {\n transform: rotateZ(235deg) translateY(-50%);\n transform-origin: top;\n left: 3px;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-horizontal {\n width: 2px;\n height: 11px;\n background-color: #fff;\n position: absolute;\n transform: translateX(-50%);\n left: 50%;\n top: 4px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-vertical {\n width: 11px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n transform: translateY(-50%);\n left: 4px;\n top: 50%;;\n}\n\n";
|
|
609
|
+
const ableCss = ".moveable-button {\n width: 20px;\n height: 20px;\n background: #4af;\n border-radius: 4px;\n appearance: none;\n border: 0;\n color: white;\n font-size: 12px;\n font-weight: bold;\n margin-left: 2px;\n position: relative;\n cursor: pointer;\n}\n.moveable-remove-button:before, .moveable-remove-button:after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) rotate(45deg);\n width: 14px;\n height: 2px;\n background: #fff;\n border-radius: 1px;\n cursor: pointer;\n}\n.moveable-remove-button:after {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n\n.moveable-select-parent-arrow-top-icon {\n transform: rotateZ(-45deg);\n width: 4px;\n height: 4px;\n border-color: #fff;\n border-width: 2px 2px 0 0;\n border-style: solid;\n position: absolute;\n left: 4px;\n top: 4px;\n}\n\n.moveable-select-parent-arrow-body-icon {\n width: 7px;\n height: 11px;\n border-color: #fff;\n border-width: 0 0 2px 2px;\n border-style: solid;\n}\n\n.moveable-drag-area-button {\n cursor: move;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon {\n width: 2px;\n height: 2px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-top {\n transform: rotateZ(-45deg) translateX(-50%);\n left: 50%;\n top: 3px;\n transform-origin: left;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-bottom {\n transform: rotateZ(135deg) translateX(-50%);\n transform-origin: left;\n left: 50%;\n top: auto;\n bottom: 3px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-right {\n transform: rotateZ(45deg) translateY(-50%);\n transform-origin: top;\n right: 3px;\n left: auto;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-left {\n transform: rotateZ(235deg) translateY(-50%);\n transform-origin: top;\n left: 3px;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-horizontal {\n width: 2px;\n height: 11px;\n background-color: #fff;\n position: absolute;\n transform: translateX(-50%);\n left: 50%;\n top: 4px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-vertical {\n width: 11px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n transform: translateY(-50%);\n left: 4px;\n top: 50%;;\n}\n\n.moveable-rerender-button img {\n position: absolute;\n left: 2px;\n top: 2px;\n}\n";
|
|
621
610
|
|
|
622
611
|
const MoveableActionsAble = (handler, customizedButton = []) => ({
|
|
623
612
|
name: "actions",
|
|
@@ -654,6 +643,21 @@ const MoveableActionsAble = (handler, customizedButton = []) => ({
|
|
|
654
643
|
const options = buttonRenderer(React);
|
|
655
644
|
return React.createElement("button", options.props || {}, ...options.children || []);
|
|
656
645
|
}),
|
|
646
|
+
React.createElement(
|
|
647
|
+
"button",
|
|
648
|
+
{
|
|
649
|
+
className: "moveable-button moveable-rerender-button",
|
|
650
|
+
title: "重新收集依赖后渲染",
|
|
651
|
+
onClick: () => {
|
|
652
|
+
handler(AbleActionEventType.RERENDER);
|
|
653
|
+
}
|
|
654
|
+
},
|
|
655
|
+
React.createElement("img", {
|
|
656
|
+
src: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb24tdGFibGVyLXJlcGxhY2UiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2ZmZmZmZiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICA8cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSIgLz4KICA8cmVjdCB4PSIxNSIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxIiAvPgogIDxwYXRoIGQ9Ik0yMSAxMXYtM2EyIDIgMCAwIDAgLTIgLTJoLTZsMyAzbTAgLTZsLTMgMyIgLz4KICA8cGF0aCBkPSJNMyAxM3YzYTIgMiAwIDAgMCAyIDJoNmwtMyAtM20wIDZsMyAtMyIgLz4KPC9zdmc+CgoK",
|
|
657
|
+
width: "16",
|
|
658
|
+
height: "16"
|
|
659
|
+
})
|
|
660
|
+
),
|
|
657
661
|
React.createElement(
|
|
658
662
|
"button",
|
|
659
663
|
{
|
|
@@ -1697,6 +1701,8 @@ class ActionManager extends EventEmitter {
|
|
|
1697
1701
|
data: [{ el: drTarget }]
|
|
1698
1702
|
};
|
|
1699
1703
|
this.emit("remove", data);
|
|
1704
|
+
}).on(AbleActionEventType.RERENDER, () => {
|
|
1705
|
+
this.emit("rerender");
|
|
1700
1706
|
}).on("drag-start", (e) => {
|
|
1701
1707
|
this.emit("drag-start", e);
|
|
1702
1708
|
});
|
|
@@ -2720,6 +2726,8 @@ class StageCore extends EventEmitter$1 {
|
|
|
2720
2726
|
this.emit("sort", data);
|
|
2721
2727
|
}).on("select-parent", () => {
|
|
2722
2728
|
this.emit("select-parent");
|
|
2729
|
+
}).on("rerender", () => {
|
|
2730
|
+
this.emit("rerender");
|
|
2723
2731
|
}).on("remove", (data) => {
|
|
2724
2732
|
this.emit("remove", data);
|
|
2725
2733
|
});
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
var AbleActionEventType = /* @__PURE__ */ ((AbleActionEventType2) => {
|
|
40
40
|
AbleActionEventType2["SELECT_PARENT"] = "select-parent";
|
|
41
41
|
AbleActionEventType2["REMOVE"] = "remove";
|
|
42
|
+
AbleActionEventType2["RERENDER"] = "rerender";
|
|
42
43
|
return AbleActionEventType2;
|
|
43
44
|
})(AbleActionEventType || {});
|
|
44
45
|
var ContainerHighlightType = /* @__PURE__ */ ((ContainerHighlightType2) => {
|
|
@@ -599,21 +600,9 @@
|
|
|
599
600
|
el.after(ghostEl);
|
|
600
601
|
return ghostEl;
|
|
601
602
|
}
|
|
602
|
-
setGhostElChildrenId(el) {
|
|
603
|
-
for (const child of Array.from(el.children)) {
|
|
604
|
-
const el2 = child;
|
|
605
|
-
const id = utils.getIdFromEl()(el2);
|
|
606
|
-
if (id) {
|
|
607
|
-
utils.setIdToEl()(el2, `${GHOST_EL_ID_PREFIX}${id}`);
|
|
608
|
-
}
|
|
609
|
-
if (child.children.length) {
|
|
610
|
-
this.setGhostElChildrenId(child);
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
603
|
}
|
|
615
604
|
|
|
616
|
-
const ableCss = ".moveable-button {\n width: 20px;\n height: 20px;\n background: #4af;\n border-radius: 4px;\n appearance: none;\n border: 0;\n color: white;\n font-size: 12px;\n font-weight: bold;\n margin-left: 2px;\n position: relative;\n}\n.moveable-remove-button:before, .moveable-remove-button:after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) rotate(45deg);\n width: 14px;\n height: 2px;\n background: #fff;\n border-radius: 1px;\n cursor: pointer;\n}\n.moveable-remove-button:after {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n\n.moveable-select-parent-arrow-top-icon {\n transform: rotateZ(-45deg);\n width: 4px;\n height: 4px;\n border-color: #fff;\n border-width: 2px 2px 0 0;\n border-style: solid;\n position: absolute;\n left: 4px;\n top: 4px;\n}\n\n.moveable-select-parent-arrow-body-icon {\n width: 7px;\n height: 11px;\n border-color: #fff;\n border-width: 0 0 2px 2px;\n border-style: solid;\n}\n\n.moveable-drag-area-button {\n cursor: move;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon {\n width: 2px;\n height: 2px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-top {\n transform: rotateZ(-45deg) translateX(-50%);\n left: 50%;\n top: 3px;\n transform-origin: left;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-bottom {\n transform: rotateZ(135deg) translateX(-50%);\n transform-origin: left;\n left: 50%;\n top: auto;\n bottom: 3px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-right {\n transform: rotateZ(45deg) translateY(-50%);\n transform-origin: top;\n right: 3px;\n left: auto;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-left {\n transform: rotateZ(235deg) translateY(-50%);\n transform-origin: top;\n left: 3px;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-horizontal {\n width: 2px;\n height: 11px;\n background-color: #fff;\n position: absolute;\n transform: translateX(-50%);\n left: 50%;\n top: 4px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-vertical {\n width: 11px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n transform: translateY(-50%);\n left: 4px;\n top: 50%;;\n}\n\n";
|
|
605
|
+
const ableCss = ".moveable-button {\n width: 20px;\n height: 20px;\n background: #4af;\n border-radius: 4px;\n appearance: none;\n border: 0;\n color: white;\n font-size: 12px;\n font-weight: bold;\n margin-left: 2px;\n position: relative;\n cursor: pointer;\n}\n.moveable-remove-button:before, .moveable-remove-button:after {\n content: \"\";\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%) rotate(45deg);\n width: 14px;\n height: 2px;\n background: #fff;\n border-radius: 1px;\n cursor: pointer;\n}\n.moveable-remove-button:after {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n\n.moveable-select-parent-arrow-top-icon {\n transform: rotateZ(-45deg);\n width: 4px;\n height: 4px;\n border-color: #fff;\n border-width: 2px 2px 0 0;\n border-style: solid;\n position: absolute;\n left: 4px;\n top: 4px;\n}\n\n.moveable-select-parent-arrow-body-icon {\n width: 7px;\n height: 11px;\n border-color: #fff;\n border-width: 0 0 2px 2px;\n border-style: solid;\n}\n\n.moveable-drag-area-button {\n cursor: move;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon {\n width: 2px;\n height: 2px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-top {\n transform: rotateZ(-45deg) translateX(-50%);\n left: 50%;\n top: 3px;\n transform-origin: left;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-bottom {\n transform: rotateZ(135deg) translateX(-50%);\n transform-origin: left;\n left: 50%;\n top: auto;\n bottom: 3px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-right {\n transform: rotateZ(45deg) translateY(-50%);\n transform-origin: top;\n right: 3px;\n left: auto;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-top-icon-left {\n transform: rotateZ(235deg) translateY(-50%);\n transform-origin: top;\n left: 3px;\n top: 50%;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-horizontal {\n width: 2px;\n height: 11px;\n background-color: #fff;\n position: absolute;\n transform: translateX(-50%);\n left: 50%;\n top: 4px;\n}\n\n.moveable-drag-area-button .moveable-select-parent-arrow-body-icon-vertical {\n width: 11px;\n height: 2px;\n background-color: #fff;\n position: absolute;\n transform: translateY(-50%);\n left: 4px;\n top: 50%;;\n}\n\n.moveable-rerender-button img {\n position: absolute;\n left: 2px;\n top: 2px;\n}\n";
|
|
617
606
|
|
|
618
607
|
const MoveableActionsAble = (handler, customizedButton = []) => ({
|
|
619
608
|
name: "actions",
|
|
@@ -650,6 +639,21 @@
|
|
|
650
639
|
const options = buttonRenderer(React);
|
|
651
640
|
return React.createElement("button", options.props || {}, ...options.children || []);
|
|
652
641
|
}),
|
|
642
|
+
React.createElement(
|
|
643
|
+
"button",
|
|
644
|
+
{
|
|
645
|
+
className: "moveable-button moveable-rerender-button",
|
|
646
|
+
title: "重新收集依赖后渲染",
|
|
647
|
+
onClick: () => {
|
|
648
|
+
handler(AbleActionEventType.RERENDER);
|
|
649
|
+
}
|
|
650
|
+
},
|
|
651
|
+
React.createElement("img", {
|
|
652
|
+
src: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb24tdGFibGVyLXJlcGxhY2UiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2ZmZmZmZiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICA8cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSIgLz4KICA8cmVjdCB4PSIxNSIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxIiAvPgogIDxwYXRoIGQ9Ik0yMSAxMXYtM2EyIDIgMCAwIDAgLTIgLTJoLTZsMyAzbTAgLTZsLTMgMyIgLz4KICA8cGF0aCBkPSJNMyAxM3YzYTIgMiAwIDAgMCAyIDJoNmwtMyAtM20wIDZsMyAtMyIgLz4KPC9zdmc+CgoK",
|
|
653
|
+
width: "16",
|
|
654
|
+
height: "16"
|
|
655
|
+
})
|
|
656
|
+
),
|
|
653
657
|
React.createElement(
|
|
654
658
|
"button",
|
|
655
659
|
{
|
|
@@ -1693,6 +1697,8 @@
|
|
|
1693
1697
|
data: [{ el: drTarget }]
|
|
1694
1698
|
};
|
|
1695
1699
|
this.emit("remove", data);
|
|
1700
|
+
}).on(AbleActionEventType.RERENDER, () => {
|
|
1701
|
+
this.emit("rerender");
|
|
1696
1702
|
}).on("drag-start", (e) => {
|
|
1697
1703
|
this.emit("drag-start", e);
|
|
1698
1704
|
});
|
|
@@ -2716,6 +2722,8 @@
|
|
|
2716
2722
|
this.emit("sort", data);
|
|
2717
2723
|
}).on("select-parent", () => {
|
|
2718
2724
|
this.emit("select-parent");
|
|
2725
|
+
}).on("rerender", () => {
|
|
2726
|
+
this.emit("rerender");
|
|
2719
2727
|
}).on("remove", (data) => {
|
|
2720
2728
|
this.emit("remove", data);
|
|
2721
2729
|
});
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.5.0
|
|
2
|
+
"version": "1.5.0",
|
|
3
3
|
"name": "@tmagic/stage",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/tmagic-stage.umd.cjs",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"node": ">=18"
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
|
+
"directory": "packages/stage",
|
|
26
27
|
"type": "git",
|
|
27
28
|
"url": "https://github.com/Tencent/tmagic-editor.git"
|
|
28
29
|
},
|
|
@@ -41,13 +42,13 @@
|
|
|
41
42
|
"@types/node": "^18.19.0",
|
|
42
43
|
"rimraf": "^3.0.2",
|
|
43
44
|
"sass": "^1.78.0",
|
|
44
|
-
"vite": "^5.4.
|
|
45
|
+
"vite": "^5.4.10"
|
|
45
46
|
},
|
|
46
47
|
"peerDependencies": {
|
|
47
48
|
"typescript": "*",
|
|
48
|
-
"@tmagic/
|
|
49
|
-
"@tmagic/
|
|
50
|
-
"@tmagic/
|
|
49
|
+
"@tmagic/core": "1.5.0",
|
|
50
|
+
"@tmagic/utils": "1.5.0",
|
|
51
|
+
"@tmagic/schema": "1.5.0"
|
|
51
52
|
},
|
|
52
53
|
"peerDependenciesMeta": {
|
|
53
54
|
"typescript": {
|
package/src/ActionManager.ts
CHANGED
|
@@ -445,6 +445,9 @@ export default class ActionManager extends EventEmitter {
|
|
|
445
445
|
};
|
|
446
446
|
this.emit('remove', data);
|
|
447
447
|
})
|
|
448
|
+
.on(AbleActionEventType.RERENDER, () => {
|
|
449
|
+
this.emit('rerender');
|
|
450
|
+
})
|
|
448
451
|
.on('drag-start', (e: OnDragStart) => {
|
|
449
452
|
this.emit('drag-start', e);
|
|
450
453
|
});
|
package/src/DragResizeHelper.ts
CHANGED
|
@@ -402,18 +402,4 @@ export default class DragResizeHelper {
|
|
|
402
402
|
|
|
403
403
|
return ghostEl;
|
|
404
404
|
}
|
|
405
|
-
|
|
406
|
-
private setGhostElChildrenId(el: Element): void {
|
|
407
|
-
for (const child of Array.from(el.children)) {
|
|
408
|
-
const el = child as HTMLElement;
|
|
409
|
-
const id = getIdFromEl()(el);
|
|
410
|
-
if (id) {
|
|
411
|
-
setIdToEl()(el, `${GHOST_EL_ID_PREFIX}${id}`);
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
if (child.children.length) {
|
|
415
|
-
this.setGhostElChildrenId(child);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
405
|
}
|
|
@@ -57,6 +57,21 @@ export default (
|
|
|
57
57
|
return React.createElement('button', options.props || {}, ...(options.children || []));
|
|
58
58
|
}),
|
|
59
59
|
|
|
60
|
+
React.createElement(
|
|
61
|
+
'button',
|
|
62
|
+
{
|
|
63
|
+
className: 'moveable-button moveable-rerender-button',
|
|
64
|
+
title: '重新收集依赖后渲染',
|
|
65
|
+
onClick: () => {
|
|
66
|
+
handler(AbleActionEventType.RERENDER);
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
React.createElement('img', {
|
|
70
|
+
src: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb24tdGFibGVyLXJlcGxhY2UiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2ZmZmZmZiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICA8cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICA8cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iNiIgaGVpZ2h0PSI2IiByeD0iMSIgLz4KICA8cmVjdCB4PSIxNSIgeT0iMTUiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHJ4PSIxIiAvPgogIDxwYXRoIGQ9Ik0yMSAxMXYtM2EyIDIgMCAwIDAgLTIgLTJoLTZsMyAzbTAgLTZsLTMgMyIgLz4KICA8cGF0aCBkPSJNMyAxM3YzYTIgMiAwIDAgMCAyIDJoNmwtMyAtM20wIDZsMyAtMyIgLz4KPC9zdmc+CgoK',
|
|
71
|
+
width: '16',
|
|
72
|
+
height: '16',
|
|
73
|
+
}),
|
|
74
|
+
),
|
|
60
75
|
React.createElement(
|
|
61
76
|
'button',
|
|
62
77
|
{
|
package/src/StageCore.ts
CHANGED
|
@@ -373,6 +373,9 @@ export default class StageCore extends EventEmitter {
|
|
|
373
373
|
.on('select-parent', () => {
|
|
374
374
|
this.emit('select-parent');
|
|
375
375
|
})
|
|
376
|
+
.on('rerender', () => {
|
|
377
|
+
this.emit('rerender');
|
|
378
|
+
})
|
|
376
379
|
.on('remove', (data: RemoveEventData) => {
|
|
377
380
|
this.emit('remove', data);
|
|
378
381
|
});
|
package/src/const.ts
CHANGED
package/src/moveable-able.css
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
font-weight: bold;
|
|
11
11
|
margin-left: 2px;
|
|
12
12
|
position: relative;
|
|
13
|
+
cursor: pointer;
|
|
13
14
|
}
|
|
14
15
|
.moveable-remove-button:before, .moveable-remove-button:after {
|
|
15
16
|
content: "";
|
|
@@ -106,3 +107,8 @@
|
|
|
106
107
|
top: 50%;;
|
|
107
108
|
}
|
|
108
109
|
|
|
110
|
+
.moveable-rerender-button img {
|
|
111
|
+
position: absolute;
|
|
112
|
+
left: 2px;
|
|
113
|
+
top: 2px;
|
|
114
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -251,6 +251,7 @@ export interface CoreEvents {
|
|
|
251
251
|
update: [data: UpdateEventData];
|
|
252
252
|
sort: [data: SortEventData];
|
|
253
253
|
'select-parent': [];
|
|
254
|
+
rerender: [];
|
|
254
255
|
remove: [data: RemoveEventData];
|
|
255
256
|
highlight: [highlightEl: HTMLElement];
|
|
256
257
|
mousemove: [event: MouseEvent];
|
|
@@ -283,6 +284,7 @@ export interface ActionManagerEvents {
|
|
|
283
284
|
sort: [data: SortEventData];
|
|
284
285
|
remove: [data: RemoveEventData];
|
|
285
286
|
select: [selectedEl: HTMLElement | null, event: MouseEvent];
|
|
287
|
+
rerender: [];
|
|
286
288
|
'select-parent': [];
|
|
287
289
|
'drag-start': [event: OnDragStart];
|
|
288
290
|
'multi-update': [data: UpdateEventData];
|
|
@@ -297,6 +299,7 @@ export interface DrEvents {
|
|
|
297
299
|
'update-moveable': [];
|
|
298
300
|
[AbleActionEventType.REMOVE]: [];
|
|
299
301
|
[AbleActionEventType.SELECT_PARENT]: [];
|
|
302
|
+
[AbleActionEventType.RERENDER]: [];
|
|
300
303
|
'drag-start': [event: OnDragStart];
|
|
301
304
|
update: [data: UpdateEventData];
|
|
302
305
|
sort: [data: SortEventData];
|
package/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as _tmagic_editor from '@tmagic/editor';
|
|
1
2
|
import EventEmitter, { EventEmitter as EventEmitter$1 } from 'events';
|
|
2
3
|
import { OnResizeStart, OnResize, OnDragStart, OnDrag, OnRotateStart, OnRotate, OnScaleStart, OnScale, OnResizeGroupStart, OnResizeGroup, OnDragGroupStart, OnDragGroup, MoveableOptions, Renderer, MoveableManagerInterface } from 'moveable';
|
|
3
4
|
export * from 'moveable';
|
|
@@ -56,7 +57,8 @@ declare enum Mode {
|
|
|
56
57
|
declare const SELECTED_CLASS = "tmagic-stage-selected-area";
|
|
57
58
|
declare enum AbleActionEventType {
|
|
58
59
|
SELECT_PARENT = "select-parent",
|
|
59
|
-
REMOVE = "remove"
|
|
60
|
+
REMOVE = "remove",
|
|
61
|
+
RERENDER = "rerender"
|
|
60
62
|
}
|
|
61
63
|
/** 将组件添加到容器的方式 */
|
|
62
64
|
declare enum ContainerHighlightType {
|
|
@@ -151,7 +153,6 @@ declare class DragResizeHelper {
|
|
|
151
153
|
* 流式布局把目标节点复制一份进行拖拽,在拖拽结束前不影响页面原布局样式
|
|
152
154
|
*/
|
|
153
155
|
private generateGhostEl;
|
|
154
|
-
private setGhostElChildrenId;
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
type TargetElement = HTMLElement | SVGElement;
|
|
@@ -348,6 +349,7 @@ interface CoreEvents {
|
|
|
348
349
|
update: [data: UpdateEventData];
|
|
349
350
|
sort: [data: SortEventData];
|
|
350
351
|
'select-parent': [];
|
|
352
|
+
rerender: [];
|
|
351
353
|
remove: [data: RemoveEventData];
|
|
352
354
|
highlight: [highlightEl: HTMLElement];
|
|
353
355
|
mousemove: [event: MouseEvent];
|
|
@@ -377,6 +379,7 @@ interface ActionManagerEvents {
|
|
|
377
379
|
sort: [data: SortEventData];
|
|
378
380
|
remove: [data: RemoveEventData];
|
|
379
381
|
select: [selectedEl: HTMLElement | null, event: MouseEvent];
|
|
382
|
+
rerender: [];
|
|
380
383
|
'select-parent': [];
|
|
381
384
|
'drag-start': [event: OnDragStart];
|
|
382
385
|
'multi-update': [data: UpdateEventData];
|
|
@@ -390,6 +393,7 @@ interface DrEvents {
|
|
|
390
393
|
'update-moveable': [];
|
|
391
394
|
[AbleActionEventType.REMOVE]: [];
|
|
392
395
|
[AbleActionEventType.SELECT_PARENT]: [];
|
|
396
|
+
[AbleActionEventType.RERENDER]: [];
|
|
393
397
|
'drag-start': [event: OnDragStart];
|
|
394
398
|
update: [data: UpdateEventData];
|
|
395
399
|
sort: [data: SortEventData];
|
|
@@ -781,7 +785,7 @@ declare class StageCore extends EventEmitter$1 {
|
|
|
781
785
|
*/
|
|
782
786
|
delayedMarkContainer(event: MouseEvent, excludeElList?: Element[]): NodeJS.Timeout | undefined;
|
|
783
787
|
getMoveableOption<K extends keyof MoveableOptions>(key: K): MoveableOptions[K] | undefined;
|
|
784
|
-
getDragStatus(): StageDragStatus | undefined;
|
|
788
|
+
getDragStatus(): _tmagic_editor.StageDragStatus | undefined;
|
|
785
789
|
disableMultiSelect(): void;
|
|
786
790
|
enableMultiSelect(): void;
|
|
787
791
|
/**
|