@mx-sose-front/mx-sose-graph 1.1.5 → 1.1.6

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/index.esm.js CHANGED
@@ -4,7 +4,7 @@ var __publicField = (obj, key, value) => {
4
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  return value;
6
6
  };
7
- import { ref, shallowReactive, computed, nextTick, defineComponent, openBlock, createElementBlock, normalizeStyle, withDirectives, createElementVNode, Fragment, renderList, unref, normalizeClass, withModifiers, vShow, watch, createCommentVNode, withKeys, vModelText, onMounted, onUnmounted, resolveComponent, createBlock, Teleport, createVNode, withCtx, useCssVars, resolveDynamicComponent, toDisplayString, onBeforeUnmount, isMemoSame } from "vue";
7
+ import { ref, shallowReactive, computed, shallowRef, nextTick, triggerRef, defineComponent, openBlock, createElementBlock, normalizeStyle, withDirectives, createElementVNode, Fragment, renderList, unref, normalizeClass, withModifiers, vShow, watch, createCommentVNode, withKeys, vModelText, onMounted, onUnmounted, resolveComponent, createBlock, Teleport, createVNode, withCtx, useCssVars, resolveDynamicComponent, toDisplayString, onBeforeUnmount, isMemoSame } from "vue";
8
8
  import { defineStore, storeToRefs, setActivePinia } from "pinia";
9
9
  import ElementPlus, { ElMessage } from "element-plus";
10
10
  var v = false, o, f, s, u, d, N, l, p, m, w, D, x, E, M, F;
@@ -6435,11 +6435,13 @@ const resolveParentAfterDrag = (shapes, s2, finalRect, draggingIds, diagramId, u
6435
6435
  };
6436
6436
  const pointInRect = (pt, r, margin = 0) => pt.x >= r.x + margin && pt.x <= r.x + r.width - margin && pt.y >= r.y + margin && pt.y <= r.y + r.height - margin;
6437
6437
  const depthOf = (shapes, id) => {
6438
+ const graphStore = useGraphStore();
6439
+ const byId = graphStore.shapeMap;
6438
6440
  let d2 = 0;
6439
- let p2 = shapes.find((s2) => s2.id === id)?.parenShapeId ?? null;
6441
+ let p2 = byId.get(id)?.parenShapeId ?? null;
6440
6442
  while (p2) {
6441
6443
  d2++;
6442
- p2 = shapes.find((s2) => s2.id === p2)?.parenShapeId ?? null;
6444
+ p2 = byId.get(p2)?.parenShapeId ?? null;
6443
6445
  }
6444
6446
  return d2;
6445
6447
  };
@@ -6601,9 +6603,11 @@ function normalizeZOrder(shapes, diagramId, updateShape, baseZ = 1, step = 1) {
6601
6603
  }
6602
6604
  }
