@tmagic/editor 1.3.0-beta.0 → 1.3.0-beta.1

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.
Files changed (41) hide show
  1. package/dist/style.css +29 -1
  2. package/dist/tmagic-editor.js +1014 -644
  3. package/dist/tmagic-editor.js.map +1 -1
  4. package/dist/tmagic-editor.umd.cjs +1032 -662
  5. package/dist/tmagic-editor.umd.cjs.map +1 -1
  6. package/package.json +10 -10
  7. package/src/components/CodeBlockEditor.vue +15 -6
  8. package/src/components/ContentMenu.vue +88 -42
  9. package/src/components/Resizer.vue +8 -30
  10. package/src/components/SplitView.vue +3 -2
  11. package/src/fields/DataSourceFields.vue +10 -0
  12. package/src/fields/DataSourceMethods.vue +1 -0
  13. package/src/hooks/use-getso.ts +35 -0
  14. package/src/icons/PinIcon.vue +25 -0
  15. package/src/icons/PinnedIcon.vue +25 -0
  16. package/src/index.ts +2 -0
  17. package/src/layouts/workspace/Workspace.vue +1 -1
  18. package/src/layouts/workspace/viewer/NodeListMenu.vue +159 -0
  19. package/src/layouts/workspace/viewer/NodeListMenuTitle.vue +68 -0
  20. package/src/layouts/workspace/{Stage.vue → viewer/Stage.vue} +2 -0
  21. package/src/theme/content-menu.scss +25 -1
  22. package/src/theme/index.scss +8 -0
  23. package/src/type.ts +2 -0
  24. package/src/utils/data-source/formConfigs/http.ts +9 -0
  25. package/src/utils/props.ts +20 -10
  26. package/types/components/CodeBlockEditor.vue.d.ts +2 -0
  27. package/types/components/ContentMenu.vue.d.ts +27 -8
  28. package/types/components/Resizer.vue.d.ts +1 -3
  29. package/types/hooks/use-code-block-edit.d.ts +7 -0
  30. package/types/hooks/use-data-source-method.d.ts +7 -0
  31. package/types/hooks/use-getso.d.ts +5 -0
  32. package/types/icons/PinIcon.vue.d.ts +2 -0
  33. package/types/icons/PinnedIcon.vue.d.ts +2 -0
  34. package/types/index.d.ts +1 -0
  35. package/types/layouts/PropsPanel.vue.d.ts +1 -1
  36. package/types/layouts/workspace/viewer/NodeListMenu.vue.d.ts +15 -0
  37. package/types/layouts/workspace/viewer/NodeListMenuTitle.vue.d.ts +15 -0
  38. package/types/layouts/workspace/{Stage.vue.d.ts → viewer/Stage.vue.d.ts} +1 -1
  39. package/types/layouts/workspace/{ViewerMenu.vue.d.ts → viewer/ViewerMenu.vue.d.ts} +1 -1
  40. package/types/type.d.ts +2 -0
  41. /package/src/layouts/workspace/{ViewerMenu.vue → viewer/ViewerMenu.vue} +0 -0
@@ -23,10 +23,10 @@
23
23
 
24
24
  const monaco__namespace = /*#__PURE__*/_interopNamespaceDefault(monaco);
25
25
 
26
- const _hoisted_1$t = {
26
+ const _hoisted_1$w = {
27
27
  class: /* @__PURE__ */ vue.normalizeClass(`magic-code-editor`)
28
28
  };
29
- const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
29
+ const _sfc_main$Q = /* @__PURE__ */ vue.defineComponent({
30
30
  ...{
31
31
  name: "MEditorCodeEditor"
32
32
  },
@@ -173,7 +173,7 @@
173
173
  }
174
174
  });
175
175
  return (_ctx, _cache) => {
176
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
176
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [
177
177
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
178
178
  to: "body",
179
179
  disabled: !fullScreen.value
@@ -201,7 +201,7 @@
201
201
  }
202
202
  });
203
203
 
204
- const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
204
+ const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
205
205
  ...{
206
206
  name: "MEditorCode"
207
207
  },
@@ -225,7 +225,7 @@
225
225
  emit("change", v);
226
226
  };
227
227
  return (_ctx, _cache) => {
228
- return vue.openBlock(), vue.createBlock(_sfc_main$M, {
228
+ return vue.openBlock(), vue.createBlock(_sfc_main$Q, {
229
229
  height: _ctx.config.height,
230
230
  "init-values": _ctx.model[_ctx.name],
231
231
  language: _ctx.config.language,
@@ -245,7 +245,7 @@
245
245
  };
246
246
  const getConfig = (key) => $TMAGIC_EDITOR[key];
247
247
 
248
- const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
248
+ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
249
249
  ...{
250
250
  name: "MEditorCodeLink"
251
251
  },
@@ -324,7 +324,7 @@
324
324
  }
325
325
  });
326
326
 
327
- const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
327
+ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
328
328
  ...{
329
329
  name: "MEditorCodeSelect"
330
330
  },
@@ -396,11 +396,11 @@
396
396
  }
397
397
  });
398
398
 
399
- const _hoisted_1$s = { style: { "display": "flex", "margin-bottom": "10px" } };
400
- const _hoisted_2$k = { style: { "flex": "1" } };
401
- const _hoisted_3$8 = { style: { "flex": "1" } };
402
- const _hoisted_4$4 = { class: "dialog-footer" };
403
- const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
399
+ const _hoisted_1$v = { style: { "display": "flex", "margin-bottom": "10px" } };
400
+ const _hoisted_2$n = { style: { "flex": "1" } };
401
+ const _hoisted_3$a = { style: { "flex": "1" } };
402
+ const _hoisted_4$6 = { class: "dialog-footer" };
403
+ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
404
404
  ...{
405
405
  name: "MEditorCodeBlockEditor"
406
406
  },
@@ -408,7 +408,8 @@
408
408
  props: {
409
409
  content: {},
410
410
  disabled: { type: Boolean },
411
- isDataSource: { type: Boolean }
411
+ isDataSource: { type: Boolean },
412
+ dataSourceType: {}
412
413
  },
413
414
  emits: ["submit"],
