@tmagic/editor 1.3.13 → 1.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('@element-plus/icons-vue'), require('lodash-es'), require('serialize-javascript'), require('@tmagic/design'), require('emmet-monaco-es'), require('monaco-editor'), require('@tmagic/schema'), require('@tmagic/form'), require('@tmagic/table'), require('@tmagic/utils'), require('gesto'), require('moveable'), require('@tmagic/dep'), require('@tmagic/stage'), require('events'), require('@tmagic/core'), require('keycon')) :
3
3
  typeof define === 'function' && define.amd ? define(['exports', 'vue', '@element-plus/icons-vue', 'lodash-es', 'serialize-javascript', '@tmagic/design', 'emmet-monaco-es', 'monaco-editor', '@tmagic/schema', '@tmagic/form', '@tmagic/table', '@tmagic/utils', 'gesto', 'moveable', '@tmagic/dep', '@tmagic/stage', 'events', '@tmagic/core', 'keycon'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicEditor = {}, global.Vue, global.iconsVue, global.lodashEs, global.serialize, global.design, global.emmetMonacoEs, global.monaco, global.schema, global.form, global.table, global.utils, global.Gesto, global.Moveable, global.dep, global.StageCore, global.events, global.core, global.KeyController));
5
- })(this, (function (exports, vue, iconsVue, lodashEs, serialize, design, emmetMonacoEs, monaco, schema, form, table, utils, Gesto, Moveable, dep, StageCore, events, core, KeyController) { 'use strict';
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicEditor = {}, global.Vue, global.iconsVue, global.lodashEs, global.serialize, global.design, global.emmetMonacoEs, global.monaco, global.schema, global.form, global.table, global.utils, global.Gesto, global.VanillaMoveable, global.dep, global.StageCore, global.events, global.core, global.KeyController));
5
+ })(this, (function (exports, vue, iconsVue, lodashEs, serialize, design, emmetMonacoEs, monaco, schema, form, table, utils, Gesto, VanillaMoveable, dep, StageCore, events, core, KeyController) { 'use strict';
6
6
 
7
7
  function _interopNamespaceDefault(e) {
8
8
  const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
@@ -367,13 +367,58 @@
367
367
  name: "hookData",
368
368
  enableToggleMode: false,
369
369
  expandAll: true,
370
- titleKey: "codeId",
370
+ title: (mForm, { model, index }) => {
371
+ if (model.codeType === schema.HookCodeType.DATA_SOURCE_METHOD) {
372
+ if (Array.isArray(model.codeId)) {
373
+ if (model.codeId.length < 2) {
374
+ return index;
375
+ }
376
+ const ds = services?.dataSourceService.getDataSourceById(model.codeId[0]);
377
+ return `${ds?.title} / ${model.codeId[1]}`;
378
+ }
379
+ return Array.isArray(model.codeId) ? model.codeId.join("/") : index;
380
+ }
381
+ return model.codeId || index;
382
+ },
371
383
  items: [
372
384
  {
373
- type: "code-select-col",
374
- name: "codeId",
375
- labelWidth: 0,
376
- disabled: () => !services?.codeBlockService.getEditStatus()
385
+ type: "row",
386
+ items: [
387
+ {
388
+ type: "select",
389
+ name: "codeType",
390
+ span: 8,
391
+ options: [
392
+ { value: schema.HookCodeType.CODE, text: "代码块" },
393
+ { value: schema.HookCodeType.DATA_SOURCE_METHOD, text: "数据源方法" }
394
+ ],
395
+ defaultValue: "code",
396
+ onChange: (mForm, v, { model }) => {
397
+ if (v === schema.HookCodeType.DATA_SOURCE_METHOD) {
398
+ model.codeId = [];
399
+ } else {
400
+ model.codeId = "";
401
+ }
402
+ return v;
403
+ }
404
+ },
405
+ {
406
+ type: "code-select-col",
407
+ name: "codeId",
408
+ span: 16,
409
+ labelWidth: 0,
410
+ display: (mForm, { model }) => model.codeType !== schema.HookCodeType.DATA_SOURCE_METHOD,
411
+ notEditable: () => !services?.codeBlockService.getEditStatus()
412
+ },
413
+ {
414
+ type: "data-source-method-select",
415
+ name: "codeId",
416
+ span: 16,
417
+ labelWidth: 0,
418
+ display: (mForm, { model }) => model.codeType === schema.HookCodeType.DATA_SOURCE_METHOD,
419
+ notEditable: () => !services?.dataSourceService.get("editable")
420
+ }
421
+ ]
377
422
  }
378
423
  ]
379
424
  }));
@@ -3392,8 +3437,10 @@
3392
3437
  },
3393
3438
  emits: ["change"],