6603
6605
  const buildDragSnapshot = (shapes, ids) => {
6606
+ const graphStore = useGraphStore();
6607
+ const byId = graphStore.shapeMap;
6604
6608
  const dragBase = {};
6605
6609
  ids.forEach((id) => {
6606
- const s2 = shapes.find((x2) => x2.id === id);
6610
+ const s2 = byId.get(id);
6607
6611
  if (!s2)
6608
6612
  return;
6609
6613
  const b2 = getBounds(s2);
@@ -6621,7 +6625,8 @@ const buildDragSnapshot = (shapes, ids) => {
6621
6625
  return { dragBase, groupBaseBox };
6622
6626
  };
6623
6627
  const stepSingleDrag = (shapes, id, pointer, dragOffset, dragBase, diagramId, constrainEdges, hitPointer) => {
6624
- const s2 = shapes.find((x2) => x2.id === id);
6628
+ const graphStore = useGraphStore();
6629
+ const s2 = graphStore.shapeMap.get(id);
6625
6630
  if (!s2)
6626
6631
  return { ghost: {}, hover: null };
6627
6632
  const base = dragBase[id];
@@ -6649,6 +6654,8 @@ const stepSingleDrag = (shapes, id, pointer, dragOffset, dragBase, diagramId, co
6649
6654
  };
6650
6655
  };
6651
6656
  const stepGroupDrag = (shapes, draggingIds, primaryId, pointer, dragAnchor, groupBaseBox) => {
6657
+ const graphStore = useGraphStore();
6658
+ const byId = graphStore.shapeMap;
6652
6659
  const diagramRect = getDiagramRect(shapes);
6653
6660
  const dxRaw = pointer.x - dragAnchor.x;
6654
6661
  const dyRaw = pointer.y - dragAnchor.y;
@@ -6662,13 +6669,13 @@ const stepGroupDrag = (shapes, draggingIds, primaryId, pointer, dragAnchor, grou
6662
6669
  const dy = gy - groupBaseBox.y;
6663
6670
  const ghost = {};
6664
6671
  for (const id of draggingIds) {
6665
- const s2 = shapes.find((x2) => x2.id === id);
6672
+ const s2 = byId.get(id);
6666
6673
  if (!s2)
6667
6674
  continue;
6668
6675
  const b2 = getBounds(s2);
6669
6676
  ghost[id] = { x: b2.x + dx, y: b2.y + dy, width: b2.width, height: b2.height };
6670
6677
  }
6671
- const priShape = shapes.find((x2) => x2.id === primaryId);
6678
+ const priShape = byId.get(primaryId);
6672
6679
  const diagramId = priShape?.diagramId || "";
6673
6680
  const hoverShape = pickContainerByPointerTopmost(
6674
6681
  shapes,
@@ -6682,7 +6689,18 @@ const stepGroupDrag = (shapes, draggingIds, primaryId, pointer, dragAnchor, grou
6682
6689
  return { ghost, hover };
6683
6690
  };
6684
6691
  const commitDrag = (shapes, draggingIds, ghost, _currentDiagramId, updateShape, baseMap) => {
6692
+ const graphStore = useGraphStore();
6693
+ const parentChildMap = graphStore.parentChildMap;
6685
6694
  const changedIds = /* @__PURE__ */ new Set();
6695
+ const collectAllDescendants = (parentId) => {
6696
+ const result = [];
6697
+ const children = parentChildMap.get(parentId) || [];
6698
+ for (const childId of children) {
6699
+ result.push(childId);
6700
+ result.push(...collectAllDescendants(childId));
6701
+ }
6702
+ return result;
6703
+ };
6686
6704
  for (const id of draggingIds) {
6687
6705
  const s2 = shapes.find((x2) => x2.id === id);
6688
6706
  const r = ghost[id];
@@ -6695,10 +6713,32 @@ const commitDrag = (shapes, draggingIds, ghost, _currentDiagramId, updateShape,
6695
6713
  height: Math.round(r.height)
6696
6714
  };
6697
6715
  const pb = baseMap?.[id] ?? s2.bounds;
6698
- const same = pb.x === nb.x && pb.y === nb.y && pb.width === nb.width && pb.height === nb.height;
6716
+ const dx = nb.x - pb.x;
6717
+ const dy = nb.y - pb.y;
6718
+ const same = dx === 0 && dy === 0 && nb.width === pb.width && nb.height === pb.height;
6699
6719
  if (!same) {
6700
6720
  updateShape(id, { bounds: nb });
6701
6721
  changedIds.add(id);
6722
+ if (dx !== 0 || dy !== 0) {
6723
+ const descendants = collectAllDescendants(id);
6724
+ for (const descId of descendants) {
6725
+ if (draggingIds.includes(descId))
6726
+ continue;
6727
+ const descShape = shapes.find((x2) => x2.id === descId);
6728
+ if (!descShape?.bounds)
6729
+ continue;
6730
+ const descBounds = descShape.bounds;
6731
+ updateShape(descId, {
6732
+ bounds: {
6733
+ x: Math.round(descBounds.x + dx),
6734
+ y: Math.round(descBounds.y + dy),
6735
+ width: descBounds.width,
6736
+ height: descBounds.height
6737
+ }
6738
+ });
6739
+ changedIds.add(descId);
6740
+ }
6741
+ }
6702
6742
  }
6703
6743
  }
6704
6744
  return Array.from(changedIds);
@@ -8260,7 +8300,13 @@ async function applyReparentAndClone(options) {
8260
8300
  const graphStore = useGraphStore();
8261
8301
  let ownerPayload = null;
8262
8302
  const clonedIds = [];
8263
- for (const id of changedIds) {
8303
+ const changedSet = new Set(changedIds);
8304
+ const topLevelChangedIds = changedIds.filter((id) => {
8305
+ const beforePid = prevParentById[id] ?? null;
8306
+ const afterPid = shapes.find((s2) => s2.id === id)?.parenShapeId ?? null;
8307
+ return !(beforePid && changedSet.has(beforePid)) && !(afterPid && changedSet.has(afterPid));
8308
+ });
8309
+ for (const id of topLevelChangedIds) {
8264
8310
  const after = shapes.find((s2) => s2.id === id);
8265
8311
  if (!after)
8266
8312
  continue;
@@ -8417,18 +8463,40 @@ const createOnNestDoneCallback = (options) => {
8417
8463
  const afterParent = JSON.stringify(parent.bounds ?? {});
8418
8464
  if (afterParent == beforeParent)
8419
8465
  return;
8466
+ return { id: parent.id, bounds: afterParent };
8420
8467
  };
8421
8468
  };
8422
8469
  function createShapeOperator() {
8423
8470
  const indexMap = /* @__PURE__ */ new Map();
8424
- const ensureIndex = (list) => {
8425
- if (indexMap.size === list.length)
8426
- return;
8471
+ const rebuildIndexAndDedupe = (list) => {
8472
+ const seen = /* @__PURE__ */ new Set();
8473
+ for (let i = list.length - 1; i >= 0; i--) {
8474
+ const id = list[i]?.id;
8475
+ if (id == null)
8476
+ continue;
8477
+ if (seen.has(id)) {
8478
+ list.splice(i, 1);
8479
+ } else {
8480
+ seen.add(id);
8481
+ }
8482
+ }
8427
8483
  indexMap.clear();
8428
8484
  for (let i = 0; i < list.length; i++) {
8429
8485
  indexMap.set(list[i].id, i);
8430
8486
  }
8431
8487
  };
8488
+ const ensureIndex = (list) => {
8489
+ if (indexMap.size !== list.length) {
8490
+ rebuildIndexAndDedupe(list);
8491
+ return;
8492
+ }
8493
+ for (const [id, idx] of indexMap) {
8494
+ if (list[idx]?.id !== id) {
8495
+ rebuildIndexAndDedupe(list);
8496
+ return;
8497
+ }
8498
+ }
8499
+ };
8432
8500
  const extractIds = (payload) => {
8433
8501
  const ids = [];
8434
8502
  for (const item of payload) {
@@ -8445,10 +8513,11 @@ function createShapeOperator() {
8445
8513
  const removeByIdFast = (list, id) => {
8446
8514
  const idx = indexMap.get(id);
8447
8515
  if (idx == null)
8448
- return false;
8516
+ return null;
8449
8517
  const lastIdx = list.length - 1;
8450
8518
  if (lastIdx < 0)
8451
- return false;
8519
+ return null;
8520
+ const removed = list[idx];
8452
8521
  if (idx !== lastIdx) {
8453
8522
  const moved = list[lastIdx];
8454
8523
  list[idx] = moved;
@@ -8456,46 +8525,52 @@ function createShapeOperator() {
8456
8525
  }
8457
8526
  list.pop();
8458
8527
  indexMap.delete(id);
8459
- return true;
8528
+ return removed;
8460
8529
  };
8461
8530
  const upsertOne = (list, incoming) => {
8462
8531
  const id = incoming?.id;
8463
8532
  if (id == null)
8464
- return false;
8533
+ return { changed: false, isAdd: false };
8465
8534
  const idx = indexMap.get(id);
8466
8535
  if (idx == null) {
8467
8536
  list.push(incoming);
8468
8537
  indexMap.set(id, list.length - 1);
8538
+ return { changed: true, isAdd: true };
8469
8539
  } else {
8540
+ const oldShape = list[idx];
8470
8541
  list[idx] = incoming;
8542
+ return { changed: true, isAdd: false, oldShape };
8471
8543
  }
8472
- return true;
8473
8544
  };
8474
8545
  const updateOne = (list, incoming) => {
8475
8546
  const id = incoming?.id;
8476
8547
  if (id == null)
8477
- return false;
8548
+ return { changed: false };
8478
8549
  const idx = indexMap.get(id);
8479
8550
  if (idx == null)
8480
- return false;
8551
+ return { changed: false };
8552
+ const oldShape = list[idx];
8481
8553
  list[idx] = incoming;
8482
- return true;
8554
+ return { changed: true, oldShape };
8483
8555
  };
8484
8556
  const addOne = (list, incoming) => {
8485
8557
  const id = incoming?.id;
8486
8558
  if (id == null)
8487
- return false;
8559
+ return { changed: false, isAdd: false };
8488
8560
  const idx = indexMap.get(id);
8489
8561
  if (idx == null) {
8490
8562
  list.push(incoming);
8491
8563
  indexMap.set(id, list.length - 1);
8564
+ return { changed: true, isAdd: true };
8492
8565
  } else {
8566
+ const oldShape = list[idx];
8493
8567
  list[idx] = incoming;
8568
+ return { changed: true, isAdd: false, oldShape };
8494
8569
  }
8495
- return true;
8496
8570
  };
8497
8571
  const applyShapeOp = (args) => {
8498
8572
  const { list, payload, op } = args;
8573
+ const changeDetails = [];
8499
8574
  if (op === "replace") {
8500
8575
  const incomingShapes2 = payload;
8501
8576
  list.length = 0;
@@ -8508,33 +8583,57 @@ function createShapeOperator() {
8508
8583
  for (let i = 0; i < list.length; i++) {
8509
8584
  indexMap.set(list[i].id, i);
8510
8585
  }
8511
- return { changedShapes: incomingShapes2 };
8586
+ return { changedShapes: incomingShapes2, changeDetails: [] };
8512
8587
  }
8513
8588
  ensureIndex(list);
8514
8589
  const changedShapes = [];
8515
8590
  if (op === "delete") {
8516
8591
  const ids = extractIds(payload);
8517
8592
  for (const id of ids) {
8518
- removeByIdFast(list, id);
8593
+ const removed = removeByIdFast(list, id);
8594
+ if (removed) {
8595
+ changeDetails.push({ type: "delete", shape: removed });
8596
+ }
8519
8597
  }
8520
- return { changedShapes };
8598
+ return { changedShapes, changeDetails };
8521
8599
  }
8522
8600
  const incomingShapes = payload;
8523
8601
  for (const incoming of incomingShapes) {
8524
8602
  if (!incoming)
8525
8603
  continue;
8526
8604
  if (op === "upsert") {
8527
- if (upsertOne(list, incoming))
8605
+ const result = upsertOne(list, incoming);
8606
+ if (result.changed) {
8528
8607
  changedShapes.push(incoming);
8608
+ changeDetails.push({
8609
+ type: result.isAdd ? "add" : "update",
8610
+ shape: incoming,
8611
+ oldShape: result.oldShape
8612
+ });
8613
+ }
8529
8614
  } else if (op === "update") {
8530
- if (updateOne(list, incoming))
8615
+ const result = updateOne(list, incoming);
8616
+ if (result.changed) {
8531
8617
  changedShapes.push(incoming);
8618
+ changeDetails.push({
8619
+ type: "update",
8620
+ shape: incoming,
8621
+ oldShape: result.oldShape
8622
+ });
8623
+ }
8532
8624
  } else if (op === "add") {
8533
- if (addOne(list, incoming))
8625
+ const result = addOne(list, incoming);
8626
+ if (result.changed) {
8534
8627
  changedShapes.push(incoming);
8628
+ changeDetails.push({
8629
+ type: result.isAdd ? "add" : "update",
8630
+ shape: incoming,
8631
+ oldShape: result.oldShape
8632
+ });
8633
+ }
8535
8634
  }
8536
8635
  }
8537
- return { changedShapes };
8636
+ return { changedShapes, changeDetails };
8538
8637
  };
8539
8638
  return {
8540
8639
  applyShapeOp
@@ -8571,27 +8670,95 @@ const useGraphStore = defineStore(
8571
8670
  const externalCreatingId = ref(null);
8572
8671
  const cutShapeIds = ref(/* @__PURE__ */ new Set());
8573
8672
  const copiedShapesCount = ref(0);
8673
+ const dragDescendantsSnapshot = ref(/* @__PURE__ */ new Map());
8574
8674
  const shapeCount = computed(() => shapes.value.length);
8575
8675
  const hasSelectedShape = computed(() => selectedShape.value !== null);
8576
- const parentChildMap = computed(() => {
8577
- const map = /* @__PURE__ */ new Map();
8676
+ const _shapeMapRef = shallowRef(/* @__PURE__ */ new Map());
8677
+ const shapeMap = computed(() => _shapeMapRef.value);
8678
+ const _parentChildMapRef = shallowRef(/* @__PURE__ */ new Map());
8679
+ const parentChildMap = computed(() => _parentChildMapRef.value);
8680
+ function _indexAdd(shape) {
8681
+ _shapeMapRef.value.set(shape.id, shape);
8682
+ if (shape.parenShapeId) {
8683
+ const children = _parentChildMapRef.value.get(shape.parenShapeId);
8684
+ if (children) {
8685
+ if (!children.includes(shape.id)) {
8686
+ children.push(shape.id);
8687
+ }
8688
+ } else {
8689
+ _parentChildMapRef.value.set(shape.parenShapeId, [shape.id]);
8690
+ }
8691
+ }
8692
+ }
8693
+ function _indexRemove(shapeId) {
8694
+ const shape = _shapeMapRef.value.get(shapeId);
8695
+ if (!shape)
8696
+ return;
8697
+ _shapeMapRef.value.delete(shapeId);
8698
+ if (shape.parenShapeId) {
8699
+ const children = _parentChildMapRef.value.get(shape.parenShapeId);
8700
+ if (children) {
8701
+ const idx = children.indexOf(shapeId);
8702
+ if (idx !== -1)
8703
+ children.splice(idx, 1);
8704
+ if (children.length === 0) {
8705
+ _parentChildMapRef.value.delete(shape.parenShapeId);
8706
+ }
8707
+ }
8708
+ }
8709
+ _parentChildMapRef.value.delete(shapeId);
8710
+ }
8711
+ function _indexUpdate(shape, oldParentId) {
8712
+ _shapeMapRef.value.set(shape.id, shape);
8713
+ const newParentId = shape.parenShapeId ?? null;
8714
+ const normalizedOldParent = oldParentId ?? null;
8715
+ if (normalizedOldParent !== newParentId) {
8716
+ if (normalizedOldParent) {
8717
+ const oldChildren = _parentChildMapRef.value.get(normalizedOldParent);
8718
+ if (oldChildren) {
8719
+ const idx = oldChildren.indexOf(shape.id);
8720
+ if (idx !== -1)
8721
+ oldChildren.splice(idx, 1);
8722
+ if (oldChildren.length === 0) {
8723
+ _parentChildMapRef.value.delete(normalizedOldParent);
8724
+ }
8725
+ }
8726
+ }
8727
+ if (newParentId) {
8728
+ const newChildren = _parentChildMapRef.value.get(newParentId);
8729
+ if (newChildren) {
8730
+ if (!newChildren.includes(shape.id)) {
8731
+ newChildren.push(shape.id);
8732
+ }
8733
+ } else {
8734
+ _parentChildMapRef.value.set(newParentId, [shape.id]);
8735
+ }
8736
+ }
8737
+ }
8738
+ }
8739
+ function _rebuildIndex() {
8740
+ const newShapeMap = /* @__PURE__ */ new Map();
8741
+ const newParentChildMap = /* @__PURE__ */ new Map();
8578
8742
  shapes.value.forEach((shape) => {
8743
+ newShapeMap.set(shape.id, shape);
8579
8744
  if (shape.parenShapeId) {
8580
- if (!map.has(shape.parenShapeId)) {
8581
- map.set(shape.parenShapeId, []);
8745
+ const children = newParentChildMap.get(shape.parenShapeId);
8746
+ if (children) {
8747
+ children.push(shape.id);
8748
+ } else {
8749
+ newParentChildMap.set(shape.parenShapeId, [shape.id]);
8582
8750
  }
8583
- map.get(shape.parenShapeId).push(shape.id);
8584
8751
  }
8585
8752
  });
8586
- return map;
8587
- });
8588
- const shapeMap = computed(() => {
8589
- const map = /* @__PURE__ */ new Map();
8590
- shapes.value.forEach((shape) => {
8591
- map.set(shape.id, shape);
8592
- });
8593
- return map;
8594
- });
8753
+ _shapeMapRef.value = newShapeMap;
8754
+ _parentChildMapRef.value = newParentChildMap;
8755
+ triggerRef(_shapeMapRef);
8756
+ triggerRef(_parentChildMapRef);
8757
+ }
8758
+ function _triggerIndexUpdate() {
8759
+ triggerRef(_shapeMapRef);
8760
+ triggerRef(_parentChildMapRef);
8761
+ }
8595
8762
  const taggedValueLabels = ref([]);
8596
8763
  const packagesTypes = ref([]);
8597
8764
  const classMetaTypes = ref([]);
@@ -8611,7 +8778,8 @@ const useGraphStore = defineStore(
8611
8778
  }
8612
8779
  }
8613
8780
  shapes.value.push(shape);
8614
- eventBus.emit("shape-added", shape);
8781
+ _indexAdd(shape);
8782
+ _triggerIndexUpdate();
8615
8783
  const shouldAutoExpand = options?.autoExpandParent !== false;
8616
8784
  if (shouldAutoExpand && shape.parenShapeId && shape.bounds) {
8617
8785
  nextTick(() => {
@@ -8622,7 +8790,9 @@ const useGraphStore = defineStore(
8622
8790
  const removeShape = (shapeId) => {
8623
8791
  const index = shapes.value.findIndex((s2) => s2.id == shapeId);
8624
8792
  if (index > -1) {
8625
- shapes.value.splice(index, 1)[0];
8793
+ _indexRemove(shapeId);
8794
+ shapes.value.splice(index, 1);
8795
+ _triggerIndexUpdate();
8626
8796
  if (selectedShape.value?.id === shapeId) {
8627
8797
  selectedShape.value = null;
8628
8798
  eventBus.emit("shape-deselected");
@@ -8647,6 +8817,7 @@ const useGraphStore = defineStore(
8647
8817
  const updateShapeRaw = (shapeId, updates, id = "id") => {
8648
8818
  const shape = shapes.value.find((s2) => s2[id] === shapeId);
8649
8819
  if (shape) {
8820
+ const oldParentId = shape.parenShapeId;
8650
8821
  if (shape.shapeType === "pin" && "parenShapeId" in updates) {
8651
8822
  const v2 = updates.parenShapeId;
8652
8823
  if (v2 == null || v2 === "") {
@@ -8660,6 +8831,8 @@ const useGraphStore = defineStore(
8660
8831
  const nextBounds = updates.bounds ? { ...shape.bounds, ...updates.bounds } : shape.bounds;
8661
8832
  const nextStyle = updates.style ? { ...shape.style || {}, ...updates.style } : shape.style;
8662
8833
  Object.assign(shape, updates, { bounds: nextBounds, style: nextStyle });
8834
+ _indexUpdate(shape, oldParentId);
8835
+ _triggerIndexUpdate();
8663
8836
  eventBus.emit("shape-updated", shape, updates);
8664
8837
  }
8665
8838
  };
@@ -8688,25 +8861,37 @@ const useGraphStore = defineStore(
8688
8861
  eventBus.emit("shape-selected", shape);
8689
8862
  };
8690
8863
  const marqueeShapes = computed(() => {
8691
- const byId2 = (id) => shapes.value.find((s2) => s2.id === id);
8692
- const isShape2 = (x2) => !!x2;
8693
8864
  const pending = new Set(pendingNestedIds.value);
8694
- return selectedIds.value.map(byId2).filter(isShape2).filter((s2) => !pending.has(s2.id));
8865
+ const result = [];
8866
+ for (const id of selectedIds.value) {
8867
+ if (pending.has(id))
8868
+ continue;
8869
+ const shape = shapeMap.value.get(id);
8870
+ if (shape)
8871
+ result.push(shape);
8872
+ }
8873
+ return result;
8695
8874
  });
8696
8875
  const ghostShadow = computed(() => {
8876
+ if (!isDragging.value || draggingIds.value.length === 0)
8877
+ return [];
8697
8878
  const out = [];
8698
8879
  const pendingList = Array.isArray(pendingNestedIds.value) ? pendingNestedIds.value : [];
8699
8880
  const pendingSet = new Set(pendingList);
8881
+ const directDragSet = new Set(dragSelectionSnapshot.value.length > 0 ? dragSelectionSnapshot.value : draggingIds.value.slice(0, 1));
8700
8882
  const map = shapeMap.value;
8701
- for (const id in dragGhost) {
8883
+ for (const id of directDragSet) {
8702
8884
  if (pendingSet.has(id))
8703
8885
  continue;
8886
+ const ghostRect = dragGhost[id];
8887
+ if (!ghostRect)
8888
+ continue;
8704
8889
  const orig = map.get(id);
8705
8890
  if (!orig)
8706
8891
  continue;
8707
8892
  out.push({
8708
8893
  ...orig,
8709
- bounds: { ...dragGhost[id] },
8894
+ bounds: { ...ghostRect },
8710
8895
  meta: { ...orig.meta, isGhost: true }
8711
8896
  });
8712
8897
  }
@@ -8714,11 +8899,16 @@ const useGraphStore = defineStore(
8714
8899
  });
8715
8900
  const selectMany = (ids) => {
8716
8901
  selectedIds.value = Array.from(new Set(ids));
8717
- selectedShape.value = ids.length ? shapes.value.find((s2) => s2.id === ids[0]) ?? null : null;
8902
+ selectedShape.value = ids.length ? shapeMap.value.get(ids[0]) ?? null : null;
8718
8903
  };
8719
8904
  const clearSelection = () => selectShape(null);
8720
8905
  const selectAll = () => {
8721
- const allShapeIds = shapes.value.filter((shape) => shape.shapeType?.toLowerCase() !== "diagram").map((shape) => shape.id);
8906
+ const allShapeIds = [];
8907
+ for (const shape of shapes.value) {
8908
+ if (shape.shapeType?.toLowerCase() !== "diagram") {
8909
+ allShapeIds.push(shape.id);
8910
+ }
8911
+ }
8722
8912
  selectMany(allShapeIds);
8723
8913
  };
8724
8914
  const setTitle = (title) => {
@@ -8726,12 +8916,40 @@ const useGraphStore = defineStore(
8726
8916
  eventBus.emit("title-changed", title);
8727
8917
  };
8728
8918
  const updateShapes = (payload, op = "upsert", options) => {
8729
- const { changedShapes } = applyShapeOp({
8919
+ const { changedShapes, changeDetails } = applyShapeOp({
8730
8920
  list: shapes.value,
8731
8921
  payload,
8732
8922
  // delete 时是 id[],其余是 Shape[]
8733
8923
  op
8734
8924
  });
8925
+ if (op === "replace" || changeDetails.length === 0) {
8926
+ _rebuildIndex();
8927
+ } else {
8928
+ for (const detail of changeDetails) {
8929
+ if (detail.type === "add") {
8930
+ _indexAdd(detail.shape);
8931
+ } else if (detail.type === "delete") {
8932
+ _shapeMapRef.value.delete(detail.shape.id);
8933
+ const parentId = detail.shape.parenShapeId;
8934
+ if (parentId) {
8935
+ const children = _parentChildMapRef.value.get(parentId);
8936
+ if (children) {
8937
+ const idx = children.indexOf(detail.shape.id);
8938
+ if (idx !== -1)
8939
+ children.splice(idx, 1);
8940
+ if (children.length === 0) {
8941
+ _parentChildMapRef.value.delete(parentId);
8942
+ }
8943
+ }
8944
+ }
8945
+ _parentChildMapRef.value.delete(detail.shape.id);
8946
+ } else if (detail.type === "update") {
8947
+ const oldParentId = detail.oldShape?.parenShapeId;
8948
+ _indexUpdate(detail.shape, oldParentId);
8949
+ }
8950
+ }
8951
+ _triggerIndexUpdate();
8952
+ }
8735
8953
  pendingNestedIds.value = [];
8736
8954
  const shouldAutoExpand = options?.autoExpandParents !== false;
8737
8955
  if (shouldAutoExpand && changedShapes.length > 0) {
@@ -8745,6 +8963,10 @@ const useGraphStore = defineStore(
8745
8963
  };
8746
8964
  const clearAll = () => {
8747
8965
  shapes.value = [];
8966
+ _shapeMapRef.value = /* @__PURE__ */ new Map();
8967
+ _parentChildMapRef.value = /* @__PURE__ */ new Map();
8968
+ triggerRef(_shapeMapRef);
8969
+ triggerRef(_parentChildMapRef);
8748
8970
  diagrams.value = [];
8749
8971
  selectedShape.value = null;
8750
8972
  pendingNestedIds.value = [];
@@ -8757,12 +8979,7 @@ const useGraphStore = defineStore(
8757
8979
  const startDrag = (ids, pointer) => {
8758
8980
  dragSelectionSnapshot.value = selectedIds.value.length ? [...selectedIds.value] : [ids[0]];
8759
8981
  primaryDragId.value = ids[0] || null;
8760
- const expanded = [];
8761
- ids.forEach((id) => {
8762
- expanded.push(id);
8763
- collectDescendantIds(shapes.value, id).forEach((cid) => expanded.push(cid));
8764
- });
8765
- const validIds = Array.from(new Set(expanded)).filter((id) => {
8982
+ const validIds = ids.filter((id) => {
8766
8983
  const s2 = byId(id);
8767
8984
  return s2 && getPolicy(s2).draggable;
8768
8985
  });
@@ -8777,6 +8994,29 @@ const useGraphStore = defineStore(
8777
8994
  dragGhost[k] = snap.dragBase[k];
8778
8995
  draggingIds.value = validIds;
8779
8996
  dragAnchor.value = { x: pointer.x, y: pointer.y };
8997
+ const newSnapshot = /* @__PURE__ */ new Map();
8998
+ for (const parentId of validIds) {
8999
+ const descendants = [];
9000
+ const collectDescendants = (pid) => {
9001
+ const childIds = _parentChildMapRef.value.get(pid) || [];
9002
+ for (const childId of childIds) {
9003
+ const childShape = _shapeMapRef.value.get(childId);
9004
+ if (childShape?.bounds) {
9005
+ descendants.push({
9006
+ id: childId,
9007
+ x: childShape.bounds.x ?? 0,
9008
+ y: childShape.bounds.y ?? 0,
9009
+ width: childShape.bounds.width ?? 0,
9010
+ height: childShape.bounds.height ?? 0
9011
+ });
9012
+ }
9013
+ collectDescendants(childId);
9014
+ }
9015
+ };
9016
+ collectDescendants(parentId);
9017
+ newSnapshot.set(parentId, descendants);
9018
+ }
9019
+ dragDescendantsSnapshot.value = newSnapshot;
8780
9020
  const currentDiagram = shapes.value.find((s2) => s2.shapeType === "diagram");
8781
9021
  if (currentDiagram) {
8782
9022
  dragBaseCanvasSize.value = {
@@ -8989,12 +9229,28 @@ const useGraphStore = defineStore(
8989
9229
  updateShape(shape.id, shape);
8990
9230
  });
8991
9231
  autoExpandMovedCompartmentsAfterDrag(shapes.value, changedIds, updateShape);
9232
+ const allReparentIds = [...changedIds, ...clonedIds];
9233
+ const prevMapForComparents = { ...prevParentById };
9234
+ for (const cid of clonedIds) {
9235
+ prevMapForComparents[cid] = null;
9236
+ }
8992
9237
  syncShowComparentsByReparent(
8993
9238
  shapes.value,
8994
- changedIds,
8995
- prevParentById,
9239
+ allReparentIds,
9240
+ prevMapForComparents,
8996
9241
  (id, u2) => updateShapeRaw(id, u2)
8997
9242
  );
9243
+ const shapeId = ownerPayload?.shapeId;
9244
+ if (shapeId != null) {
9245
+ const child = shapes.value.find((s2) => s2.id == shapeId);
9246
+ if (child) {
9247
+ expandParentByChild({
9248
+ shapes: shapes.value,
9249
+ child,
9250
+ updateShape
9251
+ });
9252
+ }
9253
+ }
8998
9254
  const affectedIds = collectAffectedShapeIds$1(shapes.value, changedIds, clonedIds);
8999
9255
  const payloads = buildDragEndPayloads(affectedIds, shapes.value);
9000
9256
  const onNestDone = createOnNestDoneCallback({
@@ -9015,7 +9271,6 @@ const useGraphStore = defineStore(
9015
9271
  }
9016
9272
  }
9017
9273
  }
9018
- console.log("drag end payloads:", payloads, ownerPayload);
9019
9274
  eventBus.emit("shape-drag-end", payloads, ownerPayload, onNestDone);
9020
9275
  cleanupAfterDrag();
9021
9276
  };
@@ -9064,6 +9319,7 @@ const useGraphStore = defineStore(
9064
9319
  dragSelectionSnapshot.value = [];
9065
9320
  primaryDragId.value = null;
9066
9321
  dragBaseCanvasSize.value = null;
9322
+ dragDescendantsSnapshot.value = /* @__PURE__ */ new Map();
9067
9323
  for (const k in dragGhost)
9068
9324
  delete dragGhost[k];
9069
9325
  };
@@ -9182,6 +9438,10 @@ const useGraphStore = defineStore(
9182
9438
  // 图元ID索引映射 (性能优化)
9183
9439
  marqueeShapes,
9184
9440
  ghostShadow,
9441
+ dragDescendantsSnapshot,
9442
+ // 拖动时的后代坐标快照
9443
+ dragBase,
9444
+ // 拖动开始时的坐标快照
9185
9445
  scales,
9186
9446
  activeDiagramId,
9187
9447
  // 当前活动画布的缩放比例
@@ -9234,388 +9494,19 @@ const useGraphStore = defineStore(
9234
9494
  }
9235
9495
  );
9236
9496
  const _imports_0 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAACbSURBVGiB7dfRCYAwDEXRVhxIcRJncC5ncBLRjXQCaSRS9eWeb4VeAqFNCQAAoJLs+fmYxuO5o/jleSn2NHWO8h0EqyNYnWtLe1xteMum9Qg3YYLVEayOYHXhglvLR10/FJ+B+7a+dom5I9yECVZHsDqC1YULNl08/nKpsAg3YYLVEayO56E6gtURrI5gdeGCeR6qCxcMAABQzQn/mxU1UF28jAAAAABJRU5ErkJggg==";
9237
- const BlockKeyMap = {
9238
- "ArchitecturalDescription": "Package",
9239
- //体系架构
9240
- "Capability": "Block",
9241
- //能力
9242
- "StrategicPhase": "Block",
9243
- //战略阶段
9244
- "ActualEnterprisePhase": "Block",
9245
- //实际企业阶段
9246
- "WholeLifeEnterprise": "Block",
9247
- //全企业生命周期
9248
- "EnterpriseMission": "Block",
9249
- //企业使命
9250
- "ActualEnduringTask": "Block",
9251
- //实际持续任务
9252
- "ValueStream": "Block",
9253
- //价值流
9254
- "StrategicInformation": "Block",
9255
- //战略信息
9256
- "GeoPoliticalExtentType": "Block",
9257
- //地理政治范围类型
9258
- "CapabilityConfiguration": "Block",
9259
- //能力配置
9260
- "EnterpriseGoal": "DividingLine",
9261
- //企业目标
9262
- "EnterpriseVision": "Block",
9263
- //企业愿景
9264
- "ActualOrganization": "Block",
9265
- //实际组织
9266
- "VisionStatement": "Block",
9267
- //愿景宣言
9268
- "ActualCondition": "Block",
9269
- //实际情况
9270
- "ActualEnvironment": "Block",
9271
- //实际环境
9272
- "ActualLocation": "Block",
9273
- //实际位置
9274
- "Location": "Block",
9275
- //位置
9276
- "Condition": "Block",
9277
- //状况条件
9278
- "Environment": "Block",
9279
- //环境
9280
- "Concern": "Block",
9281
- //涉及
9282
- "ActualPost": "Block",
9283
- //实际职责,
9284
- "Strategic": "Package",
9285
- // 战略层
9286
- "StrategicTaxonomyDiagram": "Diagram",
9287
- //战略概念图
9288
- "StrategicInformationDiagram": "Diagram",
9289
- //战略信息图
9290
- "StrategicStructureDiagram": "Diagram",
9291
- //战略结构图
9292
- "StrategicConnectivityDiagram": "Diagram",
9293
- //战略连通图
9294
- // 'StrategicConnectivityMatrixDiagram':'StrategicTaxonomyDiagram', //战略连通矩阵
9295
- "StrategicStatesDiagram": "Diagram",
9296
- //战略状态图
9297
- "StrategicProcessesDiagram": "Diagram",
9298
- //战略流程图
9299
- "StrategicParametersDiagram": "Diagram",
9300
- //战略参数图
9301
- "StrategicConstraintsDiagram": "Diagram",
9302
- //战略约束图
9303
- "StrategicConstraintsDefinitionDiagram": "Diagram",
9304
- //战略约束定义图
9305
- // 'ActualStrategicPhasesGanttChart': 'StrategicTaxonomyDiagram', //实际战略阶段甘特图
9306
- // 'StrategicActualDeploymentDiagram': 'StrategicTaxonomyDiagram', //战略实际部署图
9307
- // 'ActualStrategicPhasesToCapabilitiesMappingMatrix': 'StrategicTaxonomyDiagram', //实际战略阶段与能力映射矩阵
9308
- "OperationalTaxonomyDiagram": "Diagram",
9309
- //业务概念图
9310
- "HighLevelOperationalConceptDiagram": "Diagram",
9311
- //顶级业务概念图
9312
- "OperationalFreeFormTaxonomyDiagram": "Diagram",
9313
- //业务自由分类图
9314
- "OperationalStructureDiagram": "Diagram",
9315
- //业务结构图
9316
- "OperationalConnectivityDiagram": "Diagram",
9317
- //业务连通图
9318
- "OperationalInternalConnectivityDiagram": "Diagram",
9319
- //业务内部连通图
9320
- "OperationalProcessesDiagram": "Diagram",
9321
- //业务流程图
9322
- "OperationalProcessesFlowDiagram": "Diagram",
9323
- //业务内部流程图
9324
- "OperationalStatesDiagram": "Diagram",
9325
- //业务状态图
9326
- "OperationalInformationDiagram": "Diagram",
9327
- //业务信息图
9328
- "OperationalParametricDiagram": "Diagram",
9329
- //业务参数图
9330
- "OperationalConstraintsDiagram": "Diagram",
9331
- //业务约束图
9332
- "OperationalConstraintsDefinitionDiagram": "Diagram",
9333
- //业务约束定义图
9334
- "StrategicTaxonomyTable": "Diagram",
9335
- //战略概念表
9336
- "StrategicConnectivityMatrixDiagram": "Diagram",
9337
- //战略连通矩阵图
9338
- "StrategicActualStrategicPhaseTaxonomyTable": "Diagram",
9339
- //战略实际战略阶段分类表
9340
- "ActualStrategicPhasesGanttChart": "Diagram",
9341
- //实际战略阶段甘特图
9342
- "StrategicActualDeploymentDiagram": "Diagram",
9343
- //战略实际部署图
9344
- "ActualStrategicPhasesToCapabilitiesMappingMatrix": "Diagram",
9345
- //实际战略阶段与能力映射矩阵
9346
- "OperationalConnectivityTable": "Diagram",
9347
- //业务连通表
9348
- "OperationalActivitiesToCapabilitiesMappingMatrix": "Diagram",
9349
- //业务活动与能力映射矩阵
9350
- "OperationalPerformersToCapabilitiesMappingMatrix": "Diagram",
9351
- //业务执行者与能力映射矩阵
9352
- "ServicesTaxonomyDiagram": "Diagram",
9353
- //服务概念图
9354
- "ServicesTaxonomyTable": "Diagram",
9355
- //服务概念表
9356
- "ServicesStructureDiagram": "Diagram",
9357
- //服务结构图
9358
- "ServicesConnectivityDiagram": "Diagram",
9359
- //服务连通图
9360
- "ServicesConnectivityMatrixDiagram": "Diagram",
9361
- //服务连通矩阵图
9362
- "ServicesConnectivityTable": "Diagram",
9363
- //服务连通表
9364
- "ServicesInternalConnectivityDiagram": "Diagram",
9365
- //服务内部连通图
9366
- "ServicesProcessesDiagram": "Diagram",
9367
- //服务流程图
9368
- "ServicesProcessesFlowDiagram": "Diagram",
9369
- //服务内部流程图
9370
- "ServicesStatesDiagram": "Diagram",
9371
- //服务状态图
9372
- "ServicesParametricDiagram": "Diagram",
9373
- //服务参数图
9374
- "ServicesConstraintsDiagram": "Diagram",
9375
- //服务约束图
9376
- "ServicesConstraintsDefinitionDiagram": "Diagram",
9377
- //服务约束定义图
9378
- "ServicesRoadmapDiagram": "Diagram",
9379
- //服务路线图
9380
- "ServicesToCapabilitiesMappingMatrix": "Diagram",
9381
- //服务与能力映射矩阵
9382
- "ServicesToOperationalActivitiesMappingMatrix": "Diagram",
9383
- //服务与业务活动映射矩阵
9384
- "ServicesToServiceContractsMappingMatrix": "Diagram",
9385
- //服务与服务合同映射矩阵
9386
- "PersonnelTaxonomyDiagram": "Diagram",
9387
- //人员概念图
9388
- "PersonnelTaxonomyTable": "Diagram",
9389
- //人员概念表
9390
- "PersonnelStructureDiagram": "Diagram",
9391
- //人员结构图
9392
- "PersonnelConnectivityDiagram": "Diagram",
9393
- //人员连通图
9394
- "PersonnelConnectivityTable": "Diagram",
9395
- //人员连通表
9396
- "PersonnelInternalConnectivityDiagram": "Diagram",
9397
- //人员内部连通图
9398
- "PersonnelProcessesDiagram": "Diagram",
9399
- //人员流程图
9400
- "PersonnelProcessesFlowDiagram": "Diagram",
9401
- //人员内部流程图
9402
- "PersonnelStatesDiagram": "Diagram",
9403
- //人员状态图
9404
- "PersonnelParametricDiagram": "Diagram",
9405
- //人员参数图
9406
- "PersonnelConstraintsDiagram": "Diagram",
9407
- //人员约束图
9408
- "PersonnelConstraintsDefinitionDiagram": "Diagram",
9409
- //人员约束定义图
9410
- "ResourcesTaxonomyDiagram": "Diagram",
9411
- //资源概念图
9412
- "ResourcesTaxonomyTable": "Diagram",
9413
- //资源概念表
9414
- "ResourcesStructureDiagram": "Diagram",
9415
- //资源结构图
9416
- "ResourcesConnectivityDiagram": "Diagram",
9417
- //资源连通图
9418
- "ResourcesConnectivityTable": "Diagram",
9419
- //资源连通表
9420
- "ResourcesInternalConnectivityDiagram": "Diagram",
9421
- //资源内部连通图
9422
- "ResourcesProcessesDiagram": "Diagram",
9423
- //资源流程图
9424
- "ResourcesProcessesFlowDiagram": "Diagram",
9425
- //资源内部流程图
9426
- "ResourcesStatesDiagram": "Diagram",
9427
- //资源状态图
9428
- "ResourcesInformationDiagram": "Diagram",
9429
- //资源信息图
9430
- "ResourcesParametricDiagram": "Diagram",
9431
- //资源参数图
9432
- "FunctionsToOperationalActivitiesMappingMatrix": "Diagram",
9433
- //功能与业务活动映射矩阵
9434
- "ResourcesToCapabilitiesMappingMatrix": "Diagram",
9435
- //资源与能力映射矩阵
9436
- "ResourcesToOperationalActivitiesMappingMatrix": "Diagram",
9437
- //资源与业务活动映射矩阵
9438
- "SecurityTaxonomyDiagram": "Diagram",
9439
- //安全概念图
9440
- "SecurityTaxonomyTable": "Diagram",
9441
- //安全概念表
9442
- "SecurityStructureDiagram": "Diagram",
9443
- //安全结构图
9444
- "SecurityConnectivityDiagram": "Diagram",
9445
- //安全连通图
9446
- "SecurityConnectivityTable": "Diagram",
9447
- //安全连通表
9448
- "SecurityProcessesDiagram": "Diagram",
9449
- //安全流程图
9450
- "SecurityProcessFlowDiagram": "Diagram",
9451
- //安全内部流程图
9452
- "SecurityConstraintsDiagram": "Diagram",
9453
- //安全约束图
9454
- "SecurityConstraintsDefinitionDiagram": "Diagram",
9455
- //安全约束定义图
9456
- "RisksToAssetsMappingMatrix": "Diagram",
9457
- //资产风险映射矩阵
9458
- "SecurityControlsToRisksMappingMatrix": "Diagram",
9459
- //风险与安全控制映射矩阵
9460
- "ProjectsTaxonomyDiagram": "Diagram",
9461
- //项目概念图
9462
- "ProjectsTaxonomyTable": "Diagram",
9463
- //项目概念表
9464
- "ProjectsStructureDiagram": "Diagram",
9465
- //项目结构图
9466
- "ProjectsConnectivityDiagram": "Diagram",
9467
- //项目连通图
9468
- "ProjectsProcessesDiagram": "Diagram",
9469
- //项目流程图
9470
- "ProjectsProcessesFlowDiagram": "Diagram",
9471
- //项目内部流程图
9472
- "ActualProjectMilestoneSummaryTable": "Diagram",
9473
- //实际项目里程碑汇总表
9474
- "ProjectsRoadmapDiagram": "Diagram",
9475
- //项目路线图
9476
- "ActualProjectsToCapabilitiesMappingMatrix": "Diagram",
9477
- //实际项目与能力映射矩阵
9478
- "ActualResponsibleResourcesToActualProjectsMappingMatrix": "Diagram",
9479
- //实际资源与实际项目对应关系矩阵
9480
- "ProjectActivitiesToCapabilitiesMappingMatrix": "Diagram",
9481
- //项目活动与能力映射矩阵
9482
- "StandardsTaxonomyDiagram": "Diagram",
9483
- //标准概念图
9484
- "StandardsTaxonomyTable": "Diagram",
9485
- //标准概念表
9486
- "StandardsStructureDiagram": "Diagram",
9487
- //标准结构图
9488
- "StandardsRoadmapDiagram": "Diagram",
9489
- //标准路线图
9490
- "StandardsTraceabilityDiagram": "Diagram",
9491
- //标准追溯图
9492
- "ActualResourcesTaxonomyMatrix": "Diagram",
9493
- //实际资源概念矩阵
9494
- "ActualResourcesStructureDiagram": "Diagram",
9495
- //实际资源结构图
9496
- "ActualResourcesConnectivityDiagram": "Diagram",
9497
- //实际资源连通图
9498
- "OperationalInformation": "Block",
9499
- //业务信息
9500
- "ResourceInformation": "Block",
9501
- //资源信息
9502
- "ActualResource": "Block",
9503
- //实际资源
9504
- "InformationModel": "Package",
9505
- //信息模型
9506
- "Opportunity": "DividingLine",
9507
- //时机
9508
- "OperationalRole": "Block",
9509
- //业务角色
9510
- "StandardOperationalActivity": "Block",
9511
- //标准业务活动
9512
- "OperationalParameter": "Block",
9513
- //业务参数
9514
- "OperationalPerformer": "Block",
9515
- //业务执行者
9516
- "OperationalArchitecture": "Block",
9517
- //业务结构
9518
- "KnownResource": "Block",
9519
- //已知资源
9520
- "NaturalResource": "Block",
9521
- //自然资源
9522
- "ResourceArchitecture": "Block",
9523
- //资源架构
9524
- "ResourceArtifact": "Block",
9525
- //资源工件
9526
- "Software": "Block",
9527
- //软件
9528
- "Technology": "Block",
9529
- //技术
9530
- "ResourceService": "Block",
9531
- //资源服务
9532
- "ResourceInterface": "Block",
9533
- //资源接口
9534
- "Function": "Block",
9535
- //方法
9536
- "ServiceArchitecture": "Block",
9537
- //服务架构
9538
- "ServiceInterface": "Block",
9539
- //服务接口
9540
- "ServiceFunction": "Block",
9541
- //服务功能
9542
- "ServiceSignal": "Block",
9543
- //服务信号
9544
- "ServiceRole": "Block",
9545
- //服务角色
9546
- "FunctionAction": "ActivityAction",
9547
- //功能动作
9548
- "ServiceFunctionAction": "ActivityAction",
9549
- //服务功能动作
9550
- "ServiceParameter": "Block",
9551
- //服务参数
9552
- "OperationalActivity": "Block",
9553
- //业务活动
9554
- "HighLevelOperationalConcept": "Block",
9555
- //高级业务概念
9556
- "ActualProject": "Block",
9557
- //实际项目
9558
- "ActualRisk": "Block",
9559
- //实际风险
9560
- "ActualPropertySet": "Block",
9561
- //实际属性设置
9562
- "Organization": "Block",
9563
- //组织
9564
- "ActualPerson": "Block",
9565
- //实际人员
9566
- "CapabilityRole": "Block",
9567
- //能力职责
9568
- "OperationalSignal": "Block",
9569
- //业务信号
9570
- "OperationalInterface": "Block",
9571
- //业务接口
9572
- "Service": "Block",
9573
- //服务
9574
- "ActualService": "Block",
9575
- //实际服务
9576
- "Property": "Block",
9577
- //引用属性
9578
- "Projectes": "Block",
9579
- //项目
9580
- "ProjectMilestone": "Block",
9581
- //项目里程碑
9582
- "ActualProjectMilestone": "Block",
9583
- //实际项目里程碑
9584
- "ProjectActivity": "Block",
9585
- //项目活动
9586
- "ProjectRole": "Block",
9587
- //项目角色
9588
- "ProjectMilestoneRole": "Block",
9589
- //项目里程碑角色
9590
- "SecurityRisk": "Block",
9591
- //安全风险
9592
- "StatusIndicators": "Block",
9593
- //状态指标
9594
- "SecurityEnclave": "Block",
9595
- //安全隔离
9596
- "SecurityControl": "DividingLine",
9597
- //安全控制
9598
- "Risk": "Block",
9599
- //风险
9600
- "Post": "Block",
9601
- //职位
9602
- "Responsibility": "Block",
9603
- //责任
9604
- "ActualResponsibility": "Block",
9605
- //实际责任
9606
- "System": "Block",
9607
- //系统
9608
- "Competence": "Block",
9609
- //权限
9610
- "Person": "Block",
9611
- //人员
9612
- "SecurityProcess": "Block",
9613
- //安全流程
9614
- "ResourceMitigation": "Block",
9615
- // 资源缓解措施
9616
- "OperationalMitigation": "Block",
9617
- // 业务缓解措施
9618
- // 线
9497
+ const PinKeyMap = {
9498
+ "OutputPin": "Pin",
9499
+ //输出引脚
9500
+ "InputPin": "Pin",
9501
+ //输入引脚
9502
+ "OperationalPort": "Port",
9503
+ //业务端口
9504
+ "ServicePort": "Port",
9505
+ //服务端口
9506
+ "ResourcePort": "Port"
9507
+ //资源端口
9508
+ };
9509
+ const EdgeKeyMap = {
9619
9510
  "Association": "Edge",
9620
9511
  //双向关联
9621
9512
  "DirectedAggregation": "Edge",
@@ -9706,9 +9597,227 @@ const BlockKeyMap = {
9706
9597
  //里程碑依赖
9707
9598
  "DirectedAssociation": "Edge",
9708
9599
  //定向关联
9709
- "ResourceConnector": "Edge",
9600
+ "ResourceConnector": "Edge"
9710
9601
  //资源连接器
9711
- //包
9602
+ };
9603
+ const DiagramKeyMap = {
9604
+ "StrategicTaxonomyDiagram": "StrategicTaxonomyDiagram",
9605
+ //战略概念图
9606
+ "StrategicInformationDiagram": "StrategicTaxonomyDiagram",
9607
+ //战略信息图
9608
+ "StrategicStructureDiagram": "StrategicTaxonomyDiagram",
9609
+ //战略结构图
9610
+ "StrategicConnectivityDiagram": "StrategicTaxonomyDiagram",
9611
+ //战略连通图
9612
+ "StrategicStatesDiagram": "StrategicTaxonomyDiagram",
9613
+ //战略状态图
9614
+ "StrategicProcessesDiagram": "StrategicTaxonomyDiagram",
9615
+ //战略流程图
9616
+ "StrategicParametersDiagram": "StrategicTaxonomyDiagram",
9617
+ //战略参数图
9618
+ "StrategicConstraintsDiagram": "StrategicTaxonomyDiagram",
9619
+ //战略约束图
9620
+ "StrategicConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
9621
+ //战略约束定义图
9622
+ "OperationalTaxonomyDiagram": "StrategicTaxonomyDiagram",
9623
+ //业务概念图
9624
+ "HighLevelOperationalConceptDiagram": "StrategicTaxonomyDiagram",
9625
+ //顶级业务概念图
9626
+ "OperationalFreeFormTaxonomyDiagram": "StrategicTaxonomyDiagram",
9627
+ //业务自由分类图
9628
+ "OperationalStructureDiagram": "StrategicTaxonomyDiagram",
9629
+ //业务结构图
9630
+ "OperationalConnectivityDiagram": "StrategicTaxonomyDiagram",
9631
+ //业务连通图
9632
+ "OperationalInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
9633
+ //业务内部连通图
9634
+ "OperationalProcessesDiagram": "StrategicTaxonomyDiagram",
9635
+ //业务流程图
9636
+ "OperationalProcessesFlowDiagram": "StrategicTaxonomyDiagram",
9637
+ //业务内部流程图
9638
+ "OperationalStatesDiagram": "StrategicTaxonomyDiagram",
9639
+ //业务状态图
9640
+ "OperationalInformationDiagram": "StrategicTaxonomyDiagram",
9641
+ //业务信息图
9642
+ "OperationalParametricDiagram": "StrategicTaxonomyDiagram",
9643
+ //业务参数图
9644
+ "OperationalConstraintsDiagram": "StrategicTaxonomyDiagram",
9645
+ //业务约束图
9646
+ "OperationalConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
9647
+ //业务约束定义图
9648
+ "StrategicTaxonomyTable": "StrategicTaxonomyDiagram",
9649
+ //战略概念表
9650
+ "StrategicConnectivityMatrixDiagram": "StrategicTaxonomyDiagram",
9651
+ //战略连通矩阵图
9652
+ "StrategicActualStrategicPhaseTaxonomyTable": "StrategicTaxonomyDiagram",
9653
+ //战略实际战略阶段概念表
9654
+ "ActualStrategicPhasesGanttChart": "StrategicTaxonomyDiagram",
9655
+ //战略实际战略阶段甘特图
9656
+ "StrategicActualDeploymentDiagram": "StrategicTaxonomyDiagram",
9657
+ //战略实际部署图
9658
+ "ActualStrategicPhasesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9659
+ //战略实际战略阶段到能力映射矩阵图
9660
+ "OperationalConnectivityTable": "StrategicTaxonomyDiagram",
9661
+ //业务连通表
9662
+ "OperationalActivitiesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9663
+ //业务活动与能力映射矩阵
9664
+ "OperationalPerformersToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9665
+ //业务执行者与能力映射矩阵
9666
+ "ServicesTaxonomyDiagram": "StrategicTaxonomyDiagram",
9667
+ //服务概念图
9668
+ "ServicesTaxonomyTable": "StrategicTaxonomyDiagram",
9669
+ //服务概念表
9670
+ "ServicesStructureDiagram": "StrategicTaxonomyDiagram",
9671
+ //服务结构图
9672
+ "ServicesConnectivityDiagram": "StrategicTaxonomyDiagram",
9673
+ //服务连通图
9674
+ "ServicesConnectivityMatrixDiagram": "StrategicTaxonomyDiagram",
9675
+ //服务连通矩阵图
9676
+ "ServicesConnectivityTable": "StrategicTaxonomyDiagram",
9677
+ //服务连通表
9678
+ "ServicesInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
9679
+ //服务内部连通图
9680
+ "ServicesProcessesDiagram": "StrategicTaxonomyDiagram",
9681
+ //服务流程图
9682
+ "ServicesProcessesFlowDiagram": "StrategicTaxonomyDiagram",
9683
+ //服务内部流程图
9684
+ "ServicesStatesDiagram": "StrategicTaxonomyDiagram",
9685
+ //服务状态图
9686
+ "ServicesParametricDiagram": "StrategicTaxonomyDiagram",
9687
+ //服务参数图
9688
+ "ServicesConstraintsDiagram": "StrategicTaxonomyDiagram",
9689
+ //服务约束图
9690
+ "ServicesConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
9691
+ //服务约束定义图
9692
+ "ServicesRoadmapDiagram": "StrategicTaxonomyDiagram",
9693
+ //服务路线图
9694
+ "ServicesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9695
+ //服务与能力映射矩阵
9696
+ "ServicesToOperationalActivitiesMappingMatrix": "StrategicTaxonomyDiagram",
9697
+ //服务与业务活动映射矩阵
9698
+ "ServicesToServiceContractsMappingMatrix": "StrategicTaxonomyDiagram",
9699
+ //服务与服务合同映射矩阵
9700
+ "PersonnelTaxonomyDiagram": "StrategicTaxonomyDiagram",
9701
+ //人员概念图
9702
+ "PersonnelTaxonomyTable": "StrategicTaxonomyDiagram",
9703
+ //人员概念表
9704
+ "PersonnelStructureDiagram": "StrategicTaxonomyDiagram",
9705
+ //人员结构图
9706
+ "PersonnelConnectivityDiagram": "StrategicTaxonomyDiagram",
9707
+ //人员连通图
9708
+ "PersonnelConnectivityTable": "StrategicTaxonomyDiagram",
9709
+ //人员连通表
9710
+ "PersonnelInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
9711
+ //人员内部连通图
9712
+ "PersonnelProcessesDiagram": "StrategicTaxonomyDiagram",
9713
+ //人员流程图
9714
+ "PersonnelProcessesFlowDiagram": "StrategicTaxonomyDiagram",
9715
+ //人员内部流程图
9716
+ "PersonnelStatesDiagram": "StrategicTaxonomyDiagram",
9717
+ //人员状态图
9718
+ "PersonnelParametricDiagram": "StrategicTaxonomyDiagram",
9719
+ //人员参数图
9720
+ "PersonnelConstraintsDiagram": "StrategicTaxonomyDiagram",
9721
+ //人员约束图
9722
+ "PersonnelConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
9723
+ //人员约束定义图
9724
+ "ResourcesTaxonomyDiagram": "StrategicTaxonomyDiagram",
9725
+ //资源概念图
9726
+ "ResourcesTaxonomyTable": "StrategicTaxonomyDiagram",
9727
+ //资源概念表
9728
+ "ResourcesStructureDiagram": "StrategicTaxonomyDiagram",
9729
+ //资源结构图
9730
+ "ResourcesConnectivityDiagram": "StrategicTaxonomyDiagram",
9731
+ //资源连通图
9732
+ "ResourcesConnectivityTable": "StrategicTaxonomyDiagram",
9733
+ //资源连通表
9734
+ "ResourcesInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
9735
+ //资源内部连通图
9736
+ "ResourcesProcessesDiagram": "StrategicTaxonomyDiagram",
9737
+ //资源流程图
9738
+ "ResourcesProcessesFlowDiagram": "StrategicTaxonomyDiagram",
9739
+ //资源内部流程图
9740
+ "ResourcesStatesDiagram": "StrategicTaxonomyDiagram",
9741
+ //资源状态图
9742
+ "ResourcesInformationDiagram": "StrategicTaxonomyDiagram",
9743
+ //资源信息图
9744
+ "ResourcesParametricDiagram": "StrategicTaxonomyDiagram",
9745
+ //资源参数图
9746
+ "FunctionsToOperationalActivitiesMappingMatrix": "StrategicTaxonomyDiagram",
9747
+ //资源功能到业务活动映射矩阵
9748
+ "ResourcesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9749
+ //资源与能力映射矩阵
9750
+ "ResourcesToOperationalActivitiesMappingMatrix": "StrategicTaxonomyDiagram",
9751
+ //资源与业务活动映射矩阵
9752
+ "SecurityTaxonomyDiagram": "StrategicTaxonomyDiagram",
9753
+ //安全概念图
9754
+ "SecurityTaxonomyTable": "StrategicTaxonomyDiagram",
9755
+ //安全概念表
9756
+ "SecurityStructureDiagram": "StrategicTaxonomyDiagram",
9757
+ //安全结构图
9758
+ "SecurityConnectivityDiagram": "StrategicTaxonomyDiagram",
9759
+ //安全连通图
9760
+ "SecurityConnectivityTable": "StrategicTaxonomyDiagram",
9761
+ //安全连通表
9762
+ "SecurityProcessesDiagram": "StrategicTaxonomyDiagram",
9763
+ //安全流程图
9764
+ "SecurityProcessFlowDiagram": "StrategicTaxonomyDiagram",
9765
+ //安全内部流程图
9766
+ "SecurityConstraintsDiagram": "StrategicTaxonomyDiagram",
9767
+ //安全约束图
9768
+ "SecurityConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
9769
+ //安全约束定义图
9770
+ "RisksToAssetsMappingMatrix": "StrategicTaxonomyDiagram",
9771
+ //风险与资产映射矩阵
9772
+ "SecurityControlsToRisksMappingMatrix": "StrategicTaxonomyDiagram",
9773
+ //安全控制与风险映射矩阵
9774
+ "ProjectsTaxonomyDiagram": "StrategicTaxonomyDiagram",
9775
+ //项目概念图
9776
+ "ProjectsTaxonomyTable": "StrategicTaxonomyDiagram",
9777
+ //项目概念表
9778
+ "ProjectsStructureDiagram": "StrategicTaxonomyDiagram",
9779
+ //项目结构图
9780
+ "ProjectsConnectivityDiagram": "StrategicTaxonomyDiagram",
9781
+ //项目连通图
9782
+ "ProjectsProcessesDiagram": "StrategicTaxonomyDiagram",
9783
+ //项目流程图
9784
+ "ProjectsProcessesFlowDiagram": "StrategicTaxonomyDiagram",
9785
+ //项目内部流程图
9786
+ "ActualProjectMilestoneSummaryTable": "StrategicTaxonomyDiagram",
9787
+ //实际项目里程碑摘要表
9788
+ "ProjectsRoadmapDiagram": "StrategicTaxonomyDiagram",
9789
+ //项目路线图
9790
+ "ActualProjectsToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9791
+ //实际项目与能力映射矩阵
9792
+ "ActualResponsibleResourcesToActualProjectsMappingMatrix": "StrategicTaxonomyDiagram",
9793
+ //实际负责资源与实际项目映射矩阵
9794
+ "ProjectActivitiesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9795
+ //项目活动到能力映射矩阵
9796
+ "StandardsTaxonomyDiagram": "StrategicTaxonomyDiagram",
9797
+ //标准概念图
9798
+ "StandardsTaxonomyTable": "StrategicTaxonomyDiagram",
9799
+ //标准概念表
9800
+ "StandardsStructureDiagram": "StrategicTaxonomyDiagram",
9801
+ //标准结构图
9802
+ "StandardsRoadmapDiagram": "StrategicTaxonomyDiagram",
9803
+ //标准路线图
9804
+ "StandardsTraceabilityDiagram": "StrategicTaxonomyDiagram",
9805
+ //标准可追溯图
9806
+ "ActualResourcesTaxonomyMatrix": "StrategicTaxonomyDiagram",
9807
+ //实际资源概念矩阵
9808
+ "ActualResourcesStructureDiagram": "StrategicTaxonomyDiagram",
9809
+ //实际资源结构图
9810
+ "ActualResourcesConnectivityDiagram": "StrategicTaxonomyDiagram"
9811
+ //实际资源连通图
9812
+ };
9813
+ const ShapeKeyMap = {
9814
+ // Package 类型
9815
+ "ArchitecturalDescription": "Package",
9816
+ //体系架构
9817
+ "InformationModel": "Package",
9818
+ //信息模型
9819
+ "Strategic": "Package",
9820
+ // 战略层
9712
9821
  "Operational": "Package",
9713
9822
  // 业务层
9714
9823
  "Services": "Package",
@@ -9849,16 +9958,179 @@ const BlockKeyMap = {
9849
9958
  //实际资源结构包
9850
9959
  "ActualResourcesConnectivityPackage": "Package",
9851
9960
  //实际资源连通包
9852
- "ConceptRole": "ConceptualRole",
9853
- //概念角色
9854
- "OperationalActivityAction": "ActivityAction",
9855
- //业务活动动作
9961
+ // Block 类型
9962
+ "Capability": "Block",
9963
+ //能力
9964
+ "StrategicPhase": "Block",
9965
+ //战略阶段
9966
+ "ActualEnterprisePhase": "Block",
9967
+ //实际企业阶段
9968
+ "WholeLifeEnterprise": "Block",
9969
+ //全企业生命周期
9970
+ "EnterpriseMission": "Block",
9971
+ //企业使命
9972
+ "ActualEnduringTask": "Block",
9973
+ //实际持续任务
9974
+ "ValueStream": "Block",
9975
+ //价值流
9976
+ "StrategicInformation": "Block",
9977
+ //战略信息
9978
+ "GeoPoliticalExtentType": "Block",
9979
+ //地理政治范围类型
9980
+ "CapabilityConfiguration": "Block",
9981
+ //能力配置
9982
+ "EnterpriseVision": "Block",
9983
+ //企业愿景
9984
+ "ActualOrganization": "Block",
9985
+ //实际组织
9986
+ "VisionStatement": "Block",
9987
+ //愿景宣言
9988
+ "ActualCondition": "Block",
9989
+ //实际情况
9990
+ "ActualEnvironment": "Block",
9991
+ //实际环境
9992
+ "ActualLocation": "Block",
9993
+ //实际位置
9994
+ "Location": "Block",
9995
+ //位置
9996
+ "Condition": "Block",
9997
+ //状况条件
9998
+ "Environment": "Block",
9999
+ //环境
10000
+ "Concern": "Block",
10001
+ //涉及
10002
+ "ActualPost": "Block",
10003
+ //实际职责
10004
+ "OperationalInformation": "Block",
10005
+ //业务信息
10006
+ "ResourceInformation": "Block",
10007
+ //资源信息
10008
+ "ActualResource": "Block",
10009
+ //实际资源
10010
+ "OperationalRole": "Block",
10011
+ //业务角色
10012
+ "StandardOperationalActivity": "Block",
10013
+ //标准业务活动
10014
+ "OperationalParameter": "Block",
10015
+ //业务参数
10016
+ "OperationalPerformer": "Block",
10017
+ //业务执行者
10018
+ "OperationalArchitecture": "Block",
10019
+ //业务结构
10020
+ "KnownResource": "Block",
10021
+ //已知资源
10022
+ "NaturalResource": "Block",
10023
+ //自然资源
10024
+ "ResourceArchitecture": "Block",
10025
+ //资源架构
10026
+ "ResourceArtifact": "Block",
10027
+ //资源工件
10028
+ "Software": "Block",
10029
+ //软件
10030
+ "Technology": "Block",
10031
+ //技术
10032
+ "ResourceService": "Block",
10033
+ //资源服务
10034
+ "ResourceInterface": "Block",
10035
+ //资源接口
10036
+ "Function": "Block",
10037
+ //方法
10038
+ "ServiceArchitecture": "Block",
10039
+ //服务架构
10040
+ "ServiceInterface": "Block",
10041
+ //服务接口
10042
+ "ServiceFunction": "Block",
10043
+ //服务功能
10044
+ "ServiceSignal": "Block",
10045
+ //服务信号
10046
+ "ServiceRole": "Block",
10047
+ //服务角色
10048
+ "ServiceParameter": "Block",
10049
+ //服务参数
10050
+ "OperationalActivity": "Block",
10051
+ //业务活动
10052
+ "HighLevelOperationalConcept": "Block",
10053
+ //高级业务概念
10054
+ "ActualProject": "Block",
10055
+ //实际项目
10056
+ "ActualRisk": "Block",
10057
+ //实际风险
10058
+ "ActualPropertySet": "Block",
10059
+ //实际属性设置
10060
+ "Organization": "Block",
10061
+ //组织
10062
+ "ActualPerson": "Block",
10063
+ //实际人员
10064
+ "CapabilityRole": "Block",
10065
+ //能力职责
10066
+ "OperationalSignal": "Block",
10067
+ //业务信号
10068
+ "OperationalInterface": "Block",
10069
+ //业务接口
10070
+ "Service": "Block",
10071
+ //服务
10072
+ "ActualService": "Block",
10073
+ //实际服务
10074
+ "Property": "Block",
10075
+ //引用属性
10076
+ "Projectes": "Block",
10077
+ //项目
10078
+ "ProjectMilestone": "Block",
10079
+ //项目里程碑
10080
+ "ActualProjectMilestone": "Block",
10081
+ //实际项目里程碑
10082
+ "ProjectActivity": "Block",
10083
+ //项目活动
10084
+ "ProjectRole": "Block",
10085
+ //项目角色
10086
+ "ProjectMilestoneRole": "Block",
10087
+ //项目里程碑角色
10088
+ "SecurityRisk": "Block",
10089
+ //安全风险
10090
+ "StatusIndicators": "Block",
10091
+ //状态指标
10092
+ "SecurityEnclave": "Block",
10093
+ //安全隔离
10094
+ "Risk": "Block",
10095
+ //风险
10096
+ "Post": "Block",
10097
+ //职位
10098
+ "Responsibility": "Block",
10099
+ //责任
10100
+ "ActualResponsibility": "Block",
10101
+ //实际责任
10102
+ "System": "Block",
10103
+ //系统
10104
+ "Competence": "Block",
10105
+ //权限
10106
+ "Person": "Block",
10107
+ //人员
10108
+ "SecurityProcess": "Block",
10109
+ //安全流程
10110
+ "ResourceMitigation": "Block",
10111
+ // 资源缓解措施
10112
+ "OperationalMitigation": "Block",
10113
+ // 业务缓解措施
9856
10114
  "ResourceParameter": "Block",
9857
10115
  //资源参数
9858
10116
  "ResourceRole": "Block",
9859
10117
  //资源角色
9860
10118
  "ResourceSignal": "Block",
9861
10119
  //资源信号
10120
+ // DividingLine 类型
10121
+ "EnterpriseGoal": "DividingLine",
10122
+ //企业目标
10123
+ "Opportunity": "DividingLine",
10124
+ //时机
10125
+ "SecurityControl": "DividingLine",
10126
+ //安全控制
10127
+ // ActivityAction 类型
10128
+ "FunctionAction": "ActivityAction",
10129
+ //功能动作
10130
+ "ServiceFunctionAction": "ActivityAction",
10131
+ //服务功能动作
10132
+ "OperationalActivityAction": "ActivityAction",
10133
+ //业务活动动作
9862
10134
  "OperationalAction": "ActivityAction",
9863
10135
  //业务动作
9864
10136
  "ServiceAction": "ActivityAction",
@@ -9867,237 +10139,227 @@ const BlockKeyMap = {
9867
10139
  //资源动作
9868
10140
  "ProjectActivityAction": "ActivityAction",
9869
10141
  //项目活动动作
9870
- "SecurityProcessAction": "ActivityAction"
10142
+ "SecurityProcessAction": "ActivityAction",
9871
10143
  //安全流程动作
9872
- };
9873
- const resizeHandles = [
9874
- { position: "nw" },
9875
- { position: "ne" },
9876
- { position: "sw" },
9877
- { position: "se" }
9878
- ];
9879
- const DiagramKeyMap = {
9880
- "StrategicTaxonomyDiagram": "StrategicTaxonomyDiagram",
10144
+ // ConceptualRole 类型
10145
+ "ConceptRole": "ConceptualRole",
10146
+ //概念角色
10147
+ // Diagram 类型
10148
+ "StrategicTaxonomyDiagram": "Diagram",
9881
10149
  //战略概念图
9882
- "StrategicInformationDiagram": "StrategicTaxonomyDiagram",
10150
+ "StrategicInformationDiagram": "Diagram",
9883
10151
  //战略信息图
9884
- "StrategicStructureDiagram": "StrategicTaxonomyDiagram",
10152
+ "StrategicStructureDiagram": "Diagram",
9885
10153
  //战略结构图
9886
- "StrategicConnectivityDiagram": "StrategicTaxonomyDiagram",
10154
+ "StrategicConnectivityDiagram": "Diagram",
9887
10155
  //战略连通图
9888
- "StrategicStatesDiagram": "StrategicTaxonomyDiagram",
10156
+ "StrategicStatesDiagram": "Diagram",
9889
10157
  //战略状态图
9890
- "StrategicProcessesDiagram": "StrategicTaxonomyDiagram",
10158
+ "StrategicProcessesDiagram": "Diagram",
9891
10159
  //战略流程图
9892
- "StrategicParametersDiagram": "StrategicTaxonomyDiagram",
10160
+ "StrategicParametersDiagram": "Diagram",
9893
10161
  //战略参数图
9894
- "StrategicConstraintsDiagram": "StrategicTaxonomyDiagram",
10162
+ "StrategicConstraintsDiagram": "Diagram",
9895
10163
  //战略约束图
9896
- "StrategicConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
10164
+ "StrategicConstraintsDefinitionDiagram": "Diagram",
9897
10165
  //战略约束定义图
9898
- "OperationalTaxonomyDiagram": "StrategicTaxonomyDiagram",
10166
+ "OperationalTaxonomyDiagram": "Diagram",
9899
10167
  //业务概念图
9900
- "HighLevelOperationalConceptDiagram": "StrategicTaxonomyDiagram",
10168
+ "HighLevelOperationalConceptDiagram": "Diagram",
9901
10169
  //顶级业务概念图
9902
- "OperationalFreeFormTaxonomyDiagram": "StrategicTaxonomyDiagram",
10170
+ "OperationalFreeFormTaxonomyDiagram": "Diagram",
9903
10171
  //业务自由分类图
9904
- "OperationalStructureDiagram": "StrategicTaxonomyDiagram",
10172
+ "OperationalStructureDiagram": "Diagram",
9905
10173
  //业务结构图
9906
- "OperationalConnectivityDiagram": "StrategicTaxonomyDiagram",
10174
+ "OperationalConnectivityDiagram": "Diagram",
9907
10175
  //业务连通图
9908
- "OperationalInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
10176
+ "OperationalInternalConnectivityDiagram": "Diagram",
9909
10177
  //业务内部连通图
9910
- "OperationalProcessesDiagram": "StrategicTaxonomyDiagram",
10178
+ "OperationalProcessesDiagram": "Diagram",
9911
10179
  //业务流程图
9912
- "OperationalProcessesFlowDiagram": "StrategicTaxonomyDiagram",
10180
+ "OperationalProcessesFlowDiagram": "Diagram",
9913
10181
  //业务内部流程图
9914
- "OperationalStatesDiagram": "StrategicTaxonomyDiagram",
10182
+ "OperationalStatesDiagram": "Diagram",
9915
10183
  //业务状态图
9916
- "OperationalInformationDiagram": "StrategicTaxonomyDiagram",
10184
+ "OperationalInformationDiagram": "Diagram",
9917
10185
  //业务信息图
9918
- "OperationalParametricDiagram": "StrategicTaxonomyDiagram",
10186
+ "OperationalParametricDiagram": "Diagram",
9919
10187
  //业务参数图
9920
- "OperationalConstraintsDiagram": "StrategicTaxonomyDiagram",
10188
+ "OperationalConstraintsDiagram": "Diagram",
9921
10189
  //业务约束图
9922
- "OperationalConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
10190
+ "OperationalConstraintsDefinitionDiagram": "Diagram",
9923
10191
  //业务约束定义图
9924
- "StrategicTaxonomyTable": "StrategicTaxonomyDiagram",
10192
+ "StrategicTaxonomyTable": "Diagram",
9925
10193
  //战略概念表
9926
- "StrategicConnectivityMatrixDiagram": "StrategicTaxonomyDiagram",
10194
+ "StrategicConnectivityMatrixDiagram": "Diagram",
9927
10195
  //战略连通矩阵图
9928
- "StrategicActualStrategicPhaseTaxonomyTable": "StrategicTaxonomyDiagram",
9929
- //战略实际战略阶段概念表
9930
- "ActualStrategicPhasesGanttChart": "StrategicTaxonomyDiagram",
9931
- //战略实际战略阶段甘特图
9932
- "StrategicActualDeploymentDiagram": "StrategicTaxonomyDiagram",
10196
+ "StrategicActualStrategicPhaseTaxonomyTable": "Diagram",
10197
+ //战略实际战略阶段分类表
10198
+ "ActualStrategicPhasesGanttChart": "Diagram",
10199
+ //实际战略阶段甘特图
10200
+ "StrategicActualDeploymentDiagram": "Diagram",
9933
10201
  //战略实际部署图
9934
- "ActualStrategicPhasesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
9935
- //战略实际战略阶段到能力映射矩阵图
9936
- "OperationalConnectivityTable": "StrategicTaxonomyDiagram",
10202
+ "ActualStrategicPhasesToCapabilitiesMappingMatrix": "Diagram",
10203
+ //实际战略阶段与能力映射矩阵
10204
+ "OperationalConnectivityTable": "Diagram",
9937
10205
  //业务连通表
9938
- "OperationalActivitiesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
10206
+ "OperationalActivitiesToCapabilitiesMappingMatrix": "Diagram",
9939
10207
  //业务活动与能力映射矩阵
9940
- "OperationalPerformersToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
10208
+ "OperationalPerformersToCapabilitiesMappingMatrix": "Diagram",
9941
10209
  //业务执行者与能力映射矩阵
9942
- "ServicesTaxonomyDiagram": "StrategicTaxonomyDiagram",
10210
+ "ServicesTaxonomyDiagram": "Diagram",
9943
10211
  //服务概念图
9944
- "ServicesTaxonomyTable": "StrategicTaxonomyDiagram",
10212
+ "ServicesTaxonomyTable": "Diagram",
9945
10213
  //服务概念表
9946
- "ServicesStructureDiagram": "StrategicTaxonomyDiagram",
10214
+ "ServicesStructureDiagram": "Diagram",
9947
10215
  //服务结构图
9948
- "ServicesConnectivityDiagram": "StrategicTaxonomyDiagram",
10216
+ "ServicesConnectivityDiagram": "Diagram",
9949
10217
  //服务连通图
9950
- "ServicesConnectivityMatrixDiagram": "StrategicTaxonomyDiagram",
10218
+ "ServicesConnectivityMatrixDiagram": "Diagram",
9951
10219
  //服务连通矩阵图
9952
- "ServicesConnectivityTable": "StrategicTaxonomyDiagram",
10220
+ "ServicesConnectivityTable": "Diagram",
9953
10221
  //服务连通表
9954
- "ServicesInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
10222
+ "ServicesInternalConnectivityDiagram": "Diagram",
9955
10223
  //服务内部连通图
9956
- "ServicesProcessesDiagram": "StrategicTaxonomyDiagram",
10224
+ "ServicesProcessesDiagram": "Diagram",
9957
10225
  //服务流程图
9958
- "ServicesProcessesFlowDiagram": "StrategicTaxonomyDiagram",
10226
+ "ServicesProcessesFlowDiagram": "Diagram",
9959
10227
  //服务内部流程图
9960
- "ServicesStatesDiagram": "StrategicTaxonomyDiagram",
10228
+ "ServicesStatesDiagram": "Diagram",
9961
10229
  //服务状态图
9962
- "ServicesParametricDiagram": "StrategicTaxonomyDiagram",
10230
+ "ServicesParametricDiagram": "Diagram",
9963
10231
  //服务参数图
9964
- "ServicesConstraintsDiagram": "StrategicTaxonomyDiagram",
10232
+ "ServicesConstraintsDiagram": "Diagram",
9965
10233
  //服务约束图
9966
- "ServicesConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
10234
+ "ServicesConstraintsDefinitionDiagram": "Diagram",
9967
10235
  //服务约束定义图
9968
- "ServicesRoadmapDiagram": "StrategicTaxonomyDiagram",
10236
+ "ServicesRoadmapDiagram": "Diagram",
9969
10237
  //服务路线图
9970
- "ServicesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
10238
+ "ServicesToCapabilitiesMappingMatrix": "Diagram",
9971
10239
  //服务与能力映射矩阵
9972
- "ServicesToOperationalActivitiesMappingMatrix": "StrategicTaxonomyDiagram",
10240
+ "ServicesToOperationalActivitiesMappingMatrix": "Diagram",
9973
10241
  //服务与业务活动映射矩阵
9974
- "ServicesToServiceContractsMappingMatrix": "StrategicTaxonomyDiagram",
10242
+ "ServicesToServiceContractsMappingMatrix": "Diagram",
9975
10243
  //服务与服务合同映射矩阵
9976
- "PersonnelTaxonomyDiagram": "StrategicTaxonomyDiagram",
10244
+ "PersonnelTaxonomyDiagram": "Diagram",
9977
10245
  //人员概念图
9978
- "PersonnelTaxonomyTable": "StrategicTaxonomyDiagram",
10246
+ "PersonnelTaxonomyTable": "Diagram",
9979
10247
  //人员概念表
9980
- "PersonnelStructureDiagram": "StrategicTaxonomyDiagram",
10248
+ "PersonnelStructureDiagram": "Diagram",
9981
10249
  //人员结构图
9982
- "PersonnelConnectivityDiagram": "StrategicTaxonomyDiagram",
10250
+ "PersonnelConnectivityDiagram": "Diagram",
9983
10251
  //人员连通图
9984
- "PersonnelConnectivityTable": "StrategicTaxonomyDiagram",
10252
+ "PersonnelConnectivityTable": "Diagram",
9985
10253
  //人员连通表
9986
- "PersonnelInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
10254
+ "PersonnelInternalConnectivityDiagram": "Diagram",
9987
10255
  //人员内部连通图
9988
- "PersonnelProcessesDiagram": "StrategicTaxonomyDiagram",
10256
+ "PersonnelProcessesDiagram": "Diagram",
9989
10257
  //人员流程图
9990
- "PersonnelProcessesFlowDiagram": "StrategicTaxonomyDiagram",
10258
+ "PersonnelProcessesFlowDiagram": "Diagram",
9991
10259
  //人员内部流程图
9992
- "PersonnelStatesDiagram": "StrategicTaxonomyDiagram",
10260
+ "PersonnelStatesDiagram": "Diagram",
9993
10261
  //人员状态图
9994
- "PersonnelParametricDiagram": "StrategicTaxonomyDiagram",
10262
+ "PersonnelParametricDiagram": "Diagram",
9995
10263
  //人员参数图
9996
- "PersonnelConstraintsDiagram": "StrategicTaxonomyDiagram",
10264
+ "PersonnelConstraintsDiagram": "Diagram",
9997
10265
  //人员约束图
9998
- "PersonnelConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
10266
+ "PersonnelConstraintsDefinitionDiagram": "Diagram",
9999
10267
  //人员约束定义图
10000
- "ResourcesTaxonomyDiagram": "StrategicTaxonomyDiagram",
10268
+ "ResourcesTaxonomyDiagram": "Diagram",
10001
10269
  //资源概念图
10002
- "ResourcesTaxonomyTable": "StrategicTaxonomyDiagram",
10270
+ "ResourcesTaxonomyTable": "Diagram",
10003
10271
  //资源概念表
10004
- "ResourcesStructureDiagram": "StrategicTaxonomyDiagram",
10272
+ "ResourcesStructureDiagram": "Diagram",
10005
10273
  //资源结构图
10006
- "ResourcesConnectivityDiagram": "StrategicTaxonomyDiagram",
10274
+ "ResourcesConnectivityDiagram": "Diagram",
10007
10275
  //资源连通图
10008
- "ResourcesConnectivityTable": "StrategicTaxonomyDiagram",
10276
+ "ResourcesConnectivityTable": "Diagram",
10009
10277
  //资源连通表
10010
- "ResourcesInternalConnectivityDiagram": "StrategicTaxonomyDiagram",
10278
+ "ResourcesInternalConnectivityDiagram": "Diagram",
10011
10279
  //资源内部连通图
10012
- "ResourcesProcessesDiagram": "StrategicTaxonomyDiagram",
10280
+ "ResourcesProcessesDiagram": "Diagram",
10013
10281
  //资源流程图
10014
- "ResourcesProcessesFlowDiagram": "StrategicTaxonomyDiagram",
10282
+ "ResourcesProcessesFlowDiagram": "Diagram",
10015
10283
  //资源内部流程图
10016
- "ResourcesStatesDiagram": "StrategicTaxonomyDiagram",
10284
+ "ResourcesStatesDiagram": "Diagram",
10017
10285
  //资源状态图
10018
- "ResourcesInformationDiagram": "StrategicTaxonomyDiagram",
10286
+ "ResourcesInformationDiagram": "Diagram",
10019
10287
  //资源信息图
10020
- "ResourcesParametricDiagram": "StrategicTaxonomyDiagram",
10288
+ "ResourcesParametricDiagram": "Diagram",
10021
10289
  //资源参数图
10022
- "FunctionsToOperationalActivitiesMappingMatrix": "StrategicTaxonomyDiagram",
10023
- //资源功能到业务活动映射矩阵
10024
- "ResourcesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
10290
+ "FunctionsToOperationalActivitiesMappingMatrix": "Diagram",
10291
+ //功能与业务活动映射矩阵
10292
+ "ResourcesToCapabilitiesMappingMatrix": "Diagram",
10025
10293
  //资源与能力映射矩阵
10026
- "ResourcesToOperationalActivitiesMappingMatrix": "StrategicTaxonomyDiagram",
10294
+ "ResourcesToOperationalActivitiesMappingMatrix": "Diagram",
10027
10295
  //资源与业务活动映射矩阵
10028
- "SecurityTaxonomyDiagram": "StrategicTaxonomyDiagram",
10296
+ "SecurityTaxonomyDiagram": "Diagram",
10029
10297
  //安全概念图
10030
- "SecurityTaxonomyTable": "StrategicTaxonomyDiagram",
10298
+ "SecurityTaxonomyTable": "Diagram",
10031
10299
  //安全概念表
10032
- "SecurityStructureDiagram": "StrategicTaxonomyDiagram",
10300
+ "SecurityStructureDiagram": "Diagram",
10033
10301
  //安全结构图
10034
- "SecurityConnectivityDiagram": "StrategicTaxonomyDiagram",
10302
+ "SecurityConnectivityDiagram": "Diagram",
10035
10303
  //安全连通图
10036
- "SecurityConnectivityTable": "StrategicTaxonomyDiagram",
10304
+ "SecurityConnectivityTable": "Diagram",
10037
10305
  //安全连通表
10038
- "SecurityProcessesDiagram": "StrategicTaxonomyDiagram",
10306
+ "SecurityProcessesDiagram": "Diagram",
10039
10307
  //安全流程图
10040
- "SecurityProcessFlowDiagram": "StrategicTaxonomyDiagram",
10308
+ "SecurityProcessFlowDiagram": "Diagram",
10041
10309
  //安全内部流程图
10042
- "SecurityConstraintsDiagram": "StrategicTaxonomyDiagram",
10310
+ "SecurityConstraintsDiagram": "Diagram",
10043
10311
  //安全约束图
10044
- "SecurityConstraintsDefinitionDiagram": "StrategicTaxonomyDiagram",
10312
+ "SecurityConstraintsDefinitionDiagram": "Diagram",
10045
10313
  //安全约束定义图
10046
- "RisksToAssetsMappingMatrix": "StrategicTaxonomyDiagram",
10047
- //风险与资产映射矩阵
10048
- "SecurityControlsToRisksMappingMatrix": "StrategicTaxonomyDiagram",
10049
- //安全控制与风险映射矩阵
10050
- "ProjectsTaxonomyDiagram": "StrategicTaxonomyDiagram",
10314
+ "RisksToAssetsMappingMatrix": "Diagram",
10315
+ //资产风险映射矩阵
10316
+ "SecurityControlsToRisksMappingMatrix": "Diagram",
10317
+ //风险与安全控制映射矩阵
10318
+ "ProjectsTaxonomyDiagram": "Diagram",
10051
10319
  //项目概念图
10052
- "ProjectsTaxonomyTable": "StrategicTaxonomyDiagram",
10320
+ "ProjectsTaxonomyTable": "Diagram",
10053
10321
  //项目概念表
10054
- "ProjectsStructureDiagram": "StrategicTaxonomyDiagram",
10322
+ "ProjectsStructureDiagram": "Diagram",
10055
10323
  //项目结构图
10056
- "ProjectsConnectivityDiagram": "StrategicTaxonomyDiagram",
10324
+ "ProjectsConnectivityDiagram": "Diagram",
10057
10325
  //项目连通图
10058
- "ProjectsProcessesDiagram": "StrategicTaxonomyDiagram",
10326
+ "ProjectsProcessesDiagram": "Diagram",
10059
10327
  //项目流程图
10060
- "ProjectsProcessesFlowDiagram": "StrategicTaxonomyDiagram",
10328
+ "ProjectsProcessesFlowDiagram": "Diagram",
10061
10329
  //项目内部流程图
10062
- "ActualProjectMilestoneSummaryTable": "StrategicTaxonomyDiagram",
10063
- //实际项目里程碑摘要表
10064
- "ProjectsRoadmapDiagram": "StrategicTaxonomyDiagram",
10330
+ "ActualProjectMilestoneSummaryTable": "Diagram",
10331
+ //实际项目里程碑汇总表
10332
+ "ProjectsRoadmapDiagram": "Diagram",
10065
10333
  //项目路线图
10066
- "ActualProjectsToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
10334
+ "ActualProjectsToCapabilitiesMappingMatrix": "Diagram",
10067
10335
  //实际项目与能力映射矩阵
10068
- "ActualResponsibleResourcesToActualProjectsMappingMatrix": "StrategicTaxonomyDiagram",
10069
- //实际负责资源与实际项目映射矩阵
10070
- "ProjectActivitiesToCapabilitiesMappingMatrix": "StrategicTaxonomyDiagram",
10071
- //项目活动到能力映射矩阵
10072
- "StandardsTaxonomyDiagram": "StrategicTaxonomyDiagram",
10336
+ "ActualResponsibleResourcesToActualProjectsMappingMatrix": "Diagram",
10337
+ //实际资源与实际项目对应关系矩阵
10338
+ "ProjectActivitiesToCapabilitiesMappingMatrix": "Diagram",
10339
+ //项目活动与能力映射矩阵
10340
+ "StandardsTaxonomyDiagram": "Diagram",
10073
10341
  //标准概念图
10074
- "StandardsTaxonomyTable": "StrategicTaxonomyDiagram",
10342
+ "StandardsTaxonomyTable": "Diagram",
10075
10343
  //标准概念表
10076
- "StandardsStructureDiagram": "StrategicTaxonomyDiagram",
10344
+ "StandardsStructureDiagram": "Diagram",
10077
10345
  //标准结构图
10078
- "StandardsRoadmapDiagram": "StrategicTaxonomyDiagram",
10346
+ "StandardsRoadmapDiagram": "Diagram",
10079
10347
  //标准路线图
10080
- "StandardsTraceabilityDiagram": "StrategicTaxonomyDiagram",
10081
- //标准可追溯图
10082
- "ActualResourcesTaxonomyMatrix": "StrategicTaxonomyDiagram",
10348
+ "StandardsTraceabilityDiagram": "Diagram",
10349
+ //标准追溯图
10350
+ "ActualResourcesTaxonomyMatrix": "Diagram",
10083
10351
  //实际资源概念矩阵
10084
- "ActualResourcesStructureDiagram": "StrategicTaxonomyDiagram",
10352
+ "ActualResourcesStructureDiagram": "Diagram",
10085
10353
  //实际资源结构图
10086
- "ActualResourcesConnectivityDiagram": "StrategicTaxonomyDiagram"
10354
+ "ActualResourcesConnectivityDiagram": "Diagram"
10087
10355
  //实际资源连通图
10088
10356
  };
10089
- const PinKeyMap = {
10090
- "OutputPin": "Pin",
10091
- //输出引脚
10092
- "InputPin": "Pin",
10093
- //输入引脚
10094
- "OperationalPort": "Port",
10095
- //业务端口
10096
- "ServicePort": "Port",
10097
- //服务端口
10098
- "ResourcePort": "Port"
10099
- //资源端口
10100
- };
10357
+ const resizeHandles = [
10358
+ { position: "nw" },
10359
+ { position: "ne" },
10360
+ { position: "sw" },
10361
+ { position: "se" }
10362
+ ];
10101
10363
  const __vite_glob_3_0 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAZ9SURBVHic7ZtPTNtWHMd/79lp0rWjoWVbp6rANFZNmkRSytB6AA6NtFsrZXcqbcdJHJg0VdOUrhGquJQDEschlXsjsTM7pGjaWtGWcGKFaQHRdX9ol3VdG7D9fjvENi8h9nvPo5Cs/pxix89+/vr3+76fn22CiBqEeEL3uwONTiiQgFAgAaFAAkKBBIQCCdCDNkyn0/H19V/Om4x17m6XdheNkNLJkyemc7lcKUj7wAIV19YzyNhw0PZ7hVnpawIAPgnSPnCKIWPng7bda5CxC0HbkiCVdDqdjv9cXNtwd0JpNmgHXiR2hMcBAI4djb89Ozu7qrqPQCn24MFvCec3ASjcnb/dkAL19Lw/iICDAABPnvyTBABlgQKlGGOmKxBQuhBkH3sCJQXnp8mshP/GHrsI0shCdA+mke1ONBo61fLuAqtEkiqBBELG3IPpB6N5/633Dy0WKTq/EXBvIiidTscBwKl9St/fvNmwEWT3zal/4mcHBpRFUhaoxqCVTW+vIbBtAVbZUC5qlUexGoOWTq9kdnnIRLyAgHEAgIMRbWT+iy6p6Ou9upIoG2yqskQWKIH868esb2Y/fVdcHVNScPzHZNYgAMzI9hmCCGQh5z8SI1hydPmCYeK17bQkAADw3LDGAeCczDHLBssggn1hMGEhXHz4By0mR5c/W/jyHd8T1qmWN5yKn6n7kHKKIXeQaMth3wjqvnI/Y5h4g/MsF41o0leSkrqR2mmYeKP7yv2MX9uWlkPuRQxi1EqVdE0FXbp3d77Na9tkdnnIYDjFrSoSAtNRDfOtrViQSg+O/rG1jr/NzaRpYQIR3AoZACCik4/8Iul0T++Gs33s8CtnVAYWpRRbX3/ophdvfrWkJpfiBqPj7rYECq3RWHruUntgU7fbrgLATP/Y2vU/N8s5J+0ME6+lJpfyXqITIAWnoraNWlogpRSzTc5u6S3Q74/oEHeFS/9VnFrmLrWvtkZjaQBw6pzOjUea980zJW6KVp2DBIoehB3OLz+DthDdu2dCYGI3xXGYu9S+GqHEvQc0kF302lan2vbFVDRqpRRDrlz3NWgkrpCxCN3hDd3ZlWGLsQzvIwJKGqXZxUzXBL9S10nB2MIdx6ylpeXQwqPHlexTNWrpCOpPpTr4tJnznzpwR634EXPHdqxytWXFAQCIW3Um52rqKM8i0J7mcNJRqaKWFmjzyVMpg7ZxzbL0l77jylJCr8se10EjMF27rvfqCn+ixdr/eQgNVlFLp5jJWNJd8DHoSm+wAEgq1auJidpRw06VCc/2kmyZXLoQFPgcKQBUvFGlopY3ac7cqqYR6hDhIsRgmOkfW/P0h6CkJpfiFkO3SCRA/PukRfipj91PMd7colx1Wo9XD0Tz/BD8ePP5VGpyScVzfOkfW+v4dYN+zc8qHG9jvhF54sQbbhSrGLVUJd2fSnU8fVz6yemMXwXtYI9U49yqokZh4oBO8/Ej5qpqJQ0AcGb0x0GDkYTFYJg3ZY3SkdoRrh6ne3pXnHayFbVUBFUZNPUPZYfFTNeERoCfq+60GIw/32J3Hv5BN5Kjy9JPGrqzK8PvfXXfLJvkW4vBeJU4BHYM/15UG/WWVBRJCVRl0OIRzGXx8qmsRukIP6q5+7RwSHY/jJtB4ChqlI4sXj6l8MCAn6Pmz8kbOQ+qNmilGcTFTNfEm6+xLo3CCCEwY9+0FmIR+UdFukambU8rAsF8hJKPj8Zi52QjxyGIUUt5EH83/FZne1vQx7j7Te3zvHt354VljjCC7KrTGYGKzSoOAEAulysRriaTqaiFAvFmRkQFYjNAiVtxyxi1UCDezLT6M3tNBX8OJqtr/lWITZrbCaV600dQ1TlIjGS+AqXT6TgCuLcJfDXarFRX1CBMMd9R7OzAQKL89Nkde3Ejouuf71ZH9xPTNK8iwHEAgAOR6Llbt77ztA7fYc54Vv6QW2wzTHPKZ/OmxH7O5ymQb4oxgNgL6VUDYSH63kSrTLkWSCO/6qIAVsxZqpKWFohQOtOoL0qp0tPbl0HGdu9m9WUmFEhAKJCAUCABoUACQoEEhAIJCAUSEAokIBRIQCiQgFAgAaFAAuSnOxgO9vT2+b5y2zQofNgiLRACDgb9YqaZ8U0xnVLft7b+D4jOUfjoua/vg6FG/7I5KDqlxdu3f9jxah9PoG9WXybCUUxAKJCAUCABoUACQoEEhAIJCAUSEAokIBRIwL9jGpoMstHI7QAAAABJRU5ErkJggg==";
10102
10364
  const __vite_glob_3_1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAJhSURBVHic7ds9SgNBGIfxV9FCIRKwMjZWSSts0nsAI55CBY9gIR5CEE+xmAOYPllIq1UaP0pJoYVFLCQSP5JNnNlnh+z/V62w2YwPw/j6tTQcDocmmVvOewFFodAQhYYoNEShIQoNUWiIQkMUGqLQEIWGKDREoSEKDVFoiEJDFBqi0BCFhig0RKEhCg1RaIhCQ1Z8POSm1bLHx6d/v75S2bKDZtPHUn4JZW3OoW9aLTs/v3BeiJl5jx3S2pyPDpfdksVzsnimj+d4OTpG6lFkUT2a+f6km1g3SXwuYaK81+Y1dFSP7OT4aOb7r+waC5332jR1QLzuaBdJN7Eru/b+zFAEE7qbcOd1HnR0QILZ0fNOBbMgp5o0wYSedyqYBTnVpNHRAfG6o+edHMipIO+1OYculUpf1y6TQ6Wy5bqUX0Jam/PRcdDct1q16vSMWrVq9cjvF0ILbG1Lvv7P8Lbdtru7+7lfV6t9fiLju8+3ENbmLbRMp6kDotAQhYYoNKSwoePewOLeAHu/YH7WQYp7AzuLn78+PtzdyPw9C7mjH17e/7zOUiFD50GhIQoNUWiIQkMUGrKQc3TcG0wd2zr912/Xl+3Jz9our3qZsxcu9M9vRtJ0+m/W6b+l3ucaW0cHZOF29GjnpR0do13c2Fmzxs76xHt1dEyRFuaybWOh1+10bzPzNenogCg0RKEhCg1RaIhCQwoZeru8+ud1lhZyjk4zPmcTvy80/UkYp5BHRx4UGqLQEIWGKDREoSEKDVFoiEJDFBqi0BCFhig0RKEhCg1RaIhCQxQaotAQhYYoNOQDM128k0dpjyAAAAAASUVORK5CYII=";
10103
10365
  const __vite_glob_3_2 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAALxSURBVHic7Zsxb9NQEMf/Z4PERpDYKQyUZuHSZGIh3ZhoUT8AfIR2R01b2MM3oGVgQ2o3mFoWFqjykFCjMqCwAANSwwz2MSRN06rxOY6fVdD9Jr/o+d7LT362fL4HGIZhGIbxn0JFDcTMJSCsA8JFjXk2dAjQR+c+7Kbq7X9CAHOtDpLnAKaKGC8VhA3E0bJzrpvULfQ9D2aeAlELQMn3WGPCCMJLP75/e5PUyfsVxJXqDoB6v+kgsu17zEQCugbBo0Fbgopz792o7hcKmNLxPUeiB865TgFjJsJc64JkqdeK7wIYKSgoYD6DpXUe5PSIfx0fy5WknkUI+qcxQQomSMEEKZggBROkYIIUTJCCCVIwQQomSCHVyyozTyEImxDUs6YtoulFlO+/bJ14ec2Gk1g2209uPZswTirUK4i5ugAKWxAsZJXz+85jRNOLyEEOADAF1JxpfN7JIZZKoqBesgvNSZJd0Y17kKvlrKePhCD18kp7NffAp1CWWMhDadIOJKpoKcrTnFhWEq/tr89M9KfKK+1VUNAAAFAwD8CrJGWJDSXYRTbHldNnEGNSOWfE8P4BwJ5iCiZIwQQpmCAFE6RgghRMkIIJUjBBCiZIwQQpmCAFE6RgghRMkEIRggbFSXlkAE/FGFn4NApmLoHo4fEvlBjDf4WZxNugoJfYoqBRbhw08godfnrBXKnKBCE6QJQoyPsVtL8+syqgVCW340A/9xF+eT1JiC4Ey1rVWyH3oPbazTmJZTnLkjgDFx68wsV3T7Oe3wVhq5df39vSOhdRxAkA6H/HyuVb1vCycq09r5W69hRTMEEKJkjBBCmYIAUTpGCCFEyQgglSMEEKJkhBEUSHQ10ve59NCph5eN9rlnqlsVBeVoO3QNw7JFni2WoJsXz1PalEiOaHWnlkB5KH0zrwbK0JOdq+eM6Q6LrvXYz6PSj+swbChs9JZKADobkitnimzqUw1+qA3Nb2ePqHHBDtZqyXNAzDMAzDOOIvySvHLTagE98AAAAASUVORK5CYII=";
@@ -10970,13 +11232,17 @@ function getShapeComponentByKey(key) {
10970
11232
  return registry[key] ?? null;
10971
11233
  }
10972
11234
  function getComponentByShapeKey(shapeKey) {
10973
- const componentName = BlockKeyMap[shapeKey] || shapeKey;
11235
+ const componentName = ShapeKeyMap[shapeKey] || shapeKey;
10974
11236
  return getShapeComponentByKey(componentName) || componentName;
10975
11237
  }
10976
11238
  function getComponentByPinKey(shapeKey) {
10977
11239
  const componentName = PinKeyMap[shapeKey] || shapeKey;
10978
11240
  return getShapeComponentByKey(componentName) || componentName;
10979
11241
  }
11242
+ function getComponentByEdgeKey(shapeKey) {
11243
+ const componentName = EdgeKeyMap[shapeKey] || shapeKey;
11244
+ return getShapeComponentByKey(componentName) || componentName;
11245
+ }
10980
11246
  function getComponentByDiagramKey(shapeKey) {
10981
11247
  const componentName = DiagramKeyMap[shapeKey] || shapeKey;
10982
11248
  return getShapeComponentByKey(componentName) || componentName;
@@ -10991,7 +11257,7 @@ const getShapeComponent = (shape) => {
10991
11257
  case "diagram":
10992
11258
  return getComponentByDiagramKey(shapeKey);
10993
11259
  case "edge":
10994
- return getComponentByShapeKey(shapeKey);
11260
+ return getComponentByEdgeKey(shapeKey);
10995
11261
  default:
10996
11262
  return "ShapeComponent";
10997
11263
  }
@@ -11195,10 +11461,36 @@ const _ContextMenuUtils = class _ContextMenuUtils {
11195
11461
  return this.copiedShapes;
11196
11462
  }
11197
11463
  /**
11198
- * 清除剪切状态
11199
- * 当按 ESC 取消或其他需要清除剪切状态的场景调用
11464
+ * 检查剪贴板是否有内容
11465
+ */
11466
+ static hasClipboardContent() {
11467
+ return this.copiedShapes.length > 0;
11468
+ }
11469
+ /**
11470
+ * 清空剪贴板(粘贴完成后调用)
11471
+ */
11472
+ static clearClipboard() {
11473
+ this.copiedShapes = [];
11474
+ this.operationType = "copy";
11475
+ const graphStore = useGraphStore();
11476
+ graphStore.setCopiedShapesCount(0);
11477
+ console.log("剪贴板已清空");
11478
+ }
11479
+ /**
11480
+ * 清除剪切状态(只清除SVG遮盖层,不清除剪贴板数据)
11481
+ * 当点击空白处时调用
11200
11482
  */
11201
11483
  static clearCutState() {
11484
+ if (this.operationType === "cut") {
11485
+ const graphStore = useGraphStore();
11486
+ graphStore.clearCutShapeIds();
11487
+ }
11488
+ }
11489
+ /**
11490
+ * 完全清除剪切状态和剪贴板数据
11491
+ * 当需要完全重置时调用(如按ESC取消操作)
11492
+ */
11493
+ static clearAll() {
11202
11494
  if (this.operationType === "cut") {
11203
11495
  const graphStore2 = useGraphStore();
11204
11496
  graphStore2.clearCutShapeIds();
@@ -11243,7 +11535,7 @@ const _ContextMenuUtils = class _ContextMenuUtils {
11243
11535
  /**
11244
11536
  * 处理粘贴
11245
11537
  */
11246
- static handlePaste(target) {
11538
+ static handlePaste(_target) {
11247
11539
  if (this.copiedShapes.length === 0) {
11248
11540
  return;
11249
11541
  }
@@ -11255,10 +11547,8 @@ const _ContextMenuUtils = class _ContextMenuUtils {
11255
11547
  if (this.operationType === "cut") {
11256
11548
  const graphStore = useGraphStore();
11257
11549
  graphStore.clearCutShapeIds();
11258
- graphStore.setCopiedShapesCount(0);
11259
- this.copiedShapes = [];
11260
- this.operationType = "copy";
11261
11550
  }
11551
+ this.clearClipboard();
11262
11552
  console.log("已粘贴的图元:", pastedShapes, "操作类型:", this.operationType);
11263
11553
  }
11264
11554
  /**
@@ -11709,7 +11999,8 @@ const DASHED_EDGE_SHAPES = [
11709
11999
  "Mitigates",
11710
12000
  "Protects",
11711
12001
  "MapsToCapability",
11712
- "ActualResourceRelationship"
12002
+ "ActualResourceRelationship",
12003
+ "ProjectSequence"
11713
12004
  ];
11714
12005
  const EDGES_WITH_KEYWORDS = [
11715
12006
  "Phases",
@@ -11738,7 +12029,8 @@ const EDGES_WITH_KEYWORDS = [
11738
12029
  "Mitigates",
11739
12030
  "Protects",
11740
12031
  "MapsToCapability",
11741
- "Exhibits"
12032
+ "Exhibits",
12033
+ "ProjectSequence"
11742
12034
  ];
11743
12035
  const EDGES_WITH_ARROWHEADS = [
11744
12036
  ...DASHED_EDGE_SHAPES,
@@ -12021,9 +12313,10 @@ let keyboardMovingShapeIds = /* @__PURE__ */ new Set();
12021
12313
  const KEYBOARD_MOVE_DEBOUNCE_DELAY = 1e3;
12022
12314
  const collectAffectedShapeIds = (graphStore, movedIds) => {
12023
12315
  const affectedIds = /* @__PURE__ */ new Set();
12316
+ const shapeMap = graphStore.shapeMap;
12024
12317
  movedIds.forEach((id) => {
12025
12318
  affectedIds.add(id);
12026
- const shape = graphStore.shapes.find((s2) => s2.id === id);
12319
+ const shape = shapeMap.get(id);
12027
12320
  if (!shape)
12028
12321
  return;
12029
12322
  if (shape.parenShapeId) {
@@ -12041,7 +12334,7 @@ const collectAffectedShapeIds = (graphStore, movedIds) => {
12041
12334
  let guard = 0;
12042
12335
  while (currentParentId && guard++ < 100) {
12043
12336
  affectedIds.add(currentParentId);
12044
- const parent = graphStore.shapes.find((s2) => s2.id === currentParentId);
12337
+ const parent = shapeMap.get(currentParentId);
12045
12338
  currentParentId = parent?.parenShapeId;
12046
12339
  }
12047
12340
  });
@@ -12051,7 +12344,8 @@ const emitKeyboardMoveEnd = (graphStore) => {
12051
12344
  if (keyboardMovingShapeIds.size === 0)
12052
12345
  return;
12053
12346
  const affectedIds = collectAffectedShapeIds(graphStore, keyboardMovingShapeIds);
12054
- const payloads = Array.from(affectedIds).map((id) => graphStore.shapes.find((s2) => s2.id === id)).filter(Boolean).map((s2) => _.cloneDeep(s2));
12347
+ const shapeMap = graphStore.shapeMap;
12348
+ const payloads = Array.from(affectedIds).map((id) => shapeMap.get(id)).filter(Boolean).map((s2) => _.cloneDeep(s2));
12055
12349
  if (payloads.length > 0) {
12056
12350
  eventBus.emit("shape-drag-end", payloads);
12057
12351
  }
@@ -12188,7 +12482,13 @@ const createKeyboardHandler = (config) => {
12188
12482
  }
12189
12483
  e.preventDefault();
12190
12484
  const step = 1;
12191
- const canvas = graphStore.shapes.find((shape) => shape.shapeType === "diagram");
12485
+ let canvas = null;
12486
+ for (const shape of graphStore.shapes) {
12487
+ if (shape.shapeType === "diagram") {
12488
+ canvas = shape;
12489
+ break;
12490
+ }
12491
+ }
12192
12492
  const canvasX = canvas?.bounds?.x || 0;
12193
12493
  const canvasY = canvas?.bounds?.y || 0;
12194
12494
  const canvasWidth = canvas?.bounds?.width || 300;
@@ -12197,7 +12497,13 @@ const createKeyboardHandler = (config) => {
12197
12497
  const canvasMinY = canvasY;
12198
12498
  const canvasMaxX = canvasWidth + canvasX;
12199
12499
  const canvasMaxY = canvasHeight + canvasY;
12200
- const selectedShapes = graphStore.selectedIds.map((id) => graphStore.shapes.find((s2) => s2.id === id)).filter((shape) => shape != null);
12500
+ const shapeMap = graphStore.shapeMap;
12501
+ const selectedShapes = [];
12502
+ for (const id of graphStore.selectedIds) {
12503
+ const shape = shapeMap.get(id);
12504
+ if (shape)
12505
+ selectedShapes.push(shape);
12506
+ }
12201
12507
  selectedShapes.forEach((shape) => {
12202
12508
  if (!keyboardMoveInitialBounds.has(shape.id)) {
12203
12509
  keyboardMoveInitialBounds.set(shape.id, { ...shape.bounds });
@@ -12241,7 +12547,7 @@ const createKeyboardHandler = (config) => {
12241
12547
  });
12242
12548
  const childIds = graphStore.parentChildMap.get(shape.id) || [];
12243
12549
  childIds.forEach((childId) => {
12244
- const child = graphStore.shapes.find((s2) => s2.id === childId);
12550
+ const child = shapeMap.get(childId);
12245
12551
  if (child && child.bounds) {
12246
12552
  if (graphStore.selectedIds.includes(child.id)) {
12247
12553
  return;
@@ -12691,7 +12997,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
12691
12997
  emits: InteractionLayerEmits,
12692
12998
  setup(__props, { expose: __expose, emit: __emit }) {
12693
12999
  useCssVars((_ctx) => ({
12694
- "65f24407": unref(graphStore).currentScale
13000
+ "c994dcd8": unref(graphStore).currentScale
12695
13001
  }));
12696
13002
  const props = __props;
12697
13003
  const emit = __emit;
@@ -12723,7 +13029,56 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
12723
13029
  const b2 = getBounds(s2);
12724
13030
  return { x: b2.x, y: b2.y, width: b2.width, height: b2.height };
12725
13031
  });
12726
- const allGhosts = computed(() => {
13032
+ const dragGhostRects = computed(() => {
13033
+ if (!graphStore.isDragging || isExternalCreateDragging.value)
13034
+ return [];
13035
+ const rects = [];
13036
+ const dragBase = graphStore.dragBase;
13037
+ const descendantsSnapshot = graphStore.dragDescendantsSnapshot;
13038
+ for (const ghost of graphStore.ghostShadow) {
13039
+ if (!ghost.bounds)
13040
+ continue;
13041
+ const baseBounds = dragBase[ghost.id];
13042
+ if (!baseBounds)
13043
+ continue;
13044
+ const dx = (ghost.bounds.x ?? 0) - baseBounds.x;
13045
+ const dy = (ghost.bounds.y ?? 0) - baseBounds.y;
13046
+ rects.push({
13047
+ id: ghost.id,
13048
+ x: ghost.bounds.x ?? 0,
13049
+ y: ghost.bounds.y ?? 0,
13050
+ width: ghost.bounds.width ?? 0,
13051
+ height: ghost.bounds.height ?? 0
13052
+ });
13053
+ const cachedDescendants = descendantsSnapshot.get(ghost.id);
13054
+ if (cachedDescendants && cachedDescendants.length > 0) {
13055
+ for (const desc of cachedDescendants) {
13056
+ rects.push({
13057
+ id: desc.id,
13058
+ x: desc.x + dx,
13059
+ y: desc.y + dy,
13060
+ width: desc.width,
13061
+ height: desc.height
13062
+ });
13063
+ }
13064
+ }
13065
+ }
13066
+ return rects;
13067
+ });
13068
+ const resizeGhosts = computed(() => resizeGhostShadow.value);
13069
+ const highlightedGhost = computed(() => {
13070
+ if (!highlightedShape.value)
13071
+ return null;
13072
+ return {
13073
+ ...highlightedShape.value,
13074
+ meta: {
13075
+ ...highlightedShape.value.meta,
13076
+ isHighlighted: true,
13077
+ isGhost: true
13078
+ }
13079
+ };
13080
+ });
13081
+ computed(() => {
12727
13082
  const byId = /* @__PURE__ */ new Map();
12728
13083
  if (!isExternalCreateDragging.value) {
12729
13084
  graphStore.ghostShadow.forEach((g) => byId.set(g.id, g));
@@ -13864,7 +14219,19 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
13864
14219
  }, null, 4), [
13865
14220
  [vShow, marqueeRect.value]
13866
14221
  ]),
13867
- (openBlock(true), createElementBlock(Fragment, null, renderList(allGhosts.value, (g) => {
14222
+ (openBlock(true), createElementBlock(Fragment, null, renderList(dragGhostRects.value, (g) => {
14223
+ return openBlock(), createElementBlock("div", {
14224
+ key: g.id,
14225
+ class: "ghost-outline",
14226
+ style: normalizeStyle({
14227
+ left: g.x + "px",
14228
+ top: g.y + "px",
14229
+ width: g.width + "px",
14230
+ height: g.height + "px"
14231
+ })
14232
+ }, null, 4);
14233
+ }), 128)),
14234
+ (openBlock(true), createElementBlock(Fragment, null, renderList(resizeGhosts.value, (g) => {
13868
14235
  return openBlock(), createBlock(resolveDynamicComponent(unref(getShapeComponent)(g)), {
13869
14236
  key: g.id,
13870
14237
  class: "ghost-shape",
@@ -13872,6 +14239,12 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
13872
14239
  style: normalizeStyle(getGhostShapeStyle(g))
13873
14240
  }, null, 8, ["shape", "style"]);
13874
14241
  }), 128)),
14242
+ highlightedGhost.value ? (openBlock(), createBlock(resolveDynamicComponent(unref(getShapeComponent)(highlightedGhost.value)), {
14243
+ key: highlightedGhost.value.id,
14244
+ class: "ghost-shape",
14245
+ shape: highlightedGhost.value,
14246
+ style: normalizeStyle(getGhostShapeStyle(highlightedGhost.value))
14247
+ }, null, 8, ["shape", "style"])) : createCommentVNode("", true),
13875
14248
  createVNode(NameEditor, {
13876
14249
  "selected-shape": unref(graphStore).selectedShape,
13877
14250
  "can-edit": !unref(graphStore).pendingNestedIds.includes(
@@ -13882,7 +14255,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
13882
14255
  "name-edit-manager": unref(nameEditManager)
13883
14256
  }, null, 8, ["selected-shape", "can-edit", "is-editing-name", "editing-name", "name-edit-manager"]),
13884
14257
  unref(selectedShape) && !isMultiSelected.value ? (openBlock(), createBlock(ContextMenu, {
13885
- key: 2,
14258
+ key: 3,
13886
14259
  visible: showContextMenu.value,
13887
14260
  "selected-shape": unref(selectedShape),
13888
14261
  position: contextMenuPosition.value,
@@ -13890,7 +14263,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
13890
14263
  onShowPropertyPanel: _cache[1] || (_cache[1] = ($event) => onLayerDblClick(true))
13891
14264
  }, null, 8, ["visible", "selected-shape", "position"])) : createCommentVNode("", true),
13892
14265
  _ctx.connectShapeData && _ctx.diagramBounds ? (openBlock(), createElementBlock("div", {
13893
- key: 3,
14266
+ key: 4,
13894
14267
  class: "connect-layer",
13895
14268
  style: normalizeStyle(layerStyle.value)
13896
14269
  }, [
@@ -13910,7 +14283,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
13910
14283
  ])
13911
14284
  ], 4)) : createCommentVNode("", true),
13912
14285
  unref(highlightOverlayBounds) ? (openBlock(), createElementBlock("div", {
13913
- key: 4,
14286
+ key: 5,
13914
14287
  class: normalizeClass(["highlight-overlay", unref(highlightOverlayColor)]),
13915
14288
  style: normalizeStyle({
13916
14289
  left: unref(highlightOverlayBounds).x + "px",
@@ -13923,8 +14296,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
13923
14296
  };
13924
14297
  }
13925
14298
  });
13926
- const InteractionLayer_vue_vue_type_style_index_0_scoped_24a22c8c_lang = "";
13927
- const InteractionLayer = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-24a22c8c"]]);
14299
+ const InteractionLayer_vue_vue_type_style_index_0_scoped_a7475c72_lang = "";
14300
+ const InteractionLayer = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-a7475c72"]]);
13928
14301
  const _hoisted_1$d = { class: "diagram-header" };
13929
14302
  const _hoisted_2$d = { class: "diagram-title" };
13930
14303
  const _sfc_main$d = /* @__PURE__ */ defineComponent({
@@ -16731,7 +17104,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16731
17104
  emits: ["shapes-property", "shapes-edit-name", "connect-end", "object-flow-connect-end", "action-button-click", "diagramDoubleClick", "model-type-property-id-button-click", "action-button-add", "scale-changed"],
16732
17105
  setup(__props, { expose: __expose, emit: __emit }) {
16733
17106
  useCssVars((_ctx) => ({
16734
- "18ea7fc8": currentScale.value
17107
+ "478247fa": currentScale.value
16735
17108
  }));
16736
17109
  registerShapes({
16737
17110
  StrategicTaxonomyDiagram,
@@ -16902,7 +17275,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16902
17275
  return 0;
16903
17276
  });
16904
17277
  clearEdgeStyleCache();
16905
- graphStore.shapes = [];
17278
+ graphStore.clearAll();
16906
17279
  graphStore.updateShapes(shapes2, "replace");
16907
17280
  nextTick(() => {
16908
17281
  graphStore.initializeAllEdgeEndpoints();
@@ -16925,7 +17298,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16925
17298
  let removed = 0;
16926
17299
  for (let i = arr.length - 1; i >= 0; i--) {
16927
17300
  if ("inert" in arr[i]) {
16928
- arr.splice(i, 1);
17301
+ graphStore.removeShape(arr[i].id);
16929
17302
  removed++;
16930
17303
  }
16931
17304
  }
@@ -17111,8 +17484,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17111
17484
  };
17112
17485
  }
17113
17486
  });
17114
- const graph_vue_vue_type_style_index_0_scoped_d4982c78_lang = "";
17115
- const GraphView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d4982c78"]]);
17487
+ const graph_vue_vue_type_style_index_0_scoped_f90f1704_lang = "";
17488
+ const GraphView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-f90f1704"]]);
17116
17489
  const MxSoseGraphPlugin = {
17117
17490
  install(app, options) {
17118
17491
  const externalPinia = options?.pinia || // 优先使用显式传入的