414
415
  setup(__props, { expose: __expose, emit }) {
@@ -468,7 +469,8 @@
468
469
  const functionConfig = vue.computed(() => [
469
470
  {
470
471
  text: "名称",
471
- name: "name"
472
+ name: "name",
473
+ rules: [{ required: true, message: "请输入名称", trigger: "blur" }]
472
474
  },
473
475
  {
474
476
  text: "描述",
@@ -478,10 +480,17 @@
478
480
  text: "执行时机",
479
481
  name: "timing",
480
482
  type: "select",
481
- options: [
482
- { text: "初始化前", value: "beforeInit" },
483
- { text: "初始化后", value: "afterInit" }
484
- ],
483
+ options: () => {
484
+ const options = [
485
+ { text: "初始化前", value: "beforeInit" },
486
+ { text: "初始化后", value: "afterInit" }
487
+ ];
488
+ if (props.dataSourceType !== "base") {
489
+ options.push({ text: "请求前", value: "beforeRequest" });
490
+ options.push({ text: "请求后", value: "afterRequest" });
491
+ }
492
+ return options;
493
+ },
485
494
  display: () => props.isDataSource
486
495
  },
487
496
  {
@@ -610,7 +619,7 @@
610
619
  fullscreen: ""
611
620
  }, {
612
621
  footer: vue.withCtx(() => [
613
- vue.createElementVNode("span", _hoisted_4$4, [
622
+ vue.createElementVNode("span", _hoisted_4$6, [
614
623
  vue.createVNode(vue.unref(design.TMagicButton), {
615
624
  size: "small",
616
625
  onClick: _cache[1] || (_cache[1] = ($event) => difVisible.value = false)
@@ -633,8 +642,8 @@
633
642
  ])
634
643
  ]),
635
644
  default: vue.withCtx(() => [
636
- vue.createElementVNode("div", _hoisted_1$s, [
637
- vue.createElementVNode("div", _hoisted_2$k, [
645
+ vue.createElementVNode("div", _hoisted_1$v, [
646
+ vue.createElementVNode("div", _hoisted_2$n, [
638
647
  vue.createVNode(vue.unref(design.TMagicTag), {
639
648
  size: "small",
640
649
  type: "info"
@@ -645,7 +654,7 @@
645
654
  _: 1
646
655
  })
647
656
  ]),
648
- vue.createElementVNode("div", _hoisted_3$8, [
657
+ vue.createElementVNode("div", _hoisted_3$a, [
649
658
  vue.createVNode(vue.unref(design.TMagicTag), {
650
659
  size: "small",
651
660
  type: "success"
@@ -657,7 +666,7 @@
657
666
  })
658
667
  ])
659
668
  ]),
660
- difVisible.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
669
+ difVisible.value ? (vue.openBlock(), vue.createBlock(_sfc_main$Q, {
661
670
  key: 0,
662
671
  ref_key: "magicVsEditor",
663
672
  ref: magicVsEditor,
@@ -711,6 +720,15 @@
711
720
  type: "switch",
712
721
  defaultValue: true
713
722
  },
723
+ {
724
+ name: "responseOptions",
725
+ items: [
726
+ {
727
+ name: "dataPath",
728
+ text: "数据路径"
729
+ }
730
+ ]
731
+ },
714
732
  {
715
733
  type: "fieldset",
716
734
  name: "options",
@@ -1263,21 +1281,28 @@
1263
1281
  items: [
1264
1282
  {
1265
1283
  name: "value",
1266
- display: (vm, { model }) => !["between", "not_between", "is", "not"].includes(model.op)
1267
- },
1268
- {
1269
- name: "value",
1270
- type: "select",
1284
+ type: (mForm, { model }) => {
1285
+ const [id, field] = model.field;
1286
+ const ds = dataSourceService.getDataSourceById(id);
1287
+ const type = ds?.fields.find((f) => f.name === field)?.type;
1288
+ if (type === "number") {
1289
+ return "number";
1290
+ }
1291
+ if (type === "boolean") {
1292
+ return "select";
1293
+ }
1294
+ return "text";
1295
+ },
1271
1296
  options: [
1272
1297
  { text: "true", value: true },
1273
1298
  { text: "false", value: false }
1274
1299
  ],
1275
- display: (vm, { model }) => ["is", "not"].includes(model.op)
1300
+ display: (vm, { model }) => !["between", "not_between"].includes(model.op)
1276
1301
  },
1277
1302
  {
1278
1303
  name: "range",
1279
1304
  type: "number-range",
1280
- display: (vm, { model }) => ["between", "not_between"].includes(model.op) && !["is", "not"].includes(model.op)
1305
+ display: (vm, { model }) => ["between", "not_between"].includes(model.op)
1281
1306
  }
1282
1307
  ]
1283
1308
  }
@@ -2757,7 +2782,7 @@
2757
2782
  return newNode;
2758
2783
  };
2759
2784
 
2760
- const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
2785
+ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
2761
2786
  ...{
2762
2787
  name: "MEditorCodeParams"
2763
2788
  },
@@ -2806,8 +2831,8 @@
2806
2831
  }
2807
2832
  });
2808
2833
 
2809
- const _hoisted_1$r = ["src"];
2810
- const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
2834
+ const _hoisted_1$u = ["src"];
2835
+ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
2811
2836
  ...{
2812
2837
  name: "MEditorIcon"
2813
2838
  },
@@ -2830,7 +2855,7 @@
2830
2855
  class: "magic-editor-icon"
2831
2856
  }, {
2832
2857
  default: vue.withCtx(() => [
2833
- vue.createElementVNode("img", { src: _ctx.icon }, null, 8, _hoisted_1$r)
2858
+ vue.createElementVNode("img", { src: _ctx.icon }, null, 8, _hoisted_1$u)
2834
2859
  ]),
2835
2860
  _: 1
2836
2861
  })) : typeof _ctx.icon === "string" ? (vue.openBlock(), vue.createElementBlock("i", {
@@ -2907,9 +2932,9 @@
2907
2932
  };
2908
2933
  };
2909
2934
 
2910
- const _hoisted_1$q = { class: "m-fields-code-select-col" };
2911
- const _hoisted_2$j = { class: "code-select-container" };
2912
- const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
2935
+ const _hoisted_1$t = { class: "m-fields-code-select-col" };
2936
+ const _hoisted_2$m = { class: "code-select-container" };
2937
+ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
2913
2938
  ...{
2914
2939
  name: "MEditorCodeSelectCol"
2915
2940
  },
@@ -2983,22 +3008,22 @@
2983
3008
  const { codeBlockEditor, codeConfig, editCode, submitCodeBlockHandler } = useCodeBlockEdit(services?.codeBlockService);
2984
3009
  return (_ctx, _cache) => {
2985
3010
  const _component_m_form_container = vue.resolveComponent("m-form-container");
2986
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
2987
- vue.createElementVNode("div", _hoisted_2$j, [
3011
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
3012
+ vue.createElementVNode("div", _hoisted_2$m, [
2988
3013
  vue.createVNode(_component_m_form_container, {
2989
3014
  class: "select",
2990
3015
  config: selectConfig,
2991
3016
  model: _ctx.model,
2992
3017
  onChange: onParamsChangeHandler
2993
3018
  }, null, 8, ["model"]),
2994
- _ctx.model[_ctx.name] ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
3019
+ _ctx.model[_ctx.name] ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
2995
3020
  key: 0,
2996
3021
  class: "icon",
2997
3022
  icon: !_ctx.disabled ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
2998
3023
  onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(editCode)(_ctx.model[_ctx.name]))
2999
3024
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
3000
3025
  ]),
3001
- paramsConfig.value.length ? (vue.openBlock(), vue.createBlock(_sfc_main$H, {
3026
+ paramsConfig.value.length ? (vue.openBlock(), vue.createBlock(_sfc_main$L, {
3002
3027
  key: 0,
3003
3028
  name: "params",
3004
3029
  model: _ctx.model,
@@ -3006,7 +3031,7 @@
3006
3031
  "params-config": paramsConfig.value,
3007
3032
  onChange: onParamsChangeHandler
3008
3033
  }, null, 8, ["model", "size", "params-config"])) : vue.createCommentVNode("", true),
3009
- vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
3034
+ vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
3010
3035
  key: 1,
3011
3036
  ref_key: "codeBlockEditor",
3012
3037
  ref: codeBlockEditor,
@@ -3019,9 +3044,9 @@
3019
3044
  }
3020
3045
  });
3021
3046
 
3022
- const _hoisted_1$p = { class: "m-editor-data-source-fields" };
3023
- const _hoisted_2$i = { class: "m-editor-data-source-fields-footer" };
3024
- const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
3047
+ const _hoisted_1$s = { class: "m-editor-data-source-fields" };
3048
+ const _hoisted_2$l = { class: "m-editor-data-source-fields-footer" };
3049
+ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
3025
3050
  ...{
3026
3051
  name: "MEditorDataSourceFields"
3027
3052
  },
@@ -3156,7 +3181,18 @@
3156
3181
  },
3157
3182
  {
3158
3183
  name: "defaultValue",
3159
- text: "默认值"
3184
+ text: "默认值",
3185
+ type: (mForm, { model }) => {
3186
+ if (model.type === "number")
3187
+ return "number";
3188
+ if (model.type === "boolean")
3189
+ return "select";
3190
+ return "string";
3191
+ },
3192
+ options: [
3193
+ { text: "true", value: true },
3194
+ { text: "false", value: false }
3195
+ ]
3160
3196
  },
3161
3197
  {
3162
3198
  name: "enable",
@@ -3172,12 +3208,12 @@
3172
3208
  }
3173
3209
  ];
3174
3210
  return (_ctx, _cache) => {
3175
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
3211
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
3176
3212
  vue.createVNode(vue.unref(table.MagicTable), {
3177
3213
  data: _ctx.model[_ctx.name],
3178
3214
  columns: fieldColumns
3179
3215
  }, null, 8, ["data"]),
3180
- vue.createElementVNode("div", _hoisted_2$i, [
3216
+ vue.createElementVNode("div", _hoisted_2$l, [
3181
3217
  vue.createVNode(vue.unref(design.TMagicButton), {
3182
3218
  size: "small",
3183
3219
  type: "primary",
@@ -3208,7 +3244,7 @@
3208
3244
  }
3209
3245
  });
3210
3246
 
3211
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
3247
+ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
3212
3248
  __name: "DataSourceFieldSelect",
3213
3249
  props: {
3214
3250
  config: {},
@@ -3255,10 +3291,10 @@
3255
3291
  }
3256
3292
  });
3257
3293
 
3258
- const _hoisted_1$o = { style: { "display": "flex", "flex-direction": "column", "line-height": "1.2em" } };
3259
- const _hoisted_2$h = { style: { "font-size": "10px", "color": "rgba(0, 0, 0, 0.6)" } };
3260
- const _hoisted_3$7 = { class: "el-input__inner" };
3261
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
3294
+ const _hoisted_1$r = { style: { "display": "flex", "flex-direction": "column", "line-height": "1.2em" } };
3295
+ const _hoisted_2$k = { style: { "font-size": "10px", "color": "rgba(0, 0, 0, 0.6)" } };
3296
+ const _hoisted_3$9 = { class: "el-input__inner" };
3297
+ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
3262
3298
  ...{
3263
3299
  name: "MEditorDataSourceInput"
3264
3300
  },
@@ -3447,12 +3483,12 @@
3447
3483
  }
3448
3484
  ), {
3449
3485
  suffix: vue.withCtx(() => [
3450
- vue.createVNode(_sfc_main$G, { icon: vue.unref(iconsVue.Coin) }, null, 8, ["icon"])
3486
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.Coin) }, null, 8, ["icon"])
3451
3487
  ]),
3452
3488
  default: vue.withCtx(({ item }) => [
3453
- vue.createElementVNode("div", _hoisted_1$o, [
3489
+ vue.createElementVNode("div", _hoisted_1$r, [
3454
3490
  vue.createElementVNode("div", null, vue.toDisplayString(item.text), 1),
3455
- vue.createElementVNode("span", _hoisted_2$h, vue.toDisplayString(item.value), 1)
3491
+ vue.createElementVNode("span", _hoisted_2$k, vue.toDisplayString(item.value), 1)
3456
3492
  ])
3457
3493
  ]),
3458
3494
  _: 1
@@ -3464,7 +3500,7 @@
3464
3500
  vue.createElementVNode("div", {
3465
3501
  class: vue.normalizeClass(`tmagic-data-source-input-text-wrapper el-input__wrapper ${isFocused.value ? " is-focus" : ""}`)
3466
3502
  }, [
3467
- vue.createElementVNode("div", _hoisted_3$7, [
3503
+ vue.createElementVNode("div", _hoisted_3$9, [
3468
3504
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(displayState.value, (item, index) => {
3469
3505
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
3470
3506
  item.type === "text" ? (vue.openBlock(), vue.createElementBlock("span", {
@@ -3482,7 +3518,7 @@
3482
3518
  }, 1032, ["size"])) : vue.createCommentVNode("", true)
3483
3519
  ], 64);
3484
3520
  }), 256)),
3485
- vue.createVNode(_sfc_main$G, {
3521
+ vue.createVNode(_sfc_main$K, {
3486
3522
  class: "tmagic-data-source-input-icon",
3487
3523
  icon: vue.unref(iconsVue.Coin)
3488
3524
  }, null, 8, ["icon"])
@@ -3565,9 +3601,9 @@
3565
3601
  };
3566
3602
  };
3567
3603
 
3568
- const _hoisted_1$n = { class: "m-editor-data-source-methods" };
3569
- const _hoisted_2$g = { class: "m-editor-data-source-methods-footer" };
3570
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
3604
+ const _hoisted_1$q = { class: "m-editor-data-source-methods" };
3605
+ const _hoisted_2$j = { class: "m-editor-data-source-methods-footer" };
3606
+ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
3571
3607
  ...{
3572
3608
  name: "MEditorDataSourceMethods"
3573
3609
  },
@@ -3636,12 +3672,12 @@
3636
3672
  emit("change", props.model[props.name]);
3637
3673
  };
3638
3674
  return (_ctx, _cache) => {
3639
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
3675
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [
3640
3676
  vue.createVNode(vue.unref(table.MagicTable), {
3641
3677
  data: _ctx.model[_ctx.name],
3642
3678
  columns: methodColumns
3643
3679
  }, null, 8, ["data"]),
3644
- vue.createElementVNode("div", _hoisted_2$g, [
3680
+ vue.createElementVNode("div", _hoisted_2$j, [
3645
3681
  vue.createVNode(vue.unref(design.TMagicButton), {
3646
3682
  size: "small",
3647
3683
  type: "primary",
@@ -3655,23 +3691,24 @@
3655
3691
  _: 1
3656
3692
  }, 8, ["disabled"])
3657
3693
  ]),
3658
- vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
3694
+ vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
3659
3695
  key: 0,
3660
3696
  ref_key: "codeBlockEditor",
3661
3697
  ref: codeBlockEditor,
3662
3698
  disabled: _ctx.disabled,
3663
3699
  content: vue.unref(codeConfig),
3664
3700
  "is-data-source": true,
3701
+ "data-source-type": _ctx.model.type,
3665
3702
  onSubmit: submitCodeHandler
3666
- }, null, 8, ["disabled", "content"])) : vue.createCommentVNode("", true)
3703
+ }, null, 8, ["disabled", "content", "data-source-type"])) : vue.createCommentVNode("", true)
3667
3704
  ]);
3668
3705
  };
3669
3706
  }
3670
3707
  });
3671
3708
 
3672
- const _hoisted_1$m = { class: "m-fields-data-source-method-select" };
3673
- const _hoisted_2$f = { class: "data-source-method-select-container" };
3674
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
3709
+ const _hoisted_1$p = { class: "m-fields-data-source-method-select" };
3710
+ const _hoisted_2$i = { class: "data-source-method-select-container" };
3711
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
3675
3712
  ...{
3676
3713
  name: "MEditorDataSourceMethodSelect"
3677
3714
  },
@@ -3749,22 +3786,22 @@
3749
3786
  };
3750
3787
  return (_ctx, _cache) => {
3751
3788
  const _component_m_form_container = vue.resolveComponent("m-form-container");
3752
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
3753
- vue.createElementVNode("div", _hoisted_2$f, [
3789
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [
3790
+ vue.createElementVNode("div", _hoisted_2$i, [
3754
3791
  vue.createVNode(_component_m_form_container, {
3755
3792
  class: "select",
3756
3793
  config: cascaderConfig,
3757
3794
  model: _ctx.model,
3758
3795
  onChange: onChangeHandler
3759
3796
  }, null, 8, ["model"]),
3760
- _ctx.model[_ctx.name] ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
3797
+ _ctx.model[_ctx.name] ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
3761
3798
  key: 0,
3762
3799
  class: "icon",
3763
3800
  icon: !_ctx.disabled ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
3764
3801
  onClick: editCodeHandler
3765
3802
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
3766
3803
  ]),
3767
- paramsConfig.value.length ? (vue.openBlock(), vue.createBlock(_sfc_main$H, {
3804
+ paramsConfig.value.length ? (vue.openBlock(), vue.createBlock(_sfc_main$L, {
3768
3805
  key: 0,
3769
3806
  name: "params",
3770
3807
  model: _ctx.model,
@@ -3773,7 +3810,7 @@
3773
3810
  "params-config": paramsConfig.value,
3774
3811
  onChange: onChangeHandler
3775
3812
  }, null, 8, ["model", "size", "disabled", "params-config"])) : vue.createCommentVNode("", true),
3776
- vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
3813
+ vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
3777
3814
  key: 1,
3778
3815
  ref_key: "codeBlockEditor",
3779
3816
  ref: codeBlockEditor,
@@ -3786,7 +3823,7 @@
3786
3823
  }
3787
3824
  });
3788
3825
 
3789
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
3826
+ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
3790
3827
  ...{
3791
3828
  name: "MEditorDataSourceSelect"
3792
3829
  },
@@ -3841,12 +3878,12 @@
3841
3878
  }
3842
3879
  });
3843
3880
 
3844
- const _hoisted_1$l = { class: "m-fields-event-select" };
3845
- const _hoisted_2$e = {
3881
+ const _hoisted_1$o = { class: "m-fields-event-select" };
3882
+ const _hoisted_2$h = {
3846
3883
  key: 1,
3847
3884
  class: "fullWidth"
3848
3885
  };
3849
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
3886
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
3850
3887
  ...{
3851
3888
  name: "MEditorEventSelect"
3852
3889
  },
@@ -4036,7 +4073,7 @@
4036
4073
  const _component_m_form_table = vue.resolveComponent("m-form-table");
4037
4074
  const _component_m_form_container = vue.resolveComponent("m-form-container");
4038
4075
  const _component_m_form_panel = vue.resolveComponent("m-form-panel");
4039
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
4076
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [
4040
4077
  isOldVersion.value ? (vue.openBlock(), vue.createBlock(_component_m_form_table, {
4041
4078
  key: 0,
4042
4079
  ref: "eventForm",
@@ -4046,7 +4083,7 @@
4046
4083
  model: _ctx.model,
4047
4084
  config: tableConfig.value,
4048
4085
  onChange: onChangeHandler
4049
- }, null, 8, ["size", "disabled", "model", "config"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$e, [
4086
+ }, null, 8, ["size", "disabled", "model", "config"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$h, [
4050
4087
  vue.createVNode(vue.unref(design.TMagicButton), {
4051
4088
  class: "create-button",
4052
4089
  type: "primary",
@@ -4095,9 +4132,9 @@
4095
4132
  }
4096
4133
  });
4097
4134
 
4098
- const _hoisted_1$k = { class: "m-fields-key-value" };
4099
- const _hoisted_2$d = /* @__PURE__ */ vue.createElementVNode("span", { class: "m-fileds-key-value-delimiter" }, ":", -1);
4100
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
4135
+ const _hoisted_1$n = { class: "m-fields-key-value" };
4136
+ const _hoisted_2$g = /* @__PURE__ */ vue.createElementVNode("span", { class: "m-fileds-key-value-delimiter" }, ":", -1);
4137
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
4101
4138
  ...{
4102
4139
  name: "MEditorKeyValue"
4103
4140
  },
@@ -4142,7 +4179,7 @@
4142
4179
  records.value.splice(index, 1);
4143
4180
  };
4144
4181
  return (_ctx, _cache) => {
4145
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
4182
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
4146
4183
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(records.value, (item, index) => {
4147
4184
  return vue.openBlock(), vue.createElementBlock("div", {
4148
4185
  class: "m-fields-key-value-item",
@@ -4156,7 +4193,7 @@
4156
4193
  size: _ctx.size,
4157
4194
  onChange: keyChangeHandler
4158
4195
  }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled", "size"]),
4159
- _hoisted_2$d,
4196
+ _hoisted_2$g,
4160
4197
  vue.createVNode(vue.unref(design.TMagicInput), {
4161
4198
  placeholder: "value",
4162
4199
  modelValue: records.value[index][1],
@@ -4195,12 +4232,12 @@
4195
4232
  }
4196
4233
  });
4197
4234
 
4198
- const _hoisted_1$j = {
4235
+ const _hoisted_1$m = {
4199
4236
  key: 1,
4200
4237
  class: "m-fields-ui-select",
4201
4238
  style: { "display": "flex" }
4202
4239
  };
4203
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
4240
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
4204
4241
  ...{
4205
4242
  name: "MEditorUISelect"
4206
4243
  },
@@ -4289,7 +4326,7 @@
4289
4326
  ]),
4290
4327
  _: 1
4291
4328
  }, 8, ["icon", "disabled", "size"])
4292
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
4329
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
4293
4330
  val.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
4294
4331
  vue.createVNode(vue.unref(design.TMagicTooltip), {
4295
4332
  content: "清除",
@@ -4358,7 +4395,35 @@
4358
4395
 
4359
4396
  const UISelect_vue_vue_type_style_index_0_lang = '';
4360
4397
 
4361
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
4398
+ const useGetSo = (target, emit) => {
4399
+ let getso;
4400
+ const isDraging = vue.ref(false);
4401
+ vue.onMounted(() => {
4402
+ if (!target.value)
4403
+ return;
4404
+ getso = new Gesto(target.value, {
4405
+ container: window,
4406
+ pinchOutside: true
4407
+ }).on("drag", (e) => {
4408
+ if (!target.value)
4409
+ return;
4410
+ emit("change", e);
4411
+ }).on("dragStart", () => {
4412
+ isDraging.value = true;
4413
+ }).on("dragEnd", () => {
4414
+ isDraging.value = false;
4415
+ });
4416
+ });
4417
+ vue.onUnmounted(() => {
4418
+ getso?.unset();
4419
+ isDraging.value = false;
4420
+ });
4421
+ return {
4422
+ isDraging
4423
+ };
4424
+ };
4425
+
4426
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
4362
4427
  ...{
4363
4428
  name: "MEditorResizer"
4364
4429
  },
@@ -4366,33 +4431,12 @@
4366
4431
  emits: ["change"],
4367
4432
  setup(__props, { emit }) {
4368
4433
  const target = vue.ref();
4369
- const isDraging = vue.ref(false);
4370
- let getso;
4371
- vue.onMounted(() => {
4372
- if (!target.value)
4373
- return;
4374
- getso = new Gesto(target.value, {
4375
- container: window,
4376
- pinchOutside: true
4377
- }).on("drag", (e) => {
4378
- if (!target.value)
4379
- return;
4380
- emit("change", e.deltaX);
4381
- }).on("dragStart", () => {
4382
- isDraging.value = true;
4383
- }).on("dragEnd", () => {
4384
- isDraging.value = false;
4385
- });
4386
- });
4387
- vue.onUnmounted(() => {
4388
- getso?.unset();
4389
- isDraging.value = false;
4390
- });
4434
+ const { isDraging } = useGetSo(target, emit);
4391
4435
  return (_ctx, _cache) => {
4392
4436
  return vue.openBlock(), vue.createElementBlock("span", {
4393
4437
  ref_key: "target",
4394
4438
  ref: target,
4395
- class: vue.normalizeClass(["m-editor-resizer", { "m-editor-resizer-draging": isDraging.value }])
4439
+ class: vue.normalizeClass(["m-editor-resizer", { "m-editor-resizer-draging": vue.unref(isDraging) }])
4396
4440
  }, [
4397
4441
  vue.renderSlot(_ctx.$slots, "default")
4398
4442
  ], 2);
@@ -4400,7 +4444,7 @@
4400
4444
  }
4401
4445
  });
4402
4446
 
4403
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
4447
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
4404
4448
  ...{
4405
4449
  name: "MEditorLayout"
4406
4450
  },
@@ -4467,7 +4511,7 @@
4467
4511
  resizerObserver.disconnect();
4468
4512
  });
4469
4513
  const center = vue.ref(0);
4470
- const changeLeft = (deltaX) => {
4514
+ const changeLeft = ({ deltaX }) => {
4471
4515
  if (typeof props.left === "undefined")
4472
4516
  return;
4473
4517
  let left = Math.max(props.left + deltaX, props.minLeft) || 0;
@@ -4483,7 +4527,7 @@
4483
4527
  right: columnWidth.right
4484
4528
  });
4485
4529
  };
4486
- const changeRight = (deltaX) => {
4530
+ const changeRight = ({ deltaX }) => {
4487
4531
  if (typeof props.right === "undefined")
4488
4532
  return;
4489
4533
  let right = Math.max(props.right - deltaX, props.minRight) || 0;
@@ -4512,7 +4556,7 @@
4512
4556
  }, [
4513
4557
  vue.renderSlot(_ctx.$slots, "left")
4514
4558
  ], 6),
4515
- vue.createVNode(_sfc_main$v, { onChange: changeLeft })
4559
+ vue.createVNode(_sfc_main$z, { onChange: changeLeft })
4516
4560
  ], 64)) : vue.createCommentVNode("", true),
4517
4561
  vue.createElementVNode("div", {
4518
4562
  class: vue.normalizeClass(["m-editor-layout-center", _ctx.centerClass]),
@@ -4521,7 +4565,7 @@
4521
4565
  vue.renderSlot(_ctx.$slots, "center")
4522
4566
  ], 6),
4523
4567
  hasRight.value && _ctx.$slots.right ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
4524
- vue.createVNode(_sfc_main$v, { onChange: changeRight }),
4568
+ vue.createVNode(_sfc_main$z, { onChange: changeRight }),
4525
4569
  vue.createElementVNode("div", {
4526
4570
  class: vue.normalizeClass(["m-editor-layout-right", _ctx.rightClass]),
4527
4571
  style: vue.normalizeStyle(`width: ${_ctx.right}px`)
@@ -4534,10 +4578,10 @@
4534
4578
  }
4535
4579
  });
4536
4580
 
4537
- const _hoisted_1$i = { class: "m-editor-empty-panel" };
4538
- const _hoisted_2$c = { class: "m-editor-empty-content" };
4539
- const _hoisted_3$6 = /* @__PURE__ */ vue.createElementVNode("p", null, "新增页面", -1);
4540
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
4581
+ const _hoisted_1$l = { class: "m-editor-empty-panel" };
4582
+ const _hoisted_2$f = { class: "m-editor-empty-content" };
4583
+ const _hoisted_3$8 = /* @__PURE__ */ vue.createElementVNode("p", null, "新增页面", -1);
4584
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
4541
4585
  ...{
4542
4586
  name: "MEditorAddPageBox"
4543
4587
  },
@@ -4557,16 +4601,16 @@
4557
4601
  });
4558
4602
  };
4559
4603
  return (_ctx, _cache) => {
4560
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
4561
- vue.createElementVNode("div", _hoisted_2$c, [
4604
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
4605
+ vue.createElementVNode("div", _hoisted_2$f, [
4562
4606
  vue.createElementVNode("div", {
4563
4607
  class: "m-editor-empty-button",
4564
4608
  onClick: clickHandler
4565
4609
  }, [
4566
4610
  vue.createElementVNode("div", null, [
4567
- vue.createVNode(_sfc_main$G, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
4611
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
4568
4612
  ]),
4569
- _hoisted_3$6
4613
+ _hoisted_3$8
4570
4614
  ])
4571
4615
  ])
4572
4616
  ]);
@@ -4578,7 +4622,7 @@
4578
4622
  const DEFAULT_RIGHT_COLUMN_WIDTH = 480;
4579
4623
  const LEFT_COLUMN_WIDTH_STORAGE_KEY = "$MagicEditorLeftColumnWidthData";
4580
4624
  const RIGHT_COLUMN_WIDTH_STORAGE_KEY = "$MagicEditorRightColumnWidthData";
4581
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
4625
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
4582
4626
  ...{
4583
4627
  name: "MEditorFramework"
4584
4628
  },
@@ -4655,13 +4699,13 @@
4655
4699
  vue.renderSlot(_ctx.$slots, "nav"),
4656
4700
  vue.renderSlot(_ctx.$slots, "content-before"),
4657
4701
  showSrc.value ? vue.renderSlot(_ctx.$slots, "src-code", { key: 0 }, () => [
4658
- vue.createVNode(_sfc_main$M, {
4702
+ vue.createVNode(_sfc_main$Q, {
4659
4703
  class: "m-editor-content",
4660
4704
  "init-values": root.value,
4661
4705
  options: vue.unref(codeOptions),
4662
4706
  onSave: saveCode
4663
4707
  }, null, 8, ["init-values", "options"])
4664
- ]) : (vue.openBlock(), vue.createBlock(_sfc_main$u, {
4708
+ ]) : (vue.openBlock(), vue.createBlock(_sfc_main$y, {
4665
4709
  key: 1,
4666
4710
  class: "m-editor-content",
4667
4711
  "left-class": "m-editor-framework-left",
@@ -4680,7 +4724,7 @@
4680
4724
  ]),
4681
4725
  center: vue.withCtx(() => [
4682
4726
  pageLength.value > 0 ? vue.renderSlot(_ctx.$slots, "workspace", { key: 0 }) : vue.renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [
4683
- vue.createVNode(_sfc_main$t)
4727
+ vue.createVNode(_sfc_main$x)
4684
4728
  ])
4685
4729
  ]),
4686
4730
  _: 2
@@ -4705,12 +4749,12 @@
4705
4749
  }
4706
4750
  });
4707
4751
 
4708
- const _hoisted_1$h = {
4752
+ const _hoisted_1$k = {
4709
4753
  key: 1,
4710
4754
  class: "menu-item-text"
4711
4755
  };
4712
- const _hoisted_2$b = { class: "el-dropdown-link menubar-menu-button" };
4713
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
4756
+ const _hoisted_2$e = { class: "el-dropdown-link menubar-menu-button" };
4757
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
4714
4758
  ...{
4715
4759
  name: "MEditorToolButton"
4716
4760
  },
@@ -4789,7 +4833,7 @@
4789
4833
  _ctx.data.type === "divider" ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicDivider), {
4790
4834
  key: 0,
4791
4835
  direction: _ctx.data.direction || "vertical"
4792
- }, null, 8, ["direction"])) : _ctx.data.type === "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, vue.toDisplayString(_ctx.data.text), 1)) : _ctx.data.type === "button" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
4836
+ }, null, 8, ["direction"])) : _ctx.data.type === "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, vue.toDisplayString(_ctx.data.text), 1)) : _ctx.data.type === "button" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
4793
4837
  _ctx.data.tooltip ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicTooltip), {
4794
4838
  key: 0,
4795
4839
  effect: "dark",
@@ -4803,7 +4847,7 @@
4803
4847
  disabled: disabled.value
4804
4848
  }, {
4805
4849
  default: vue.withCtx(() => [
4806
- _ctx.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
4850
+ _ctx.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
4807
4851
  key: 0,
4808
4852
  icon: _ctx.data.icon
4809
4853
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -4820,7 +4864,7 @@
4820
4864
  disabled: disabled.value
4821
4865
  }, {
4822
4866
  default: vue.withCtx(() => [
4823
- _ctx.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
4867
+ _ctx.data.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
4824
4868
  key: 0,
4825
4869
  icon: _ctx.data.icon
4826
4870
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
@@ -4853,7 +4897,7 @@
4853
4897
  })) : vue.createCommentVNode("", true)
4854
4898
  ]),