3394
3439
  setup(__props, { emit: __emit }) {
3440
+ const mForm = vue.inject("mForm");
3395
3441
  const services = vue.inject("services");
3396
3442
  const emit = __emit;
3443
+ const notEditable = vue.computed(() => form.filterFunction(mForm, props.config.notEditable, props));
3397
3444
  const props = __props;
3398
3445
  const getParamItemsConfig = (codeId) => {
3399
3446
  if (!codeDsl.value || !codeId)
@@ -3420,6 +3467,7 @@
3420
3467
  const selectConfig = {
3421
3468
  type: "select",
3422
3469
  name: props.name,
3470
+ disable: props.disabled,
3423
3471
  options: () => {
3424
3472
  if (codeDsl.value) {
3425
3473
  return lodashEs.map(codeDsl.value, (value, key) => ({
@@ -3459,13 +3507,13 @@
3459
3507
  _ctx.model[_ctx.name] ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
3460
3508
  key: 0,
3461
3509
  class: "icon",
3462
- icon: !_ctx.disabled ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
3510
+ icon: !notEditable.value ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
3463
3511
  onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(editCode)(_ctx.model[_ctx.name]))
3464
3512
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
3465
3513
  ]),
3466
3514
  paramsConfig.value.length ? (vue.openBlock(), vue.createBlock(_sfc_main$P, {
3467
- key: 0,
3468
3515
  name: "params",
3516
+ key: _ctx.model[_ctx.name],
3469
3517
  model: _ctx.model,
3470
3518
  size: _ctx.size,
3471
3519
  "params-config": paramsConfig.value,
@@ -3475,7 +3523,7 @@
3475
3523
  key: 1,
3476
3524
  ref_key: "codeBlockEditor",
3477
3525
  ref: codeBlockEditor,
3478
- disabled: _ctx.disabled,
3526
+ disabled: notEditable.value,
3479
3527
  content: vue.unref(codeConfig),
3480
3528
  onSubmit: vue.unref(submitCodeBlockHandler)
3481
3529
  }, null, 8, ["disabled", "content", "onSubmit"])) : vue.createCommentVNode("", true)
@@ -4270,15 +4318,22 @@
4270
4318
  },
4271
4319
  emits: ["change"],
4272
4320
  setup(__props, { emit: __emit }) {
4321
+ const mForm = vue.inject("mForm");
4273
4322
  const services = vue.inject("services");
4274
4323
  const emit = __emit;
4275
4324
  const dataSourceService = services?.dataSourceService;
4276
4325
  const props = __props;
4326
+ const notEditable = vue.computed(() => form.filterFunction(mForm, props.config.notEditable, props));
4277
4327
  const dataSources = vue.computed(() => dataSourceService?.get("dataSources"));
4278
- const getParamItemsConfig = ([dataSourceId, medthodName] = ["", ""]) => {
4328
+ const isCustomMethod = vue.computed(() => {
4329
+ const [id, name] = props.model[props.name];
4330
+ const dataSource = dataSourceService?.getDataSourceById(id);
4331
+ return Boolean(dataSource?.methods.find((method) => method.name === name));
4332
+ });
4333
+ const getParamItemsConfig = ([dataSourceId, methodName] = ["", ""]) => {
4279
4334
  if (!dataSourceId)
4280
4335
  return [];
4281
- const paramStatements = dataSources.value?.find((item) => item.id === dataSourceId)?.methods?.find((item) => item.name === medthodName)?.params;
4336
+ const paramStatements = dataSources.value?.find((item) => item.id === dataSourceId)?.methods?.find((item) => item.name === methodName)?.params;
4282
4337
  if (!paramStatements)
4283
4338
  return [];
4284
4339
  return paramStatements.map((paramState) => ({
@@ -4312,6 +4367,7 @@
4312
4367
  type: "cascader",
4313
4368
  name: props.name,
4314
4369
  options: methodsOptions.value,
4370
+ disable: props.disabled,
4315
4371
  onChange: (formState, dataSourceMethod) => {
4316
4372
  setParamsConfig(dataSourceMethod, formState);
4317
4373
  return dataSourceMethod;
@@ -4343,10 +4399,10 @@
4343
4399
  model: _ctx.model,
4344
4400
  onChange: onChangeHandler
4345
4401
  }, null, 8, ["config", "model"]),
4346
- _ctx.model[_ctx.name] ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
4402
+ _ctx.model[_ctx.name] && isCustomMethod.value ? (vue.openBlock(), vue.createBlock(_sfc_main$O, {
4347
4403
  key: 0,
4348
4404
  class: "icon",
4349
- icon: !_ctx.disabled ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
4405
+ icon: !notEditable.value ? vue.unref(iconsVue.Edit) : vue.unref(iconsVue.View),
4350
4406
  onClick: editCodeHandler
4351
4407
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
4352
4408
  ]),
@@ -4363,7 +4419,7 @@
4363
4419
  key: 1,
4364
4420
  ref_key: "codeBlockEditor",
4365
4421
  ref: codeBlockEditor,
4366
- disabled: _ctx.disabled,
4422
+ disabled: notEditable.value,
4367
4423
  content: vue.unref(codeConfig),
4368
4424
  onSubmit: submitCodeBlockHandler
4369
4425
  }, null, 8, ["disabled", "content"])) : vue.createCommentVNode("", true)
@@ -4776,7 +4832,7 @@
4776
4832
  type: "code-select-col",
4777
4833
  text: "代码块",
4778
4834
  name: "codeId",
4779
- disabled: () => !codeBlockService?.getEditStatus(),
4835
+ notEditable: () => !codeBlockService?.getEditStatus(),
4780
4836
  display: (mForm, { model }) => model.actionType === schema.ActionType.CODE
4781
4837
  };
4782
4838
  return { ...defaultCodeActionConfig, ...props.config.codeActionConfig };
@@ -4786,6 +4842,7 @@
4786
4842
  type: "data-source-method-select",
4787
4843
  text: "数据源方法",
4788
4844
  name: "dataSourceMethod",
4845
+ notEditable: () => !services?.dataSourceService.get("editable"),
4789
4846
  display: (mForm, { model }) => model.actionType === schema.ActionType.DATA_SOURCE
4790
4847
  };
4791
4848
  return { ...defaultDataSourceActionConfig, ...props.config.dataSourceActionConfig };
@@ -5681,7 +5738,7 @@
5681
5738
  ])
5682
5739
  ]),
5683
5740
  _: 1
5684
- }, 8, ["disabled"])) : _ctx.data.type === "component" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.data.component), vue.normalizeProps(vue.mergeProps({ key: 4 }, _ctx.data.props || {})), null, 16)) : vue.createCommentVNode("", true)
5741
+ }, 8, ["disabled"])) : _ctx.data.type === "component" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.data.component), vue.mergeProps({ key: 4 }, _ctx.data.props || {}, vue.toHandlers(_ctx.data.listeners || {})), null, 16)) : vue.createCommentVNode("", true)
5685
5742
  ], 34)) : vue.createCommentVNode("", true);
5686
5743
  };
5687
5744
  }
@@ -5957,7 +6014,7 @@
5957
6014
  );
5958
6015
  vue.watch(active, (active2) => {
5959
6016
  if (active2 === schema.NodeType.PAGE) {
5960
- if (!activePage.value) {
6017
+ if (!activePage.value && !pageList.value.length) {
5961
6018
  editorService?.selectRoot();
5962
6019
  return;
5963
6020
  }
@@ -5965,11 +6022,11 @@
5965
6022
  return;
5966
6023
  }
5967
6024
  if (active2 === schema.NodeType.PAGE_FRAGMENT) {
5968
- if (!activePageFragment.value) {
6025
+ if (!activePageFragment.value && !pageFragmentList.value.length) {
5969
6026
  editorService?.selectRoot();
5970
6027
  return;
5971
6028
  }
5972
- switchPage(activePageFragment.value);
6029
+ switchPage(activePageFragment.value || pageFragmentList.value[0].id);
5973
6030
  }
5974
6031
  });
5975
6032
  const switchPage = (id) => {
@@ -6516,108 +6573,141 @@
6516
6573
  }
6517
6574
  });
6518
6575
 
