@tmagic/editor 1.2.0-beta.7 → 1.2.0-beta.8

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.
@@ -30,7 +30,7 @@
30
30
  const Gesto__default = /*#__PURE__*/_interopDefaultLegacy(Gesto);
31
31
  const KeyController__default = /*#__PURE__*/_interopDefaultLegacy(KeyController);
32
32
 
33
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
33
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
34
34
  __name: "Code",
35
35
  props: {
36
36
  model: null,
@@ -60,7 +60,7 @@
60
60
  }
61
61
  });
62
62
 
63
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
63
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
64
64
  __name: "CodeLink",
65
65
  props: {
66
66
  config: null,
@@ -171,15 +171,15 @@
171
171
  return CodeSelectOp2;
172
172
  })(CodeSelectOp || {});
173
173
 
174
- const _hoisted_1$d = { class: "tool-bar" };
175
- const _hoisted_2$5 = /* @__PURE__ */ vue.createElementVNode("path", {
174
+ const _hoisted_1$e = { class: "tool-bar" };
175
+ const _hoisted_2$6 = /* @__PURE__ */ vue.createElementVNode("path", {
176
176
  fill: "currentColor",
177
177
  d: "m23 12l-7.071 7.071l-1.414-1.414L20.172 12l-5.657-5.657l1.414-1.414L23 12zM3.828 12l5.657 5.657l-1.414 1.414L1 12l7.071-7.071l1.414 1.414L3.828 12z"
178
178
  }, null, -1);
179
179
  const _hoisted_3$3 = [
180
- _hoisted_2$5
180
+ _hoisted_2$6
181
181
  ];
182
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
182
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
183
183
  __name: "CodeSelect",
184
184
  props: {
185
185
  config: null,
@@ -214,11 +214,19 @@
214
214
  });
215
215
  const fieldKey = vue.ref("");
216
216
  const multiple = vue.ref(true);
217
- const combineIds = vue.ref([]);
218
217
  let lastTagSnapshot = lodashEs.cloneDeep(props.model[props.name]) || [];
218
+ let shouldWatch = true;
219
+ vue.watch(
220
+ () => props.model[props.name],
221
+ (selectValue) => {
222
+ if (shouldWatch) {
223
+ lastTagSnapshot = lodashEs.cloneDeep(selectValue) || [];
224
+ }
225
+ }
226
+ );
219
227
  vue.watchEffect(async () => {
220
228
  const combineNames = await Promise.all(
221
- combineIds.value.map(async (id) => {
229
+ props.model[props.name].map(async (id) => {
222
230
  const { name = "" } = await services?.codeBlockService.getCodeContentById(id) || {};
223
231
  return name;
224
232
  })
@@ -226,6 +234,7 @@
226
234
  fieldKey.value = combineNames.join("-");
227
235
  });
228
236
  const changeHandler = async (value) => {
237
+ shouldWatch = false;
229
238
  let codeIds = value;
230
239
  if (typeof value === "string") {
231
240
  multiple.value = false;
@@ -245,20 +254,16 @@
245
254
  }
246
255
  await services?.codeBlockService.setCombineRelation(id, diffValues, opFlag, props.prop);
247
256
  lastTagSnapshot = codeIds;
248
- await setCombineIds(codeIds);
249
- };
250
- const setCombineIds = async (codeIds) => {
251
- combineIds.value = codeIds;
252
- await services?.codeBlockService.setCombineIds(codeIds);
257
+ shouldWatch = true;
253
258
  };
254
259
  const viewHandler = async () => {
255
260
  if (props.model[props.name].length === 0) {
256
261
  design.tMagicMessage.error("\u8BF7\u5148\u7ED1\u5B9A\u4EE3\u7801\u5757");
257
262
  return;
258
263
  }
259
- await setCombineIds(props.model[props.name]);
264
+ await services?.codeBlockService.setCombineIds(props.model[props.name]);
260
265
  await services?.codeBlockService.setMode(CodeEditorMode.LIST);
261
- services?.codeBlockService.setCodeEditorContent(true, combineIds.value[0]);
266
+ services?.codeBlockService.setCodeEditorContent(true, props.model[props.name][0]);
262
267
  };
263
268
  return (_ctx, _cache) => {
264
269
  const _component_m_fields_select = vue.resolveComponent("m-fields-select");
@@ -278,7 +283,7 @@
278
283
  }, null, 8, ["config", "model", "prop", "name", "size"])
279
284
  ]),
280
285
  default: vue.withCtx(() => [
281
- vue.createElementVNode("div", _hoisted_1$d, [
286
+ vue.createElementVNode("div", _hoisted_1$e, [
282
287
  vue.createVNode(vue.unref(design.TMagicTooltip), {
283
288
  class: "tool-item",
284
289
  effect: "dark",
@@ -306,8 +311,8 @@
306
311
  }
307
312
  });
308
313
 
309
- const _hoisted_1$c = /* @__PURE__ */ vue.createTextVNode("\u53D6\u6D88");
310
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
314
+ const _hoisted_1$d = /* @__PURE__ */ vue.createTextVNode("\u53D6\u6D88");
315
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
311
316
  __name: "UISelect",
312
317
  props: {
313
318
  config: null,
@@ -370,7 +375,7 @@
370
375
  style: { "padding": "0" }
371
376
  }, {
372
377
  default: vue.withCtx(() => [
373
- _hoisted_1$c
378
+ _hoisted_1$d
374
379
  ]),
375
380
  _: 1
376
381
  }, 8, ["icon"])
@@ -418,7 +423,7 @@
418
423
 
419
424
  const UISelect_vue_vue_type_style_index_0_lang = '';
420
425
 
421
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
426
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
422
427
  __name: "CodeEditor",
423
428
  props: {
424
429
  initValues: null,
@@ -548,8 +553,8 @@
548
553
  };
549
554
  const getConfig = (key) => $TMAGIC_EDITOR[key];
550
555
 
551
- const _hoisted_1$b = ["src"];
552
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
556
+ const _hoisted_1$c = ["src"];
557
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
553
558
  __name: "Icon",
554
559
  props: {
555
560
  icon: null
@@ -569,7 +574,7 @@
569
574
  class: "magic-editor-icon"
570
575
  }, {
571
576
  default: vue.withCtx(() => [
572
- vue.createElementVNode("img", { src: __props.icon }, null, 8, _hoisted_1$b)
577
+ vue.createElementVNode("img", { src: __props.icon }, null, 8, _hoisted_1$c)
573
578
  ]),
574
579
  _: 1
575
580
  })) : typeof __props.icon === "string" ? (vue.openBlock(), vue.createElementBlock("i", {
@@ -2430,6 +2435,11 @@
2430
2435
  stage.on("sort", (ev) => {
2431
2436
  editorService.sort(ev.src, ev.dist);
2432
2437
  });
2438
+ stage.on("select-parent", () => {
2439
+ const parent = editorService.get("parent");
2440
+ editorService.select(parent);
2441
+ editorService.get("stage").select(parent.id);
2442
+ });
2433
2443
  stage.on("changeGuides", (e) => {
2434
2444
  uiService.set("showGuides", true);
2435
2445
  if (!root.value || !page.value)
@@ -2446,10 +2456,10 @@
2446
2456
  return stage;
2447
2457
  };
2448
2458
 
2449
- const _hoisted_1$a = { class: "m-editor-empty-panel" };
2450
- const _hoisted_2$4 = { class: "m-editor-empty-content" };
2459
+ const _hoisted_1$b = { class: "m-editor-empty-panel" };
2460
+ const _hoisted_2$5 = { class: "m-editor-empty-content" };
2451
2461
  const _hoisted_3$2 = /* @__PURE__ */ vue.createElementVNode("p", null, "\u65B0\u589E\u9875\u9762", -1);
2452
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
2462
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
2453
2463
  __name: "AddPageBox",
2454
2464
  setup(__props) {
2455
2465
  const services = vue.inject("services");
@@ -2463,14 +2473,14 @@
2463
2473
  });
2464
2474
  };
2465
2475
  return (_ctx, _cache) => {
2466
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
2467
- vue.createElementVNode("div", _hoisted_2$4, [
2476
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
2477
+ vue.createElementVNode("div", _hoisted_2$5, [
2468
2478
  vue.createElementVNode("div", {
2469
2479
  class: "m-editor-empty-button",
2470
2480
  onClick: clickHandler
2471
2481
  }, [
2472
2482
  vue.createElementVNode("div", null, [
2473
- vue.createVNode(_sfc_main$n, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
2483
+ vue.createVNode(_sfc_main$o, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
2474
2484
  ]),
2475
2485
  _hoisted_3$2
2476
2486
  ])
@@ -2480,7 +2490,7 @@
2480
2490
  }
2481
2491
  });
2482
2492
 
2483
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
2493
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
2484
2494
  __name: "Resizer",
2485
2495
  emits: ["change"],
2486
2496
  setup(__props, { emit }) {
@@ -2513,7 +2523,7 @@
2513
2523
  }
2514
2524
  });
2515
2525
 
2516
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
2526
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
2517
2527
  __name: "Layout",
2518
2528
  props: {
2519
2529
  left: null,
@@ -2592,7 +2602,7 @@
2592
2602
  }, [
2593
2603
  vue.renderSlot(_ctx.$slots, "left")
2594
2604
  ], 6),
2595
- vue.createVNode(_sfc_main$l, { onChange: changeLeft })
2605
+ vue.createVNode(_sfc_main$m, { onChange: changeLeft })
2596
2606
  ], 64)) : vue.createCommentVNode("", true),
2597
2607
  vue.createElementVNode("div", {
2598
2608
  class: vue.normalizeClass(["m-editor-layout-center", __props.centerClass]),
@@ -2601,7 +2611,7 @@
2601
2611
  vue.renderSlot(_ctx.$slots, "center")
2602
2612
  ], 6),
2603
2613
  typeof props.right !== "undefined" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
2604
- vue.createVNode(_sfc_main$l, { onChange: changeRight }),
2614
+ vue.createVNode(_sfc_main$m, { onChange: changeRight }),
2605
2615
  vue.createElementVNode("div", {
2606
2616
  class: vue.normalizeClass(["m-editor-layout-right", __props.rightClass]),
2607
2617
  style: vue.normalizeStyle(`width: ${__props.right}px`)
@@ -2614,8 +2624,8 @@
2614
2624
  }
2615
2625
  });
2616
2626
 
2617
- const _hoisted_1$9 = { class: "m-editor" };
2618
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
2627
+ const _hoisted_1$a = { class: "m-editor" };
2628
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
2619
2629
  __name: "Framework",
2620
2630
  props: {
2621
2631
  codeOptions: { default: () => ({}) }
@@ -2682,7 +2692,7 @@
2682
2692
  };
2683
2693
  return (_ctx, _cache) => {
2684
2694
  const _component_magic_code_editor = vue.resolveComponent("magic-code-editor");
2685
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
2695
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
2686
2696
  vue.renderSlot(_ctx.$slots, "nav", { class: "m-editor-nav-menu" }),
2687
2697
  vue.unref(showSrc) ? (vue.openBlock(), vue.createBlock(_component_magic_code_editor, {
2688
2698
  key: 0,
@@ -2690,7 +2700,7 @@
2690
2700
  "init-values": vue.unref(root),
2691
2701
  options: __props.codeOptions,
2692
2702
  onSave: saveCode
2693
- }, null, 8, ["init-values", "options"])) : (vue.openBlock(), vue.createBlock(_sfc_main$k, {
2703
+ }, null, 8, ["init-values", "options"])) : (vue.openBlock(), vue.createBlock(_sfc_main$l, {
2694
2704
  key: 1,
2695
2705
  class: "m-editor-content",
2696
2706
  "left-class": "m-editor-framework-left",
@@ -2709,7 +2719,7 @@
2709
2719
  ]),
2710
2720
  center: vue.withCtx(() => [
2711
2721
  vue.unref(pageLength) > 0 ? vue.renderSlot(_ctx.$slots, "workspace", { key: 0 }) : vue.renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [
2712
- vue.createVNode(_sfc_main$m)
2722
+ vue.createVNode(_sfc_main$n)
2713
2723
  ])
2714
2724
  ]),
2715
2725
  _: 2
@@ -2731,12 +2741,12 @@
2731
2741
  }
2732
2742
  });