4855
4899
  default: vue.withCtx(() => [
4856
- vue.createElementVNode("span", _hoisted_2$b, [
4900
+ vue.createElementVNode("span", _hoisted_2$e, [
4857
4901
  vue.createTextVNode(vue.toDisplayString(_ctx.data.text), 1),
4858
4902
  vue.createVNode(vue.unref(design.TMagicIcon), { class: "el-icon--right" }, {
4859
4903
  default: vue.withCtx(() => [
@@ -4870,7 +4914,7 @@
4870
4914
  }
4871
4915
  });
4872
4916
 
4873
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
4917
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
4874
4918
  ...{
4875
4919
  name: "MEditorNavMenu"
4876
4920
  },
@@ -5032,7 +5076,7 @@
5032
5076
  style: vue.normalizeStyle(`width: ${columnWidth.value?.[key]}px`)
5033
5077
  }, [
5034
5078
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(buttons.value[key], (item, index) => {
5035
- return vue.openBlock(), vue.createBlock(_sfc_main$r, {
5079
+ return vue.openBlock(), vue.createBlock(_sfc_main$v, {
5036
5080
  data: item,
5037
5081
  key: index
5038
5082
  }, null, 8, ["data"]);
@@ -5044,8 +5088,8 @@
5044
5088
  }
5045
5089
  });
5046
5090
 
5047
- const _hoisted_1$g = { class: "m-editor-props-panel" };
5048
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
5091
+ const _hoisted_1$j = { class: "m-editor-props-panel" };
5092
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
5049
5093
  ...{
5050
5094
  name: "MEditorPropsPanel"
5051
5095
  },
@@ -5098,7 +5142,7 @@
5098
5142
  };
5099
5143
  __expose({ configForm, submit });
5100
5144
  return (_ctx, _cache) => {
5101
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
5145
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [
5102
5146
  vue.renderSlot(_ctx.$slots, "props-panel-header"),
5103
5147
  vue.createVNode(vue.unref(form.MForm), {
5104
5148
  ref_key: "configForm",
@@ -5118,7 +5162,7 @@
5118
5162
  }
5119
5163
  });
5120
5164
 
5121
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
5165
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
5122
5166
  ...{
5123
5167
  name: "MEditorSearchInput"
5124
5168
  },
@@ -5153,8 +5197,8 @@
5153
5197
  }
5154
5198
  });
5155
5199
 
5156
- const _hoisted_1$f = { xmlns: "http://www.w3.org/2000/svg" };
5157
- const _hoisted_2$a = /* @__PURE__ */ vue.createElementVNode("g", {
5200
+ const _hoisted_1$i = { xmlns: "http://www.w3.org/2000/svg" };
5201
+ const _hoisted_2$d = /* @__PURE__ */ vue.createElementVNode("g", {
5158
5202
  fill: "#7C878E",
5159
5203
  "fill-rule": "evenodd"
5160
5204
  }, [
@@ -5164,50 +5208,50 @@
5164
5208
  }),
5165
5209
  /* @__PURE__ */ vue.createElementVNode("path", { d: "M8 13.5L2.3 9.2 0.7 10.5 8 16 15.3 10.5 13.7 9.2z" })
5166
5210
  ], -1);
5167
- const _hoisted_3$5 = [
5168
- _hoisted_2$a
5211
+ const _hoisted_3$7 = [
5212
+ _hoisted_2$d
5169
5213
  ];
5170
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
5214
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
5171
5215
  ...{
5172
5216
  name: "MEditorAppManageIcon"
5173
5217
  },
5174
5218
  __name: "AppManageIcon",
5175
5219
  setup(__props) {
5176
5220
  return (_ctx, _cache) => {
5177
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$f, _hoisted_3$5);
5221
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$i, _hoisted_3$7);
5178
5222
  };
5179
5223
  }
5180
5224
  });
5181
5225
 
5182
- const _hoisted_1$e = {
5226
+ const _hoisted_1$h = {
5183
5227
  viewBox: "0 0 32 32",
5184
5228
  version: "1.1",
5185
5229
  xmlns: "http://www.w3.org/2000/svg",
5186
5230
  "xmlns:xlink": "http://www.w3.org/1999/xlink"
5187
5231
  };
5188
- const _hoisted_2$9 = /* @__PURE__ */ vue.createStaticVNode('<defs><rect id="path-1" x="0" y="0" width="32" height="32"></rect></defs><g id="组件规范" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="03图标" transform="translate(-561.000000, -2356.000000)"><g id="icon/line/Universal/code" transform="translate(561.000000, 2356.000000)"><g id="路径"><mask id="mask-2" fill="white"><use xlink:href="#path-1"></use></mask><use id="蒙版" fill="#D8D8D8" opacity="0" xlink:href="#path-1"></use><path d="M21.9284587,7.9482233 L29.8079004,15.827665 C29.9055315,15.9252961 29.9055315,16.0835874 29.8079004,16.1812184 L21.9284587,24.0606602 C21.8308276,24.1582912 21.6725364,24.1582912 21.5749053,24.0606602 L20.3374684,22.8232233 C20.2419143,22.7276698 20.2398813,22.5740096 20.331369,22.4759832 L20.3374687,22.4696702 L26.8027181,16.0044417 L20.3374687,9.53921328 C20.2398372,9.44158265 20.2398369,9.2832914 20.3374679,9.18566017 L21.5749053,7.9482233 C21.6725364,7.85059223 21.8308276,7.85059223 21.9284587,7.9482233 Z M10.3999684,7.9482233 L11.6374053,9.18566017 C11.7329594,9.28121371 11.7349925,9.43487387 11.6435048,9.53290029 L11.637405,9.53921328 L5.17215562,16.0044417 L11.637405,22.4696702 C11.7329593,22.5652236 11.7349926,22.7188837 11.643505,22.8169103 L11.6374053,22.8232233 L10.3999684,24.0606602 C10.3023374,24.1582912 10.1440461,24.1582912 10.046415,24.0606602 L2.1669733,16.1812184 C2.06934223,16.0835874 2.06934223,15.9252961 2.1669733,15.827665 L10.046415,7.9482233 C10.1440461,7.85059223 10.3023374,7.85059223 10.3999684,7.9482233 Z M17.2612532,9.29310422 L18.9262468,9.83189578 C19.0576112,9.87440526 19.1296423,10.0153579 19.0871328,10.1467222 L15.0848232,22.514807 C15.0423138,22.6461714 14.9013612,22.7182025 14.7699968,22.675693 L13.1050032,22.1369014 C12.9736388,22.0943919 12.9016077,21.9534393 12.9441172,21.822075 L16.9464268,9.45399022 C16.9889362,9.32262585 17.1298888,9.25059474 17.2612532,9.29310422 Z" id="形状" fill="#1D1F24" mask="url(#mask-2)"></path></g></g><g id="icon切图" transform="translate(226.000000, 1782.000000)"></g></g></g>', 2);
5189
- const _hoisted_4$3 = [
5190
- _hoisted_2$9
5232
+ const _hoisted_2$c = /* @__PURE__ */ vue.createStaticVNode('<defs><rect id="path-1" x="0" y="0" width="32" height="32"></rect></defs><g id="组件规范" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="03图标" transform="translate(-561.000000, -2356.000000)"><g id="icon/line/Universal/code" transform="translate(561.000000, 2356.000000)"><g id="路径"><mask id="mask-2" fill="white"><use xlink:href="#path-1"></use></mask><use id="蒙版" fill="#D8D8D8" opacity="0" xlink:href="#path-1"></use><path d="M21.9284587,7.9482233 L29.8079004,15.827665 C29.9055315,15.9252961 29.9055315,16.0835874 29.8079004,16.1812184 L21.9284587,24.0606602 C21.8308276,24.1582912 21.6725364,24.1582912 21.5749053,24.0606602 L20.3374684,22.8232233 C20.2419143,22.7276698 20.2398813,22.5740096 20.331369,22.4759832 L20.3374687,22.4696702 L26.8027181,16.0044417 L20.3374687,9.53921328 C20.2398372,9.44158265 20.2398369,9.2832914 20.3374679,9.18566017 L21.5749053,7.9482233 C21.6725364,7.85059223 21.8308276,7.85059223 21.9284587,7.9482233 Z M10.3999684,7.9482233 L11.6374053,9.18566017 C11.7329594,9.28121371 11.7349925,9.43487387 11.6435048,9.53290029 L11.637405,9.53921328 L5.17215562,16.0044417 L11.637405,22.4696702 C11.7329593,22.5652236 11.7349926,22.7188837 11.643505,22.8169103 L11.6374053,22.8232233 L10.3999684,24.0606602 C10.3023374,24.1582912 10.1440461,24.1582912 10.046415,24.0606602 L2.1669733,16.1812184 C2.06934223,16.0835874 2.06934223,15.9252961 2.1669733,15.827665 L10.046415,7.9482233 C10.1440461,7.85059223 10.3023374,7.85059223 10.3999684,7.9482233 Z M17.2612532,9.29310422 L18.9262468,9.83189578 C19.0576112,9.87440526 19.1296423,10.0153579 19.0871328,10.1467222 L15.0848232,22.514807 C15.0423138,22.6461714 14.9013612,22.7182025 14.7699968,22.675693 L13.1050032,22.1369014 C12.9736388,22.0943919 12.9016077,21.9534393 12.9441172,21.822075 L16.9464268,9.45399022 C16.9889362,9.32262585 17.1298888,9.25059474 17.2612532,9.29310422 Z" id="形状" fill="#1D1F24" mask="url(#mask-2)"></path></g></g><g id="icon切图" transform="translate(226.000000, 1782.000000)"></g></g></g>', 2);
5233
+ const _hoisted_4$5 = [
5234
+ _hoisted_2$c
5191
5235
  ];
5192
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
5236
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
5193
5237
  ...{
5194
5238
  name: "MEditorCodeIcon"
5195
5239
  },
5196
5240
  __name: "CodeIcon",
5197
5241
  setup(__props) {
5198
5242
  return (_ctx, _cache) => {
5199
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$e, _hoisted_4$3);
5243
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$h, _hoisted_4$5);
5200
5244
  };
5201
5245
  }
5202
5246
  });
5203
5247
 
5204
- const _hoisted_1$d = ["id"];
5205
- const _hoisted_2$8 = { class: "list-item" };
5206
- const _hoisted_3$4 = {
5248
+ const _hoisted_1$g = ["id"];
5249
+ const _hoisted_2$b = { class: "list-item" };
5250
+ const _hoisted_3$6 = {
5207
5251
  key: 2,
5208
5252
  class: "right-tool"
5209
5253
  };
5210
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
5254
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
5211
5255
  ...{
5212
5256
  name: "MEditorCodeBlockList"
5213
5257
  },
@@ -5308,26 +5352,26 @@
5308
5352
  id: data.id,
5309
5353
  class: "list-container"
5310
5354
  }, [
5311
- vue.createElementVNode("div", _hoisted_2$8, [
5312
- data.type === "code" ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
5355
+ vue.createElementVNode("div", _hoisted_2$b, [
5356
+ data.type === "code" ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
5313
5357
  key: 0,
5314
5358
  class: "codeIcon"
5315
5359
  })) : vue.createCommentVNode("", true),
5316
- data.type === "node" ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
5360
+ data.type === "node" ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
5317
5361
  key: 1,
5318
5362
  class: "compIcon"
5319
5363
  })) : vue.createCommentVNode("", true),