6576
+ const _hoisted_1$a = { class: "m-editor-float-box-body" };
6577
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
6578
+ __name: "FloatingBox",
6579
+ props: {
6580
+ visible: { type: Boolean, default: false },
6581
+ position: { default: () => ({ left: 0, top: 0 }) },
6582
+ rect: { default: () => ({ width: "auto", height: "auto" }) },
6583
+ title: { default: "" }
6584
+ },
6585
+ emits: ["update:visible"],
6586
+ setup(__props, { expose: __expose, emit: __emit }) {
6587
+ const props = __props;
6588
+ const emit = __emit;
6589
+ const target = vue.ref();
6590
+ const dragTarget = vue.ref();
6591
+ const style = vue.computed(() => ({
6592
+ left: `${props.position.left}px`,
6593
+ top: `${props.position.top}px`,
6594
+ width: typeof props.rect.width === "string" ? props.rect.width : `${props.rect.width}px`,
6595
+ height: typeof props.rect.height === "string" ? props.rect.height : `${props.rect.height}px`
6596
+ }));
6597
+ let moveable = null;
6598
+ const initMoveable = () => {
6599
+ moveable = new VanillaMoveable(globalThis.document.body, {
6600
+ className: "m-editor-floating-box-moveable",
6601
+ target: target.value,
6602
+ draggable: true,
6603
+ resizable: true,
6604
+ edge: true,
6605
+ keepRatio: false,
6606
+ origin: false,
6607
+ snappable: true,
6608
+ dragTarget: dragTarget.value,
6609
+ dragTargetSelf: false,
6610
+ linePadding: 10,
6611
+ controlPadding: 10
6612
+ });
6613
+ moveable.on("drag", (e) => {
6614
+ e.target.style.transform = e.transform;
6615
+ });
6616
+ moveable.on("resize", (e) => {
6617
+ e.target.style.width = `${e.width}px`;
6618
+ e.target.style.height = `${e.height}px`;
6619
+ e.target.style.transform = e.drag.transform;
6620
+ });
6621
+ };
6622
+ const destroyMoveable = () => {
6623
+ moveable?.destroy();
6624
+ moveable = null;
6625
+ };
6626
+ vue.watch(
6627
+ () => props.visible,
6628
+ async (visible) => {
6629
+ if (visible) {
6630
+ await vue.nextTick();
6631
+ initMoveable();
6632
+ } else {
6633
+ destroyMoveable();
6634
+ }
6635
+ },
6636
+ {
6637
+ immediate: true
6638
+ }
6639
+ );
6640
+ vue.onBeforeUnmount(() => {
6641
+ destroyMoveable();
6642
+ });
6643
+ const closeHandler = () => {
6644
+ emit("update:visible", false);
6645
+ };
6646
+ __expose({
6647
+ target
6648
+ });
6649
+ return (_ctx, _cache) => {
6650
+ return _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
6651
+ key: 0,
6652
+ to: "body"
6653
+ }, [
6654
+ vue.createElementVNode("div", {
6655
+ ref_key: "target",
6656
+ ref: target,
6657
+ class: "m-editor-float-box",
6658
+ style: vue.normalizeStyle(style.value)
6659
+ }, [
6660
+ vue.createElementVNode("div", {
6661
+ ref_key: "dragTarget",
6662
+ ref: dragTarget,
6663
+ class: "m-editor-float-box-title"
6664
+ }, [
6665
+ vue.renderSlot(_ctx.$slots, "title", {}, () => [
6666
+ vue.createElementVNode("span", null, vue.toDisplayString(_ctx.title), 1)
6667
+ ]),
6668
+ vue.createElementVNode("div", null, [
6669
+ vue.createVNode(vue.unref(design.TMagicButton), {
6670
+ link: "",
6671
+ size: "small",
6672
+ icon: vue.unref(iconsVue.Close),
6673
+ onClick: closeHandler
6674
+ }, null, 8, ["icon"])
6675
+ ])
6676
+ ], 512),
6677
+ vue.createElementVNode("div", _hoisted_1$a, [
6678
+ vue.renderSlot(_ctx.$slots, "body")
6679
+ ])
6680
+ ], 4)
6681
+ ])) : vue.createCommentVNode("", true);
6682
+ };
6683
+ }
6684
+ });
6685
+
6519
6686
  const useFloatBox = (slideKeys) => {
6520
- const services = vue.inject("services");
6521
- const moveable = vue.ref();
6522
- const floatBox = vue.ref();
6523
- const floatBoxStates = vue.computed(() => services?.uiService.get("floatBox"));
6524
- const curKey = vue.ref("");
6525
- const target = vue.computed(
6526
- () => floatBox.value ? floatBox.value.find((item) => item.classList.contains(`m-editor-float-box-${curKey.value}`)) : void 0
6687
+ const floatBoxStates = vue.ref(
6688
+ slideKeys.value.reduce(
6689
+ (total, cur) => ({
6690
+ ...total,
6691
+ [cur]: {
6692
+ status: false,
6693
+ top: 0,
6694
+ left: 0
6695
+ }
6696
+ }),
6697
+ {}
6698
+ )
6527
6699
  );
6528
6700
  const showingBoxKeys = vue.computed(
6529
- () => [...floatBoxStates.value?.keys() ?? []].filter((key) => floatBoxStates.value?.get(key)?.status)
6701
+ () => Object.keys(floatBoxStates.value).filter((key) => floatBoxStates.value[key].status)
6530
6702
  );
6531
6703
  const isDraging = vue.ref(false);
6532
- const showFloatBox = async (key) => {
6533
- const curBoxStatus = floatBoxStates.value?.get(curKey.value)?.status;
6534
- if (curKey.value === key && curBoxStatus)
6535
- return;
6536
- curKey.value = key;
6537
- setSlideState(key, {
6538
- zIndex: getMaxZIndex() + 1,
6539
- status: true
6540
- });
6541
- await vue.nextTick();
6542
- if (moveable.value) {
6543
- moveable.value.target = target.value;
6544
- moveable.value.dragTarget = getDragTarget();
6545
- moveable.value.updateRect();
6546
- } else {
6547
- initFloatBoxMoveable();
6548
- }
6549
- };
6550
- const setSlideState = (key, data) => {
6551
- const slideState = floatBoxStates.value?.get(key);
6552
- if (!slideState)
6553
- return;
6554
- floatBoxStates.value?.set(key, {
6555
- ...slideState,
6556
- ...data
6557
- });
6558
- };
6559
- const getDragTarget = (key) => `.m-editor-float-box-header-${key ?? curKey.value}`;
6560
- const closeFloatBox = (key) => {
6561
- setSlideState(key, {
6562
- status: false
6563
- });
6564
- if (!floatBoxStates.value?.values)
6565
- return;
6566
- const keys = [...floatBoxStates.value?.keys()];
6567
- const values = [...floatBoxStates.value?.values()];
6568
- const lastFloatBoxLen = values.filter((state) => state.status).length;
6569
- if (lastFloatBoxLen === 0) {
6570
- moveable.value?.destroy();
6571
- moveable.value = void 0;
6572
- return;
6573
- }
6574
- if (key === curKey.value) {
6575
- const zIndexList = values.filter((item) => item.status).map((item) => item.zIndex);
6576
- const maxZIndex = Math.max(...zIndexList);
6577
- const key2 = keys.find((key3) => floatBoxStates.value?.get(key3)?.zIndex === maxZIndex);
6578
- if (!key2)
6579
- return;
6580
- showFloatBox(key2);
6581
- }
6582
- };
6583
- const getMaxZIndex = () => {
6584
- if (!floatBoxStates.value?.values())
6585
- return 0;
6586
- const list = [...floatBoxStates.value?.values()].map((state) => state.zIndex);
6587
- return Math.max(...list) ?? 0;
6588
- };
6589
- const initFloatBoxMoveable = () => {
6590
- const dragTarget = getDragTarget();
6591
- moveable.value = new Moveable(document.body, {
6592
- target: target.value,
6593
- draggable: true,
6594
- resizable: true,
6595
- edge: true,
6596
- keepRatio: false,
6597
- origin: false,
6598
- snappable: true,
6599
- dragTarget,
6600
- dragTargetSelf: false,
6601
- linePadding: 10,
6602
- controlPadding: 10,
6603
- elementGuidelines: [...floatBoxStates.value?.keys() ?? []].map((key) => getDragTarget(key)),
6604
- bounds: { left: 0, top: 0, right: 0, bottom: 0, position: "css" }
6605
- });
6606
- moveable.value.on("drag", (e) => {
6607
- e.target.style.transform = e.transform;
6608
- });
6609
- moveable.value.on("resize", (e) => {
6610
- e.target.style.width = `${e.width}px`;
6611
- e.target.style.height = `${e.height}px`;
6612
- e.target.style.transform = e.drag.transform;
6613
- });
6614
- };
6704
+ const dragstartHandler = () => isDraging.value = true;
6615
6705
  const dragendHandler = (key, e) => {
6616
- setSlideState(key, {
6706
+ floatBoxStates.value[key] = {
6617
6707
  left: e.clientX,
6618
- top: e.clientY
6619
- });
6620
- showFloatBox(key);
6708
+ top: e.clientY,
6709
+ status: true
6710
+ };
6621
6711
  isDraging.value = false;
6622
6712
  };
6623
6713
  document.body.addEventListener("dragover", (e) => {
@@ -6625,11 +6715,18 @@
6625
6715
  return;
6626
6716
  e.preventDefault();
6627
6717
  });
6628
- const dragstartHandler = () => isDraging.value = true;
6629
6718
  vue.watch(
6630
6719
  () => slideKeys.value,
6631
6720
  () => {
6632
- services?.uiService.setFloatBox(slideKeys.value);
6721
+ for (const key in slideKeys.value) {
6722
+ if (floatBoxStates.value[key])
6723
+ continue;
6724
+ floatBoxStates.value[key] = {
6725
+ status: false,
6726
+ top: 0,
6727
+ left: 0
6728
+ };
6729
+ }
6633
6730
  },
6634
6731
  {
6635
6732
  deep: true,
@@ -6637,17 +6734,14 @@
6637
6734
  }
6638
6735
  );
6639
6736
  return {
6640
- showFloatBox,
6641
- closeFloatBox,
6642
6737
  dragstartHandler,
6643
6738
  dragendHandler,
6644
6739
  floatBoxStates,
6645
- floatBox,
6646
6740
  showingBoxKeys
6647
6741
  };
6648
6742
  };
6649
6743
 
6650
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
6744
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
6651
6745
  ...{
6652
6746
  name: "MEditorSearchInput"
6653
6747
  },
@@ -6698,14 +6792,14 @@
6698
6792
  });