2733
2743
 
2734
- const _hoisted_1$8 = {
2744
+ const _hoisted_1$9 = {
2735
2745
  key: 1,
2736
2746
  class: "menu-item-text"
2737
2747
  };
2738
- const _hoisted_2$3 = { class: "el-dropdown-link menubar-menu-button" };
2739
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
2748
+ const _hoisted_2$4 = { class: "el-dropdown-link menubar-menu-button" };
2749
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
2740
2750
  __name: "ToolButton",
2741
2751
  props: {
2742
2752
  data: { default: () => ({
@@ -2812,7 +2822,7 @@
2812
2822
  __props.data.type === "divider" ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicDivider), {
2813
2823
  key: 0,
2814
2824
  direction: __props.data.direction || "vertical"
2815
- }, null, 8, ["direction"])) : __props.data.type === "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, vue.toDisplayString(__props.data.text), 1)) : __props.data.type === "button" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
2825
+ }, null, 8, ["direction"])) : __props.data.type === "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, vue.toDisplayString(__props.data.text), 1)) : __props.data.type === "button" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
2816
2826
  __props.data.tooltip ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicTooltip), {
2817
2827
  key: 0,
2818
2828
  effect: "dark",
@@ -2826,7 +2836,7 @@
2826
2836
  disabled: vue.unref(disabled)
2827
2837
  }, {
2828
2838
  default: vue.withCtx(() => [
2829
- __props.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
2839
+ __props.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$o, {
2830
2840
  key: 0,
2831
2841
  icon: __props.data.icon
2832
2842
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -2843,7 +2853,7 @@
2843
2853
  disabled: vue.unref(disabled)
2844
2854
  }, {
2845
2855
  default: vue.withCtx(() => [
2846
- __props.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
2856
+ __props.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$o, {
2847
2857
  key: 0,
2848
2858
  icon: __props.data.icon
2849
2859
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -2876,7 +2886,7 @@
2876
2886
  })) : vue.createCommentVNode("", true)
2877
2887
  ]),
2878
2888
  default: vue.withCtx(() => [
2879
- vue.createElementVNode("span", _hoisted_2$3, [
2889
+ vue.createElementVNode("span", _hoisted_2$4, [
2880
2890
  vue.createTextVNode(vue.toDisplayString(__props.data.text), 1),
2881
2891
  vue.createVNode(vue.unref(design.TMagicIcon), { class: "el-icon--right" }, {
2882
2892
  default: vue.withCtx(() => [
@@ -2893,7 +2903,7 @@
2893
2903
  }
2894
2904
  });
2895
2905
 
2896
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2906
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
2897
2907
  __name: "NavMenu",
2898
2908
  props: {
2899
2909
  data: { default: () => ({}) },
@@ -3049,7 +3059,7 @@
3049
3059
  style: vue.normalizeStyle(`width: ${vue.unref(columnWidth)?.[key]}px`)
3050
3060
  }, [
3051
3061
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(buttons)[key], (item, index) => {
3052
- return vue.openBlock(), vue.createBlock(_sfc_main$i, {
3062
+ return vue.openBlock(), vue.createBlock(_sfc_main$j, {
3053
3063
  data: item,
3054
3064
  key: index
3055
3065
  }, null, 8, ["data"]);
@@ -3061,8 +3071,8 @@
3061
3071
  }
3062
3072
  });
3063
3073
 
3064
- const _hoisted_1$7 = { class: "m-editor-props-panel" };
3065
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
3074
+ const _hoisted_1$8 = { class: "m-editor-props-panel" };
3075
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
3066
3076
  __name: "PropsPanel",
3067
3077
  emits: ["mounted"],
3068
3078
  setup(__props, { expose, emit }) {
@@ -3106,7 +3116,7 @@
3106
3116
  expose({ submit });
3107
3117
  return (_ctx, _cache) => {
3108
3118
  const _component_m_form = vue.resolveComponent("m-form");
3109
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
3119
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
3110
3120
  vue.renderSlot(_ctx.$slots, "props-panel-header"),
3111
3121
  vue.createVNode(_component_m_form, {
3112
3122
  ref_key: "configForm",
@@ -3123,8 +3133,8 @@
3123
3133
  }
3124
3134
  });
3125
3135
 
3126
- const _hoisted_1$6 = ["id"];
3127
- const _hoisted_2$2 = { class: "list-item" };
3136
+ const _hoisted_1$7 = ["id"];
3137
+ const _hoisted_2$3 = { class: "list-item" };
3128
3138
  const _hoisted_3$1 = { class: "code-name" };
3129
3139
  const _hoisted_4$1 = { class: "code-name-wrapper" };
3130
3140
  const _hoisted_5$1 = /* @__PURE__ */ vue.createElementVNode("div", { class: "code-name-label" }, "\u4EE3\u7801\u5757\u540D\u79F0", -1);
@@ -3140,7 +3150,7 @@
3140
3150
  class: "m-editor-content-bottom"
3141
3151
  };
3142
3152
  const _hoisted_11 = /* @__PURE__ */ vue.createTextVNode("\u5173\u95ED");
3143
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
3153
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
3144
3154
  __name: "CodeBlockEditor",
3145
3155
  setup(__props) {
3146
3156
  const services = vue.inject("services");
@@ -3212,7 +3222,7 @@
3212
3222
  "append-to-body": true
3213
3223
  }, {
3214
3224
  default: vue.withCtx(() => [
3215
- vue.createVNode(_sfc_main$k, {
3225
+ vue.createVNode(_sfc_main$l, {
3216
3226
  left: left.value,
3217
3227
  "onUpdate:left": _cache[1] || (_cache[1] = ($event) => left.value = $event),
3218
3228
  "min-left": 45,
@@ -3241,7 +3251,7 @@
3241
3251
  ]),
3242
3252
  default: vue.withCtx(() => [
3243
3253
  vue.createElementVNode("div", _hoisted_6$1, [
3244
- codeConfig.value ? (vue.openBlock(), vue.createBlock(_sfc_main$o, {
3254
+ codeConfig.value ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
3245
3255
  key: 0,
3246
3256
  ref_key: "codeEditor",
3247
3257
  ref: codeEditor,
@@ -3314,10 +3324,10 @@
3314
3324
  id: data.id,
3315
3325
  class: "list-container"
3316
3326
  }, [
3317
- vue.createElementVNode("div", _hoisted_2$2, [
3327
+ vue.createElementVNode("div", _hoisted_2$3, [
3318
3328
  vue.createElementVNode("div", _hoisted_3$1, vue.toDisplayString(data.name) + "\uFF08" + vue.toDisplayString(data.id) + "\uFF09", 1)
3319
3329
  ])
3320
- ], 8, _hoisted_1$6)
3330
+ ], 8, _hoisted_1$7)
3321
3331
  ]),
3322
3332
  _: 1
3323
3333
  }, 8, ["data", "current-node-key"])) : vue.createCommentVNode("", true)
@@ -3331,8 +3341,8 @@
3331
3341
  }
3332
3342
  });
3333
3343
 
3334
- const _hoisted_1$5 = { class: "m-editor-code-block-list" };
3335
- const _hoisted_2$1 = { class: "code-header-wrapper" };
3344
+ const _hoisted_1$6 = { class: "m-editor-code-block-list" };
3345
+ const _hoisted_2$2 = { class: "code-header-wrapper" };
3336
3346
  const _hoisted_3 = /* @__PURE__ */ vue.createTextVNode("\u65B0\u589E");
3337
3347
  const _hoisted_4 = ["id"];
3338
3348
  const _hoisted_5 = { class: "list-item" };
@@ -3353,7 +3363,7 @@
3353
3363
  d: "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"
3354
3364
  })
3355
3365
  ], -1);
3356
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
3366
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
3357
3367
  __name: "CodeBlockList",
3358
3368
  props: {
3359
3369
  customError: null
@@ -3481,9 +3491,9 @@
3481
3491
  stage?.select(compId);
3482
3492
  };
3483
3493
  return (_ctx, _cache) => {
3484
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
3494
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
3485
3495
  vue.renderSlot(_ctx.$slots, "code-block-panel-header", {}, () => [
3486
- vue.createElementVNode("div", _hoisted_2$1, [
3496
+ vue.createElementVNode("div", _hoisted_2$2, [
3487
3497
  vue.createVNode(vue.unref(design.TMagicInput), {
3488
3498
  class: vue.normalizeClass([vue.unref(editable) ? "code-filter-input" : "code-filter-input-no-btn"]),
3489
3499
  size: "small",
@@ -3532,7 +3542,7 @@
3532
3542
  placement: "bottom"
3533
3543
  }, {
3534
3544
  default: vue.withCtx(() => [
3535
- vue.createVNode(_sfc_main$n, {
3545
+ vue.createVNode(_sfc_main$o, {
3536
3546
  icon: vue.unref(editable) ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
3537
3547
  class: "edit-icon",
3538
3548
  onClick: vue.withModifiers(($event) => editCode(`${data.id}`), ["stop"])
@@ -3547,7 +3557,7 @@
3547
3557
  placement: "bottom"
3548
3558
  }, {
3549
3559
  default: vue.withCtx(() => [
3550
- vue.createVNode(_sfc_main$n, {
3560
+ vue.createVNode(_sfc_main$o, {
3551
3561
  icon: vue.unref(iconsVue.Link),
3552
3562
  class: "edit-icon",
3553
3563
  onClick: vue.withModifiers(($event) => toggleCombineRelation(data), ["stop"])
@@ -3562,7 +3572,7 @@
3562
3572
  placement: "bottom"
3563
3573
  }, {
3564
3574
  default: vue.withCtx(() => [
3565
- vue.createVNode(_sfc_main$n, {
3575
+ vue.createVNode(_sfc_main$o, {
3566
3576
  icon: vue.unref(iconsVue.Close),
3567
3577
  class: "edit-icon",
3568
3578
  onClick: vue.withModifiers(($event) => deleteCode(`${data.id}`), ["stop"])
@@ -3597,7 +3607,7 @@
3597
3607
  ]),
3598
3608
  _: 3
3599
3609
  }, 8, ["data"])) : vue.createCommentVNode("", true),
3600
- vue.createVNode(_sfc_main$f, null, {
3610
+ vue.createVNode(_sfc_main$g, null, {
3601
3611
  "code-block-edit-panel-header": vue.withCtx(({ id }) => [
3602
3612
  vue.renderSlot(_ctx.$slots, "code-block-edit-panel-header", { id })
3603
3613
  ]),
@@ -3608,8 +3618,8 @@
3608
3618
  }
3609
3619
  });
3610
3620
 
3611
- const _hoisted_1$4 = ["onClick", "onDragstart"];
3612
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
3621
+ const _hoisted_1$5 = ["onClick", "onDragstart"];
3622
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
3613
3623
  __name: "ComponentListPanel",
3614
3624
  setup(__props) {
3615
3625
  const searchText = vue.ref("");
@@ -3699,7 +3709,7 @@
3699
3709
  name: `${index}`
3700
3710
  }, {
3701
3711
  title: vue.withCtx(() => [
3702
- vue.createVNode(_sfc_main$n, { icon: vue.unref(iconsVue.Grid) }, null, 8, ["icon"]),
3712
+ vue.createVNode(_sfc_main$o, { icon: vue.unref(iconsVue.Grid) }, null, 8, ["icon"]),
3703
3713
  vue.createTextVNode(vue.toDisplayString(group.title), 1)
3704
3714
  ]),
3705
3715
  default: vue.withCtx(() => [
@@ -3714,7 +3724,7 @@
3714
3724
  onDrag: dragHandler
3715
3725
  }, [
3716
3726
  vue.renderSlot(_ctx.$slots, "component-list-item", { component: item }, () => [
3717
- vue.createVNode(_sfc_main$n, {
3727
+ vue.createVNode(_sfc_main$o, {
3718
3728
  icon: item.icon
3719
3729
  }, null, 8, ["icon"]),
3720
3730
  vue.createVNode(vue.unref(design.TMagicTooltip), {
@@ -3728,7 +3738,7 @@
3728
3738
  _: 2
3729
3739
  }, 1032, ["content"])
3730
3740
  ])
3731
- ], 40, _hoisted_1$4);
3741
+ ], 40, _hoisted_1$5);
3732
3742
  }), 128))
3733
3743
  ]),
3734
3744
  _: 2
@@ -3745,7 +3755,7 @@
3745
3755
  }
3746
3756
  });
3747
3757
 
3748
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
3758
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
3749
3759
  __name: "ContentMenu",
3750
3760
  props: {
3751
3761
  menuData: { default: () => [] },
@@ -3834,7 +3844,7 @@
3834
3844
  }, [
3835
3845
  vue.createElementVNode("div", null, [
3836
3846
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.menuData, (item, index) => {
3837
- return vue.openBlock(), vue.createBlock(_sfc_main$i, {
3847
+ return vue.openBlock(), vue.createBlock(_sfc_main$j, {
3838
3848
  "event-type": "mouseup",
3839
3849
  data: item,
3840
3850
  key: index,
@@ -3858,7 +3868,7 @@
3858
3868
  }
3859
3869
  });
3860
3870
 
3861
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
3871
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
3862
3872
  __name: "LayerMenu",
3863
3873
  setup(__props, { expose }) {
3864
3874
  const services = vue.inject("services");
@@ -3946,7 +3956,7 @@
3946
3956
  show
3947
3957
  });
3948
3958
  return (_ctx, _cache) => {
3949
- return vue.openBlock(), vue.createBlock(_sfc_main$c, {
3959
+ return vue.openBlock(), vue.createBlock(_sfc_main$d, {
3950
3960
  "menu-data": vue.unref(menuData),
3951
3961
  ref_key: "menu",
3952
3962
  ref: menu,
@@ -3956,8 +3966,8 @@
3956
3966
  }
3957
3967
  });
3958
3968
 
3959
- const _hoisted_1$3 = ["id", "onMouseenter"];
3960
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
3969
+ const _hoisted_1$4 = ["id", "onMouseenter"];
3970
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
3961
3971
  __name: "LayerPanel",
3962
3972
  setup(__props) {
3963
3973
  const throttleTime = 150;
@@ -4240,12 +4250,12 @@
4240
4250
  }, () => [
4241
4251
  vue.createElementVNode("span", null, vue.toDisplayString(`${data.name} (${data.id})`), 1)
4242
4252
  ])
4243
- ], 42, _hoisted_1$3)
4253
+ ], 42, _hoisted_1$4)
4244
4254
  ]),
4245
4255
  _: 3
4246
4256
  }, 8, ["default-expanded-keys", "data", "show-checkbox"])) : vue.createCommentVNode("", true),
4247
4257
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
4248
- vue.createVNode(_sfc_main$b, {
4258
+ vue.createVNode(_sfc_main$c, {
4249
4259
  ref_key: "menu",
4250
4260
  ref: menu
4251
4261
  }, null, 512)
@@ -4257,11 +4267,11 @@
4257
4267
  }
4258
4268
  });
4259
4269
 
4260
- const _hoisted_1$2 = {
4270
+ const _hoisted_1$3 = {
4261
4271
  key: 1,
4262
4272
  class: "magic-editor-tab-panel-title"
4263
4273
  };
4264
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
4274
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
4265
4275
  __name: "TabPane",
4266
4276
  props: {
4267
4277
  data: null
@@ -4278,7 +4288,7 @@
4278
4288
  type: "component",
4279
4289
  icon: iconsVue.Coin,
4280
4290
  text: "\u7EC4\u4EF6",
4281
- component: _sfc_main$d,
4291
+ component: _sfc_main$e,
4282
4292
  slots: {}
4283
4293
  };
4284
4294
  case "layer":
@@ -4286,7 +4296,7 @@
4286
4296
  type: "component",
4287
4297
  icon: iconsVue.Files,
4288
4298
  text: "\u5DF2\u9009\u7EC4\u4EF6",
4289
- component: _sfc_main$a,
4299
+ component: _sfc_main$b,
4290
4300
  slots: {}
4291
4301
  };
4292
4302
  case "code-block":
@@ -4294,7 +4304,7 @@
4294
4304
  type: "component",
4295
4305
  icon: iconsVue.EditPen,
4296
4306
  text: "\u4EE3\u7801\u7F16\u8F91",
4297
- component: _sfc_main$e,
4307
+ component: _sfc_main$f,
4298
4308
  slots: {}
4299
4309
  };
4300
4310
  default:
@@ -4310,11 +4320,11 @@
4310
4320
  (vue.openBlock(), vue.createElementBlock("div", {
4311
4321
  key: vue.unref(config).text
4312
4322
  }, [
4313
- vue.unref(config).icon ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
4323
+ vue.unref(config).icon ? (vue.openBlock(), vue.createBlock(_sfc_main$o, {
4314
4324
  key: 0,
4315
4325
  icon: vue.unref(config).icon
4316
4326
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
4317
- vue.unref(config).text ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, vue.toDisplayString(vue.unref(config).text), 1)) : vue.createCommentVNode("", true)
4327
+ vue.unref(config).text ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, vue.toDisplayString(vue.unref(config).text), 1)) : vue.createCommentVNode("", true)
4318
4328
  ]))
4319
4329
  ]),
4320
4330
  default: vue.withCtx(() => [
@@ -4390,7 +4400,7 @@
4390
4400
  }
4391
4401
  });
4392
4402
 
4393
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
4403
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
4394
4404
  __name: "Sidebar",
4395
4405
  props: {
4396
4406
  data: { default: () => ({ type: "tabs", status: "\u7EC4\u4EF6", items: ["component-list", "layer", "code-block"] }) }
@@ -4418,7 +4428,7 @@
4418
4428
  }, {
4419
4429
  default: vue.withCtx(() => [
4420
4430
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.data.items, (item, index) => {
4421
- return vue.openBlock(), vue.createBlock(_sfc_main$9, {
4431
+ return vue.openBlock(), vue.createBlock(_sfc_main$a, {
4422
4432
  key: index,
4423
4433
  data: item
4424
4434
  }, vue.createSlots({ _: 2 }, [
@@ -4479,6 +4489,48 @@
4479
4489
  }
4480
4490
  });
4481
4491
 
4492
+ const _hoisted_1$2 = {
4493
+ key: 0,
4494
+ class: "m-editor-breadcrumb"
4495
+ };
4496
+ const _hoisted_2$1 = { key: 0 };
4497
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
4498
+ __name: "Breadcrumb",
4499
+ setup(__props) {
4500
+ const services = vue.inject("services");
4501
+ const editorService = services?.editorService;
4502
+ const node = vue.computed(() => editorService?.get("node"));
4503
+ const nodes = vue.computed(() => editorService?.get("nodes") || []);
4504
+ const root = vue.computed(() => editorService?.get("root"));
4505
+ const path = vue.computed(() => utils.getNodePath(node.value?.id || "", root.value?.items || []));
4506
+ const select = async (node2) => {
4507
+ await editorService?.select(node2);
4508
+ editorService?.get("stage")?.select(node2.id);
4509
+ };
4510
+ return (_ctx, _cache) => {
4511
+ return vue.unref(nodes).length === 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
4512
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(path), (item, index) => {
4513
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
4514
+ key: item.id
4515
+ }, [
4516
+ vue.createVNode(vue.unref(design.TMagicButton), {
4517
+ text: "",
4518
+ disabled: item.id === vue.unref(node)?.id,
4519
+ onClick: ($event) => select(item)
4520
+ }, {
4521
+ default: vue.withCtx(() => [
4522
+ vue.createTextVNode(vue.toDisplayString(item.name), 1)
4523
+ ]),
4524
+ _: 2
4525
+ }, 1032, ["disabled", "onClick"]),
4526
+ index < vue.unref(path).length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, "/")) : vue.createCommentVNode("", true)
4527
+ ], 64);
4528
+ }), 128))
4529
+ ])) : vue.createCommentVNode("", true);
4530
+ };
4531
+ }
4532
+ });
4533
+
4482
4534
  const _hoisted_1$1 = {
4483
4535
  key: 1,
4484
4536
  style: { "width": "21px" }
@@ -4565,14 +4617,14 @@
4565
4617
  class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
4566
4618
  onClick: addPage
4567
4619
  }, [
4568
- vue.createVNode(_sfc_main$n, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
4620
+ vue.createVNode(_sfc_main$o, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
4569
4621
  ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1)),
4570
4622
  canScroll.value ? (vue.openBlock(), vue.createElementBlock("div", {
4571
4623
  key: 2,
4572
4624
  class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
4573
4625
  onClick: _cache[0] || (_cache[0] = ($event) => scroll("left"))
4574
4626
  }, [
4575
- vue.createVNode(_sfc_main$n, { icon: vue.unref(iconsVue.ArrowLeftBold) }, null, 8, ["icon"])
4627
+ vue.createVNode(_sfc_main$o, { icon: vue.unref(iconsVue.ArrowLeftBold) }, null, 8, ["icon"])
4576
4628
  ])) : vue.createCommentVNode("", true),
4577
4629
  vue.unref(pageLength) ? (vue.openBlock(), vue.createElementBlock("div", {
4578
4630
  key: 3,
@@ -4588,7 +4640,7 @@
4588
4640
  class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
4589
4641
  onClick: _cache[1] || (_cache[1] = ($event) => scroll("right"))
4590
4642
  }, [
4591
- vue.createVNode(_sfc_main$n, { icon: vue.unref(iconsVue.ArrowRightBold) }, null, 8, ["icon"])
4643
+ vue.createVNode(_sfc_main$o, { icon: vue.unref(iconsVue.ArrowRightBold) }, null, 8, ["icon"])
4592
4644
  ])) : vue.createCommentVNode("", true)
4593
4645
  ], 512);
4594
4646
  };
@@ -4657,7 +4709,7 @@
4657
4709
  default: vue.withCtx(() => [
4658
4710
  vue.createElementVNode("div", null, [
4659
4711
  vue.renderSlot(_ctx.$slots, "page-bar-popover", { page: item }, () => [
4660
- vue.createVNode(_sfc_main$i, {
4712
+ vue.createVNode(_sfc_main$j, {
4661
4713
  data: {
4662
4714
  type: "button",
4663
4715
  text: "\u590D\u5236",
@@ -4665,7 +4717,7 @@
4665
4717
  handler: () => copy(item)
4666
4718
  }
4667
4719
  }, null, 8, ["data"]),
4668
- vue.createVNode(_sfc_main$i, {
4720
+ vue.createVNode(_sfc_main$j, {
4669
4721
  data: {
4670
4722
  type: "button",
4671
4723
  text: "\u5220\u9664",
@@ -5131,7 +5183,7 @@
5131
5183
  };
5132
5184
  expose({ show });
5133
5185
  return (_ctx, _cache) => {
5134
- return vue.openBlock(), vue.createBlock(_sfc_main$c, {
5186
+ return vue.openBlock(), vue.createBlock(_sfc_main$d, {
5135
5187
  "menu-data": menuData,
5136
5188
  ref_key: "menu",
5137
5189
  ref: menu
@@ -5396,6 +5448,7 @@
5396
5448
  ref_key: "workspace",
5397
5449
  ref: workspace
5398
5450
  }, [
5451
+ vue.createVNode(_sfc_main$8),
5399
5452
  vue.renderSlot(_ctx.$slots, "stage", {}, () => [
5400
5453
  (vue.openBlock(), vue.createBlock(_sfc_main$2, {
5401
5454
  key: vue.unref(page)?.id
@@ -5439,11 +5492,11 @@
5439
5492
  const _sfc_main = vue.defineComponent({
5440
5493
  name: "m-editor",
5441
5494
  components: {
5442
- NavMenu: _sfc_main$h,
5443
- Sidebar: _sfc_main$8,
5495
+ NavMenu: _sfc_main$i,
5496
+ Sidebar: _sfc_main$9,
5444
5497
  Workspace: _sfc_main$1,
5445
- PropsPanel: _sfc_main$g,
5446
- Framework: _sfc_main$j
5498
+ PropsPanel: _sfc_main$h,
5499
+ Framework: _sfc_main$k
5447
5500
  },
5448
5501
  props: {
5449
5502
  modelValue: {
@@ -5739,34 +5792,34 @@
5739
5792
  app.config.globalProperties.$TMAGIC_EDITOR = option;
5740
5793
  setConfig(option);
5741
5794
  app.component(Editor.name, Editor);
5742
- app.component("m-fields-ui-select", _sfc_main$p);
5743
- app.component("m-fields-code-link", _sfc_main$r);
5744
- app.component("m-fields-vs-code", _sfc_main$s);
5745
- app.component("magic-code-editor", _sfc_main$o);
5746
- app.component("m-fields-code-select", _sfc_main$q);
5795
+ app.component("m-fields-ui-select", _sfc_main$q);
5796
+ app.component("m-fields-code-link", _sfc_main$s);
5797
+ app.component("m-fields-vs-code", _sfc_main$t);
5798
+ app.component("magic-code-editor", _sfc_main$p);
5799
+ app.component("m-fields-code-select", _sfc_main$r);
5747
5800
  }
5748
5801
  };
5749
5802
 
5750
5803
  exports.COPY_STORAGE_KEY = COPY_STORAGE_KEY;
5751
- exports.CodeBlockList = _sfc_main$e;
5804
+ exports.CodeBlockList = _sfc_main$f;
5752
5805
  exports.CodeDeleteErrorType = CodeDeleteErrorType;
5753
5806
  exports.CodeEditorMode = CodeEditorMode;
5754
- exports.CodeSelect = _sfc_main$q;
5807
+ exports.CodeSelect = _sfc_main$r;
5755
5808
  exports.CodeSelectOp = CodeSelectOp;
5756
5809
  exports.ColumnLayout = ColumnLayout;
5757
- exports.ComponentListPanel = _sfc_main$d;
5758
- exports.ContentMenu = _sfc_main$c;
5810
+ exports.ComponentListPanel = _sfc_main$e;
5811
+ exports.ContentMenu = _sfc_main$d;
5759
5812
  exports.Fixed2Other = Fixed2Other;
5760
5813
  exports.H_GUIDE_LINE_STORAGE_KEY = H_GUIDE_LINE_STORAGE_KEY;
5761
- exports.Icon = _sfc_main$n;
5814
+ exports.Icon = _sfc_main$o;
5762
5815
  exports.Keys = Keys;
5763
5816
  exports.LayerOffset = LayerOffset;
5764
- exports.LayerPanel = _sfc_main$a;
5817
+ exports.LayerPanel = _sfc_main$b;
5765
5818
  exports.Layout = Layout;
5766
- exports.PropsPanel = _sfc_main$g;
5767
- exports.TMagicCodeEditor = _sfc_main$o;
5819
+ exports.PropsPanel = _sfc_main$h;
5820
+ exports.TMagicCodeEditor = _sfc_main$p;
5768
5821
  exports.TMagicEditor = Editor;
5769
- exports.ToolButton = _sfc_main$i;
5822
+ exports.ToolButton = _sfc_main$j;
5770
5823
  exports.V_GUIDE_LINE_STORAGE_KEY = V_GUIDE_LINE_STORAGE_KEY;
5771
5824
  exports.change2Fixed = change2Fixed;
5772
5825
  exports.codeBlockService = codeBlockService;