5320
5364
  vue.createElementVNode("span", {
5321
5365
  class: vue.normalizeClass(["name", { code: data.type === "code", hook: data.type === "key" }])
5322
5366
  }, vue.toDisplayString(data.name) + " (" + vue.toDisplayString(data.id) + ")", 3),
5323
- data.type === "code" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$4, [
5367
+ data.type === "code" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$6, [
5324
5368
  vue.createVNode(vue.unref(design.TMagicTooltip), {
5325
5369
  effect: "dark",
5326
5370
  content: editable.value ? "编辑" : "查看",
5327
5371
  placement: "bottom"
5328
5372
  }, {
5329
5373
  default: vue.withCtx(() => [
5330
- vue.createVNode(_sfc_main$G, {
5374
+ vue.createVNode(_sfc_main$K, {
5331
5375
  icon: editable.value ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
5332
5376
  class: "edit-icon",
5333
5377
  onClick: vue.withModifiers(($event) => editCode(data.id), ["stop"])
@@ -5342,7 +5386,7 @@
5342
5386
  placement: "bottom"
5343
5387
  }, {
5344
5388
  default: vue.withCtx(() => [
5345
- vue.createVNode(_sfc_main$G, {
5389
+ vue.createVNode(_sfc_main$K, {
5346
5390
  icon: vue.unref(iconsVue.Close),
5347
5391
  class: "edit-icon",
5348
5392
  onClick: vue.withModifiers(($event) => deleteCode(`${data.id}`), ["stop"])
@@ -5356,7 +5400,7 @@
5356
5400
  })
5357
5401
  ])) : vue.createCommentVNode("", true)
5358
5402
  ])
5359
- ], 8, _hoisted_1$d)
5403
+ ], 8, _hoisted_1$g)
5360
5404
  ]),
5361
5405
  _: 3
5362
5406
  }, 8, ["default-expanded-keys", "data"]);
@@ -5364,8 +5408,8 @@
5364
5408
  }
5365
5409
  });
5366
5410
 
5367
- const _hoisted_1$c = { class: "search-wrapper" };
5368
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
5411
+ const _hoisted_1$f = { class: "search-wrapper" };
5412
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
5369
5413
  ...{
5370
5414
  name: "MEditorCodeBlockListPanel"
5371
5415
  },
@@ -5385,8 +5429,8 @@
5385
5429
  return vue.openBlock(), vue.createBlock(vue.unref(design.TMagicScrollbar), { class: "m-editor-code-block-list m-editor-dep-list-panel" }, {
5386
5430
  default: vue.withCtx(() => [
5387
5431
  vue.renderSlot(_ctx.$slots, "code-block-panel-header", {}, () => [
5388
- vue.createElementVNode("div", _hoisted_1$c, [
5389
- vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
5432
+ vue.createElementVNode("div", _hoisted_1$f, [
5433
+ vue.createVNode(_sfc_main$s, { onSearch: filterTextChangeHandler }),
5390
5434
  editable.value ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicButton), {
5391
5435
  key: 0,
5392
5436
  class: "create-code-button",
@@ -5402,7 +5446,7 @@
5402
5446
  vue.renderSlot(_ctx.$slots, "code-block-panel-search")
5403
5447
  ])
5404
5448
  ]),
5405
- vue.createVNode(_sfc_main$l, {
5449
+ vue.createVNode(_sfc_main$p, {
5406
5450
  ref_key: "codeBlockList",
5407
5451
  ref: codeBlockList,
5408
5452
  "custom-error": _ctx.customError,
@@ -5417,7 +5461,7 @@
5417
5461
  ]),
5418
5462
  _: 3
5419
5463
  }, 8, ["custom-error", "onEdit", "onRemove"]),
5420
- vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
5464
+ vue.unref(codeConfig) ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
5421
5465
  key: 0,
5422
5466
  ref_key: "codeBlockEditor",
5423
5467
  ref: codeBlockEditor,
@@ -5432,7 +5476,7 @@
5432
5476
  }
5433
5477
  });
5434
5478
 
5435
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
5479
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
5436
5480
  ...{
5437
5481
  name: "MEditorDataSourceConfigPanel"
5438
5482
  },
@@ -5486,13 +5530,13 @@
5486
5530
  }
5487
5531
  });
5488
5532
 
5489
- const _hoisted_1$b = ["id"];
5490
- const _hoisted_2$7 = { class: "list-item" };
5491
- const _hoisted_3$3 = {
5533
+ const _hoisted_1$e = ["id"];
5534
+ const _hoisted_2$a = { class: "list-item" };
5535
+ const _hoisted_3$5 = {
5492
5536
  key: 2,
5493
5537
  class: "right-tool"
5494
5538
  };
5495
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
5539
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
5496
5540
  ...{
5497
5541
  name: "MEditorDataSourceList"
5498
5542
  },
@@ -5587,13 +5631,13 @@
5587
5631
  id: data.id,
5588
5632
  class: "list-container"
5589
5633
  }, [
5590
- vue.createElementVNode("div", _hoisted_2$7, [
5591
- data.type === "code" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
5634
+ vue.createElementVNode("div", _hoisted_2$a, [
5635
+ data.type === "code" ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
5592
5636
  key: 0,
5593
5637
  class: "codeIcon",
5594
5638
  icon: vue.unref(iconsVue.Coin)
5595
5639
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
5596
- data.type === "node" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
5640
+ data.type === "node" ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
5597
5641
  key: 1,
5598
5642
  class: "compIcon",
5599
5643
  icon: vue.unref(iconsVue.Aim)
@@ -5601,14 +5645,14 @@
5601
5645
  vue.createElementVNode("span", {
5602
5646
  class: vue.normalizeClass(["name", { code: data.type === "ds", hook: data.type === "key" }])
5603
5647
  }, vue.toDisplayString(data.type === "key" ? data.name : `${data.name}(${data.id})`), 3),
5604
- data.type === "ds" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$3, [
5648
+ data.type === "ds" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$5, [
5605
5649
  vue.createVNode(vue.unref(design.TMagicTooltip), {
5606
5650
  effect: "dark",
5607
5651
  content: editable.value ? "编辑" : "查看",
5608
5652
  placement: "bottom"
5609
5653
  }, {
5610
5654
  default: vue.withCtx(() => [
5611
- vue.createVNode(_sfc_main$G, {
5655
+ vue.createVNode(_sfc_main$K, {
5612
5656
  icon: editable.value ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
5613
5657
  class: "edit-icon",
5614
5658
  onClick: vue.withModifiers(($event) => editHandler(`${data.id}`), ["stop"])
@@ -5623,7 +5667,7 @@
5623
5667
  placement: "bottom"
5624
5668
  }, {
5625
5669
  default: vue.withCtx(() => [
5626
- vue.createVNode(_sfc_main$G, {
5670
+ vue.createVNode(_sfc_main$K, {
5627
5671
  icon: vue.unref(iconsVue.Close),
5628
5672
  class: "edit-icon",
5629
5673
  onClick: vue.withModifiers(($event) => removeHandler(`${data.id}`), ["stop"])
@@ -5637,7 +5681,7 @@
5637
5681
  })
5638
5682
  ])) : vue.createCommentVNode("", true)
5639
5683
  ])
5640
- ], 8, _hoisted_1$b)
5684
+ ], 8, _hoisted_1$e)
5641
5685
  ]),
5642
5686
  _: 3
5643
5687
  }, 8, ["data"]);
@@ -5645,9 +5689,9 @@
5645
5689
  }
5646
5690
  });
5647
5691
 
5648
- const _hoisted_1$a = { class: "search-wrapper" };
5649
- const _hoisted_2$6 = { class: "data-source-list-panel-add-menu" };
5650
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
5692
+ const _hoisted_1$d = { class: "search-wrapper" };
5693
+ const _hoisted_2$9 = { class: "data-source-list-panel-add-menu" };
5694
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
5651
5695
  ...{
5652
5696
  name: "MEditorDataSourceListPanel"
5653
5697
  },
@@ -5707,8 +5751,8 @@
5707
5751
  return (_ctx, _cache) => {
5708
5752
  return vue.openBlock(), vue.createBlock(vue.unref(design.TMagicScrollbar), { class: "data-source-list-panel m-editor-dep-list-panel" }, {
5709
5753
  default: vue.withCtx(() => [
5710
- vue.createElementVNode("div", _hoisted_1$a, [
5711
- vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
5754
+ vue.createElementVNode("div", _hoisted_1$d, [
5755
+ vue.createVNode(_sfc_main$s, { onSearch: filterTextChangeHandler }),
5712
5756
  editable.value ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicPopover), {
5713
5757
  key: 0,
5714
5758
  placement: "right"
@@ -5725,9 +5769,9 @@
5725
5769
  })
5726
5770
  ]),
5727
5771
  default: vue.withCtx(() => [
5728
- vue.createElementVNode("div", _hoisted_2$6, [
5772
+ vue.createElementVNode("div", _hoisted_2$9, [
5729
5773
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(datasourceTypeList.value, (item, index) => {
5730
- return vue.openBlock(), vue.createBlock(_sfc_main$r, {
5774
+ return vue.openBlock(), vue.createBlock(_sfc_main$v, {
5731
5775
  data: {
5732
5776
  type: "button",
5733
5777
  text: item.text,
@@ -5743,11 +5787,11 @@
5743
5787
  _: 1
5744
5788
  })) : vue.createCommentVNode("", true)
5745
5789
  ]),
5746
- vue.createVNode(_sfc_main$i, {
5790
+ vue.createVNode(_sfc_main$m, {
5747
5791
  onEdit: editHandler,
5748
5792
  onRemove: removeHandler
5749
5793
  }),
5750
- vue.createVNode(_sfc_main$j, {
5794
+ vue.createVNode(_sfc_main$n, {
5751
5795
  ref_key: "editDialog",
5752
5796
  ref: editDialog,
5753
5797
  disabled: !editable.value,
@@ -5762,9 +5806,9 @@
5762
5806
  }
5763
5807
  });
5764
5808
 
5765
- const _hoisted_1$9 = ["onClick", "onDragstart"];
5766
- const _hoisted_2$5 = ["title"];
5767
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
5809
+ const _hoisted_1$c = ["onClick", "onDragstart"];
5810
+ const _hoisted_2$8 = ["title"];
5811
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
5768
5812
  ...{
5769
5813
  name: "MEditorComponentListPanel"
5770
5814
  },
@@ -5843,7 +5887,7 @@
5843
5887
  "model-value": collapseValue.value
5844
5888
  }, {
5845
5889
  default: vue.withCtx(() => [
5846
- vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
5890
+ vue.createVNode(_sfc_main$s, { onSearch: filterTextChangeHandler }),
5847
5891
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(list.value, (group, index) => {
5848
5892
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
5849
5893
  group.items && group.items.length ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicCollapseItem), {
@@ -5851,7 +5895,7 @@
5851
5895
  name: `${index}`
5852
5896
  }, {
5853
5897
  title: vue.withCtx(() => [
5854
- vue.createVNode(_sfc_main$G, { icon: vue.unref(iconsVue.Grid) }, null, 8, ["icon"]),
5898
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.Grid) }, null, 8, ["icon"]),
5855
5899
  vue.createTextVNode(vue.toDisplayString(group.title), 1)
5856
5900
  ]),
5857
5901
  default: vue.withCtx(() => [
@@ -5866,15 +5910,15 @@
5866
5910
  onDrag: dragHandler
5867
5911
  }, [
5868
5912
  vue.renderSlot(_ctx.$slots, "component-list-item", { component: item }, () => [
5869
- vue.createVNode(_sfc_main$G, {
5913
+ vue.createVNode(_sfc_main$K, {
5870
5914
  title: item.text,
5871
5915
  icon: item.icon
5872
5916
  }, null, 8, ["title", "icon"]),
5873
5917
  vue.createElementVNode("span", {
5874
5918
  title: item.text
5875
- }, vue.toDisplayString(item.text), 9, _hoisted_2$5)
5919
+ }, vue.toDisplayString(item.text), 9, _hoisted_2$8)
5876
5920
  ])
5877
- ], 40, _hoisted_1$9);
5921
+ ], 40, _hoisted_1$c);
5878
5922
  }), 128))
5879
5923
  ]),
5880
5924
  _: 2
@@ -5891,16 +5935,18 @@
5891
5935
  }
5892
5936
  });
5893
5937
 
5894
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
5938
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
5895
5939
  ...{
5896
5940
  name: "MEditorContentMenu"
5897
5941
  },
5898
5942
  __name: "ContentMenu",
5899
5943
  props: {
5900
5944
  menuData: { default: () => [] },
5901
- isSubMenu: { type: Boolean, default: false }
5945
+ isSubMenu: { type: Boolean, default: false },
5946
+ active: {},
5947
+ autoHide: { type: Boolean, default: true }
5902
5948
  },
5903
- emits: ["hide", "show"],
5949
+ emits: ["hide", "show", "mouseenter"],
5904
5950
  setup(__props, { expose: __expose, emit }) {
5905
5951
  const props = __props;
5906
5952
  const menu = vue.ref();
@@ -5908,10 +5954,14 @@
5908
5954
  const subMenu = vue.ref();
5909
5955
  const visible = vue.ref(false);
5910
5956
  const subMenuData = vue.ref([]);
5911
- const menuStyle = vue.ref({
5912
- left: "0",
5913
- top: "0"
5957
+ const menuPosition = vue.ref({
5958
+ left: 0,
5959
+ top: 0
5914
5960
  });
5961
+ const menuStyle = vue.computed(() => ({
5962
+ top: `${menuPosition.value.top}px`,
5963
+ left: `${menuPosition.value.left}px`
5964
+ }));
5915
5965
  const contains = (el) => menu.value?.contains(el) || subMenu.value?.contains(el);
5916
5966
  const hide = () => {
5917
5967
  if (!visible.value)
@@ -5920,7 +5970,14 @@
5920
5970
  subMenu.value?.hide();
5921
5971
  emit("hide");
5922
5972
  };
5923
- const hideHandler = (e) => {
5973
+ const clickHandler = () => {
5974
+ if (!props.autoHide)
5975
+ return;
5976
+ hide();
5977
+ };
5978
+ const outsideClickhideHandler = (e) => {
5979
+ if (!props.autoHide)
5980
+ return;
5924
5981
  const target = e.target;
5925
5982
  if (!visible.value || !target) {
5926
5983
  return;
@@ -5930,19 +5987,25 @@
5930
5987
  }
5931
5988
  hide();
5932
5989
  };
5990
+ const setPosition = (e) => {
5991
+ const menuHeight = menu.value?.clientHeight || 0;
5992
+ let top = e.clientY;
5993
+ if (menuHeight + e.clientY > document.body.clientHeight) {
5994
+ top = document.body.clientHeight - menuHeight;
5995
+ }
5996
+ menuPosition.value = {
5997
+ top,
5998
+ left: e.clientX
5999
+ };
6000
+ };
5933
6001
  const show = (e) => {
5934
6002
  setTimeout(() => {
5935
6003
  visible.value = true;
6004
+ if (!e) {
6005
+ return;
6006
+ }
5936
6007
  vue.nextTick(() => {
5937
- const menuHeight = menu.value?.clientHeight || 0;
5938
- let top = e.clientY;
5939
- if (menuHeight + e.clientY > document.body.clientHeight) {
5940
- top = document.body.clientHeight - menuHeight;
5941
- }
5942
- menuStyle.value = {
5943
- top: `${top}px`,
5944
- left: `${e.clientX}px`
5945
- };
6008
+ setPosition(e);
5946
6009
  emit("show");
5947
6010
  });
5948
6011
  }, 300);
@@ -5967,64 +6030,77 @@
5967
6030
  }
5968
6031
  }, 0);
5969
6032
  };
6033
+ const mouseenterHandler = () => {
6034
+ emit("mouseenter");
6035
+ };
5970
6036
  vue.onMounted(() => {
5971
6037
  if (props.isSubMenu)
5972
6038
  return;
5973
- globalThis.addEventListener("mousedown", hideHandler, true);
6039
+ globalThis.addEventListener("mousedown", outsideClickhideHandler, true);
5974
6040
  });
5975
6041
  vue.onUnmounted(() => {
5976
6042
  if (props.isSubMenu)
5977
6043
  return;
5978
- globalThis.removeEventListener("mousedown", hideHandler, true);
6044
+ globalThis.removeEventListener("mousedown", outsideClickhideHandler, true);
5979
6045
  });
5980
6046
  __expose({
5981
6047
  menu,
6048
+ menuPosition,
5982
6049
  hide,
5983
6050
  show,
5984
- contains
6051
+ contains,
6052
+ setPosition
5985
6053
  });
5986
6054
  return (_ctx, _cache) => {
5987
6055
  const _component_content_menu = vue.resolveComponent("content-menu", true);
5988
- return _ctx.menuData.length ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
5989
- key: 0,
5990
- class: "magic-editor-content-menu",
5991
- ref_key: "menu",
5992
- ref: menu,
5993
- style: vue.normalizeStyle(menuStyle.value)
5994
- }, [
5995
- vue.createElementVNode("div", null, [
5996
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.menuData, (item, index) => {
5997
- return vue.openBlock(), vue.createBlock(_sfc_main$r, {
5998
- "event-type": "mouseup",
5999
- ref_for: true,
6000
- ref_key: "buttons",
6001
- ref: buttons,
6002
- data: item,
6003
- key: index,
6004
- onMouseup: hide,
6005
- onMouseenter: ($event) => showSubMenu(item, index)
6006
- }, null, 8, ["data", "onMouseenter"]);
6007
- }), 128))
6056
+ return vue.openBlock(), vue.createBlock(vue.Transition, { name: "fade" }, {
6057
+ default: vue.withCtx(() => [
6058
+ vue.withDirectives(vue.createElementVNode("div", {
6059
+ class: "magic-editor-content-menu",
6060
+ ref_key: "menu",
6061
+ ref: menu,
6062
+ style: vue.normalizeStyle(menuStyle.value),
6063
+ onMouseenter: _cache[0] || (_cache[0] = ($event) => mouseenterHandler())
6064
+ }, [
6065
+ vue.renderSlot(_ctx.$slots, "title"),
6066
+ vue.createElementVNode("div", null, [
6067
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.menuData, (item, index) => {
6068
+ return vue.openBlock(), vue.createBlock(_sfc_main$v, {
6069
+ "event-type": "mouseup",
6070
+ ref_for: true,
6071
+ ref_key: "buttons",
6072
+ ref: buttons,
6073
+ class: vue.normalizeClass({ active: _ctx.active && item.id === _ctx.active }),
6074
+ data: item,
6075
+ key: index,
6076
+ onMouseup: clickHandler,
6077
+ onMouseenter: ($event) => showSubMenu(item, index)
6078
+ }, null, 8, ["class", "data", "onMouseenter"]);
6079
+ }), 128))
6080
+ ]),
6081
+ (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
6082
+ subMenuData.value.length ? (vue.openBlock(), vue.createBlock(_component_content_menu, {
6083
+ key: 0,
6084
+ class: "sub-menu",
6085
+ ref_key: "subMenu",
6086
+ ref: subMenu,
6087
+ active: _ctx.active,
6088
+ "menu-data": subMenuData.value,
6089
+ "is-sub-menu": true,
6090
+ onHide: hide
6091
+ }, null, 8, ["active", "menu-data"])) : vue.createCommentVNode("", true)
6092
+ ]))
6093
+ ], 36), [
6094
+ [vue.vShow, visible.value]
6095
+ ])
6008
6096
  ]),
6009
- (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
6010
- subMenuData.value.length ? (vue.openBlock(), vue.createBlock(_component_content_menu, {
6011
- key: 0,
6012
- class: "sub-menu",
6013
- ref_key: "subMenu",
6014
- ref: subMenu,
6015
- "menu-data": subMenuData.value,
6016
- "is-sub-menu": true,
6017
- onHide: hide
6018
- }, null, 8, ["menu-data"])) : vue.createCommentVNode("", true)
6019
- ]))
6020
- ], 4)), [
6021
- [vue.vShow, visible.value]
6022
- ]) : vue.createCommentVNode("", true);
6097
+ _: 3
6098
+ });
6023
6099
  };