6699
6793
  };
6700
6794
 
6701
- const _hoisted_1$a = ["draggable", "data-node-id", "data-is-container"];
6795
+ const _hoisted_1$9 = ["draggable", "data-node-id", "data-is-container"];
6702
6796
  const _hoisted_2$6 = { class: "tree-node-label" };
6703
6797
  const _hoisted_3$3 = { class: "tree-node-tool" };
6704
6798
  const _hoisted_4$3 = {
6705
6799
  key: 0,
6706
6800
  class: "m-editor-tree-node-children"
6707
6801
  };
6708
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
6802
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
6709
6803
  ...{
6710
6804
  name: "MEditorTreeNode"
6711
6805
  },
@@ -6815,18 +6909,18 @@
6815
6909
  }, 1032, ["data", "node-status-map", "indent"]);
6816
6910
  }), 128))
6817
6911
  ])) : vue.createCommentVNode("", true)
6818
- ], 40, _hoisted_1$a)), [
6912
+ ], 40, _hoisted_1$9)), [
6819
6913
  [vue.vShow, visible.value]
6820
6914
  ]);
6821
6915
  };
6822
6916
  }
6823
6917
  });
6824
6918
 
6825
- const _hoisted_1$9 = {
6919
+ const _hoisted_1$8 = {
6826
6920
  key: 1,
6827
6921
  class: "m-editor-tree-empty"
6828
6922
  };
6829
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
6923
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
6830
6924
  ...{
6831
6925
  name: "MEditorTree"
6832
6926
  },
@@ -6850,7 +6944,7 @@
6850
6944
  onDragover: handleDragOver
6851
6945
  }, [
6852
6946
  _ctx.data?.length ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.data, (item) => {
6853
- return vue.openBlock(), vue.createBlock(_sfc_main$o, {
6947
+ return vue.openBlock(), vue.createBlock(_sfc_main$n, {
6854
6948
  key: item.id,
6855
6949
  data: item,
6856
6950
  indent: _ctx.indent,
@@ -6867,7 +6961,7 @@
6867
6961
  ]),
6868
6962
  _: 2
6869
6963
  }, 1032, ["data", "indent", "node-status-map"]);
6870
- }), 128)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
6964
+ }), 128)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
6871
6965
  vue.createElementVNode("p", null, vue.toDisplayString(_ctx.emptyText), 1)
6872
6966
  ]))
6873
6967
  ], 32);
@@ -6947,7 +7041,7 @@
6947
7041
  };
6948
7042
  };
6949
7043
 
6950
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
7044
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
6951
7045
  ...{
6952
7046
  name: "MEditorCodeBlockList"
6953
7047
  },
@@ -7029,7 +7123,7 @@
7029
7123
  filter: filterTextChangeHandler
7030
7124
  });
7031
7125
  return (_ctx, _cache) => {
7032
- return vue.openBlock(), vue.createBlock(_sfc_main$n, {
7126
+ return vue.openBlock(), vue.createBlock(_sfc_main$m, {
7033
7127
  data: codeList.value,
7034
7128
  "node-status-map": vue.unref(nodeStatusMap),
7035
7129
  onNodeClick: clickHandler
@@ -7085,8 +7179,8 @@
7085
7179
  }
7086
7180
  });
7087
7181
 
7088
- const _hoisted_1$8 = { class: "search-wrapper" };
7089
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
7182
+ const _hoisted_1$7 = { class: "search-wrapper" };
7183
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
7090
7184
  ...{
7091
7185
  name: "MEditorCodeBlockListPanel"
7092
7186
  },
@@ -7108,8 +7202,8 @@
7108
7202
  vue.createVNode(vue.unref(design.TMagicScrollbar), { class: "m-editor-code-block-list m-editor-layer-panel" }, {
7109
7203
  default: vue.withCtx(() => [
7110
7204
  vue.renderSlot(_ctx.$slots, "code-block-panel-header", {}, () => [
7111
- vue.createElementVNode("div", _hoisted_1$8, [
7112
- vue.createVNode(_sfc_main$p, { onSearch: filterTextChangeHandler }),
7205
+ vue.createElementVNode("div", _hoisted_1$7, [
7206
+ vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
7113
7207
  editable.value ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicButton), {
7114
7208
  key: 0,
7115
7209
  class: "create-code-button",
@@ -7125,7 +7219,7 @@
7125
7219
  vue.renderSlot(_ctx.$slots, "code-block-panel-search")
7126
7220
  ])
7127
7221
  ]),
7128
- vue.createVNode(_sfc_main$m, {
7222
+ vue.createVNode(_sfc_main$l, {
7129
7223
  ref_key: "codeBlockList",
7130
7224
  ref: codeBlockList,
7131
7225
  "custom-error": _ctx.customError,
@@ -7157,7 +7251,7 @@
7157
7251
  }
7158
7252
  });
7159
7253
 
7160
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
7254
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
7161
7255
  ...{
7162
7256
  name: "MEditorDataSourceConfigPanel"
7163
7257
  },
@@ -7213,7 +7307,7 @@
7213
7307
  }
7214
7308
  });
7215
7309
 
7216
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
7310
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
7217
7311
  ...{
7218
7312
  name: "MEditorDataSourceList"
7219
7313
  },
@@ -7302,7 +7396,7 @@
7302
7396
  filter: filterTextChangeHandler
7303
7397
  });
7304
7398
  return (_ctx, _cache) => {
7305
- return vue.openBlock(), vue.createBlock(_sfc_main$n, {
7399
+ return vue.openBlock(), vue.createBlock(_sfc_main$m, {
7306
7400
  data: list.value,
7307
7401
  "node-status-map": vue.unref(nodeStatusMap),
7308
7402
  onNodeClick: clickHandler
@@ -7355,9 +7449,9 @@
7355
7449
  }
7356
7450
  });
7357
7451
 
7358
- const _hoisted_1$7 = { class: "search-wrapper" };
7452
+ const _hoisted_1$6 = { class: "search-wrapper" };
7359
7453
  const _hoisted_2$5 = { class: "data-source-list-panel-add-menu" };
7360
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
7454
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
7361
7455
  ...{
7362
7456
  name: "MEditorDataSourceListPanel"
7363
7457
  },
@@ -7421,8 +7515,8 @@
7421
7515
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
7422
7516
  vue.createVNode(vue.unref(design.TMagicScrollbar), { class: "data-source-list-panel m-editor-layer-panel" }, {
7423
7517
  default: vue.withCtx(() => [
7424
- vue.createElementVNode("div", _hoisted_1$7, [
7425
- vue.createVNode(_sfc_main$p, { onSearch: filterTextChangeHandler }),
7518
+ vue.createElementVNode("div", _hoisted_1$6, [
7519
+ vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
7426
7520
  editable.value ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicPopover), {
7427
7521
  key: 0,
7428
7522
  placement: "right"
@@ -7457,14 +7551,14 @@
7457
7551
  _: 1
7458
7552
  })) : vue.createCommentVNode("", true)
7459
7553
  ]),
7460
- vue.createVNode(_sfc_main$j, {
7554
+ vue.createVNode(_sfc_main$i, {
7461
7555
  onEdit: editHandler,
7462
7556
  onRemove: removeHandler
7463
7557
  })
7464
7558
  ]),
7465
7559
  _: 1
7466
7560
  }),
7467
- vue.createVNode(_sfc_main$k, {
7561
+ vue.createVNode(_sfc_main$j, {
7468
7562
  ref_key: "editDialog",
7469
7563
  ref: editDialog,
7470
7564
  disabled: !editable.value,
@@ -7478,7 +7572,7 @@
7478
7572
  }
7479
7573
  });
7480
7574
 
7481
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
7575
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
7482
7576
  ...{
7483
7577
  name: "MEditorContentMenu"
7484
7578
  },
@@ -7644,7 +7738,7 @@
7644
7738
  }
7645
7739
  });
7646
7740
 
7647
- const _hoisted_1$6 = {
7741
+ const _hoisted_1$5 = {
7648
7742
  width: "1em",
7649
7743
  height: "1em",
7650
7744
  viewBox: "0 0 16 16",
@@ -7664,14 +7758,14 @@
7664
7758
  _hoisted_2$4,
7665
7759
  _hoisted_3$2
7666
7760
  ];
7667
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
7761
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
7668
7762
  ...{
7669
7763
  name: "MEditorFolderMinusIcon"
7670
7764
  },
7671
7765
  __name: "FolderMinusIcon",
7672
7766
  setup(__props) {
7673
7767
  return (_ctx, _cache) => {
7674
- return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$6, _hoisted_4$2);
7768
+ return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$5, _hoisted_4$2);
7675
7769
  };
7676
7770
  }
7677
7771
  });
@@ -7749,7 +7843,7 @@
7749
7843
  };
7750
7844
  };
