@tmagic/stage 1.5.0-beta.7 → 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.
@@ -1,5 +1,5 @@
1
1
  import EventEmitter, { EventEmitter as EventEmitter$1 } from 'events';
2
- import { removeClassName, guid, setIdToEl, getIdFromEl, getElById, calcValueByFontsize, addClassName, removeClassNameByClassName, getDocument, createDiv, injectStyle, isSameDomain, getHost } from '@tmagic/utils';
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
- (node) => !node.id.startsWith(GHOST_EL_ID_PREFIX)
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: target.id,
200
- dist: downEls.length && swapIndex > -1 ? downEls[swapIndex].id : target.id
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
- (node) => !node.id.startsWith(GHOST_EL_ID_PREFIX)
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: target.id,
222
- dist: upEls.length && swapIndex > -1 ? upEls[swapIndex].id : target.id
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 === getId(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
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.id === getId(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
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((targetItem) => getId(targetItem) === getId(targeEl.parentElement));
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(ev.target)?.endsWith(frameItem.id)
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(targetItem) && getId(ev.target)?.endsWith(getId(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((targetItem) => getId(targetItem) === getId(targeEl.parentElement));
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) => getId(item)?.endsWith(getId(el) || ""));
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(ev.target)?.endsWith(getId(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 = getId(matchEventTarget);
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 = el.cloneNode(true);
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}${getId(el)}`);
588
- ghostEl.style.zIndex = ZIndex.GHOST_EL;
589
- ghostEl.style.opacity = ".5";
590
- ghostEl.style.position = "absolute";
591
- ghostEl.style.left = `${left}px`;
592
- ghostEl.style.top = `${top}px`;
593
- ghostEl.style.marginLeft = "0";
594
- ghostEl.style.marginTop = "0";
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 = getId(el2);
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
- (node) => !node.id.startsWith(GHOST_EL_ID_PREFIX)
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: target.id,
196
- dist: downEls.length && swapIndex > -1 ? downEls[swapIndex].id : target.id
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
- (node) => !node.id.startsWith(GHOST_EL_ID_PREFIX)
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: target.id,
218
- dist: upEls.length && swapIndex > -1 ? upEls[swapIndex].id : target.id
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 === getId(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
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.id === getId(ev.target)?.replace(DRAG_EL_ID_PREFIX, "")
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((targetItem) => getId(targetItem) === getId(targeEl.parentElement));
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(ev.target)?.endsWith(frameItem.id)
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(targetItem) && getId(ev.target)?.endsWith(getId(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((targetItem) => getId(targetItem) === getId(targeEl.parentElement));
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) => getId(item)?.endsWith(getId(el) || ""));
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(ev.target)?.endsWith(getId(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 = getId(matchEventTarget);
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 = el.cloneNode(true);
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}${getId(el)}`);
584
- ghostEl.style.zIndex = ZIndex.GHOST_EL;
585
- ghostEl.style.opacity = ".5";
586
- ghostEl.style.position = "absolute";
587
- ghostEl.style.left = `${left}px`;
588
- ghostEl.style.top = `${top}px`;
589
- ghostEl.style.marginLeft = "0";
590
- ghostEl.style.marginTop = "0";
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 = getId(el2);
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.7",
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/core": "1.5.0-beta.7",
49
- "@tmagic/utils": "1.5.0-beta.7",
50
- "@tmagic/schema": "1.5.0-beta.7"
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": {
@@ -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 === getId(ev.target)?.replace(DRAG_EL_ID_PREFIX, ''),
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.id === getId(ev.target)?.replace(DRAG_EL_ID_PREFIX, ''),
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((targetItem) => getId(targetItem) === getId(targeEl.parentElement));
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) => getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(ev.target)?.endsWith(frameItem.id),
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
- getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) &&
290
- getId(targetItem) &&
291
- getId(ev.target)?.endsWith(getId(targetItem)!),
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((targetItem) => getId(targetItem) === getId(targeEl.parentElement));
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) => getId(item)?.endsWith(getId(el) || ''));
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
- getId(ev.target)?.startsWith(DRAG_EL_ID_PREFIX) && getId(ev.target)?.endsWith(getId(targetItem) || ''),
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 = getId(matchEventTarget);
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 = el.cloneNode(true) as HTMLElement;
382
- this.setGhostElChildrenId(ghostEl);
385
+ const ghostEl = document.createElement('div') as HTMLElement;
383
386
  const { top, left } = getAbsolutePosition(el, getOffset(el));
384
- setIdToEl()(ghostEl, `${GHOST_EL_ID_PREFIX}${getId(el)}`);
385
- ghostEl.style.zIndex = ZIndex.GHOST_EL;
386
- ghostEl.style.opacity = '.5';
387
- ghostEl.style.position = 'absolute';
388
- ghostEl.style.left = `${left}px`;
389
- ghostEl.style.top = `${top}px`;
390
- ghostEl.style.marginLeft = '0';
391
- ghostEl.style.marginTop = '0';
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 = getId(el);
409
+ const id = getIdFromEl()(el);
400
410
  if (id) {
401
411
  setIdToEl()(el, `${GHOST_EL_ID_PREFIX}${id}`);
402
412
  }
@@ -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
- (node) => !node.id.startsWith(GHOST_EL_ID_PREFIX),
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: target.id,
194
- dist: downEls.length && swapIndex > -1 ? downEls[swapIndex].id : target.id,
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
- (node) => !node.id.startsWith(GHOST_EL_ID_PREFIX),
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: target.id,
230
- dist: upEls.length && swapIndex > -1 ? upEls[swapIndex].id : target.id,
235
+ src,
236
+ dist: upEls.length && swapIndex > -1 ? getIdFromEl()(upEls[swapIndex]) || '' : src,
231
237
  };
232
238
  };
233
239