6024
6100
  }
6025
6101
  });
6026
6102
 
6027
- const _hoisted_1$8 = {
6103
+ const _hoisted_1$b = {
6028
6104
  width: "1em",
6029
6105
  height: "1em",
6030
6106
  viewBox: "0 0 16 16",
@@ -6032,26 +6108,26 @@
6032
6108
  fill: "currentColor",
6033
6109
  xmlns: "http://www.w3.org/2000/svg"
6034
6110
  };
6035
- const _hoisted_2$4 = /* @__PURE__ */ vue.createElementVNode("path", {
6111
+ const _hoisted_2$7 = /* @__PURE__ */ vue.createElementVNode("path", {
6036
6112
  "fill-rule": "evenodd",
6037
6113
  d: "M9.828 4H2.19a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91H9v1H2.826a2 2 0 0 1-1.991-1.819l-.637-7a1.99 1.99 0 0 1 .342-1.31L.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181L15.546 8H14.54l.265-2.91A1 1 0 0 0 13.81 4H9.828zm-2.95-1.707L7.587 3H2.19c-.24 0-.47.042-.684.12L1.5 2.98a1 1 0 0 1 1-.98h3.672a1 1 0 0 1 .707.293z"
6038
6114
  }, null, -1);
6039
- const _hoisted_3$2 = /* @__PURE__ */ vue.createElementVNode("path", {
6115
+ const _hoisted_3$4 = /* @__PURE__ */ vue.createElementVNode("path", {
6040
6116
  "fill-rule": "evenodd",
6041
6117
  d: "M11 11.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1-.5-.5z"
6042
6118
  }, null, -1);
6043
- const _hoisted_4$2 = [
6044
- _hoisted_2$4,
6045
- _hoisted_3$2
6119
+ const _hoisted_4$4 = [
6120
+ _hoisted_2$7,
6121
+ _hoisted_3$4
6046
6122
  ];
6047
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
6123
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
6048
6124
  ...{
6049
6125
  name: "MEditorFolderMinusIcon"
6050
6126
  },
6051
6127
  __name: "FolderMinusIcon",
6052
6128
  setup(__props) {
6053
6129
  return (_ctx, _cache) => {
6054
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$8, _hoisted_4$2);
6130
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$b, _hoisted_4$4);
6055
6131
  };
6056
6132
  }
6057
6133
  });
@@ -6131,7 +6207,7 @@
6131
6207
  };
6132
6208
  };
6133
6209
 
6134
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
6210
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
6135
6211
  ...{
6136
6212
  name: "MEditorLayerMenu"
6137
6213
  },
@@ -6194,7 +6270,7 @@
6194
6270
  {
6195
6271
  type: "button",
6196
6272
  text: "全部折叠",
6197
- icon: _sfc_main$e,
6273
+ icon: _sfc_main$i,
6198
6274
  display: () => utils.isPage(node.value),
6199
6275
  handler: () => {
6200
6276
  emit("collapse-all");
@@ -6220,7 +6296,7 @@
6220
6296
  show
6221
6297
  });
6222
6298
  return (_ctx, _cache) => {
6223
- return vue.openBlock(), vue.createBlock(_sfc_main$f, {
6299
+ return vue.openBlock(), vue.createBlock(_sfc_main$j, {
6224
6300
  "menu-data": menuData.value,
6225
6301
  ref_key: "menu",
6226
6302
  ref: menu,
@@ -6230,8 +6306,8 @@
6230
6306
  }
6231
6307
  });
6232
6308
 
6233
- const _hoisted_1$7 = { class: "layer-node-tool" };
6234
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
6309
+ const _hoisted_1$a = { class: "layer-node-tool" };
6310
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
6235
6311
  __name: "LayerNode",
6236
6312
  props: {
6237
6313
  data: {}
@@ -6252,7 +6328,7 @@
6252
6328
  const _component_el_icon = vue.resolveComponent("el-icon");
6253
6329
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
6254
6330
  vue.createElementVNode("div", null, vue.toDisplayString(`${_ctx.data.name} (${_ctx.data.id})`), 1),
6255
- vue.createElementVNode("div", _hoisted_1$7, [
6331
+ vue.createElementVNode("div", _hoisted_1$a, [
6256
6332
  _ctx.data.type !== "page" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
6257
6333
  _ctx.data.visible === false ? (vue.openBlock(), vue.createBlock(_component_el_icon, {
6258
6334
  key: 0,
@@ -6281,9 +6357,9 @@
6281
6357
  }
6282
6358
  });
6283
6359
 
6284
- const _hoisted_1$6 = ["id", "onMouseenter"];
6360
+ const _hoisted_1$9 = ["id", "onMouseenter"];
6285
6361
  const throttleTime = 150;
6286
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
6362
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
6287
6363
  ...{
6288
6364
  name: "MEditorLayerPanel"
6289
6365
  },
@@ -6531,7 +6607,7 @@
6531
6607
  return vue.openBlock(), vue.createBlock(vue.unref(design.TMagicScrollbar), { class: "magic-editor-layer-panel" }, {
6532
6608
  default: vue.withCtx(() => [
6533
6609
  vue.renderSlot(_ctx.$slots, "layer-panel-header"),
6534
- vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
6610
+ vue.createVNode(_sfc_main$s, { onSearch: filterTextChangeHandler }),
6535
6611
  values.value.length ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicTree), {
6536
6612
  key: 0,
6537
6613
  class: "magic-editor-layer-tree",
@@ -6571,14 +6647,14 @@
6571
6647
  node,
6572
6648
  data
6573
6649
  }, () => [
6574
- vue.createVNode(_sfc_main$c, { data }, null, 8, ["data"])
6650
+ vue.createVNode(_sfc_main$g, { data }, null, 8, ["data"])
6575
6651
  ])
6576
- ], 40, _hoisted_1$6)
6652
+ ], 40, _hoisted_1$9)
6577
6653
  ]),
6578
6654
  _: 3
6579
6655
  }, 8, ["default-expanded-keys", "default-checked-keys", "current-node-key", "data", "highlight-current", "show-checkbox"])) : vue.createCommentVNode("", true),
6580
6656
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
6581
- vue.createVNode(_sfc_main$d, {
6657
+ vue.createVNode(_sfc_main$h, {
6582
6658
  ref_key: "menu",
6583
6659
  ref: menu,
6584
6660
  "layer-content-menu": _ctx.layerContentMenu,
@@ -6592,17 +6668,17 @@
6592
6668
  }
6593
6669
  });
6594
6670
 
6595
- const _hoisted_1$5 = {
6671
+ const _hoisted_1$8 = {
6596
6672
  key: 0,
6597
6673
  class: "m-editor-sidebar"
6598
6674
  };
6599
- const _hoisted_2$3 = { class: "m-editor-sidebar-header" };
6600
- const _hoisted_3$1 = ["onClick"];
6601
- const _hoisted_4$1 = {
6675
+ const _hoisted_2$6 = { class: "m-editor-sidebar-header" };
6676
+ const _hoisted_3$3 = ["onClick"];
6677
+ const _hoisted_4$3 = {
6602
6678
  key: 1,
6603
6679
  class: "magic-editor-tab-panel-title"
6604
6680
  };
6605
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
6681
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
6606
6682
  ...{
6607
6683
  name: "MEditorSidebar"
6608
6684
  },
@@ -6621,7 +6697,7 @@
6621
6697
  type: "component",
6622
6698
  icon: iconsVue.Goods,
6623
6699
  text: "组件",
6624
- component: _sfc_main$g,
6700
+ component: _sfc_main$k,
6625
6701
  slots: {}
6626
6702
  },
6627
6703
  layer: {
@@ -6632,7 +6708,7 @@
6632
6708
  props: {
6633
6709
  layerContentMenu: props.layerContentMenu
6634
6710
  },
6635
- component: _sfc_main$b,
6711
+ component: _sfc_main$f,
6636
6712
  slots: {}
6637
6713
  },
6638
6714
  "code-block": {
@@ -6640,7 +6716,7 @@
6640
6716
  type: "component",
6641
6717
  icon: iconsVue.EditPen,
6642
6718
  text: "代码编辑",
6643
- component: _sfc_main$k,
6719
+ component: _sfc_main$o,
6644
6720
  slots: {}
6645
6721
  },
6646
6722
  "data-source": {
@@ -6648,7 +6724,7 @@
6648
6724
  type: "component",
6649
6725
  icon: iconsVue.Coin,
6650
6726
  text: "数据源",
6651
- component: _sfc_main$h,
6727
+ component: _sfc_main$l,
6652
6728
  slots: {}
6653
6729
  }
6654
6730
  };
@@ -6665,20 +6741,20 @@
6665
6741
  activeTabName
6666
6742
  });
6667
6743
  return (_ctx, _cache) => {
6668
- return _ctx.data.type === "tabs" && _ctx.data.items.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
6669
- vue.createElementVNode("div", _hoisted_2$3, [
6744
+ return _ctx.data.type === "tabs" && _ctx.data.items.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
6745
+ vue.createElementVNode("div", _hoisted_2$6, [
6670
6746
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(sideBarItems.value, (config, index) => {
6671
6747
  return vue.openBlock(), vue.createElementBlock("div", {
6672
6748
  class: vue.normalizeClass(["m-editor-sidebar-header-item", { "is-active": activeTabName.value === config.text }]),
6673
6749
  key: config.$key ?? index,
6674
6750
  onClick: ($event) => activeTabName.value = config.text || `${index}`
6675
6751
  }, [
6676
- config.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
6752
+ config.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
6677
6753
  key: 0,
6678
6754
  icon: config.icon
6679
6755
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
6680
- config.text ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, vue.toDisplayString(config.text), 1)) : vue.createCommentVNode("", true)
6681
- ], 10, _hoisted_3$1);
6756
+ config.text ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, vue.toDisplayString(config.text), 1)) : vue.createCommentVNode("", true)
6757
+ ], 10, _hoisted_3$3);
6682
6758
  }), 128))
6683
6759
  ]),
6684
6760
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(sideBarItems.value, (config, index) => {
@@ -6757,304 +6833,42 @@
6757
6833
  }
6758
6834
  });
6759
6835
 