7751
7845
 
7752
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
7846
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
7753
7847
  ...{
7754
7848
  name: "MEditorLayerMenu"
7755
7849
  },
@@ -7816,7 +7910,7 @@
7816
7910
  {
7817
7911
  type: "button",
7818
7912
  text: "全部折叠",
7819
- icon: _sfc_main$g,
7913
+ icon: _sfc_main$f,
7820
7914
  display: () => utils.isPage(node.value) || utils.isPageFragment(node.value),
7821
7915
  handler: () => {
7822
7916
  emit("collapse-all");
@@ -7845,7 +7939,7 @@
7845
7939
  show
7846
7940
  });
7847
7941
  return (_ctx, _cache) => {
7848
- return vue.openBlock(), vue.createBlock(_sfc_main$h, {
7942
+ return vue.openBlock(), vue.createBlock(_sfc_main$g, {
7849
7943
  "menu-data": menuData.value,
7850
7944
  ref_key: "menu",
7851
7945
  ref: menu,
@@ -7855,7 +7949,7 @@
7855
7949
  }
7856
7950
  });
7857
7951
 
7858
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
7952
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
7859
7953
  __name: "LayerNodeTool",
7860
7954
  props: {
7861
7955
  data: {}
@@ -7952,7 +8046,7 @@
7952
8046
  return {
7953
8047
  menu,
7954
8048
  nodeClickHandler,
7955
- nodeContentmenuHandler(event, data) {
8049
+ nodeContentMenuHandler(event, data) {
7956
8050
  event.preventDefault();
7957
8051
  const nodes = services?.editorService.get("nodes") || [];
7958
8052
  if (nodes.length < 2 || !nodes.includes(data)) {
@@ -8278,12 +8372,12 @@
8278
8372
  () => page.value ? nodeStatusMaps.value.get(page.value.id) : /* @__PURE__ */ new Map()
8279
8373
  );
8280
8374
  vue.watch(
8281
- page,
8282
- (page2) => {
8283
- if (!page2) {
8375
+ () => page.value?.id,
8376
+ (pageId) => {
8377
+ if (!pageId) {
8284
8378
  return;
8285
8379
  }
8286
- nodeStatusMaps.value.set(page2.id, createPageNodeStatus(page2, nodeStatusMaps.value.get(page2.id)));
8380
+ nodeStatusMaps.value.set(pageId, createPageNodeStatus(page.value, nodeStatusMaps.value.get(pageId)));
8287
8381
  },
8288
8382
  {
8289
8383
  immediate: true
@@ -8311,6 +8405,8 @@
8311
8405
  );
8312
8406
  services?.editorService.on("add", (newNodes) => {
8313
8407
  newNodes.forEach((node) => {
8408
+ if (utils.isPage(node) || utils.isPageFragment(node))
8409
+ return;
8314
8410
  traverseNode(node, (node2) => {
8315
8411
  nodeStatusMap.value?.set(node2.id, {
8316
8412
  visible: true,
@@ -8334,7 +8430,7 @@
8334
8430
  };
8335
8431
  };
8336
8432
 
8337
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
8433
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
8338
8434
  ...{
8339
8435
  name: "MEditorLayerPanel"
8340
8436
  },
@@ -8376,15 +8472,15 @@
8376
8472
  const {
8377
8473
  menu,
8378
8474
  nodeClickHandler,
8379
- nodeContentmenuHandler,
8475
+ nodeContentMenuHandler,
8380
8476
  highlightHandler: mouseenterHandler
8381
8477
  } = useClick(services, isCtrlKeyDown, nodeStatusMap);
8382
8478
  return (_ctx, _cache) => {
8383
8479
  return vue.openBlock(), vue.createBlock(vue.unref(design.TMagicScrollbar), { class: "m-editor-layer-panel" }, {
8384
8480
  default: vue.withCtx(() => [
8385
8481
  vue.renderSlot(_ctx.$slots, "layer-panel-header"),
8386
- vue.createVNode(_sfc_main$p, { onSearch: vue.unref(filterTextChangeHandler) }, null, 8, ["onSearch"]),
8387
- page.value && vue.unref(nodeStatusMap) ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
8482
+ vue.createVNode(_sfc_main$o, { onSearch: vue.unref(filterTextChangeHandler) }, null, 8, ["onSearch"]),
8483
+ page.value && vue.unref(nodeStatusMap) ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
8388
8484
  key: 0,
8389
8485
  tabindex: "-1",
8390
8486
  ref_key: "tree",
@@ -8395,7 +8491,7 @@
8395
8491
  onNodeDragstart: vue.unref(handleDragStart),
8396
8492
  onNodeDragleave: vue.unref(handleDragLeave),
8397
8493
  onNodeDragend: vue.unref(handleDragEnd),
8398
- onNodeContextmenu: vue.unref(nodeContentmenuHandler),
8494
+ onNodeContextmenu: vue.unref(nodeContentMenuHandler),
8399
8495
  onNodeMouseenter: vue.unref(mouseenterHandler),
8400
8496
  onNodeClick: vue.unref(nodeClickHandler)
8401
8497
  }, {
@@ -8404,7 +8500,7 @@
8404
8500
  ]),
8405
8501
  "tree-node-tool": vue.withCtx(({ data: nodeData2 }) => [
8406
8502
  vue.renderSlot(_ctx.$slots, "layer-node-tool", { data: nodeData2 }, () => [
8407
- vue.createVNode(_sfc_main$e, { data: nodeData2 }, null, 8, ["data"])
8503
+ vue.createVNode(_sfc_main$d, { data: nodeData2 }, null, 8, ["data"])
8408
8504
  ])
8409
8505
  ]),
8410
8506
  "tree-node-label": vue.withCtx(({ data: nodeData2 }) => [
@@ -8413,7 +8509,7 @@
8413
8509
  _: 3
8414
8510
  }, 8, ["data", "node-status-map", "onNodeDragover", "onNodeDragstart", "onNodeDragleave", "onNodeDragend", "onNodeContextmenu", "onNodeMouseenter", "onNodeClick"])) : vue.createCommentVNode("", true),
8415
8511
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
8416
- vue.createVNode(_sfc_main$f, {
8512
+ vue.createVNode(_sfc_main$e, {
8417
8513
  ref_key: "menu",
8418
8514
  ref: menu,
8419
8515
  "layer-content-menu": _ctx.layerContentMenu,
@@ -8428,9 +8524,9 @@
8428
8524
  }
8429
8525
  });
8430
8526
 
8431
- const _hoisted_1$5 = ["onClick", "onDragstart"];
8527
+ const _hoisted_1$4 = ["onClick", "onDragstart"];
8432
8528
  const _hoisted_2$3 = ["title"];
8433
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
8529
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
8434
8530
  ...{
8435
8531
  name: "MEditorComponentListPanel"
8436
8532
  },
@@ -8510,7 +8606,7 @@
8510
8606
  "model-value": collapseValue.value
8511
8607
  }, {
8512
8608
  default: vue.withCtx(() => [
8513
- vue.createVNode(_sfc_main$p, { onSearch: filterTextChangeHandler }),
8609
+ vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
8514
8610
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(list.value, (group, index) => {
8515
8611
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
8516
8612
  group.items && group.items.length ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicCollapseItem), {
@@ -8549,7 +8645,7 @@
8549
8645
  title: item.text
8550
8646
  }, vue.toDisplayString(item.text), 9, _hoisted_2$3)
8551
8647
  ])
8552
- ], 40, _hoisted_1$5);
8648
+ ], 40, _hoisted_1$4);
8553
8649
  }), 128))
8554
8650
  ]),
8555
8651
  _: 2
@@ -8566,7 +8662,7 @@
8566
8662
  }
8567
8663
  });
8568
8664
 
8569
- const _hoisted_1$4 = {
8665
+ const _hoisted_1$3 = {
8570
8666
  key: 0,
8571
8667
  class: "m-editor-sidebar"
8572
8668
  };
@@ -8576,10 +8672,8 @@
8576
8672
  key: 1,
8577
8673
  class: "magic-editor-tab-panel-title"
8578
8674
  };
8579
- const _hoisted_5$1 = { class: "m-editor-float-box-list" };
8580
- const _hoisted_6 = ["onClick"];
8581
- const _hoisted_7 = { class: "m-editor-float-box-body" };
8582
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
8675
+ const _hoisted_5$1 = { class: "m-editor-slide-list-box" };
8676
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
8583
8677
  ...{
8584
8678
  name: "MEditorSidebar"
8585
8679
  },
@@ -8600,7 +8694,7 @@
8600
8694
  type: "component",
8601
8695
  icon: iconsVue.Goods,
8602
8696
  text: "组件",
8603
- component: _sfc_main$c,
8697
+ component: _sfc_main$b,
8604
8698
  slots: {}
8605
8699
  },
8606
8700
  layer: {
@@ -8612,7 +8706,7 @@
8612
8706
  layerContentMenu: props.layerContentMenu,
8613
8707
  customContentMenu: props.customContentMenu
8614
8708
  },
8615
- component: _sfc_main$d,
8709
+ component: _sfc_main$c,
8616
8710
  slots: {}
8617
8711
  },
8618
8712
  "code-block": {
@@ -8620,26 +8714,16 @@
8620
8714
  type: "component",
8621
8715
  icon: iconsVue.EditPen,
8622
8716
  text: "代码编辑",
8623
- component: _sfc_main$l,
8624
- slots: {},
8625
- boxComponentConfig: {
8626
- props: {
8627
- slideType: "box"
8628
- }
8629
- }
8717
+ component: _sfc_main$k,
8718
+ slots: {}
8630
8719
  },
8631
8720
  "data-source": {
8632
8721
  $key: "data-source",
8633
8722
  type: "component",
8634
8723
  icon: iconsVue.Coin,
8635
8724
  text: "数据源",
8636
- component: _sfc_main$i,
8637
- slots: {},
8638
- boxComponentConfig: {
8639
- props: {
8640
- slideType: "box"
8641
- }
8642
- }
8725
+ component: _sfc_main$h,
8726
+ slots: {}
8643
8727
  }
8644
8728
  };
8645
8729
  return typeof data === "string" ? map[data] : data;
@@ -8652,7 +8736,7 @@
8652
8736
  }
8653
8737
  );
