@tmagic/stage 1.5.0-beta.8 → 1.5.0-beta.9
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 +36 -28
- package/dist/tmagic-stage.umd.cjs +35 -27
- package/package.json +4 -4
- package/src/DragResizeHelper.ts +34 -24
- package/src/StageDragResize.ts +1 -1
- package/src/util.ts +13 -7
package/dist/tmagic-stage.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import EventEmitter, { EventEmitter as EventEmitter$1 } from 'events';
|
|
2
|
-
import { removeClassName, guid, setIdToEl,
|
|
2
|
+
import { removeClassName, getIdFromEl, guid, setIdToEl, getElById, calcValueByFontsize, addClassName, removeClassNameByClassName, getDocument, createDiv, injectStyle, isSameDomain, getHost } from '@tmagic/utils';
|
|
3
3
|
import KeyController from 'keycon';
|
|
4
4
|
import { merge, throttle } from 'lodash-es';
|
|
5
5
|
import { Env } from '@tmagic/core';
|
|
@@ -179,7 +179,7 @@ const down = (deltaTop, target) => {
|
|
|
179
179
|
let swapIndex = 0;
|
|
180
180
|
let addUpH = target.clientHeight;
|
|
181
181
|
const brothers = Array.from(target.parentNode?.children || []).filter(
|
|
182
|
-
(
|
|
182
|
+
(child) => !getIdFromEl()(child)?.startsWith(GHOST_EL_ID_PREFIX)
|
|
183
183
|
);
|
|
184
184
|
const index = brothers.indexOf(target);
|
|
185
185
|
const downEls = brothers.slice(index + 1);
|
|
@@ -195,14 +195,15 @@ const down = (deltaTop, target) => {
|
|
|
195
195
|
addUpH += ele.clientHeight / 2;
|
|
196
196
|
swapIndex = i;
|
|
197
197
|
}
|
|
198
|
+
const src = getIdFromEl()(target) || "";
|
|
198
199
|
return {
|
|
199
|
-
src
|
|
200
|
-
dist: downEls.length && swapIndex > -1 ? downEls[swapIndex]
|
|
200
|
+
src,
|
|
201
|
+
dist: downEls.length && swapIndex > -1 ? getIdFromEl()(downEls[swapIndex]) || "" : src
|
|
201
202
|
};
|
|
202
203
|
};
|
|
203
204
|
const up = (deltaTop, target) => {
|
|
204
205
|
const brothers = Array.from(target.parentNode?.children || []).filter(
|
|
205
|
-
(
|
|
206
|
+
(child) => !getIdFromEl()(child)?.startsWith(GHOST_EL_ID_PREFIX)
|
|
206
207
|
);
|
|
207
208
|
const index = brothers.indexOf(target);
|
|
208
209
|
const upEls = brothers.slice(0, index);
|
|
@@ -217,9 +218,10 @@ const up = (deltaTop, target) => {
|
|
|
217
218
|
addUpH += ele.clientHeight / 2;
|
|
218
219
|
swapIndex = i;
|
|
219
220
|
}
|
|
221
|
+
const src = getIdFromEl()(target) || "";
|
|
220
222
|
return {
|
|
221
|
-
src
|
|
222
|
-
dist: upEls.length && swapIndex > -1 ? upEls[swapIndex]
|
|
223
|
+
src,
|
|
224
|
+
dist: upEls.length && swapIndex > -1 ? getIdFromEl()(upEls[swapIndex]) || "" : src
|
|
223
225
|
};
|
|
224
226
|
};
|
|
225
227
|
const isMoveableButton = (target) => target.classList.contains("moveable-button") || target.parentElement?.classList.contains("moveable-button");
|
|
@@ -329,7 +331,6 @@ class TargetShadow {
|
|
|
329
331
|
};
|
|
330
332
|
}
|
|
331
333
|
|
|
332
|
-
const getId = getIdFromEl();
|
|
333
334
|
class DragResizeHelper {
|
|
334
335
|
/** 目标节点在蒙层上的占位节点,用于跟鼠标交互,避免鼠标事件直接作用到目标节点 */
|
|
335
336
|
targetShadow;
|
|
@@ -489,14 +490,16 @@ class DragResizeHelper {
|
|
|
489
490
|
events.forEach((ev) => {
|
|
490
491
|
const { width, height, beforeTranslate } = ev.drag;
|
|
491
492
|
const frameSnapShot = this.framesSnapShot.find(
|
|
492
|
-
(frameItem) => frameItem.id ===
|
|
493
|
+
(frameItem) => frameItem.id === getIdFromEl()(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
|
|
493
494
|
);
|
|
494
495
|
if (!frameSnapShot) return;
|
|
495
496
|
const targeEl = this.targetList.find(
|
|
496
|
-
(targetItem) => targetItem
|
|
497
|
+
(targetItem) => getIdFromEl()(targetItem) === getIdFromEl()(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
|
|
497
498
|
);
|
|
498
499
|
if (!targeEl) return;
|
|
499
|
-
const isParentIncluded = this.targetList.find(
|
|
500
|
+
const isParentIncluded = this.targetList.find(
|
|
501
|
+
(targetItem) => getIdFromEl()(targetItem) === getIdFromEl()(targeEl.parentElement)
|
|
502
|
+
);
|
|
500
503
|
if (!isParentIncluded) {
|
|
501
504
|
const { marginLeft, marginTop } = getMarginValue(targeEl);
|
|
502
505
|
targeEl.style.left = `${frameSnapShot.left + beforeTranslate[0] - marginLeft}px`;
|
|
@@ -516,14 +519,16 @@ class DragResizeHelper {
|
|
|
516
519
|
const { events } = e;
|
|
517
520
|
events.forEach((ev) => {
|
|
518
521
|
const frameSnapShot = this.framesSnapShot.find(
|
|
519
|
-
(frameItem) =>
|
|
522
|
+
(frameItem) => getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getIdFromEl()(ev.target)?.endsWith(frameItem.id)
|
|
520
523
|
);
|
|
521
524
|
if (!frameSnapShot) return;
|
|
522
525
|
const targeEl = this.targetList.find(
|
|
523
|
-
(targetItem) =>
|
|
526
|
+
(targetItem) => getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getIdFromEl()(targetItem) && getIdFromEl()(ev.target)?.endsWith(getIdFromEl()(targetItem))
|
|
524
527
|
);
|
|
525
528
|
if (!targeEl) return;
|
|
526
|
-
const isParentIncluded = this.targetList.find(
|
|
529
|
+
const isParentIncluded = this.targetList.find(
|
|
530
|
+
(targetItem) => getIdFromEl()(targetItem) === getIdFromEl()(targeEl.parentElement)
|
|
531
|
+
);
|
|
527
532
|
if (!isParentIncluded) {
|
|
528
533
|
const { marginLeft, marginTop } = getMarginValue(targeEl);
|
|
529
534
|
targeEl.style.left = `${frameSnapShot.left + ev.beforeTranslate[0] - marginLeft}px`;
|
|
@@ -542,7 +547,7 @@ class DragResizeHelper {
|
|
|
542
547
|
let shadowEl = this.getShadowEl();
|
|
543
548
|
const shadowEls = this.getShadowEls();
|
|
544
549
|
if (shadowEls.length) {
|
|
545
|
-
shadowEl = shadowEls.find((item) =>
|
|
550
|
+
shadowEl = shadowEls.find((item) => getIdFromEl()(item)?.endsWith(getIdFromEl()(el) || ""));
|
|
546
551
|
}
|
|
547
552
|
if (parentEl && this.mode === Mode.ABSOLUTE && shadowEl) {
|
|
548
553
|
const targetShadowHtmlEl = shadowEl;
|
|
@@ -563,10 +568,10 @@ class DragResizeHelper {
|
|
|
563
568
|
if (this.framesSnapShot.length > 0) return;
|
|
564
569
|
events.forEach((ev) => {
|
|
565
570
|
const matchEventTarget = this.targetList.find(
|
|
566
|
-
(targetItem) =>
|
|
571
|
+
(targetItem) => getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getIdFromEl()(ev.target)?.endsWith(getIdFromEl()(targetItem) || "")
|
|
567
572
|
);
|
|
568
573
|
if (!matchEventTarget) return;
|
|
569
|
-
const id =
|
|
574
|
+
const id = getIdFromEl()(matchEventTarget);
|
|
570
575
|
id && this.framesSnapShot.push({
|
|
571
576
|
left: matchEventTarget.offsetLeft,
|
|
572
577
|
top: matchEventTarget.offsetTop,
|
|
@@ -581,24 +586,27 @@ class DragResizeHelper {
|
|
|
581
586
|
if (this.ghostEl) {
|
|
582
587
|
this.destroyGhostEl();
|
|
583
588
|
}
|
|
584
|
-
const ghostEl =
|
|
585
|
-
this.setGhostElChildrenId(ghostEl);
|
|
589
|
+
const ghostEl = document.createElement("div");
|
|
586
590
|
const { top, left } = getAbsolutePosition(el, getOffset(el));
|
|
587
|
-
setIdToEl()(ghostEl, `${GHOST_EL_ID_PREFIX}${
|
|
588
|
-
ghostEl.style.
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
591
|
+
setIdToEl()(ghostEl, `${GHOST_EL_ID_PREFIX}${getIdFromEl()(el)}`);
|
|
592
|
+
ghostEl.style.cssText = `
|
|
593
|
+
z-index: ${ZIndex.GHOST_EL};
|
|
594
|
+
opacity: .6;
|
|
595
|
+
position: absolute;
|
|
596
|
+
left: ${left}px;
|
|
597
|
+
top: ${top}px;
|
|
598
|
+
margin: 0;
|
|
599
|
+
background: blue;
|
|
600
|
+
width: ${el.clientWidth}px;
|
|
601
|
+
height: ${el.clientHeight}px;
|
|
602
|
+
`;
|
|
595
603
|
el.after(ghostEl);
|
|
596
604
|
return ghostEl;
|
|
597
605
|
}
|
|
598
606
|
setGhostElChildrenId(el) {
|
|
599
607
|
for (const child of Array.from(el.children)) {
|
|
600
608
|
const el2 = child;
|
|
601
|
-
const id =
|
|
609
|
+
const id = getIdFromEl()(el2);
|
|
602
610
|
if (id) {
|
|
603
611
|
setIdToEl()(el2, `${GHOST_EL_ID_PREFIX}${id}`);
|
|
604
612
|
}
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
let swapIndex = 0;
|
|
176
176
|
let addUpH = target.clientHeight;
|
|
177
177
|
const brothers = Array.from(target.parentNode?.children || []).filter(
|
|
178
|
-
(
|
|
178
|
+
(child) => !utils.getIdFromEl()(child)?.startsWith(GHOST_EL_ID_PREFIX)
|
|
179
179
|
);
|
|
180
180
|
const index = brothers.indexOf(target);
|
|
181
181
|
const downEls = brothers.slice(index + 1);
|
|
@@ -191,14 +191,15 @@
|
|
|
191
191
|
addUpH += ele.clientHeight / 2;
|
|
192
192
|
swapIndex = i;
|
|
193
193
|
}
|
|
194
|
+
const src = utils.getIdFromEl()(target) || "";
|
|
194
195
|
return {
|
|
195
|
-
src
|
|
196
|
-
dist: downEls.length && swapIndex > -1 ? downEls[swapIndex]
|
|
196
|
+
src,
|
|
197
|
+
dist: downEls.length && swapIndex > -1 ? utils.getIdFromEl()(downEls[swapIndex]) || "" : src
|
|
197
198
|
};
|
|
198
199
|
};
|
|
199
200
|
const up = (deltaTop, target) => {
|
|
200
201
|
const brothers = Array.from(target.parentNode?.children || []).filter(
|
|
201
|
-
(
|
|
202
|
+
(child) => !utils.getIdFromEl()(child)?.startsWith(GHOST_EL_ID_PREFIX)
|
|
202
203
|
);
|
|
203
204
|
const index = brothers.indexOf(target);
|
|
204
205
|
const upEls = brothers.slice(0, index);
|
|
@@ -213,9 +214,10 @@
|
|
|
213
214
|
addUpH += ele.clientHeight / 2;
|
|
214
215
|
swapIndex = i;
|
|
215
216
|
}
|
|
217
|
+
const src = utils.getIdFromEl()(target) || "";
|
|
216
218
|
return {
|
|
217
|
-
src
|
|
218
|
-
dist: upEls.length && swapIndex > -1 ? upEls[swapIndex]
|
|
219
|
+
src,
|
|
220
|
+
dist: upEls.length && swapIndex > -1 ? utils.getIdFromEl()(upEls[swapIndex]) || "" : src
|
|
219
221
|
};
|
|
220
222
|
};
|
|
221
223
|
const isMoveableButton = (target) => target.classList.contains("moveable-button") || target.parentElement?.classList.contains("moveable-button");
|
|
@@ -325,7 +327,6 @@
|
|
|
325
327
|
};
|
|
326
328
|
}
|
|
327
329
|
|
|
328
|
-
const getId = utils.getIdFromEl();
|
|
329
330
|
class DragResizeHelper {
|
|
330
331
|
/** 目标节点在蒙层上的占位节点,用于跟鼠标交互,避免鼠标事件直接作用到目标节点 */
|
|
331
332
|
targetShadow;
|
|
@@ -485,14 +486,16 @@
|
|
|
485
486
|
events.forEach((ev) => {
|
|
486
487
|
const { width, height, beforeTranslate } = ev.drag;
|
|
487
488
|
const frameSnapShot = this.framesSnapShot.find(
|
|
488
|
-
(frameItem) => frameItem.id ===
|
|
489
|
+
(frameItem) => frameItem.id === utils.getIdFromEl()(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
|
|
489
490
|
);
|
|
490
491
|
if (!frameSnapShot) return;
|
|
491
492
|
const targeEl = this.targetList.find(
|
|
492
|
-
(targetItem) => targetItem
|
|
493
|
+
(targetItem) => utils.getIdFromEl()(targetItem) === utils.getIdFromEl()(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
|
|
493
494
|
);
|
|
494
495
|
if (!targeEl) return;
|
|
495
|
-
const isParentIncluded = this.targetList.find(
|
|
496
|
+
const isParentIncluded = this.targetList.find(
|
|
497
|
+
(targetItem) => utils.getIdFromEl()(targetItem) === utils.getIdFromEl()(targeEl.parentElement)
|
|
498
|
+
);
|
|
496
499
|
if (!isParentIncluded) {
|
|
497
500
|
const { marginLeft, marginTop } = getMarginValue(targeEl);
|
|
498
501
|
targeEl.style.left = `${frameSnapShot.left + beforeTranslate[0] - marginLeft}px`;
|
|
@@ -512,14 +515,16 @@
|
|
|
512
515
|
const { events } = e;
|
|
513
516
|
events.forEach((ev) => {
|
|
514
517
|
const frameSnapShot = this.framesSnapShot.find(
|
|
515
|
-
(frameItem) =>
|
|
518
|
+
(frameItem) => utils.getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && utils.getIdFromEl()(ev.target)?.endsWith(frameItem.id)
|
|
516
519
|
);
|
|
517
520
|
if (!frameSnapShot) return;
|
|
518
521
|
const targeEl = this.targetList.find(
|
|
519
|
-
(targetItem) =>
|
|
522
|
+
(targetItem) => utils.getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && utils.getIdFromEl()(targetItem) && utils.getIdFromEl()(ev.target)?.endsWith(utils.getIdFromEl()(targetItem))
|
|
520
523
|
);
|
|
521
524
|
if (!targeEl) return;
|
|
522
|
-
const isParentIncluded = this.targetList.find(
|
|
525
|
+
const isParentIncluded = this.targetList.find(
|
|
526
|
+
(targetItem) => utils.getIdFromEl()(targetItem) === utils.getIdFromEl()(targeEl.parentElement)
|
|
527
|
+
);
|
|
523
528
|
if (!isParentIncluded) {
|
|
524
529
|
const { marginLeft, marginTop } = getMarginValue(targeEl);
|
|
525
530
|
targeEl.style.left = `${frameSnapShot.left + ev.beforeTranslate[0] - marginLeft}px`;
|
|
@@ -538,7 +543,7 @@
|
|
|
538
543
|
let shadowEl = this.getShadowEl();
|
|
539
544
|
const shadowEls = this.getShadowEls();
|
|
540
545
|
if (shadowEls.length) {
|
|
541
|
-
shadowEl = shadowEls.find((item) =>
|
|
546
|
+
shadowEl = shadowEls.find((item) => utils.getIdFromEl()(item)?.endsWith(utils.getIdFromEl()(el) || ""));
|
|
542
547
|
}
|
|
543
548
|
if (parentEl && this.mode === Mode.ABSOLUTE && shadowEl) {
|
|
544
549
|
const targetShadowHtmlEl = shadowEl;
|
|
@@ -559,10 +564,10 @@
|
|
|
559
564
|
if (this.framesSnapShot.length > 0) return;
|
|
560
565
|
events.forEach((ev) => {
|
|
561
566
|
const matchEventTarget = this.targetList.find(
|
|
562
|
-
(targetItem) =>
|
|
567
|
+
(targetItem) => utils.getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && utils.getIdFromEl()(ev.target)?.endsWith(utils.getIdFromEl()(targetItem) || "")
|
|
563
568
|
);
|
|
564
569
|
if (!matchEventTarget) return;
|
|
565
|
-
const id =
|
|
570
|
+
const id = utils.getIdFromEl()(matchEventTarget);
|
|
566
571
|
id && this.framesSnapShot.push({
|
|
567
572
|
left: matchEventTarget.offsetLeft,
|
|
568
573
|
top: matchEventTarget.offsetTop,
|
|
@@ -577,24 +582,27 @@
|
|
|
577
582
|
if (this.ghostEl) {
|
|
578
583
|
this.destroyGhostEl();
|
|
579
584
|
}
|
|
580
|
-
const ghostEl =
|
|
581
|
-
this.setGhostElChildrenId(ghostEl);
|
|
585
|
+
const ghostEl = document.createElement("div");
|
|
582
586
|
const { top, left } = getAbsolutePosition(el, getOffset(el));
|
|
583
|
-
utils.setIdToEl()(ghostEl, `${GHOST_EL_ID_PREFIX}${
|
|
584
|
-
ghostEl.style.
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
587
|
+
utils.setIdToEl()(ghostEl, `${GHOST_EL_ID_PREFIX}${utils.getIdFromEl()(el)}`);
|
|
588
|
+
ghostEl.style.cssText = `
|
|
589
|
+
z-index: ${ZIndex.GHOST_EL};
|
|
590
|
+
opacity: .6;
|
|
591
|
+
position: absolute;
|
|
592
|
+
left: ${left}px;
|
|
593
|
+
top: ${top}px;
|
|
594
|
+
margin: 0;
|
|
595
|
+
background: blue;
|
|
596
|
+
width: ${el.clientWidth}px;
|
|
597
|
+
height: ${el.clientHeight}px;
|
|
598
|
+
`;
|
|
591
599
|
el.after(ghostEl);
|
|
592
600
|
return ghostEl;
|
|
593
601
|
}
|
|
594
602
|
setGhostElChildrenId(el) {
|
|
595
603
|
for (const child of Array.from(el.children)) {
|
|
596
604
|
const el2 = child;
|
|
597
|
-
const id =
|
|
605
|
+
const id = utils.getIdFromEl()(el2);
|
|
598
606
|
if (id) {
|
|
599
607
|
utils.setIdToEl()(el2, `${GHOST_EL_ID_PREFIX}${id}`);
|
|
600
608
|
}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.5.0-beta.
|
|
2
|
+
"version": "1.5.0-beta.9",
|
|
3
3
|
"name": "@tmagic/stage",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/tmagic-stage.umd.cjs",
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"typescript": "*",
|
|
48
|
-
"@tmagic/schema": "1.5.0-beta.
|
|
49
|
-
"@tmagic/core": "1.5.0-beta.
|
|
50
|
-
"@tmagic/utils": "1.5.0-beta.
|
|
48
|
+
"@tmagic/schema": "1.5.0-beta.9",
|
|
49
|
+
"@tmagic/core": "1.5.0-beta.9",
|
|
50
|
+
"@tmagic/utils": "1.5.0-beta.9"
|
|
51
51
|
},
|
|
52
52
|
"peerDependenciesMeta": {
|
|
53
53
|
"typescript": {
|
package/src/DragResizeHelper.ts
CHANGED
|
@@ -39,8 +39,6 @@ import TargetShadow from './TargetShadow';
|
|
|
39
39
|
import type { DragResizeHelperConfig, Rect, TargetElement } from './types';
|
|
40
40
|
import { getAbsolutePosition, getBorderWidth, getMarginValue, getOffset } from './util';
|
|
41
41
|
|
|
42
|
-
const getId = getIdFromEl();
|
|
43
|
-
|
|
44
42
|
/**
|
|
45
43
|
* 拖拽/改变大小等操作发生时,moveable会抛出各种状态事件,DragResizeHelper负责响应这些事件,对目标节点target和拖拽节点targetShadow进行修改;
|
|
46
44
|
* 其中目标节点是DragResizeHelper直接改的,targetShadow作为直接被操作的拖拽框,是调用moveableHelper改的;
|
|
@@ -243,15 +241,17 @@ export default class DragResizeHelper {
|
|
|
243
241
|
events.forEach((ev) => {
|
|
244
242
|
const { width, height, beforeTranslate } = ev.drag;
|
|
245
243
|
const frameSnapShot = this.framesSnapShot.find(
|
|
246
|
-
(frameItem) => frameItem.id ===
|
|
244
|
+
(frameItem) => frameItem.id === getIdFromEl()(ev.target)?.replace(DRAG_EL_ID_PREFIX, ''),
|
|
247
245
|
);
|
|
248
246
|
if (!frameSnapShot) return;
|
|
249
247
|
const targeEl = this.targetList.find(
|
|
250
|
-
(targetItem) => targetItem
|
|
248
|
+
(targetItem) => getIdFromEl()(targetItem) === getIdFromEl()(ev.target)?.replace(DRAG_EL_ID_PREFIX, ''),
|
|
251
249
|
);
|
|
252
250
|
if (!targeEl) return;
|
|
253
251
|
// 元素与其所属组同时加入多选列表时,只更新父元素
|
|
254
|
-
const isParentIncluded = this.targetList.find(
|
|
252
|
+
const isParentIncluded = this.targetList.find(
|
|
253
|
+
(targetItem) => getIdFromEl()(targetItem) === getIdFromEl()(targeEl.parentElement),
|
|
254
|
+
);
|
|
255
255
|
|
|
256
256
|
if (!isParentIncluded) {
|
|
257
257
|
// 更新页面元素位置
|
|
@@ -281,18 +281,21 @@ export default class DragResizeHelper {
|
|
|
281
281
|
// 拖动过程更新
|
|
282
282
|
events.forEach((ev) => {
|
|
283
283
|
const frameSnapShot = this.framesSnapShot.find(
|
|
284
|
-
(frameItem) =>
|
|
284
|
+
(frameItem) =>
|
|
285
|
+
getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getIdFromEl()(ev.target)?.endsWith(frameItem.id),
|
|
285
286
|
);
|
|
286
287
|
if (!frameSnapShot) return;
|
|
287
288
|
const targeEl = this.targetList.find(
|
|
288
289
|
(targetItem) =>
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
290
|
+
getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) &&
|
|
291
|
+
getIdFromEl()(targetItem) &&
|
|
292
|
+
getIdFromEl()(ev.target)?.endsWith(getIdFromEl()(targetItem)!),
|
|
292
293
|
);
|
|
293
294
|
if (!targeEl) return;
|
|
294
295
|
// 元素与其所属组同时加入多选列表时,只更新父元素
|
|
295
|
-
const isParentIncluded = this.targetList.find(
|
|
296
|
+
const isParentIncluded = this.targetList.find(
|
|
297
|
+
(targetItem) => getIdFromEl()(targetItem) === getIdFromEl()(targeEl.parentElement),
|
|
298
|
+
);
|
|
296
299
|
if (!isParentIncluded) {
|
|
297
300
|
// 更新页面元素位置
|
|
298
301
|
const { marginLeft, marginTop } = getMarginValue(targeEl);
|
|
@@ -319,7 +322,7 @@ export default class DragResizeHelper {
|
|
|
319
322
|
const shadowEls = this.getShadowEls();
|
|
320
323
|
|
|
321
324
|
if (shadowEls.length) {
|
|
322
|
-
shadowEl = shadowEls.find((item) =>
|
|
325
|
+
shadowEl = shadowEls.find((item) => getIdFromEl()(item)?.endsWith(getIdFromEl()(el) || ''));
|
|
323
326
|
}
|
|
324
327
|
|
|
325
328
|
if (parentEl && this.mode === Mode.ABSOLUTE && shadowEl) {
|
|
@@ -356,11 +359,12 @@ export default class DragResizeHelper {
|
|
|
356
359
|
// 实际目标元素
|
|
357
360
|
const matchEventTarget = this.targetList.find(
|
|
358
361
|
(targetItem) =>
|
|
359
|
-
|
|
362
|
+
getIdFromEl()(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) &&
|
|
363
|
+
getIdFromEl()(ev.target)?.endsWith(getIdFromEl()(targetItem) || ''),
|
|
360
364
|
);
|
|
361
365
|
if (!matchEventTarget) return;
|
|
362
366
|
|
|
363
|
-
const id =
|
|
367
|
+
const id = getIdFromEl()(matchEventTarget);
|
|
364
368
|
id &&
|
|
365
369
|
this.framesSnapShot.push({
|
|
366
370
|
left: matchEventTarget.offsetLeft,
|
|
@@ -378,25 +382,31 @@ export default class DragResizeHelper {
|
|
|
378
382
|
this.destroyGhostEl();
|
|
379
383
|
}
|
|
380
384
|
|
|
381
|
-
const ghostEl =
|
|
382
|
-
this.setGhostElChildrenId(ghostEl);
|
|
385
|
+
const ghostEl = document.createElement('div') as HTMLElement;
|
|
383
386
|
const { top, left } = getAbsolutePosition(el, getOffset(el));
|
|
384
|
-
|
|
385
|
-
ghostEl
|
|
386
|
-
|
|
387
|
-
ghostEl.style.
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
387
|
+
|
|
388
|
+
setIdToEl()(ghostEl, `${GHOST_EL_ID_PREFIX}${getIdFromEl()(el)}`);
|
|
389
|
+
|
|
390
|
+
ghostEl.style.cssText = `
|
|
391
|
+
z-index: ${ZIndex.GHOST_EL};
|
|
392
|
+
opacity: .6;
|
|
393
|
+
position: absolute;
|
|
394
|
+
left: ${left}px;
|
|
395
|
+
top: ${top}px;
|
|
396
|
+
margin: 0;
|
|
397
|
+
background: blue;
|
|
398
|
+
width: ${el.clientWidth}px;
|
|
399
|
+
height: ${el.clientHeight}px;
|
|
400
|
+
`;
|
|
392
401
|
el.after(ghostEl);
|
|
402
|
+
|
|
393
403
|
return ghostEl;
|
|
394
404
|
}
|
|
395
405
|
|
|
396
406
|
private setGhostElChildrenId(el: Element): void {
|
|
397
407
|
for (const child of Array.from(el.children)) {
|
|
398
408
|
const el = child as HTMLElement;
|
|
399
|
-
const id =
|
|
409
|
+
const id = getIdFromEl()(el);
|
|
400
410
|
if (id) {
|
|
401
411
|
setIdToEl()(el, `${GHOST_EL_ID_PREFIX}${id}`);
|
|
402
412
|
}
|
package/src/StageDragResize.ts
CHANGED
|
@@ -22,7 +22,7 @@ import Moveable, { MoveableOptions } from 'moveable';
|
|
|
22
22
|
import { getIdFromEl } from '@tmagic/utils';
|
|
23
23
|
|
|
24
24
|
import { Mode, StageDragStatus } from './const';
|
|
25
|
-
import DragResizeHelper from './DragResizeHelper';
|
|
25
|
+
import type DragResizeHelper from './DragResizeHelper';
|
|
26
26
|
import MoveableOptionsManager from './MoveableOptionsManager';
|
|
27
27
|
import type {
|
|
28
28
|
DelayedMarkContainer,
|
package/src/util.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* See the License for the specific language governing permissions and
|
|
16
16
|
* limitations under the License.
|
|
17
17
|
*/
|
|
18
|
-
import { removeClassName } from '@tmagic/utils';
|
|
18
|
+
import { getIdFromEl, removeClassName } from '@tmagic/utils';
|
|
19
19
|
|
|
20
20
|
import { GHOST_EL_ID_PREFIX, Mode, SELECTED_CLASS, ZIndex } from './const';
|
|
21
21
|
import type { Offset, SortEventData, TargetElement } from './types';
|
|
@@ -170,7 +170,7 @@ export const down = (deltaTop: number, target: TargetElement): SortEventData =>
|
|
|
170
170
|
let swapIndex = 0;
|
|
171
171
|
let addUpH = target.clientHeight;
|
|
172
172
|
const brothers = Array.from(target.parentNode?.children || []).filter(
|
|
173
|
-
(
|
|
173
|
+
(child) => !getIdFromEl()(child as HTMLElement)?.startsWith(GHOST_EL_ID_PREFIX),
|
|
174
174
|
);
|
|
175
175
|
const index = brothers.indexOf(target);
|
|
176
176
|
// 往下移动
|
|
@@ -189,9 +189,12 @@ export const down = (deltaTop: number, target: TargetElement): SortEventData =>
|
|
|
189
189
|
addUpH += ele.clientHeight / 2;
|
|
190
190
|
swapIndex = i;
|
|
191
191
|
}
|
|
192
|
+
|
|
193
|
+
const src = getIdFromEl()(target) || '';
|
|
194
|
+
|
|
192
195
|
return {
|
|
193
|
-
src
|
|
194
|
-
dist: downEls.length && swapIndex > -1 ? downEls[swapIndex]
|
|
196
|
+
src,
|
|
197
|
+
dist: downEls.length && swapIndex > -1 ? getIdFromEl()(downEls[swapIndex]) || '' : src,
|
|
195
198
|
};
|
|
196
199
|
};
|
|
197
200
|
|
|
@@ -204,7 +207,7 @@ export const down = (deltaTop: number, target: TargetElement): SortEventData =>
|
|
|
204
207
|
*/
|
|
205
208
|
export const up = (deltaTop: number, target: TargetElement): SortEventData => {
|
|
206
209
|
const brothers = Array.from(target.parentNode?.children || []).filter(
|
|
207
|
-
(
|
|
210
|
+
(child) => !getIdFromEl()(child as HTMLElement)?.startsWith(GHOST_EL_ID_PREFIX),
|
|
208
211
|
);
|
|
209
212
|
const index = brothers.indexOf(target);
|
|
210
213
|
// 往上移动
|
|
@@ -225,9 +228,12 @@ export const up = (deltaTop: number, target: TargetElement): SortEventData => {
|
|
|
225
228
|
|
|
226
229
|
swapIndex = i;
|
|
227
230
|
}
|
|
231
|
+
|
|
232
|
+
const src = getIdFromEl()(target) || '';
|
|
233
|
+
|
|
228
234
|
return {
|
|
229
|
-
src
|
|
230
|
-
dist: upEls.length && swapIndex > -1 ? upEls[swapIndex]
|
|
235
|
+
src,
|
|
236
|
+
dist: upEls.length && swapIndex > -1 ? getIdFromEl()(upEls[swapIndex]) || '' : src,
|
|
231
237
|
};
|
|
232
238
|
};
|
|
233
239
|
|