6760
- const _hoisted_1$4 = {
6761
- key: 0,
6762
- class: "m-editor-breadcrumb"
6763
- };
6764
- const _hoisted_2$2 = { key: 0 };
6765
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
6766
- ...{
6767
- name: "MEditorBreadcrumb"
6768
- },
6769
- __name: "Breadcrumb",
6770
- setup(__props) {
6771
- const services = vue.inject("services");
6772
- const editorService = services?.editorService;
6773
- const node = vue.computed(() => editorService?.get("node"));
6774
- const nodes = vue.computed(() => editorService?.get("nodes") || []);
6775
- const root = vue.computed(() => editorService?.get("root"));
6776
- const path = vue.computed(() => utils.getNodePath(node.value?.id || "", root.value?.items || []));
6777
- const select = async (node2) => {
6778
- await editorService?.select(node2);
6779
- editorService?.get("stage")?.select(node2.id);
6780
- };
6781
- return (_ctx, _cache) => {
6782
- return nodes.value.length === 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
6783
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(path.value, (item, index) => {
6784
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
6785
- key: item.id
6786
- }, [
6787
- vue.createVNode(vue.unref(design.TMagicButton), {
6788
- text: "",
6789
- disabled: item.id === node.value?.id,
6790
- onClick: ($event) => select(item)
6791
- }, {
6792
- default: vue.withCtx(() => [
6793
- vue.createTextVNode(vue.toDisplayString(item.name), 1)
6794
- ]),
6795
- _: 2
6796
- }, 1032, ["disabled", "onClick"]),
6797
- index < path.value.length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$2, "/")) : vue.createCommentVNode("", true)
6798
- ], 64);
6799
- }), 128))
6800
- ])) : vue.createCommentVNode("", true);
6801
- };
6802
- }
6803
- });
6804
-
6805
- const _hoisted_1$3 = {
6806
- key: 1,
6807
- style: { "width": "21px" }
6808
- };
6809
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
6810
- ...{
6811
- name: "MEditorPageBarScrollContainer"
6812
- },
6813
- __name: "PageBarScrollContainer",
6814
- setup(__props) {
6815
- const services = vue.inject("services");
6816
- const editorService = services?.editorService;
6817
- const uiService = services?.uiService;
6818
- const itemsContainer = vue.ref();
6819
- const canScroll = vue.ref(false);
6820
- const showAddPageButton = vue.computed(() => uiService?.get("showAddPageButton"));
6821
- const itemsContainerWidth = vue.ref(0);
6822
- const setCanScroll = () => {
6823
- itemsContainerWidth.value = (pageBar.value?.clientWidth || 0) - 37 * 2 - (showAddPageButton.value ? 37 : 21);
6824
- vue.nextTick(() => {
6825
- if (itemsContainer.value) {
6826
- canScroll.value = itemsContainer.value.scrollWidth - itemsContainerWidth.value > 1;
6827
- }
6828
- });
6829
- };
6830
- const resizeObserver = new ResizeObserver(() => {
6831
- setCanScroll();
6832
- });
6833
- const pageBar = vue.ref();
6834
- vue.onMounted(() => {
6835
- pageBar.value && resizeObserver.observe(pageBar.value);
6836
- });
6837
- vue.onUnmounted(() => {
6838
- resizeObserver.disconnect();
6839
- });
6840
- let translateLeft = 0;
6841
- const scroll = (type) => {
6842
- if (!itemsContainer.value)
6843
- return;
6844
- const maxScrollLeft = itemsContainer.value.scrollWidth - itemsContainerWidth.value;
6845
- if (type === "left") {
6846
- translateLeft += 100;
6847
- if (translateLeft > 0) {
6848
- translateLeft = 0;
6849
- }
6850
- } else if (type === "right") {
6851
- translateLeft -= 100;
6852
- if (-translateLeft > maxScrollLeft) {
6853
- translateLeft = -maxScrollLeft;
6854
- }
6855
- } else if (type === "start") {
6856
- translateLeft = 0;
6857
- } else if (type === "end") {
6858
- translateLeft = -maxScrollLeft;
6859
- }
6860
- itemsContainer.value.style.transform = `translate(${translateLeft}px, 0px)`;
6861
- };
6862
- const pageLength = vue.computed(() => editorService?.get("pageLength"));
6863
- vue.watch(pageLength, (length = 0, preLength = 0) => {
6864
- setTimeout(() => {
6865
- setCanScroll();
6866
- if (length < preLength) {
6867
- scroll("start");
6868
- } else {
6869
- scroll("end");
6870
- }
6871
- });
6872
- });
6873
- const addPage = () => {
6874
- if (!editorService)
6875
- return;
6876
- const root = vue.toRaw(editorService.get("root"));
6877
- if (!root)
6878
- throw new Error("root 不能为空");
6879
- const pageConfig = {
6880
- type: schema.NodeType.PAGE,
6881
- name: generatePageNameByApp(root)
6882
- };
6883
- editorService.add(pageConfig);
6884
- };
6885
- return (_ctx, _cache) => {
6886
- return vue.openBlock(), vue.createElementBlock("div", {
6887
- class: "m-editor-page-bar",
6888
- ref_key: "pageBar",
6889
- ref: pageBar
6890
- }, [
6891
- showAddPageButton.value ? (vue.openBlock(), vue.createElementBlock("div", {
6892
- key: 0,
6893
- id: "m-editor-page-bar-add-icon",
6894
- class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
6895
- onClick: addPage
6896
- }, [
6897
- vue.createVNode(_sfc_main$G, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
6898
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3)),
6899
- canScroll.value ? (vue.openBlock(), vue.createElementBlock("div", {
6900
- key: 2,
6901
- class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
6902
- onClick: _cache[0] || (_cache[0] = ($event) => scroll("left"))
6903
- }, [
6904
- vue.createVNode(_sfc_main$G, { icon: vue.unref(iconsVue.ArrowLeftBold) }, null, 8, ["icon"])
6905
- ])) : vue.createCommentVNode("", true),
6906
- pageLength.value ? (vue.openBlock(), vue.createElementBlock("div", {
6907
- key: 3,
6908
- class: "m-editor-page-bar-items",
6909
- ref_key: "itemsContainer",
6910
- ref: itemsContainer,
6911
- style: vue.normalizeStyle(`width: ${itemsContainerWidth.value}px`)
6912
- }, [
6913
- vue.renderSlot(_ctx.$slots, "default")
6914
- ], 4)) : vue.createCommentVNode("", true),
6915
- canScroll.value ? (vue.openBlock(), vue.createElementBlock("div", {
6916
- key: 4,
6917
- class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
6918
- onClick: _cache[1] || (_cache[1] = ($event) => scroll("right"))
6919
- }, [
6920
- vue.createVNode(_sfc_main$G, { icon: vue.unref(iconsVue.ArrowRightBold) }, null, 8, ["icon"])
6921
- ])) : vue.createCommentVNode("", true)
6922
- ], 512);
6923
- };
6924
- }
6925
- });
6926
-
6927
- const _hoisted_1$2 = ["onClick"];
6928
- const _hoisted_2$1 = { class: "m-editor-page-bar-title" };
6929
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
6930
- ...{
6931
- name: "MEditorPageBar"
6932
- },
6933
- __name: "PageBar",
6934
- setup(__props) {
6935
- const services = vue.inject("services");
6936
- const editorService = services?.editorService;
6937
- const root = vue.computed(() => editorService?.get("root"));
6938
- const page = vue.computed(() => editorService?.get("page"));
6939
- const switchPage = (page2) => {
6940
- editorService?.select(page2);
6941
- };
6942
- const copy = (node) => {
6943
- node && editorService?.copy(node);
6944
- editorService?.paste({
6945
- left: 0,
6946
- top: 0
6947
- });
6948
- };
6949
- const remove = (node) => {
6950
- editorService?.remove(node);
6951
- };
6952
- return (_ctx, _cache) => {
6953
- return vue.openBlock(), vue.createBlock(_sfc_main$8, null, {
6954
- default: vue.withCtx(() => [
6955
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(root.value && root.value.items || [], (item) => {
6956
- return vue.openBlock(), vue.createElementBlock("div", {
6957
- class: vue.normalizeClass(["m-editor-page-bar-item", { active: page.value?.id === item.id }]),
6958
- key: item.key,
6959
- onClick: ($event) => switchPage(item)
6960
- }, [
6961
- vue.createElementVNode("div", _hoisted_2$1, [
6962
- vue.renderSlot(_ctx.$slots, "page-bar-title", { page: item }, () => [
6963
- vue.createVNode(vue.unref(design.TMagicTooltip), {
6964
- effect: "dark",
6965
- placement: "top-start",
6966
- content: item.name
6967
- }, {
6968
- default: vue.withCtx(() => [
6969
- vue.createElementVNode("span", null, vue.toDisplayString(item.name || item.id), 1)
6970
- ]),
6971
- _: 2
6972
- }, 1032, ["content"])
6973
- ])
6974
- ]),
6975
- vue.createVNode(vue.unref(design.TMagicPopover), {
6976
- "popper-class": "page-bar-popover",
6977
- placement: "top",
6978
- width: 160,
6979
- trigger: "hover"
6980
- }, {
6981
- reference: vue.withCtx(() => [
6982
- vue.createVNode(vue.unref(design.TMagicIcon), { class: "m-editor-page-bar-menu-icon" }, {
6983
- default: vue.withCtx(() => [
6984
- vue.createVNode(vue.unref(iconsVue.CaretBottom))
6985
- ]),
6986
- _: 1
6987
- })
6988
- ]),
6989
- default: vue.withCtx(() => [
6990
- vue.createElementVNode("div", null, [
6991
- vue.renderSlot(_ctx.$slots, "page-bar-popover", { page: item }, () => [
6992
- vue.createVNode(_sfc_main$r, {
6993
- data: {
6994
- type: "button",
6995
- text: "复制",
6996
- icon: vue.unref(iconsVue.DocumentCopy),
6997
- handler: () => copy(item)
6998
- }
6999
- }, null, 8, ["data"]),
7000
- vue.createVNode(_sfc_main$r, {
7001
- data: {
7002
- type: "button",
7003
- text: "删除",
7004
- icon: vue.unref(iconsVue.Delete),
7005
- handler: () => remove(item)
7006
- }
7007
- }, null, 8, ["data"])
7008
- ])
7009
- ])
7010
- ]),
7011
- _: 2
7012
- }, 1024)
7013
- ], 10, _hoisted_1$2);
7014
- }), 128))
7015
- ]),
7016
- _: 3
7017
- });
7018
- };
7019
- }
7020
- });
7021
-
7022
- class ScrollViewer extends events.EventEmitter {
7023
- container;
7024
- target;
7025
- zoom = 1;
7026
- scrollLeft = 0;
7027
- scrollTop = 0;
7028
- scrollHeight = 0;
7029
- scrollWidth = 0;
7030
- width = 0;
7031
- height = 0;
7032
- translateXCorrectionValue = 0;
7033
- translateYCorrectionValue = 0;
7034
- correctionScrollSize = {
7035
- width: 0,
7036
- height: 0
7037
- };
7038
- resizeObserver = new ResizeObserver(() => {
7039
- this.setSize();
7040
- this.setScrollSize();
7041
- });
7042
- constructor(options) {
7043
- super();
7044
- this.container = options.container;
7045
- this.target = options.target;
7046
- this.zoom = options.zoom;
7047
- if (this.correctionScrollSize) {
7048
- this.correctionScrollSize = {
7049
- ...this.correctionScrollSize,
7050
- ...options.correctionScrollSize
7051
- };
7052
- }
7053
- this.container.addEventListener("wheel", this.wheelHandler, false);
7054
- this.setSize();
7055
- this.setScrollSize();
7056
- this.resizeObserver.observe(this.container);
7057
- this.resizeObserver.observe(this.target);
6836
+ class ScrollViewer extends events.EventEmitter {
6837
+ container;
6838
+ target;
6839
+ zoom = 1;
6840
+ scrollLeft = 0;
6841
+ scrollTop = 0;
6842
+ scrollHeight = 0;
6843
+ scrollWidth = 0;
6844
+ width = 0;
6845
+ height = 0;
6846
+ translateXCorrectionValue = 0;
6847
+ translateYCorrectionValue = 0;
6848
+ correctionScrollSize = {
6849
+ width: 0,
6850
+ height: 0
6851
+ };
6852
+ resizeObserver = new ResizeObserver(() => {
6853
+ this.setSize();
6854
+ this.setScrollSize();
6855
+ });
6856
+ constructor(options) {
6857
+ super();
6858
+ this.container = options.container;
6859
+ this.target = options.target;
6860
+ this.zoom = options.zoom;
6861
+ if (this.correctionScrollSize) {
6862
+ this.correctionScrollSize = {
6863
+ ...this.correctionScrollSize,
6864
+ ...options.correctionScrollSize
6865
+ };
6866
+ }
6867
+ this.container.addEventListener("wheel", this.wheelHandler, false);
6868
+ this.setSize();
6869
+ this.setScrollSize();
6870
+ this.resizeObserver.observe(this.container);
6871
+ this.resizeObserver.observe(this.target);
7058
6872
  }
7059
6873
  destroy() {
7060
6874
  this.resizeObserver.disconnect();
@@ -7147,7 +6961,7 @@
7147
6961
  };
7148
6962
  }
7149
6963
 
7150
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
6964
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
7151
6965
  ...{
7152
6966
  name: "MEditorScrollBar"
7153
6967
  },
@@ -7236,7 +7050,7 @@
7236
7050
 
7237
7051
  const ScrollBar_vue_vue_type_style_index_0_lang = '';
7238
7052
 
7239
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
7053
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
7240
7054
  ...{
7241
7055
  name: "MEditorScrollViewer"
7242
7056
  },
@@ -7322,14 +7136,14 @@
7322
7136
  }, [
7323
7137
  vue.renderSlot(_ctx.$slots, "default")
7324
7138
  ], 4),