8654
8738
  const slideKeys = vue.computed(() => sideBarItems.value.map((sideBarItem) => sideBarItem.$key));
8655
- const { showFloatBox, closeFloatBox, dragstartHandler, dragendHandler, floatBoxStates, floatBox, showingBoxKeys } = useFloatBox(slideKeys);
8739
+ const { dragstartHandler, dragendHandler, floatBoxStates, showingBoxKeys } = useFloatBox(slideKeys);
8656
8740
  vue.watch(
8657
8741
  () => showingBoxKeys.value.length,
8658
8742
  () => {
@@ -8676,7 +8760,7 @@
8676
8760
  });
8677
8761
  return (_ctx, _cache) => {
8678
8762
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
8679
- _ctx.data.type === "tabs" && _ctx.data.items.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
8763
+ _ctx.data.type === "tabs" && _ctx.data.items.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
8680
8764
  vue.createElementVNode("div", _hoisted_2$2, [
8681
8765
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(sideBarItems.value, (config, index) => {
8682
8766
  return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
@@ -8694,7 +8778,7 @@
8694
8778
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
8695
8779
  config.text ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, vue.toDisplayString(config.text), 1)) : vue.createCommentVNode("", true)
8696
8780
  ], 42, _hoisted_3$1)), [
8697
- [vue.vShow, !vue.unref(floatBoxStates)?.get(config.$key)?.status]
8781
+ [vue.vShow, !vue.unref(floatBoxStates)[config.$key]?.status]
8698
8782
  ]);
8699
8783
  }), 128))
8700
8784
  ]),