7325
- scrollHeight.value > _ctx.wrapHeight ? (vue.openBlock(), vue.createBlock(_sfc_main$6, {
7139
+ scrollHeight.value > _ctx.wrapHeight ? (vue.openBlock(), vue.createBlock(_sfc_main$d, {
7326
7140
  key: 0,
7327
7141
  "scroll-size": scrollHeight.value,
7328
7142
  size: _ctx.wrapHeight,
7329
7143
  pos: vOffset.value,
7330
7144
  onScroll: vScrollHandler
7331
7145
  }, null, 8, ["scroll-size", "size", "pos"])) : vue.createCommentVNode("", true),
7332
- scrollWidth.value > _ctx.wrapWidth ? (vue.openBlock(), vue.createBlock(_sfc_main$6, {
7146
+ scrollWidth.value > _ctx.wrapWidth ? (vue.openBlock(), vue.createBlock(_sfc_main$d, {
7333
7147
  key: 1,
7334
7148
  "is-horizontal": true,
7335
7149
  "scroll-size": scrollWidth.value,
@@ -7507,50 +7321,340 @@
7507
7321
  return stage;
7508
7322
  };
7509
7323
 
7510
- const _hoisted_1$1 = {
7324
+ const _hoisted_1$7 = {
7325
+ xmlns: "http://www.w3.org/2000/svg",
7326
+ class: "icon icon-tabler icon-tabler-pin",
7327
+ width: "24",
7328
+ height: "24",
7511
7329
  viewBox: "0 0 24 24",
7330
+ "stroke-width": "2",
7331
+ stroke: "currentColor",
7512
7332
  fill: "none",
7513
- xmlns: "http://www.w3.org/2000/svg"
7333
+ "stroke-linecap": "round",
7334
+ "stroke-linejoin": "round"
7514
7335
  };
7515
- const _hoisted_2 = /* @__PURE__ */ vue.createElementVNode("path", {
7516
- "fill-rule": "evenodd",
7517
- "clip-rule": "evenodd",
7518
- d: "M2 4H21V6H2V4Z",
7519
- fill: "black",
7520
- "fill-opacity": "0.9"
7336
+ const _hoisted_2$5 = /* @__PURE__ */ vue.createElementVNode("path", {
7337
+ stroke: "none",
7338
+ d: "M0 0h24v24H0z",
7339
+ fill: "none"
7521
7340
  }, null, -1);
7522
- const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode("path", {
7523
- "fill-rule": "evenodd",
7524
- "clip-rule": "evenodd",
7525
- d: "M5 11H18V13H5V11Z",
7526
- fill: "black",
7527
- "fill-opacity": "0.9"
7341
+ const _hoisted_3$2 = /* @__PURE__ */ vue.createElementVNode("path", { d: "M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4" }, null, -1);
7342
+ const _hoisted_4$2 = /* @__PURE__ */ vue.createElementVNode("line", {
7343
+ x1: "9",
7344
+ y1: "15",
7345
+ x2: "4.5",
7346
+ y2: "19.5"
7528
7347
  }, null, -1);
7529
- const _hoisted_4 = /* @__PURE__ */ vue.createElementVNode("path", {
7530
- "fill-rule": "evenodd",
7531
- "clip-rule": "evenodd",
7532
- d: "M2 18H21V20H2V18Z",
7533
- fill: "black",
7534
- "fill-opacity": "0.9"
7348
+ const _hoisted_5$2 = /* @__PURE__ */ vue.createElementVNode("line", {
7349
+ x1: "14.5",
7350
+ y1: "4",
7351
+ x2: "20",
7352
+ y2: "9.5"
7353
+ }, null, -1);
7354
+ const _hoisted_6$1 = [
7355
+ _hoisted_2$5,
7356
+ _hoisted_3$2,
7357
+ _hoisted_4$2,
7358
+ _hoisted_5$2
7359
+ ];
7360
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
7361
+ ...{
7362
+ name: "MEditorPinIcon"
7363
+ },
7364
+ __name: "PinIcon",
7365
+ setup(__props) {
7366
+ return (_ctx, _cache) => {
7367
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$7, _hoisted_6$1);
7368
+ };
7369
+ }
7370
+ });
7371
+
7372
+ const _hoisted_1$6 = {
7373
+ xmlns: "http://www.w3.org/2000/svg",
7374
+ class: "icon icon-tabler icon-tabler-pinned",
7375
+ width: "24",
7376
+ height: "24",
7377
+ viewBox: "0 0 24 24",
7378
+ "stroke-width": "2",
7379
+ stroke: "currentColor",
7380
+ fill: "none",
7381
+ "stroke-linecap": "round",
7382
+ "stroke-linejoin": "round"
7383
+ };
7384
+ const _hoisted_2$4 = /* @__PURE__ */ vue.createElementVNode("path", {
7385
+ stroke: "none",
7386
+ d: "M0 0h24v24H0z",
7387
+ fill: "none"
7388
+ }, null, -1);
7389
+ const _hoisted_3$1 = /* @__PURE__ */ vue.createElementVNode("path", { d: "M9 4v6l-2 4v2h10v-2l-2 -4v-6" }, null, -1);
7390
+ const _hoisted_4$1 = /* @__PURE__ */ vue.createElementVNode("line", {
7391
+ x1: "12",
7392
+ y1: "16",
7393
+ x2: "12",
7394
+ y2: "21"
7395
+ }, null, -1);
7396
+ const _hoisted_5$1 = /* @__PURE__ */ vue.createElementVNode("line", {
7397
+ x1: "8",
7398
+ y1: "4",
7399
+ x2: "16",
7400
+ y2: "4"
7401
+ }, null, -1);
7402
+ const _hoisted_6 = [
7403
+ _hoisted_2$4,
7404
+ _hoisted_3$1,
7405
+ _hoisted_4$1,
7406
+ _hoisted_5$1
7407
+ ];
7408
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
7409
+ ...{
7410
+ name: "MEditorPinnedIcon"
7411
+ },
7412
+ __name: "PinnedIcon",
7413
+ setup(__props) {
7414
+ return (_ctx, _cache) => {
7415
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$6, _hoisted_6);
7416
+ };
7417
+ }
7418
+ });
7419
+
7420
+ const _hoisted_1$5 = /* @__PURE__ */ vue.createElementVNode("span", null, "可选组件", -1);
7421
+ const _hoisted_2$3 = { style: { "margin-right": "10px" } };
7422
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
7423
+ ...{
7424
+ name: "MEditorNodeListMenuTitle"
7425
+ },
7426
+ __name: "NodeListMenuTitle",
7427
+ props: {
7428
+ pinned: { type: Boolean }
7429
+ },
7430
+ emits: ["close", "update:pinned", "change"],
7431
+ setup(__props, { emit }) {
7432
+ const props = __props;
7433
+ const pinHandler = () => {
7434
+ emit("update:pinned", !props.pinned);
7435
+ };
7436
+ const closeHandler = () => {
7437
+ emit("close");
7438
+ };
7439
+ const target = vue.ref();
7440
+ useGetSo(target, emit);
7441
+ return (_ctx, _cache) => {
7442
+ return vue.openBlock(), vue.createElementBlock("div", {
7443
+ style: { "text-align": "center", "padding": "5px 0", "font-size": "14px", "cursor": "move", "display": "flex", "justify-content": "space-between", "align-items": "center" },
7444
+ ref_key: "target",
7445
+ ref: target
7446
+ }, [
7447
+ vue.createVNode(vue.unref(design.TMagicTooltip), {
7448
+ placement: "top",
7449
+ content: _ctx.pinned ? "取消置于顶层自动隐藏" : "置于顶层不消失"
7450
+ }, {
7451
+ default: vue.withCtx(() => [
7452
+ vue.createVNode(_sfc_main$K, {
7453
+ style: { "margin-left": "10px", "cursor": "pointer" },
7454
+ icon: _ctx.pinned ? _sfc_main$a : _sfc_main$b,
7455
+ onClick: pinHandler
7456
+ }, null, 8, ["icon"])
7457
+ ]),
7458
+ _: 1
7459
+ }, 8, ["content"]),
7460
+ _hoisted_1$5,
7461
+ vue.createElementVNode("div", _hoisted_2$3, [
7462
+ vue.createVNode(vue.unref(design.TMagicButton), {
7463
+ text: "",
7464
+ size: "small",
7465
+ onClick: closeHandler
7466
+ }, {
7467
+ default: vue.withCtx(() => [
7468
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.Close) }, null, 8, ["icon"])
7469
+ ]),
7470
+ _: 1
7471
+ })
7472
+ ])
7473
+ ], 512);
7474
+ };
7475
+ }
7476
+ });
7477
+
7478
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
7479
+ __name: "NodeListMenu",
7480
+ props: {
7481
+ isMultiSelect: { type: Boolean }
7482
+ },
7483
+ setup(__props) {
7484
+ const props = __props;
7485
+ const menu = vue.ref();
7486
+ const nodeList = vue.ref([]);
7487
+ const pinned = vue.ref(false);
7488
+ const services = vue.inject("services");
7489
+ const editorService = services?.editorService;
7490
+ const componentListService = services?.componentListService;
7491
+ const stage = vue.computed(() => editorService?.get("stage"));
7492
+ const page = vue.computed(() => editorService?.get("page"));
7493
+ const node = vue.computed(() => editorService?.get("node"));
7494
+ let timeout = null;
7495
+ const cancel = () => {
7496
+ if (timeout) {
7497
+ globalThis.clearTimeout(timeout);
7498
+ }
7499
+ if (pinned.value) {
7500
+ return;
7501
+ }
7502
+ nodeList.value = [];
7503
+ menu.value?.hide();
7504
+ };
7505
+ const unWatch = vue.watch(
7506
+ stage,
7507
+ (stage2) => {
7508
+ if (!stage2)
7509
+ return;
7510
+ stage2.on("drag-start", () => {
7511
+ cancel();
7512
+ });
7513
+ stage2.on("mousemove", (event) => {
7514
+ cancel();
7515
+ if (props.isMultiSelect || stage2.getDragStatus() !== StageCore.StageDragStatus.END) {
7516
+ return;
7517
+ }
7518
+ timeout = globalThis.setTimeout(() => {
7519
+ const els = stage2?.renderer.getElementsFromPoint(event);
7520
+ const nodes = utils.getNodes(
7521
+ els.map((el) => el.id),
7522
+ page.value?.items
7523
+ );
7524
+ if (pinned.value && nodes.length === 0) {
7525
+ return;
7526
+ }
7527
+ nodeList.value = nodes;
7528
+ if (nodeList.value.length > 1) {
7529
+ menu.value?.show(pinned.value ? void 0 : event);
7530
+ }
7531
+ }, 1500);
7532
+ });
7533
+ stage2.on("mouseleave", () => {
7534
+ cancel();
7535
+ });
7536
+ unWatch();
7537
+ },
7538
+ {
7539
+ immediate: true
7540
+ }
7541
+ );
7542
+ const componentMap = vue.computed(() => {
7543
+ const map = {};
7544
+ componentListService?.getList().forEach((group) => {
7545
+ group.items.forEach((item) => {
7546
+ map[item.type] = item;
7547
+ });
7548
+ });
7549
+ return map;
7550
+ });
7551
+ const menuData = vue.computed(
7552
+ () => nodeList.value.map((node2) => {
7553
+ let text = node2.name;
7554
+ let icon;
7555
+ if (node2.type) {
7556
+ const item = componentMap.value[node2.type];
7557
+ text += ` (${item?.text})`;
7558
+ icon = item?.icon;
7559
+ }
7560
+ return {
7561
+ type: "button",
7562
+ text,
7563
+ id: node2.id,
7564
+ icon,
7565
+ handler: async () => {
7566
+ await editorService?.select(node2);
7567
+ stage.value?.select(node2.id);
7568
+ }
7569
+ };
7570
+ })
7571
+ );
7572
+ const mouseenterHandler = () => {
7573
+ globalThis.setTimeout(() => {
7574
+ if (timeout) {
7575
+ globalThis.clearTimeout(timeout);
7576
+ }
7577
+ }, 300);
7578
+ };
7579
+ const dragMenuHandler = ({ deltaY, deltaX }) => {
7580
+ if (!menu.value)
7581
+ return;
7582
+ const { menuPosition } = menu.value;
7583
+ menu.value?.setPosition({
7584
+ clientY: menuPosition.top + deltaY,
7585
+ clientX: menuPosition.left + deltaX
7586
+ });
7587
+ };
7588
+ const closeHandler = () => {
7589
+ menu.value?.hide();
7590
+ };
7591
+ return (_ctx, _cache) => {
7592
+ return vue.openBlock(), vue.createBlock(_sfc_main$j, {
7593
+ ref_key: "menu",
7594
+ ref: menu,
7595
+ "menu-data": menuData.value,
7596
+ active: node.value?.id,
7597
+ "auto-hide": !pinned.value,
7598
+ onMouseenter: _cache[1] || (_cache[1] = ($event) => mouseenterHandler())
7599
+ }, {
7600
+ title: vue.withCtx(() => [
7601
+ vue.createVNode(_sfc_main$9, {
7602
+ pinned: pinned.value,
7603
+ "onUpdate:pinned": _cache[0] || (_cache[0] = ($event) => pinned.value = $event),
7604
+ onChange: dragMenuHandler,
7605
+ onClose: closeHandler
7606
+ }, null, 8, ["pinned"])
7607
+ ]),
7608
+ _: 1
7609
+ }, 8, ["menu-data", "active", "auto-hide"]);
7610
+ };
7611
+ }
7612
+ });
7613
+
7614
+ const _hoisted_1$4 = {
7615
+ viewBox: "0 0 24 24",
7616
+ fill: "none",
7617
+ xmlns: "http://www.w3.org/2000/svg"
7618
+ };
7619
+ const _hoisted_2$2 = /* @__PURE__ */ vue.createElementVNode("path", {
7620
+ "fill-rule": "evenodd",
7621
+ "clip-rule": "evenodd",
7622
+ d: "M2 4H21V6H2V4Z",
7623
+ fill: "black",
7624
+ "fill-opacity": "0.9"
7625
+ }, null, -1);
7626
+ const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode("path", {
7627
+ "fill-rule": "evenodd",
7628
+ "clip-rule": "evenodd",
7629
+ d: "M5 11H18V13H5V11Z",
7630
+ fill: "black",
7631
+ "fill-opacity": "0.9"
7632
+ }, null, -1);
7633
+ const _hoisted_4 = /* @__PURE__ */ vue.createElementVNode("path", {
7634
+ "fill-rule": "evenodd",
7635
+ "clip-rule": "evenodd",
7636
+ d: "M2 18H21V20H2V18Z",
7637
+ fill: "black",
7638
+ "fill-opacity": "0.9"
7535
7639
  }, null, -1);
7536
7640
  const _hoisted_5 = [
7537
- _hoisted_2,
7641
+ _hoisted_2$2,
7538
7642
  _hoisted_3,
7539
7643
  _hoisted_4
7540
7644
  ];
7541
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
7645
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
7542
7646
  ...{
7543
7647
  name: "MEditorCenterIcon"
7544
7648
  },
7545
7649
  __name: "CenterIcon",
7546
7650
  setup(__props) {
7547
7651
  return (_ctx, _cache) => {
7548
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$1, _hoisted_5);
7652
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$4, _hoisted_5);
7549
7653
  };
7550
7654
  }
7551
7655
  });
7552
7656
 
7553
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
7657
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
7554
7658
  ...{
7555
7659
  name: "MEditorViewerMenu"
7556
7660
  },
@@ -7573,7 +7677,7 @@
7573
7677
  {
7574
7678
  type: "button",
7575
7679
  text: "水平居中",
7576
- icon: vue.markRaw(_sfc_main$4),
7680
+ icon: vue.markRaw(_sfc_main$7),
7577
7681
  display: () => canCenter.value,
7578
7682
  handler: () => {
7579
7683
  if (!nodes.value)
@@ -7669,7 +7773,7 @@
7669
7773
  };
7670
7774
  __expose({ show });
7671
7775
  return (_ctx, _cache) => {
7672
- return vue.openBlock(), vue.createBlock(_sfc_main$f, {
7776
+ return vue.openBlock(), vue.createBlock(_sfc_main$j, {
7673
7777
  "menu-data": menuData.value,
7674
7778
  ref_key: "menu",
7675
7779
  ref: menu
@@ -7678,7 +7782,7 @@
7678
7782
  }
7679
7783
  });
7680
7784
 
7681
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
7785
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
7682
7786
  ...{
7683
7787
  name: "MEditorStage"
7684
7788
  },
@@ -7818,7 +7922,7 @@
7818
7922
  }
7819
7923
  };
7820
7924
  return (_ctx, _cache) => {
7821
- return vue.openBlock(), vue.createBlock(_sfc_main$5, {
7925
+ return vue.openBlock(), vue.createBlock(_sfc_main$c, {
7822
7926
  class: "m-editor-stage",
7823
7927
  ref_key: "stageWrap",
7824
7928
  ref: stageWrap,
@@ -7845,12 +7949,16 @@
7845
7949
  onDragover: dragoverHandler
7846
7950
  }, null, 36),
7847
7951
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
7848
- vue.createVNode(_sfc_main$3, {
7952
+ vue.createVNode(_sfc_main$6, {
7849
7953
  ref_key: "menu",
7850
7954
  ref: menu,
7851
7955
  "is-multi-select": isMultiSelect.value,
7852
7956
  "stage-content-menu": _ctx.stageContentMenu
7853
- }, null, 8, ["is-multi-select", "stage-content-menu"])
7957
+ }, null, 8, ["is-multi-select", "stage-content-menu"]),
7958
+ vue.createVNode(_sfc_main$8, {
7959
+ ref: "nodeList",
7960
+ "is-multi-select": isMultiSelect.value
7961
+ }, null, 8, ["is-multi-select"])
7854
7962
  ]))
7855
7963
  ]),
7856
7964
  _: 1
@@ -7859,6 +7967,268 @@
7859
7967
  }
7860
7968
  });
7861
7969
 
7970
+ const _hoisted_1$3 = {
7971
+ key: 0,
7972
+ class: "m-editor-breadcrumb"
7973
+ };
7974
+ const _hoisted_2$1 = { key: 0 };
7975
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
7976
+ ...{
7977
+ name: "MEditorBreadcrumb"
7978
+ },
7979
+ __name: "Breadcrumb",
7980
+ setup(__props) {
7981
+ const services = vue.inject("services");
7982
+ const editorService = services?.editorService;
7983
+ const node = vue.computed(() => editorService?.get("node"));
7984
+ const nodes = vue.computed(() => editorService?.get("nodes") || []);
7985
+ const root = vue.computed(() => editorService?.get("root"));
7986
+ const path = vue.computed(() => utils.getNodePath(node.value?.id || "", root.value?.items || []));
7987
+ const select = async (node2) => {
7988
+ await editorService?.select(node2);
7989
+ editorService?.get("stage")?.select(node2.id);
7990
+ };
7991
+ return (_ctx, _cache) => {
7992
+ return nodes.value.length === 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
7993
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(path.value, (item, index) => {
7994
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
7995
+ key: item.id
7996
+ }, [
7997
+ vue.createVNode(vue.unref(design.TMagicButton), {
7998
+ text: "",
7999
+ disabled: item.id === node.value?.id,
8000
+ onClick: ($event) => select(item)
8001
+ }, {
8002
+ default: vue.withCtx(() => [
8003
+ vue.createTextVNode(vue.toDisplayString(item.name), 1)
8004
+ ]),
8005
+ _: 2
8006
+ }, 1032, ["disabled", "onClick"]),
8007
+ index < path.value.length - 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, "/")) : vue.createCommentVNode("", true)
8008
+ ], 64);
8009
+ }), 128))
8010
+ ])) : vue.createCommentVNode("", true);
8011
+ };
8012
+ }
8013
+ });
8014
+
8015
+ const _hoisted_1$2 = {
8016
+ key: 1,
8017
+ style: { "width": "21px" }
8018
+ };
8019
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
8020
+ ...{
8021
+ name: "MEditorPageBarScrollContainer"
8022
+ },
8023
+ __name: "PageBarScrollContainer",
8024
+ setup(__props) {
8025
+ const services = vue.inject("services");
8026
+ const editorService = services?.editorService;
8027
+ const uiService = services?.uiService;
8028
+ const itemsContainer = vue.ref();
8029
+ const canScroll = vue.ref(false);
8030
+ const showAddPageButton = vue.computed(() => uiService?.get("showAddPageButton"));
8031
+ const itemsContainerWidth = vue.ref(0);
8032
+ const setCanScroll = () => {
8033
+ itemsContainerWidth.value = (pageBar.value?.clientWidth || 0) - 37 * 2 - (showAddPageButton.value ? 37 : 21);
8034
+ vue.nextTick(() => {
8035
+ if (itemsContainer.value) {
8036
+ canScroll.value = itemsContainer.value.scrollWidth - itemsContainerWidth.value > 1;
8037
+ }
8038
+ });
8039
+ };
8040
+ const resizeObserver = new ResizeObserver(() => {
8041
+ setCanScroll();
8042
+ });
8043
+ const pageBar = vue.ref();
8044
+ vue.onMounted(() => {
8045
+ pageBar.value && resizeObserver.observe(pageBar.value);
8046
+ });
8047
+ vue.onUnmounted(() => {
8048
+ resizeObserver.disconnect();
8049
+ });
8050
+ let translateLeft = 0;
8051
+ const scroll = (type) => {
8052
+ if (!itemsContainer.value)
8053
+ return;
8054
+ const maxScrollLeft = itemsContainer.value.scrollWidth - itemsContainerWidth.value;
8055
+ if (type === "left") {
8056
+ translateLeft += 100;
8057
+ if (translateLeft > 0) {
8058
+ translateLeft = 0;
8059
+ }
8060
+ } else if (type === "right") {
8061
+ translateLeft -= 100;
8062
+ if (-translateLeft > maxScrollLeft) {
8063
+ translateLeft = -maxScrollLeft;
8064
+ }
8065
+ } else if (type === "start") {
8066
+ translateLeft = 0;
8067
+ } else if (type === "end") {
8068
+ translateLeft = -maxScrollLeft;
8069
+ }
8070
+ itemsContainer.value.style.transform = `translate(${translateLeft}px, 0px)`;
8071
+ };
8072
+ const pageLength = vue.computed(() => editorService?.get("pageLength"));
8073
+ vue.watch(pageLength, (length = 0, preLength = 0) => {
8074
+ setTimeout(() => {
8075
+ setCanScroll();
8076
+ if (length < preLength) {
8077
+ scroll("start");
8078
+ } else {
8079
+ scroll("end");
8080
+ }
8081
+ });
8082
+ });
8083
+ const addPage = () => {
8084
+ if (!editorService)
8085
+ return;
8086
+ const root = vue.toRaw(editorService.get("root"));
8087
+ if (!root)
8088
+ throw new Error("root 不能为空");
8089
+ const pageConfig = {
8090
+ type: schema.NodeType.PAGE,
8091
+ name: generatePageNameByApp(root)
8092
+ };
8093
+ editorService.add(pageConfig);
8094
+ };
8095
+ return (_ctx, _cache) => {
8096
+ return vue.openBlock(), vue.createElementBlock("div", {
8097
+ class: "m-editor-page-bar",
8098
+ ref_key: "pageBar",
8099
+ ref: pageBar
8100
+ }, [
8101
+ showAddPageButton.value ? (vue.openBlock(), vue.createElementBlock("div", {
8102
+ key: 0,
8103
+ id: "m-editor-page-bar-add-icon",
8104
+ class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
8105
+ onClick: addPage
8106
+ }, [
8107
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.Plus) }, null, 8, ["icon"])
8108
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2)),
8109
+ canScroll.value ? (vue.openBlock(), vue.createElementBlock("div", {
8110
+ key: 2,
8111
+ class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
8112
+ onClick: _cache[0] || (_cache[0] = ($event) => scroll("left"))
8113
+ }, [
8114
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.ArrowLeftBold) }, null, 8, ["icon"])
8115
+ ])) : vue.createCommentVNode("", true),
8116
+ pageLength.value ? (vue.openBlock(), vue.createElementBlock("div", {
8117
+ key: 3,
8118
+ class: "m-editor-page-bar-items",
8119
+ ref_key: "itemsContainer",
8120
+ ref: itemsContainer,
8121
+ style: vue.normalizeStyle(`width: ${itemsContainerWidth.value}px`)
8122
+ }, [
8123
+ vue.renderSlot(_ctx.$slots, "default")
8124
+ ], 4)) : vue.createCommentVNode("", true),
8125
+ canScroll.value ? (vue.openBlock(), vue.createElementBlock("div", {
8126
+ key: 4,
8127
+ class: "m-editor-page-bar-item m-editor-page-bar-item-icon",
8128
+ onClick: _cache[1] || (_cache[1] = ($event) => scroll("right"))
8129
+ }, [
8130
+ vue.createVNode(_sfc_main$K, { icon: vue.unref(iconsVue.ArrowRightBold) }, null, 8, ["icon"])
8131
+ ])) : vue.createCommentVNode("", true)
8132
+ ], 512);
8133
+ };
8134
+ }
8135
+ });
8136
+
8137
+ const _hoisted_1$1 = ["onClick"];
8138
+ const _hoisted_2 = { class: "m-editor-page-bar-title" };
8139
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
8140
+ ...{
8141
+ name: "MEditorPageBar"
8142
+ },
8143
+ __name: "PageBar",
8144
+ setup(__props) {
8145
+ const services = vue.inject("services");
8146
+ const editorService = services?.editorService;
8147
+ const root = vue.computed(() => editorService?.get("root"));
8148
+ const page = vue.computed(() => editorService?.get("page"));
8149
+ const switchPage = (page2) => {
8150
+ editorService?.select(page2);
8151
+ };
8152
+ const copy = (node) => {
8153
+ node && editorService?.copy(node);
8154
+ editorService?.paste({
8155
+ left: 0,
8156
+ top: 0
8157
+ });
8158
+ };
8159
+ const remove = (node) => {
8160
+ editorService?.remove(node);
8161
+ };
8162
+ return (_ctx, _cache) => {
8163
+ return vue.openBlock(), vue.createBlock(_sfc_main$3, null, {
8164
+ default: vue.withCtx(() => [
8165
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(root.value && root.value.items || [], (item) => {
8166
+ return vue.openBlock(), vue.createElementBlock("div", {
8167
+ class: vue.normalizeClass(["m-editor-page-bar-item", { active: page.value?.id === item.id }]),
8168
+ key: item.key,
8169
+ onClick: ($event) => switchPage(item)
8170
+ }, [
8171
+ vue.createElementVNode("div", _hoisted_2, [
8172
+ vue.renderSlot(_ctx.$slots, "page-bar-title", { page: item }, () => [
8173
+ vue.createVNode(vue.unref(design.TMagicTooltip), {
8174
+ effect: "dark",
8175
+ placement: "top-start",
8176
+ content: item.name
8177
+ }, {
8178
+ default: vue.withCtx(() => [
8179
+ vue.createElementVNode("span", null, vue.toDisplayString(item.name || item.id), 1)
8180
+ ]),
8181
+ _: 2
8182
+ }, 1032, ["content"])
8183
+ ])
8184
+ ]),
8185
+ vue.createVNode(vue.unref(design.TMagicPopover), {
8186
+ "popper-class": "page-bar-popover",
8187
+ placement: "top",
8188
+ width: 160,
8189
+ trigger: "hover"
8190
+ }, {
8191
+ reference: vue.withCtx(() => [
8192
+ vue.createVNode(vue.unref(design.TMagicIcon), { class: "m-editor-page-bar-menu-icon" }, {
8193
+ default: vue.withCtx(() => [
8194
+ vue.createVNode(vue.unref(iconsVue.CaretBottom))
8195
+ ]),
8196
+ _: 1
8197
+ })
8198
+ ]),
8199
+ default: vue.withCtx(() => [
8200
+ vue.createElementVNode("div", null, [
8201
+ vue.renderSlot(_ctx.$slots, "page-bar-popover", { page: item }, () => [
8202
+ vue.createVNode(_sfc_main$v, {
8203
+ data: {
8204
+ type: "button",
8205
+ text: "复制",
8206
+ icon: vue.unref(iconsVue.DocumentCopy),
8207
+ handler: () => copy(item)
8208
+ }
8209
+ }, null, 8, ["data"]),
8210
+ vue.createVNode(_sfc_main$v, {
8211
+ data: {
8212
+ type: "button",
8213
+ text: "删除",
8214
+ icon: vue.unref(iconsVue.Delete),
8215
+ handler: () => remove(item)
8216
+ }
8217
+ }, null, 8, ["data"])
8218
+ ])
8219
+ ])
8220
+ ]),
8221
+ _: 2
8222
+ }, 1024)
8223
+ ], 10, _hoisted_1$1);
8224
+ }), 128))
8225
+ ]),
8226
+ _: 3
8227
+ });
8228
+ };
8229
+ }
8230
+ });
8231
+
7862
8232
  const _hoisted_1 = { class: "m-editor-workspace" };
7863
8233
  const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
7864
8234
  ...{
@@ -7873,15 +8243,15 @@
7873
8243
  const page = vue.computed(() => services?.editorService.get("page"));
7874
8244
  return (_ctx, _cache) => {
7875
8245
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
7876
- vue.createVNode(_sfc_main$9),
8246
+ vue.createVNode(_sfc_main$4),
7877
8247
  vue.renderSlot(_ctx.$slots, "stage", {}, () => [
7878
- page.value ? (vue.openBlock(), vue.createBlock(_sfc_main$2, {
8248
+ page.value ? (vue.openBlock(), vue.createBlock(_sfc_main$5, {
7879
8249
  key: 0,
7880
8250
  "stage-content-menu": _ctx.stageContentMenu
7881
8251
  }, null, 8, ["stage-content-menu"])) : vue.createCommentVNode("", true)
7882
8252
  ]),
7883
8253
  vue.renderSlot(_ctx.$slots, "workspace-content"),
7884
- vue.createVNode(_sfc_main$7, null, {
8254
+ vue.createVNode(_sfc_main$2, null, {
7885
8255
  "page-bar-title": vue.withCtx(({ page: page2 }) => [
7886
8256
  vue.renderSlot(_ctx.$slots, "page-bar-title", { page: page2 })
7887
8257
  ]),
@@ -9129,11 +9499,11 @@
9129
9499
  const _sfc_main = vue.defineComponent({
9130
9500
  name: "MEditor",
9131
9501
  components: {
9132
- TMagicNavMenu: _sfc_main$q,
9133
- Sidebar: _sfc_main$a,
9502
+ TMagicNavMenu: _sfc_main$u,
9503
+ Sidebar: _sfc_main$e,
9134
9504
  Workspace: _sfc_main$1,
9135
- PropsPanel: _sfc_main$p,
9136
- Framework: _sfc_main$s
9505
+ PropsPanel: _sfc_main$t,
9506
+ Framework: _sfc_main$w
9137
9507
  },
9138
9508
  props: editorProps,
9139
9509
  emits: ["props-panel-mounted", "update:modelValue"],
@@ -9298,58 +9668,58 @@
9298
9668
  app.config.globalProperties.$TMAGIC_EDITOR = option;
9299
9669
  setConfig(option);
9300
9670
  app.component(Editor.name, Editor);
9301
- app.component("m-fields-ui-select", _sfc_main$w);
9302
- app.component("m-fields-code-link", _sfc_main$K);
9303
- app.component("m-fields-vs-code", _sfc_main$L);
9304
- app.component("magic-code-editor", _sfc_main$M);
9305
- app.component("m-fields-code-select", _sfc_main$J);
9306
- app.component("m-fields-code-select-col", _sfc_main$F);
9307
- app.component("m-fields-event-select", _sfc_main$y);
9308
- app.component("m-fields-data-source-fields", _sfc_main$E);
9309
- app.component("m-fields-key-value", _sfc_main$x);
9310
- app.component("m-fields-data-source-input", _sfc_main$C);
9311
- app.component("m-fields-data-source-select", _sfc_main$z);
9312
- app.component("m-fields-data-source-methods", _sfc_main$B);
9313
- app.component("m-fields-data-source-method-select", _sfc_main$A);
9314
- app.component("m-fields-data-source-field-select", _sfc_main$D);
9671
+ app.component("m-fields-ui-select", _sfc_main$A);
9672
+ app.component("m-fields-code-link", _sfc_main$O);
9673
+ app.component("m-fields-vs-code", _sfc_main$P);
9674
+ app.component("magic-code-editor", _sfc_main$Q);
9675
+ app.component("m-fields-code-select", _sfc_main$N);
9676
+ app.component("m-fields-code-select-col", _sfc_main$J);
9677
+ app.component("m-fields-event-select", _sfc_main$C);
9678
+ app.component("m-fields-data-source-fields", _sfc_main$I);
9679
+ app.component("m-fields-key-value", _sfc_main$B);
9680
+ app.component("m-fields-data-source-input", _sfc_main$G);
9681
+ app.component("m-fields-data-source-select", _sfc_main$D);
9682
+ app.component("m-fields-data-source-methods", _sfc_main$F);
9683
+ app.component("m-fields-data-source-method-select", _sfc_main$E);
9684
+ app.component("m-fields-data-source-field-select", _sfc_main$H);
9315
9685
  }
9316
9686
  };
9317
9687
 
9318
9688
  exports.CODE_DRAFT_STORAGE_KEY = CODE_DRAFT_STORAGE_KEY;
9319
9689
  exports.COPY_STORAGE_KEY = COPY_STORAGE_KEY;
9320
- exports.CodeBlockEditor = _sfc_main$I;
9321
- exports.CodeBlockList = _sfc_main$l;
9322
- exports.CodeBlockListPanel = _sfc_main$k;
9690
+ exports.CodeBlockEditor = _sfc_main$M;
9691
+ exports.CodeBlockList = _sfc_main$p;
9692
+ exports.CodeBlockListPanel = _sfc_main$o;
9323
9693
  exports.CodeDeleteErrorType = CodeDeleteErrorType;
9324
- exports.CodeSelect = _sfc_main$J;
9325
- exports.CodeSelectCol = _sfc_main$F;
9694
+ exports.CodeSelect = _sfc_main$N;
9695
+ exports.CodeSelectCol = _sfc_main$J;
9326
9696
  exports.ColumnLayout = ColumnLayout;
9327
- exports.ComponentListPanel = _sfc_main$g;
9328
- exports.ContentMenu = _sfc_main$f;
9329
- exports.DataSourceFieldSelect = _sfc_main$D;
9330
- exports.DataSourceFields = _sfc_main$E;
9331
- exports.DataSourceInput = _sfc_main$C;
9332
- exports.DataSourceMethodSelect = _sfc_main$A;
9333
- exports.DataSourceMethods = _sfc_main$B;
9334
- exports.DataSourceSelect = _sfc_main$z;
9697
+ exports.ComponentListPanel = _sfc_main$k;
9698
+ exports.ContentMenu = _sfc_main$j;
9699
+ exports.DataSourceFieldSelect = _sfc_main$H;
9700
+ exports.DataSourceFields = _sfc_main$I;
9701
+ exports.DataSourceInput = _sfc_main$G;
9702
+ exports.DataSourceMethodSelect = _sfc_main$E;
9703
+ exports.DataSourceMethods = _sfc_main$F;
9704
+ exports.DataSourceSelect = _sfc_main$D;
9335
9705
  exports.DepTargetType = DepTargetType;
9336
- exports.EventSelect = _sfc_main$y;
9706
+ exports.EventSelect = _sfc_main$C;
9337
9707
  exports.Fixed2Other = Fixed2Other;
9338
9708
  exports.H_GUIDE_LINE_STORAGE_KEY = H_GUIDE_LINE_STORAGE_KEY;
9339
- exports.Icon = _sfc_main$G;
9709
+ exports.Icon = _sfc_main$K;
9340
9710
  exports.KeyBindingCommand = KeyBindingCommand;
9341
- exports.KeyValue = _sfc_main$x;
9711
+ exports.KeyValue = _sfc_main$B;
9342
9712
  exports.Keys = Keys;
9343
9713
  exports.LayerOffset = LayerOffset;
9344
- exports.LayerPanel = _sfc_main$b;
9714
+ exports.LayerPanel = _sfc_main$f;
9345
9715
  exports.Layout = Layout;
9346
- exports.LayoutContainer = _sfc_main$u;
9347
- exports.PropsPanel = _sfc_main$p;
9348
- exports.Resizer = _sfc_main$v;
9349
- exports.SplitView = _sfc_main$u;
9350
- exports.TMagicCodeEditor = _sfc_main$M;
9716
+ exports.LayoutContainer = _sfc_main$y;
9717
+ exports.PropsPanel = _sfc_main$t;
9718
+ exports.Resizer = _sfc_main$z;
9719
+ exports.SplitView = _sfc_main$y;
9720
+ exports.TMagicCodeEditor = _sfc_main$Q;
9351
9721
  exports.TMagicEditor = Editor;
9352
- exports.ToolButton = _sfc_main$r;
9722
+ exports.ToolButton = _sfc_main$v;
9353
9723
  exports.V_GUIDE_LINE_STORAGE_KEY = V_GUIDE_LINE_STORAGE_KEY;
9354
9724
  exports.advancedTabConfig = advancedTabConfig;
9355
9725
  exports.beforePaste = beforePaste;