@@ -8703,7 +8787,7 @@
8703
8787
  class: "m-editor-sidebar-content",
8704
8788
  key: config.$key ?? index
8705
8789
  }, [
8706
- config && !vue.unref(floatBoxStates)?.get(config.$key)?.status ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(config.component), vue.mergeProps({ key: 0 }, config.props || {}, vue.toHandlers(config?.listeners || {})), vue.createSlots({ _: 2 }, [
8790
+ config && !vue.unref(floatBoxStates)[config.$key]?.status ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(config.component), vue.mergeProps({ key: 0 }, config.props || {}, vue.toHandlers(config?.listeners || {})), vue.createSlots({ _: 2 }, [
8707
8791
  config.$key === "component-list" || config.slots?.componentListPanelHeader ? {
8708
8792
  name: "component-list-panel-header",
8709
8793
  fn: vue.withCtx(() => [
@@ -8805,39 +8889,27 @@
8805
8889
  }), 128))
8806
8890
  ])) : vue.createCommentVNode("", true),
8807
8891
  (vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
8808
- vue.createElementVNode("div", _hoisted_5$1, [
8809
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(sideBarItems.value, (config, index) => {
8810
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
8892
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(sideBarItems.value, (config, index) => {
8893
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
8894
+ vue.unref(floatBoxStates)[config.$key]?.status ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
8811
8895
  key: config.$key ?? index,
8812
- ref_for: true,
8813
- ref_key: "floatBox",
8814
- ref: floatBox,
8815
- class: vue.normalizeClass(["m-editor-float-box", `m-editor-float-box-${config.$key}`]),
8816
- style: vue.normalizeStyle({
8817
- left: `${vue.unref(floatBoxStates)?.get(config.$key)?.left}px`,
8818
- top: `${vue.unref(floatBoxStates)?.get(config.$key)?.top}px`,
8819
- zIndex: vue.unref(floatBoxStates)?.get(config.$key)?.zIndex
8820
- })
8821
- }, [
8822
- vue.createElementVNode("div", {
8823
- class: vue.normalizeClass(["m-editor-float-box-header", `m-editor-float-box-header-${config.$key}`]),
8824
- onClick: ($event) => vue.unref(showFloatBox)(config.$key)
8825
- }, [
8826
- vue.createElementVNode("div", null, vue.toDisplayString(config.text), 1),
8827
- vue.createVNode(_sfc_main$O, {
8828
- class: "m-editor-float-box-close",
8829
- icon: vue.unref(iconsVue.Close),
8830
- onClick: vue.withModifiers(($event) => vue.unref(closeFloatBox)(config.$key), ["stop"])
8831
- }, null, 8, ["icon", "onClick"])
8832
- ], 10, _hoisted_6),
8833
- vue.createElementVNode("div", _hoisted_7, [
8834
- config && vue.unref(floatBoxStates)?.get(config.$key)?.status ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(config.boxComponentConfig?.component || config.component), vue.mergeProps({ key: 0 }, config.boxComponentConfig?.props || config.props || {}, vue.toHandlers(config?.listeners || {})), null, 16)) : vue.createCommentVNode("", true)
8835
- ])
8836
- ], 6)), [
8837
- [vue.vShow, vue.unref(floatBoxStates)?.get(config.$key)?.status]
8838
- ]);
8839
- }), 128))
8840
- ])
8896
+ visible: vue.unref(floatBoxStates)[config.$key].status,
8897
+ "onUpdate:visible": ($event) => vue.unref(floatBoxStates)[config.$key].status = $event,
8898
+ title: config.text,
8899
+ position: {
8900
+ left: vue.unref(floatBoxStates)[config.$key].left,
8901
+ top: vue.unref(floatBoxStates)[config.$key].top
8902
+ }
8903
+ }, {
8904
+ body: vue.withCtx(() => [
8905
+ vue.createElementVNode("div", _hoisted_5$1, [
8906
+ config && vue.unref(floatBoxStates)[config.$key].status ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(config.boxComponentConfig?.component || config.component), vue.mergeProps({ key: 0 }, config.boxComponentConfig?.props || config.props || {}, vue.toHandlers(config?.listeners || {})), null, 16)) : vue.createCommentVNode("", true)
8907
+ ])
8908
+ ]),
8909
+ _: 2
8910
+ }, 1032, ["visible", "onUpdate:visible", "title", "position"])) : vue.createCommentVNode("", true)
8911
+ ], 64);
8912
+ }), 256))
8841
8913
  ]))
8842
8914
  ], 64);
8843
8915
  };
@@ -8972,7 +9044,7 @@
8972
9044
  };
8973
9045
  }
8974
9046
 
8975
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
9047
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
8976
9048
  ...{
8977
9049
  name: "MEditorScrollBar"
8978
9050
  },
@@ -9060,7 +9132,7 @@
9060
9132
  }
9061
9133
  });
9062
9134
 
9063
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
9135
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
9064
9136
  ...{
9065
9137
  name: "MEditorScrollViewer"
9066
9138
  },
@@ -9147,14 +9219,14 @@
9147
9219
  vue.renderSlot(_ctx.$slots, "default")
9148
9220
  ], 4),
9149
9221
  vue.renderSlot(_ctx.$slots, "content"),
9150
- scrollHeight.value > _ctx.wrapHeight ? (vue.openBlock(), vue.createBlock(_sfc_main$a, {
9222
+ scrollHeight.value > _ctx.wrapHeight ? (vue.openBlock(), vue.createBlock(_sfc_main$9, {
9151
9223
  key: 0,
9152
9224
  "scroll-size": scrollHeight.value,
9153
9225
  pos: vOffset.value,
9154
9226
  size: _ctx.wrapHeight,
9155
9227
  onScroll: vScrollHandler
9156
9228
  }, null, 8, ["scroll-size", "pos", "size"])) : vue.createCommentVNode("", true),
9157
- scrollWidth.value > _ctx.wrapWidth ? (vue.openBlock(), vue.createBlock(_sfc_main$a, {
9229
+ scrollWidth.value > _ctx.wrapWidth ? (vue.openBlock(), vue.createBlock(_sfc_main$9, {
9158
9230
  key: 1,
9159
9231
  "is-horizontal": true,
9160
9232
  "scroll-size": scrollWidth.value,
@@ -9370,116 +9442,6 @@
9370
9442
  return stage;
9371
9443
  };
9372
9444
 
9373
- const _hoisted_1$3 = { class: "m-editor-float-box-body" };
9374
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
9375
- __name: "FloatingBox",
9376
- props: {
9377
- visible: { type: Boolean, default: false },
9378
- position: { default: () => ({ left: 0, top: 0 }) },
9379
- rect: { default: () => ({ width: "auto", height: "auto" }) },
9380
- title: { default: "" }
9381
- },
9382
- emits: ["update:visible"],
9383
- setup(__props, { expose: __expose, emit: __emit }) {
9384
- const props = __props;
9385
- const emit = __emit;
9386
- const target = vue.ref();
9387
- const dragTarget = vue.ref();
9388
- const style = vue.computed(() => ({
9389
- left: `${props.position.left}px`,
9390
- top: `${props.position.top}px`,
9391
- width: typeof props.rect.width === "string" ? props.rect.width : `${props.rect.width}px`,
9392
- height: typeof props.rect.height === "string" ? props.rect.height : `${props.rect.height}px`
9393
- }));
9394
- let moveable = null;
9395
- const initMoveable = () => {
9396
- moveable = new Moveable(globalThis.document.body, {
9397
- className: "m-editor-floating-box-moveable",
9398
- target: target.value,
9399
- draggable: true,
9400
- resizable: true,
9401
- edge: true,
9402
- keepRatio: false,
9403
- origin: false,
9404
- snappable: true,
9405
- dragTarget: dragTarget.value,
9406
- dragTargetSelf: false,
9407
- linePadding: 10,
9408
- controlPadding: 10
9409
- });
9410
- moveable.on("drag", (e) => {
9411
- e.target.style.transform = e.transform;
9412
- });
9413
- moveable.on("resize", (e) => {
9414
- e.target.style.width = `${e.width}px`;
9415
- e.target.style.height = `${e.height}px`;
9416
- e.target.style.transform = e.drag.transform;
9417
- });
9418
- };
9419
- const destroyMoveable = () => {
9420
- moveable?.destroy();
9421
- moveable = null;
9422
- };
9423
- vue.watch(
9424
- () => props.visible,
9425
- async (visible) => {
9426
- if (visible) {
9427
- await vue.nextTick();
9428
- initMoveable();
9429
- } else {
9430
- destroyMoveable();
9431
- }
9432
- },
9433
- {
9434
- immediate: true
9435
- }
9436
- );
9437
- vue.onBeforeUnmount(() => {
9438
- destroyMoveable();
9439
- });
9440
- const closeHandler = () => {
9441
- emit("update:visible", false);
9442
- };
9443
- __expose({
9444
- target
9445
- });
9446
- return (_ctx, _cache) => {
9447
- return _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
9448
- key: 0,
9449
- to: "body"
9450
- }, [
9451
- vue.createElementVNode("div", {
9452
- ref_key: "target",
9453
- ref: target,
9454
- class: "m-editor-float-box",
9455
- style: vue.normalizeStyle(style.value)
9456
- }, [
9457
- vue.createElementVNode("div", {
9458
- ref_key: "dragTarget",
9459
- ref: dragTarget,
9460
- class: "m-editor-float-box-title"
9461
- }, [
9462
- vue.renderSlot(_ctx.$slots, "title", {}, () => [
9463
- vue.createElementVNode("span", null, vue.toDisplayString(_ctx.title), 1)
9464
- ]),
9465
- vue.createElementVNode("div", null, [
9466
- vue.createVNode(vue.unref(design.TMagicButton), {
9467
- link: "",
9468
- size: "small",
9469
- icon: vue.unref(iconsVue.Close),
9470
- onClick: closeHandler
9471
- }, null, 8, ["icon"])
9472
- ])
9473
- ], 512),
9474
- vue.createElementVNode("div", _hoisted_1$3, [
9475
- vue.renderSlot(_ctx.$slots, "body")
9476
- ])
9477
- ], 4)
9478
- ])) : vue.createCommentVNode("", true);
9479
- };
9480
- }
9481
- });
9482
-
9483
9445
  const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
9484
9446
  __name: "NodeListMenu",
9485
9447
  setup(__props) {
@@ -9562,7 +9524,7 @@
9562
9524
  ]),
9563
9525
  _: 1
9564
9526
  })) : vue.createCommentVNode("", true),
9565
- page.value && vue.unref(nodeStatusMap) && buttonVisible.value ? (vue.openBlock(), vue.createBlock(_sfc_main$8, {
9527
+ page.value && vue.unref(nodeStatusMap) && buttonVisible.value ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
9566
9528
  key: 1,
9567
9529
  ref_key: "box",
9568
9530
  ref: box,
@@ -9572,7 +9534,7 @@
9572
9534
  position: menuPosition.value
9573
9535
  }, {
9574
9536
  body: vue.withCtx(() => [
9575
- vue.createVNode(_sfc_main$n, {
9537
+ vue.createVNode(_sfc_main$m, {
9576
9538
  class: "m-editor-node-list-menu magic-editor-layer-tree",
9577
9539
  data: nodeData.value,
9578
9540
  "node-status-map": vue.unref(nodeStatusMap),
@@ -9821,7 +9783,7 @@
9821
9783
  };
9822
9784
  __expose({ show });
9823
9785
  return (_ctx, _cache) => {
9824
- return vue.openBlock(), vue.createBlock(_sfc_main$h, {
9786
+ return vue.openBlock(), vue.createBlock(_sfc_main$g, {
9825
9787
  "menu-data": menuData.value,
9826
9788
  ref_key: "menu",
9827
9789
  ref: menu
@@ -9982,7 +9944,7 @@
9982
9944
  }
9983
9945
  };
9984
9946
  return (_ctx, _cache) => {
9985
- return vue.openBlock(), vue.createBlock(_sfc_main$9, {
9947
+ return vue.openBlock(), vue.createBlock(_sfc_main$8, {
9986
9948
  class: "m-editor-stage",
9987
9949
  ref_key: "stageWrap",
9988
9950
  ref: stageWrap,
@@ -11168,7 +11130,7 @@
11168
11130
  ]),
11169
11131
  sidebar: vue.withCtx(() => [
11170
11132
  vue.renderSlot(_ctx.$slots, "sidebar", { editorService: vue.unref(editorService) }, () => [
11171
- vue.createVNode(_sfc_main$b, {
11133
+ vue.createVNode(_sfc_main$a, {
11172
11134
  data: _ctx.sidebar,
11173
11135
  "layer-content-menu": _ctx.layerContentMenu,
11174
11136
  "custom-content-menu": _ctx.customContentMenu
@@ -11299,14 +11261,14 @@
11299
11261
  exports.CODE_DRAFT_STORAGE_KEY = CODE_DRAFT_STORAGE_KEY;
11300
11262
  exports.COPY_STORAGE_KEY = COPY_STORAGE_KEY;
11301
11263
  exports.CodeBlockEditor = _sfc_main$Q;
11302
- exports.CodeBlockList = _sfc_main$m;
11303
- exports.CodeBlockListPanel = _sfc_main$l;
11264
+ exports.CodeBlockList = _sfc_main$l;
11265
+ exports.CodeBlockListPanel = _sfc_main$k;
11304
11266
  exports.CodeDeleteErrorType = CodeDeleteErrorType;
11305
11267
  exports.CodeSelect = _sfc_main$R;
11306
11268
  exports.CodeSelectCol = _sfc_main$N;
11307
11269
  exports.ColumnLayout = ColumnLayout;
11308
- exports.ComponentListPanel = _sfc_main$c;
11309
- exports.ContentMenu = _sfc_main$h;
11270
+ exports.ComponentListPanel = _sfc_main$b;
11271
+ exports.ContentMenu = _sfc_main$g;
11310
11272
  exports.DataSourceFieldSelect = _sfc_main$L;
11311
11273
  exports.DataSourceFields = _sfc_main$M;
11312
11274
  exports.DataSourceInput = _sfc_main$K;
@@ -11323,7 +11285,7 @@
11323
11285
  exports.KeyValue = _sfc_main$D;
11324
11286
  exports.Keys = Keys;
11325
11287
  exports.LayerOffset = LayerOffset;
11326
- exports.LayerPanel = _sfc_main$d;
11288
+ exports.LayerPanel = _sfc_main$c;
11327
11289
  exports.Layout = Layout;
11328
11290
  exports.LayoutContainer = _sfc_main$z;
11329
11291
  exports.PageFragmentSelect = _sfc_main$C;