@tmagic/editor 1.4.16 → 1.5.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 (140) hide show
  1. package/dist/style.css +11 -7
  2. package/dist/tmagic-editor.js +434 -411
  3. package/dist/tmagic-editor.umd.cjs +441 -408
  4. package/package.json +11 -15
  5. package/src/components/CodeParams.vue +1 -1
  6. package/src/editorProps.ts +2 -1
  7. package/src/fields/DataSourceInput.vue +2 -2
  8. package/src/fields/UISelect.vue +20 -15
  9. package/src/hooks/index.ts +7 -0
  10. package/src/hooks/use-stage.ts +13 -7
  11. package/src/index.ts +2 -0
  12. package/src/initService.ts +50 -53
  13. package/src/layouts/sidebar/Sidebar.vue +18 -2
  14. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +12 -14
  15. package/src/layouts/workspace/viewer/NodeListMenu.vue +2 -1
  16. package/src/layouts/workspace/viewer/Stage.vue +4 -3
  17. package/src/services/editor.ts +2 -2
  18. package/src/services/stageOverlay.ts +3 -1
  19. package/src/theme/data-source.scss +8 -5
  20. package/src/theme/page-bar.scss +2 -2
  21. package/src/utils/data-source/index.ts +25 -23
  22. package/src/utils/editor.ts +4 -3
  23. package/src/utils/index.ts +4 -0
  24. package/src/utils/operator.ts +3 -2
  25. package/src/utils/props.ts +2 -1
  26. package/types/index.d.ts +6685 -49
  27. package/src/shims-vue.d.ts +0 -6
  28. package/types/Editor.vue.d.ts +0 -2313
  29. package/types/components/CodeBlockEditor.vue.d.ts +0 -33
  30. package/types/components/CodeParams.vue.d.ts +0 -28
  31. package/types/components/ContentMenu.vue.d.ts +0 -81
  32. package/types/components/FloatingBox.vue.d.ts +0 -70
  33. package/types/components/Icon.vue.d.ts +0 -15
  34. package/types/components/Resizer.vue.d.ts +0 -16
  35. package/types/components/ScrollBar.vue.d.ts +0 -25
  36. package/types/components/ScrollViewer.vue.d.ts +0 -81
  37. package/types/components/SearchInput.vue.d.ts +0 -6
  38. package/types/components/SplitView.vue.d.ts +0 -72
  39. package/types/components/ToolButton.vue.d.ts +0 -41
  40. package/types/components/Tree.vue.d.ts +0 -83
  41. package/types/components/TreeNode.vue.d.ts +0 -83
  42. package/types/editorProps.d.ts +0 -111
  43. package/types/fields/Code.vue.d.ts +0 -44
  44. package/types/fields/CodeLink.vue.d.ts +0 -24
  45. package/types/fields/CodeSelect.vue.d.ts +0 -28
  46. package/types/fields/CodeSelectCol.vue.d.ts +0 -31
  47. package/types/fields/CondOpSelect.vue.d.ts +0 -17
  48. package/types/fields/DataSourceFieldSelect/FieldSelect.vue.d.ts +0 -36
  49. package/types/fields/DataSourceFieldSelect/Index.vue.d.ts +0 -31
  50. package/types/fields/DataSourceFields.vue.d.ts +0 -44
  51. package/types/fields/DataSourceInput.vue.d.ts +0 -34
  52. package/types/fields/DataSourceMethodSelect.vue.d.ts +0 -31
  53. package/types/fields/DataSourceMethods.vue.d.ts +0 -34
  54. package/types/fields/DataSourceMocks.vue.d.ts +0 -41
  55. package/types/fields/DataSourceSelect.vue.d.ts +0 -31
  56. package/types/fields/DisplayConds.vue.d.ts +0 -37
  57. package/types/fields/EventSelect.vue.d.ts +0 -17
  58. package/types/fields/KeyValue.vue.d.ts +0 -36
  59. package/types/fields/PageFragmentSelect.vue.d.ts +0 -31
  60. package/types/fields/UISelect.vue.d.ts +0 -20
  61. package/types/hooks/index.d.ts +0 -6
  62. package/types/hooks/use-code-block-edit.d.ts +0 -189
  63. package/types/hooks/use-data-source-edit.d.ts +0 -176
  64. package/types/hooks/use-data-source-method.d.ts +0 -187
  65. package/types/hooks/use-editor-content-height.d.ts +0 -3
  66. package/types/hooks/use-filter.d.ts +0 -7
  67. package/types/hooks/use-float-box.d.ts +0 -17
  68. package/types/hooks/use-getso.d.ts +0 -5
  69. package/types/hooks/use-next-float-box-position.d.ts +0 -15
  70. package/types/hooks/use-node-status.d.ts +0 -16
  71. package/types/hooks/use-stage.d.ts +0 -3
  72. package/types/hooks/use-window-rect.d.ts +0 -6
  73. package/types/icons/AppManageIcon.vue.d.ts +0 -2
  74. package/types/icons/CenterIcon.vue.d.ts +0 -2
  75. package/types/icons/CodeIcon.vue.d.ts +0 -2
  76. package/types/icons/FolderMinusIcon.vue.d.ts +0 -2
  77. package/types/icons/PinIcon.vue.d.ts +0 -2
  78. package/types/icons/PinnedIcon.vue.d.ts +0 -2
  79. package/types/initService.d.ts +0 -9
  80. package/types/layouts/AddPageBox.vue.d.ts +0 -15
  81. package/types/layouts/CodeEditor.vue.d.ts +0 -80
  82. package/types/layouts/Framework.vue.d.ts +0 -25
  83. package/types/layouts/NavMenu.vue.d.ts +0 -35
  84. package/types/layouts/PropsPanel.vue.d.ts +0 -535
  85. package/types/layouts/page-bar/AddButton.vue.d.ts +0 -16
  86. package/types/layouts/page-bar/PageBar.vue.d.ts +0 -36
  87. package/types/layouts/page-bar/PageBarScrollContainer.vue.d.ts +0 -29
  88. package/types/layouts/page-bar/PageList.vue.d.ts +0 -27
  89. package/types/layouts/page-bar/SwitchTypeButton.vue.d.ts +0 -20
  90. package/types/layouts/sidebar/ComponentListPanel.vue.d.ts +0 -10
  91. package/types/layouts/sidebar/Sidebar.vue.d.ts +0 -51
  92. package/types/layouts/sidebar/code-block/CodeBlockList.vue.d.ts +0 -32
  93. package/types/layouts/sidebar/code-block/CodeBlockListPanel.vue.d.ts +0 -24
  94. package/types/layouts/sidebar/data-source/DataSourceConfigPanel.vue.d.ts +0 -31
  95. package/types/layouts/sidebar/data-source/DataSourceList.vue.d.ts +0 -18
  96. package/types/layouts/sidebar/data-source/DataSourceListPanel.vue.d.ts +0 -10
  97. package/types/layouts/sidebar/layer/LayerMenu.vue.d.ts +0 -41
  98. package/types/layouts/sidebar/layer/LayerNodeTool.vue.d.ts +0 -16
  99. package/types/layouts/sidebar/layer/LayerPanel.vue.d.ts +0 -25
  100. package/types/layouts/sidebar/layer/use-click.d.ts +0 -119
  101. package/types/layouts/sidebar/layer/use-drag.d.ts +0 -14
  102. package/types/layouts/sidebar/layer/use-keybinding.d.ts +0 -6
  103. package/types/layouts/sidebar/layer/use-node-status.d.ts +0 -16
  104. package/types/layouts/workspace/Breadcrumb.vue.d.ts +0 -2
  105. package/types/layouts/workspace/Workspace.vue.d.ts +0 -41
  106. package/types/layouts/workspace/viewer/NodeListMenu.vue.d.ts +0 -2
  107. package/types/layouts/workspace/viewer/Stage.vue.d.ts +0 -34
  108. package/types/layouts/workspace/viewer/StageOverlay.vue.d.ts +0 -2
  109. package/types/layouts/workspace/viewer/ViewerMenu.vue.d.ts +0 -42
  110. package/types/services/BaseService.d.ts +0 -65
  111. package/types/services/codeBlock.d.ts +0 -130
  112. package/types/services/componentList.d.ts +0 -16
  113. package/types/services/dataSource.d.ts +0 -68
  114. package/types/services/dep.d.ts +0 -33
  115. package/types/services/editor.d.ts +0 -180
  116. package/types/services/events.d.ts +0 -18
  117. package/types/services/history.d.ts +0 -26
  118. package/types/services/keybinding.d.ts +0 -40
  119. package/types/services/props.d.ts +0 -92
  120. package/types/services/stageOverlay.d.ts +0 -30
  121. package/types/services/storage.d.ts +0 -65
  122. package/types/services/ui.d.ts +0 -77
  123. package/types/type.d.ts +0 -657
  124. package/types/utils/compose.d.ts +0 -5
  125. package/types/utils/config.d.ts +0 -4
  126. package/types/utils/content-menu.d.ts +0 -7
  127. package/types/utils/data-source/formConfigs/base.d.ts +0 -2
  128. package/types/utils/data-source/formConfigs/http.d.ts +0 -3
  129. package/types/utils/data-source/index.d.ts +0 -10
  130. package/types/utils/editor.d.ts +0 -59
  131. package/types/utils/idle-task.d.ts +0 -13
  132. package/types/utils/index.d.ts +0 -6
  133. package/types/utils/keybinding-config.d.ts +0 -7
  134. package/types/utils/logger.d.ts +0 -5
  135. package/types/utils/monaco-editor.d.ts +0 -2
  136. package/types/utils/operator.d.ts +0 -21
  137. package/types/utils/props.d.ts +0 -23
  138. package/types/utils/scroll-viewer.d.ts +0 -37
  139. package/types/utils/tree.d.ts +0 -3
  140. package/types/utils/undo-redo.d.ts +0 -12
@@ -840,7 +840,7 @@
840
840
  items: [
841
841
  {
842
842
  type: "display-conds",
843
- name: "displayConds",
843
+ name: schema.NODE_CONDS_KEY,
844
844
  titlePrefix: "条件组",
845
845
  defaultValue: []
846
846
  }
@@ -1116,8 +1116,8 @@
1116
1116
  };
1117
1117
  const fixNodeLeft = (config, parent, doc) => {
1118
1118
  if (!doc || !config.style || !utils.isNumber(config.style.left)) return config.style?.left;
1119
- const el = doc.getElementById(`${config.id}`);
1120
- const parentEl = doc.getElementById(`${parent.id}`);
1119
+ const el = utils.getElById()(doc, `${config.id}`);
1120
+ const parentEl = utils.getElById()(doc, `${parent.id}`);
1121
1121
  const left = Number(config.style?.left) || 0;
1122
1122
  if (el && parentEl) {
1123
1123
  const calcParentOffsetWidth = utils.calcValueByFontsize(doc, parentEl.offsetWidth);
@@ -2314,7 +2314,7 @@
2314
2314
  const stage = this.get("stage");
2315
2315
  const doc = stage?.renderer.contentWindow?.document;
2316
2316
  if (doc) {
2317
- const el = doc.getElementById(`${node.id}`);
2317
+ const el = utils.getElById()(doc, node.id);
2318
2318
  const parentEl = layout === Layout.FIXED ? doc.body : el?.offsetParent;
2319
2319
  if (parentEl && el) {
2320
2320
  node.style.left = utils.calcValueByFontsize(doc, (parentEl.clientWidth - el.clientWidth) / 2);
@@ -2659,7 +2659,8 @@
2659
2659
  };
2660
2660
  const getPositionInContainer = (position = {}, id, doc) => {
2661
2661
  let { left = 0, top = 0 } = position;
2662
- const parentEl = editorService.get("stage")?.renderer?.contentWindow?.document.getElementById(`${id}`);
2662
+ const stageDoc = editorService.get("stage")?.renderer?.contentWindow?.document;
2663
+ const parentEl = stageDoc && utils.getElById()(stageDoc, `${id}`);
2663
2664
  const parentElRect = parentEl?.getBoundingClientRect();
2664
2665
  left = left - utils.calcValueByFontsize(doc, parentElRect?.left || 0);
2665
2666
  top = top - utils.calcValueByFontsize(doc, parentElRect?.top || 0);
@@ -2886,7 +2887,7 @@
2886
2887
  * context:上下文对象
2887
2888
  *
2888
2889
  * interface Content {
2889
- * app: AppCore;
2890
+ * app: TMagicApp;
2890
2891
  * dataSource: HttpDataSource;
2891
2892
  * }
2892
2893
  *
@@ -2903,7 +2904,7 @@
2903
2904
  * context:上下文对象
2904
2905
  *
2905
2906
  * interface Content {
2906
- * app: AppCore;
2907
+ * app: TMagicApp;
2907
2908
  * dataSource: HttpDataSource;
2908
2909
  * }
2909
2910
  *
@@ -2917,7 +2918,7 @@
2917
2918
  };
2918
2919
  const getDisplayField = (dataSources, key) => {
2919
2920
  const displayState = [];
2920
- const matches = key.matchAll(/\$\{([\s\S]+?)\}/g);
2921
+ const matches = key.matchAll(utils.dataSourceTemplateRegExp);
2921
2922
  let index = 0;
2922
2923
  for (const match of matches) {
2923
2924
  if (typeof match.index === "undefined") break;
@@ -2928,7 +2929,7 @@
2928
2929
  let dsText = "";
2929
2930
  let ds;
2930
2931
  let fields;
2931
- match[1].replaceAll(/\[(\d+)\]/g, ".$1").split(".").forEach((item, index2) => {
2932
+ utils.getKeysArray(match[1]).forEach((item, index2) => {
2932
2933
  if (index2 === 0) {
2933
2934
  ds = dataSources.find((ds2) => ds2.id === item);
2934
2935
  dsText += ds?.title || item;
@@ -2989,6 +2990,189 @@
2989
2990
  };
2990
2991
  const removeDataSourceFieldPrefix = (id) => id?.replace(utils.DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, "") || "";
2991
2992
 
2993
+ globalThis.requestIdleCallback = globalThis.requestIdleCallback || function(cb) {
2994
+ const start = Date.now();
2995
+ return setTimeout(() => {
2996
+ cb({
2997
+ didTimeout: false,
2998
+ timeRemaining() {
2999
+ return Math.max(0, 50 - (Date.now() - start));
3000
+ }
3001
+ });
3002
+ }, 1);
3003
+ };
3004
+ class IdleTask extends events.EventEmitter {
3005
+ taskList = [];
3006
+ taskHandle = null;
3007
+ enqueueTask(taskHandler, taskData) {
3008
+ this.taskList.push({
3009
+ handler: taskHandler,
3010
+ data: taskData
3011
+ });
3012
+ if (!this.taskHandle) {
3013
+ this.taskHandle = globalThis.requestIdleCallback(this.runTaskQueue.bind(this), { timeout: 1e4 });
3014
+ }
3015
+ }
3016
+ on(eventName, listener) {
3017
+ return super.on(eventName, listener);
3018
+ }
3019
+ once(eventName, listener) {
3020
+ return super.once(eventName, listener);
3021
+ }
3022
+ emit(eventName, ...args) {
3023
+ return super.emit(eventName, ...args);
3024
+ }
3025
+ runTaskQueue(deadline) {
3026
+ while ((deadline.timeRemaining() > 15 || deadline.didTimeout) && this.taskList.length) {
3027
+ const task = this.taskList.shift();
3028
+ task.handler(task.data);
3029
+ }
3030
+ if (this.taskList.length) {
3031
+ this.taskHandle = globalThis.requestIdleCallback(this.runTaskQueue.bind(this), { timeout: 1e4 });
3032
+ } else {
3033
+ this.taskHandle = 0;
3034
+ this.emit("finish");
3035
+ }
3036
+ }
3037
+ }
3038
+
3039
+ class ScrollViewer extends events.EventEmitter {
3040
+ container;
3041
+ target;
3042
+ zoom = 1;
3043
+ scrollLeft = 0;
3044
+ scrollTop = 0;
3045
+ scrollHeight = 0;
3046
+ scrollWidth = 0;
3047
+ width = 0;
3048
+ height = 0;
3049
+ translateXCorrectionValue = 0;
3050
+ translateYCorrectionValue = 0;
3051
+ correctionScrollSize = {
3052
+ width: 0,
3053
+ height: 0
3054
+ };
3055
+ resizeObserver = new ResizeObserver(() => {
3056
+ this.setSize();
3057
+ this.setScrollSize();
3058
+ });
3059
+ constructor(options) {
3060
+ super();
3061
+ this.container = options.container;
3062
+ this.target = options.target;
3063
+ this.zoom = options.zoom;
3064
+ if (this.correctionScrollSize) {
3065
+ this.correctionScrollSize = {
3066
+ ...this.correctionScrollSize,
3067
+ ...options.correctionScrollSize
3068
+ };
3069
+ }
3070
+ this.container.addEventListener("wheel", this.wheelHandler, false);
3071
+ this.setSize();
3072
+ this.setScrollSize();
3073
+ this.resizeObserver.observe(this.container);
3074
+ this.resizeObserver.observe(this.target);
3075
+ }
3076
+ destroy() {
3077
+ this.resizeObserver.disconnect();
3078
+ this.container.removeEventListener("wheel", this.wheelHandler, false);
3079
+ this.removeAllListeners();
3080
+ }
3081
+ setZoom(zoom) {
3082
+ this.zoom = zoom;
3083
+ this.setScrollSize();
3084
+ }
3085
+ scrollTo({ left, top }) {
3086
+ if (typeof left !== "undefined") {
3087
+ this.scrollLeft = left;
3088
+ }
3089
+ if (typeof top !== "undefined") {
3090
+ this.scrollTop = top;
3091
+ }
3092
+ const translateX = -this.scrollLeft + this.translateXCorrectionValue;
3093
+ const translateY = -this.scrollTop + this.translateYCorrectionValue;
3094
+ this.target.style.transform = `translate(${translateX}px, ${translateY}px)`;
3095
+ }
3096
+ wheelHandler = (event) => {
3097
+ const { deltaX, deltaY, currentTarget } = event;
3098
+ if (currentTarget !== this.container) return;
3099
+ let top;
3100
+ if (this.scrollHeight > this.height) {
3101
+ top = this.scrollTop + this.getPos(deltaY, this.scrollTop, this.scrollHeight, this.height);
3102
+ }
3103
+ let left;
3104
+ if (this.scrollWidth > this.width) {
3105
+ left = this.scrollLeft + this.getPos(deltaX, this.scrollLeft, this.scrollWidth, this.width);
3106
+ }
3107
+ this.scrollTo({ left, top });
3108
+ this.emit("scroll", {
3109
+ scrollLeft: this.scrollLeft,
3110
+ scrollTop: this.scrollTop,
3111
+ scrollHeight: this.scrollHeight,
3112
+ scrollWidth: this.scrollWidth
3113
+ });
3114
+ };
3115
+ getPos(delta, scrollPos, scrollSize, size) {
3116
+ let pos = 0;
3117
+ if (delta < 0) {
3118
+ if (scrollPos > 0) {
3119
+ pos = Math.max(delta, -scrollPos);
3120
+ }
3121
+ } else {
3122
+ const leftPos = scrollSize - size - scrollPos;
3123
+ if (leftPos > 0) {
3124
+ pos = Math.min(delta, leftPos);
3125
+ }
3126
+ }
3127
+ return pos;
3128
+ }
3129
+ setScrollSize = () => {
3130
+ const targetRect = this.target.getBoundingClientRect();
3131
+ this.scrollWidth = targetRect.width * this.zoom + this.correctionScrollSize.width;
3132
+ const targetMarginTop = Number(this.target.style.marginTop) || 0;
3133
+ this.scrollHeight = (targetRect.height + targetMarginTop) * this.zoom + this.correctionScrollSize.height;
3134
+ let left;
3135
+ let top;
3136
+ if (this.scrollWidth < this.width) {
3137
+ left = 0;
3138
+ this.translateXCorrectionValue = 0;
3139
+ } else {
3140
+ this.translateXCorrectionValue = (this.scrollWidth - this.width) / 2;
3141
+ }
3142
+ if (this.scrollHeight < this.height) {
3143
+ top = 0;
3144
+ this.translateYCorrectionValue = 0;
3145
+ } else {
3146
+ this.translateYCorrectionValue = (this.scrollHeight - this.height) / 2;
3147
+ }
3148
+ this.scrollTo({
3149
+ left,
3150
+ top
3151
+ });
3152
+ this.emit("scroll", {
3153
+ scrollLeft: this.scrollLeft,
3154
+ scrollTop: this.scrollTop,
3155
+ scrollHeight: this.scrollHeight,
3156
+ scrollWidth: this.scrollWidth
3157
+ });
3158
+ };
3159
+ setSize = () => {
3160
+ const { width, height } = this.container.getBoundingClientRect();
3161
+ this.width = width;
3162
+ this.height = height;
3163
+ };
3164
+ }
3165
+
3166
+ const updateStatus = (nodeStatusMap, id, status) => {
3167
+ const nodeStatus = nodeStatusMap.get(id);
3168
+ if (!nodeStatus) return;
3169
+ utils.getKeys(status).forEach((key) => {
3170
+ if (nodeStatus[key] !== void 0 && status[key] !== void 0) {
3171
+ nodeStatus[key] = Boolean(status[key]);
3172
+ }
3173
+ });
3174
+ };
3175
+
2992
3176
  const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
2993
3177
  ...{
2994
3178
  name: "MEditorCodeParams"
@@ -3011,7 +3195,7 @@
3011
3195
  type: "fieldset",
3012
3196
  items,
3013
3197
  legend: "参数",
3014
- labelWidth: "70px",
3198
+ labelWidth: "120px",
3015
3199
  name: props.name
3016
3200
  }
3017
3201
  ];
@@ -3050,7 +3234,7 @@
3050
3234
  });
3051
3235
 
3052
3236
  const _hoisted_1$u = { class: "m-fields-code-select-col" };
3053
- const _hoisted_2$k = { class: "code-select-container" };
3237
+ const _hoisted_2$j = { class: "code-select-container" };
3054
3238
  const _sfc_main$S = /* @__PURE__ */ vue.defineComponent({
3055
3239
  ...{
3056
3240
  name: "MFieldsCodeSelectCol"
@@ -3131,7 +3315,7 @@
3131
3315
  };
3132
3316
  return (_ctx, _cache) => {
3133
3317
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [
3134
- vue.createElementVNode("div", _hoisted_2$k, [
3318
+ vue.createElementVNode("div", _hoisted_2$j, [
3135
3319
  vue.createVNode(vue.unref(form.MContainer), {
3136
3320
  class: "select",
3137
3321
  config: selectConfig,
@@ -3709,29 +3893,34 @@
3709
3893
  editorService.set("stageLoading", false);
3710
3894
  });
3711
3895
  stage.on("select", (el) => {
3712
- if (`${editorService.get("node")?.id}` === el.id && editorService.get("nodes").length === 1) return;
3713
- editorService.select(el.id);
3896
+ const id = utils.getIdFromEl()(el);
3897
+ if (`${editorService.get("node")?.id}` === id && editorService.get("nodes").length === 1) return;
3898
+ id && editorService.select(id);
3714
3899
  });
3715
3900
  stage.on("highlight", (el) => {
3716
- editorService.highlight(el.id);
3901
+ const id = utils.getIdFromEl()(el);
3902
+ id && editorService.highlight(id);
3717
3903
  });
3718
3904
  stage.on("multi-select", (els) => {
3719
- editorService.multiSelect(els.map((el) => el.id));
3905
+ const ids = els.map((el) => utils.getIdFromEl()(el)).filter((id) => Boolean(id));
3906
+ editorService.multiSelect(ids);
3720
3907
  });
3721
3908
  stage.on("update", (ev) => {
3722
3909
  if (ev.parentEl) {
3723
3910
  for (const data of ev.data) {
3724
- editorService.moveToContainer({ id: data.el.id, style: data.style }, ev.parentEl.id);
3911
+ const id = utils.getIdFromEl()(data.el);
3912
+ const pId = utils.getIdFromEl()(ev.parentEl);
3913
+ id && pId && editorService.moveToContainer({ id, style: data.style }, pId);
3725
3914
  }
3726
3915
  return;
3727
3916
  }
3728
- editorService.update(ev.data.map((data) => ({ id: data.el.id, style: data.style })));
3917
+ editorService.update(ev.data.map((data) => ({ id: utils.getIdFromEl()(data.el) || "", style: data.style })));
3729
3918
  });
3730
3919
  stage.on("sort", (ev) => {
3731
3920
  editorService.sort(ev.src, ev.dist);
3732
3921
  });
3733
3922
  stage.on("remove", (ev) => {
3734
- const nodes = ev.data.map(({ el }) => editorService.getNodeById(el.id));
3923
+ const nodes = ev.data.map(({ el }) => editorService.getNodeById(utils.getIdFromEl()(el) || ""));
3735
3924
  editorService.remove(nodes.filter((node) => Boolean(node)));
3736
3925
  });
3737
3926
  stage.on("select-parent", () => {
@@ -3876,6 +4065,68 @@
3876
4065
  };
3877
4066
  };
3878
4067
 
4068
+ const useFilter = (nodeData, nodeStatusMap, filterNodeMethod) => {
4069
+ const filterIsMatch = (value, data) => {
4070
+ const string = !Array.isArray(value) ? [value] : value;
4071
+ if (!string.length) {
4072
+ return true;
4073
+ }
4074
+ return string.some((v) => filterNodeMethod(v, data));
4075
+ };
4076
+ const filter = (text) => {
4077
+ if (!nodeData.value.length) return;
4078
+ nodeData.value.forEach((node) => {
4079
+ traverseNode(node, (node2, parents) => {
4080
+ if (!nodeStatusMap.value) return;
4081
+ const visible = filterIsMatch(text, node2);
4082
+ if (visible && parents.length) {
4083
+ parents.forEach((parent) => {
4084
+ updateStatus(nodeStatusMap.value, parent.id, {
4085
+ visible,
4086
+ expand: true
4087
+ });
4088
+ });
4089
+ }
4090
+ updateStatus(nodeStatusMap.value, node2.id, {
4091
+ visible
4092
+ });
4093
+ });
4094
+ });
4095
+ };
4096
+ return {
4097
+ filterText: vue.ref(""),
4098
+ filterTextChangeHandler(text) {
4099
+ filter(text);
4100
+ }
4101
+ };
4102
+ };
4103
+
4104
+ const useGetSo = (target, emit) => {
4105
+ let getso;
4106
+ const isDraging = vue.ref(false);
4107
+ vue.onMounted(() => {
4108
+ if (!target.value) return;
4109
+ getso = new Gesto(target.value, {
4110
+ container: window,
4111
+ pinchOutside: true
4112
+ }).on("drag", (e) => {
4113
+ if (!target.value) return;
4114
+ emit("change", e);
4115
+ }).on("dragStart", () => {
4116
+ isDraging.value = true;
4117
+ }).on("dragEnd", () => {
4118
+ isDraging.value = false;
4119
+ });
4120
+ });
4121
+ vue.onBeforeUnmount(() => {
4122
+ getso?.unset();
4123
+ isDraging.value = false;
4124
+ });
4125
+ return {
4126
+ isDraging
4127
+ };
4128
+ };
4129
+
3879
4130
  const useNextFloatBoxPosition = (uiService, parent) => {
3880
4131
  const boxPosition = vue.ref({
3881
4132
  left: 0,
@@ -3900,8 +4151,42 @@
3900
4151
  };
3901
4152
  };
3902
4153
 
4154
+ const createPageNodeStatus$1 = (nodeData, initialLayerNodeStatus) => {
4155
+ const map = /* @__PURE__ */ new Map();
4156
+ nodeData.forEach(
4157
+ (node) => traverseNode(node, (node2) => {
4158
+ map.set(
4159
+ node2.id,
4160
+ initialLayerNodeStatus?.get(node2.id) || {
4161
+ visible: true,
4162
+ expand: false,
4163
+ selected: false,
4164
+ draggable: false
4165
+ }
4166
+ );
4167
+ })
4168
+ );
4169
+ return map;
4170
+ };
4171
+ const useNodeStatus$1 = (nodeData) => {
4172
+ const nodeStatusMap = vue.ref(/* @__PURE__ */ new Map());
4173
+ vue.watch(
4174
+ nodeData,
4175
+ (nodeData2) => {
4176
+ nodeStatusMap.value = createPageNodeStatus$1(nodeData2, nodeStatusMap.value);
4177
+ },
4178
+ {
4179
+ immediate: true,
4180
+ deep: true
4181
+ }
4182
+ );
4183
+ return {
4184
+ nodeStatusMap
4185
+ };
4186
+ };
4187
+
3903
4188
  const _hoisted_1$t = { class: "m-editor-data-source-fields" };
3904
- const _hoisted_2$j = { class: "m-editor-data-source-fields-footer" };
4189
+ const _hoisted_2$i = { class: "m-editor-data-source-fields-footer" };
3905
4190
  const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
3906
4191
  ...{
3907
4192
  name: "MFieldsDataSourceFields"
@@ -4158,7 +4443,7 @@
4158
4443
  data: _ctx.model[_ctx.name],
4159
4444
  columns: fieldColumns
4160
4445
  }, null, 8, ["data"]),
4161
- vue.createElementVNode("div", _hoisted_2$j, [
4446
+ vue.createElementVNode("div", _hoisted_2$i, [
4162
4447
  vue.createVNode(vue.unref(design.TMagicButton), {
4163
4448
  size: "small",
4164
4449
  disabled: _ctx.disabled,
@@ -4546,7 +4831,7 @@
4546
4831
  });
4547
4832
 
4548
4833
  const _hoisted_1$q = { style: { "display": "flex", "flex-direction": "column", "line-height": "1.2em" } };
4549
- const _hoisted_2$i = { style: { "font-size": "10px", "color": "rgba(0, 0, 0, 0.6)" } };
4834
+ const _hoisted_2$h = { style: { "font-size": "10px", "color": "rgba(0, 0, 0, 0.6)" } };
4550
4835
  const _hoisted_3$8 = { class: "el-input__inner t-input__inner" };
4551
4836
  const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
4552
4837
  ...{
@@ -4643,7 +4928,7 @@
4643
4928
  const fieldQuerySearch = (queryString, leftAngleIndex, dotIndex, cb) => {
4644
4929
  let result = [];
4645
4930
  const dsKey = queryString.substring(leftAngleIndex + 1, dotIndex);
4646
- const keys = dsKey.replaceAll(/\[(\d+)\]/g, ".$1").split(".");
4931
+ const keys = utils.getKeysArray(dsKey);
4647
4932
  const dsId = keys.shift();
4648
4933
  const ds = dataSources.value.find((ds2) => ds2.id === dsId);
4649
4934
  if (!ds) {
@@ -4753,7 +5038,7 @@
4753
5038
  default: vue.withCtx(({ item }) => [
4754
5039
  vue.createElementVNode("div", _hoisted_1$q, [
4755
5040
  vue.createElementVNode("div", null, vue.toDisplayString(item.text), 1),
4756
- vue.createElementVNode("span", _hoisted_2$i, vue.toDisplayString(item.value), 1)
5041
+ vue.createElementVNode("span", _hoisted_2$h, vue.toDisplayString(item.value), 1)
4757
5042
  ])
4758
5043
  ]),
4759
5044
  _: 1
@@ -4795,7 +5080,7 @@
4795
5080
  });
4796
5081
 
4797
5082
  const _hoisted_1$p = { style: { "display": "flex", "margin-bottom": "10px" } };
4798
- const _hoisted_2$h = { style: { "flex": "1" } };
5083
+ const _hoisted_2$g = { style: { "flex": "1" } };
4799
5084
  const _hoisted_3$7 = { style: { "flex": "1" } };
4800
5085
  const _hoisted_4$7 = { class: "dialog-footer" };
4801
5086
  const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
@@ -5049,7 +5334,7 @@
5049
5334
  ]),
5050
5335
  default: vue.withCtx(() => [
5051
5336
  vue.createElementVNode("div", _hoisted_1$p, [
5052
- vue.createElementVNode("div", _hoisted_2$h, [
5337
+ vue.createElementVNode("div", _hoisted_2$g, [
5053
5338
  vue.createVNode(vue.unref(design.TMagicTag), {
5054
5339
  size: "small",
5055
5340
  type: "info"
@@ -5092,7 +5377,7 @@
5092
5377
  });
5093
5378
 
5094
5379
  const _hoisted_1$o = { class: "m-editor-data-source-methods" };
5095
- const _hoisted_2$g = { class: "m-editor-data-source-methods-footer" };
5380
+ const _hoisted_2$f = { class: "m-editor-data-source-methods-footer" };
5096
5381
  const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
5097
5382
  ...{
5098
5383
  name: "MFieldsDataSourceMethods"
@@ -5168,7 +5453,7 @@
5168
5453
  data: _ctx.model[_ctx.name],
5169
5454
  columns: methodColumns
5170
5455
  }, null, 8, ["data"]),
5171
- vue.createElementVNode("div", _hoisted_2$g, [
5456
+ vue.createElementVNode("div", _hoisted_2$f, [
5172
5457
  vue.createVNode(vue.unref(design.TMagicButton), {
5173
5458
  size: "small",
5174
5459
  type: "primary",
@@ -5198,7 +5483,7 @@
5198
5483
  });
5199
5484
 
5200
5485
  const _hoisted_1$n = { class: "m-fields-data-source-method-select" };
5201
- const _hoisted_2$f = { class: "data-source-method-select-container" };
5486
+ const _hoisted_2$e = { class: "data-source-method-select-container" };
5202
5487
  const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
5203
5488
  ...{
5204
5489
  name: "MFieldsDataSourceMethodSelect"
@@ -5286,7 +5571,7 @@
5286
5571
  };
5287
5572
  return (_ctx, _cache) => {
5288
5573
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [
5289
- vue.createElementVNode("div", _hoisted_2$f, [
5574
+ vue.createElementVNode("div", _hoisted_2$e, [
5290
5575
  vue.createVNode(vue.unref(form.MContainer), {
5291
5576
  class: "select",
5292
5577
  config: cascaderConfig.value,
@@ -5330,7 +5615,7 @@
5330
5615
  });
5331
5616
 
5332
5617
  const _hoisted_1$m = { class: "m-editor-data-source-fields" };
5333
- const _hoisted_2$e = { class: "m-editor-data-source-fields-footer" };
5618
+ const _hoisted_2$d = { class: "m-editor-data-source-fields-footer" };
5334
5619
  const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
5335
5620
  ...{
5336
5621
  name: "MFieldsDataSourceMocks"
@@ -5540,7 +5825,7 @@
5540
5825
  data: _ctx.model[_ctx.name],
5541
5826
  columns
5542
5827
  }, null, 8, ["data"]),
5543
- vue.createElementVNode("div", _hoisted_2$e, [
5828
+ vue.createElementVNode("div", _hoisted_2$d, [
5544
5829
  vue.createVNode(vue.unref(design.TMagicButton), {
5545
5830
  size: "small",
5546
5831
  type: "primary",
@@ -5805,7 +6090,7 @@
5805
6090
  });
5806
6091
 
5807
6092
  const _hoisted_1$k = { class: "m-fields-event-select" };
5808
- const _hoisted_2$d = {
6093
+ const _hoisted_2$c = {
5809
6094
  key: 1,
5810
6095
  class: "fullWidth"
5811
6096
  };
@@ -6093,7 +6378,7 @@
6093
6378
  model: _ctx.model,
6094
6379
  config: tableConfig.value,
6095
6380
  onChange: onChangeHandler
6096
- }, null, 8, ["size", "disabled", "model", "config"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$d, [
6381
+ }, null, 8, ["size", "disabled", "model", "config"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$c, [
6097
6382
  vue.createVNode(vue.unref(design.TMagicButton), {
6098
6383
  class: "create-button",
6099
6384
  type: "primary",
@@ -6149,9 +6434,9 @@
6149
6434
  xmlns: "http://www.w3.org/2000/svg",
6150
6435
  "xmlns:xlink": "http://www.w3.org/1999/xlink"
6151
6436
  };
6152
- 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);
6437
+ const _hoisted_2$b = /* @__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);
6153
6438
  const _hoisted_4$6 = [
6154
- _hoisted_2$c
6439
+ _hoisted_2$b
6155
6440
  ];
6156
6441
  const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
6157
6442
  ...{
@@ -6166,7 +6451,7 @@
6166
6451
  });
6167
6452
 
6168
6453
  const _hoisted_1$i = { class: "m-fields-key-value" };
6169
- const _hoisted_2$b = { key: 0 };
6454
+ const _hoisted_2$a = { key: 0 };
6170
6455
  const _hoisted_3$6 = /* @__PURE__ */ vue.createElementVNode("span", { class: "m-fileds-key-value-delimiter" }, ":", -1);
6171
6456
  const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
6172
6457
  ...{
@@ -6227,7 +6512,7 @@
6227
6512
  };
6228
6513
  return (_ctx, _cache) => {
6229
6514
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [
6230
- !showCode.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$b, [
6515
+ !showCode.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
6231
6516
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(records.value, (item, index) => {
6232
6517
  return vue.openBlock(), vue.createElementBlock("div", {
6233
6518
  class: "m-fields-key-value-item",
@@ -6301,7 +6586,7 @@
6301
6586
  });
6302
6587
 
6303
6588
  const _hoisted_1$h = { class: "m-fields-page-fragment-select" };
6304
- const _hoisted_2$a = { class: "page-fragment-select-container" };
6589
+ const _hoisted_2$9 = { class: "page-fragment-select-container" };
6305
6590
  const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
6306
6591
  ...{
6307
6592
  name: "MFieldsPageFragmentSelect"
@@ -6349,7 +6634,7 @@
6349
6634
  return (_ctx, _cache) => {
6350
6635
  const _component_m_form_container = vue.resolveComponent("m-form-container");
6351
6636
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
6352
- vue.createElementVNode("div", _hoisted_2$a, [
6637
+ vue.createElementVNode("div", _hoisted_2$9, [
6353
6638
  vue.createVNode(_component_m_form_container, {
6354
6639
  class: "select",
6355
6640
  config: selectConfig,
@@ -6405,10 +6690,11 @@
6405
6690
  globalThis.document.removeEventListener(UI_SELECT_MODE_EVENT_NAME, clickHandler);
6406
6691
  };
6407
6692
  const clickHandler = ({ detail }) => {
6408
- if (detail.id) {
6409
- props.model[props.name] = detail.id;
6410
- emit("change", detail.id);
6411
- mForm?.$emit("field-change", props.prop, detail.id);
6693
+ const id = utils.getIdFromEl()(detail);
6694
+ if (id) {
6695
+ props.model[props.name] = id;
6696
+ emit("change", id);
6697
+ mForm?.$emit("field-change", props.prop, id);
6412
6698
  }
6413
6699
  if (cancelHandler) {
6414
6700
  cancelHandler();
@@ -6432,19 +6718,22 @@
6432
6718
  }
6433
6719
  };
6434
6720
  const selectNode = async (id) => {
6435
- await services?.editorService.select(id);
6436
- services?.editorService.get("stage")?.select(id);
6437
- services?.stageOverlayService.get("stage")?.select(id);
6721
+ if (!services) return;
6722
+ await services.editorService.select(id);
6723
+ services.editorService.get("stage")?.select(id);
6724
+ services.stageOverlayService.get("stage")?.select(id);
6438
6725
  };
6439
6726
  const highlight = lodashEs.throttle((id) => {
6440
- services?.editorService.highlight(id);
6441
- services?.editorService.get("stage")?.highlight(id);
6442
- services?.stageOverlayService.get("stage")?.highlight(id);
6727
+ if (!services) return;
6728
+ services.editorService.highlight(id);
6729
+ services.editorService.get("stage")?.highlight(id);
6730
+ services.stageOverlayService.get("stage")?.highlight(id);
6443
6731
  }, 150);
6444
6732
  const unhighlight = () => {
6445
- services?.editorService.set("highlightNode", null);
6446
- services?.editorService.get("stage")?.clearHighlight();
6447
- services?.stageOverlayService.get("stage")?.clearHighlight();
6733
+ if (!services) return;
6734
+ services.editorService.set("highlightNode", null);
6735
+ services.editorService.get("stage")?.clearHighlight();
6736
+ services.stageOverlayService.get("stage")?.clearHighlight();
6448
6737
  };
6449
6738
  return (_ctx, _cache) => {
6450
6739
  return uiSelectMode.value ? (vue.openBlock(), vue.createElementBlock("div", {
@@ -6532,32 +6821,6 @@
6532
6821
  }
6533
6822
  });
6534
6823
 
6535
- const useGetSo = (target, emit) => {
6536
- let getso;
6537
- const isDraging = vue.ref(false);
6538
- vue.onMounted(() => {
6539
- if (!target.value) return;
6540
- getso = new Gesto(target.value, {
6541
- container: window,
6542
- pinchOutside: true
6543
- }).on("drag", (e) => {
6544
- if (!target.value) return;
6545
- emit("change", e);
6546
- }).on("dragStart", () => {
6547
- isDraging.value = true;
6548
- }).on("dragEnd", () => {
6549
- isDraging.value = false;
6550
- });
6551
- });
6552
- vue.onBeforeUnmount(() => {
6553
- getso?.unset();
6554
- isDraging.value = false;
6555
- });
6556
- return {
6557
- isDraging
6558
- };
6559
- };
6560
-
6561
6824
  const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
6562
6825
  ...{
6563
6826
  name: "MEditorResizer"
@@ -6744,7 +7007,7 @@
6744
7007
  key: 1,
6745
7008
  class: "menu-item-text"
6746
7009
  };
6747
- const _hoisted_2$9 = { class: "el-dropdown-link menubar-menu-button" };
7010
+ const _hoisted_2$8 = { class: "el-dropdown-link menubar-menu-button" };
6748
7011
  const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
6749
7012
  ...{
6750
7013
  name: "MEditorToolButton"
@@ -6881,7 +7144,7 @@
6881
7144
  })) : vue.createCommentVNode("", true)
6882
7145
  ]),
6883
7146
  default: vue.withCtx(() => [
6884
- vue.createElementVNode("span", _hoisted_2$9, [
7147
+ vue.createElementVNode("span", _hoisted_2$8, [
6885
7148
  vue.createTextVNode(vue.toDisplayString(_ctx.data.text), 1),
6886
7149
  vue.createVNode(vue.unref(design.TMagicIcon), { class: "el-icon--right" }, {
6887
7150
  default: vue.withCtx(() => [
@@ -7205,7 +7468,7 @@
7205
7468
  });
7206
7469
 
7207
7470
  const _hoisted_1$c = { class: "m-editor-page-bar-tabs" };
7208
- const _hoisted_2$8 = ["page-id", "onClick"];
7471
+ const _hoisted_2$7 = ["page-id", "onClick"];
7209
7472
  const _hoisted_3$5 = { class: "m-editor-page-bar-title" };
7210
7473
  const _hoisted_4$5 = ["title"];
7211
7474
  const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
@@ -7359,7 +7622,7 @@
7359
7622
  ]),
7360
7623
  _: 2
7361
7624
  }, 1024)
7362
- ], 10, _hoisted_2$8);
7625
+ ], 10, _hoisted_2$7);
7363
7626
  }), 128))
7364
7627
  ]),
7365
7628
  _: 3
@@ -7370,7 +7633,7 @@
7370
7633
  });
7371
7634
 
7372
7635
  const _hoisted_1$b = { class: "m-editor-empty-panel" };
7373
- const _hoisted_2$7 = { class: "m-editor-empty-content" };
7636
+ const _hoisted_2$6 = { class: "m-editor-empty-content" };
7374
7637
  const _hoisted_3$4 = /* @__PURE__ */ vue.createElementVNode("p", null, "新增页面", -1);
7375
7638
  const _hoisted_4$4 = /* @__PURE__ */ vue.createElementVNode("p", null, "新增页面片", -1);
7376
7639
  const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
@@ -7396,7 +7659,7 @@
7396
7659
  };
7397
7660
  return (_ctx, _cache) => {
7398
7661
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
7399
- vue.createElementVNode("div", _hoisted_2$7, [
7662
+ vue.createElementVNode("div", _hoisted_2$6, [
7400
7663
  vue.createElementVNode("div", {
7401
7664
  class: "m-editor-empty-button",
7402
7665
  onClick: _cache[0] || (_cache[0] = ($event) => clickHandler(vue.unref(schema.NodeType).PAGE))
@@ -7920,18 +8183,8 @@
7920
8183
  }
7921
8184
  });
7922
8185
 
7923
- const updateStatus = (nodeStatusMap, id, status) => {
7924
- const nodeStatus = nodeStatusMap.get(id);
7925
- if (!nodeStatus) return;
7926
- utils.getKeys(status).forEach((key) => {
7927
- if (nodeStatus[key] !== void 0 && status[key] !== void 0) {
7928
- nodeStatus[key] = Boolean(status[key]);
7929
- }
7930
- });
7931
- };
7932
-
7933
8186
  const _hoisted_1$9 = ["draggable", "data-node-id", "data-parent-id", "data-parents-id", "data-is-container"];
7934
- const _hoisted_2$6 = { class: "tree-node-label" };
8187
+ const _hoisted_2$5 = { class: "tree-node-label" };
7935
8188
  const _hoisted_3$3 = { class: "tree-node-tool" };
7936
8189
  const _hoisted_4$3 = {
7937
8190
  key: 0,
@@ -8021,7 +8274,7 @@
8021
8274
  onClick: nodeClickHandler
8022
8275
  }, [
8023
8276
  vue.renderSlot(_ctx.$slots, "tree-node-content", { data: _ctx.data }, () => [
8024
- vue.createElementVNode("div", _hoisted_2$6, [
8277
+ vue.createElementVNode("div", _hoisted_2$5, [
8025
8278
  vue.renderSlot(_ctx.$slots, "tree-node-label", { data: _ctx.data }, () => [
8026
8279
  vue.createTextVNode(vue.toDisplayString(`${_ctx.data.name} (${_ctx.data.id})`), 1)
8027
8280
  ])
@@ -8115,76 +8368,6 @@
8115
8368
  }
8116
8369
  });
8117
8370
 
8118
- const useFilter = (nodeData, nodeStatusMap, filterNodeMethod) => {
8119
- const filterIsMatch = (value, data) => {
8120
- const string = !Array.isArray(value) ? [value] : value;
8121
- if (!string.length) {
8122
- return true;
8123
- }
8124
- return string.some((v) => filterNodeMethod(v, data));
8125
- };
8126
- const filter = (text) => {
8127
- if (!nodeData.value.length) return;
8128
- nodeData.value.forEach((node) => {
8129
- traverseNode(node, (node2, parents) => {
8130
- if (!nodeStatusMap.value) return;
8131
- const visible = filterIsMatch(text, node2);
8132
- if (visible && parents.length) {
8133
- parents.forEach((parent) => {
8134
- updateStatus(nodeStatusMap.value, parent.id, {
8135
- visible,
8136
- expand: true
8137
- });
8138
- });
8139
- }
8140
- updateStatus(nodeStatusMap.value, node2.id, {
8141
- visible
8142
- });
8143
- });
8144
- });
8145
- };
8146
- return {
8147
- filterText: vue.ref(""),
8148
- filterTextChangeHandler(text) {
8149
- filter(text);
8150
- }
8151
- };
8152
- };
8153
-
8154
- const createPageNodeStatus$1 = (nodeData, initialLayerNodeStatus) => {
8155
- const map = /* @__PURE__ */ new Map();
8156
- nodeData.forEach(
8157
- (node) => traverseNode(node, (node2) => {
8158
- map.set(
8159
- node2.id,
8160
- initialLayerNodeStatus?.get(node2.id) || {
8161
- visible: true,
8162
- expand: false,
8163
- selected: false,
8164
- draggable: false
8165
- }
8166
- );
8167
- })
8168
- );
8169
- return map;
8170
- };
8171
- const useNodeStatus$1 = (nodeData) => {
8172
- const nodeStatusMap = vue.ref(/* @__PURE__ */ new Map());
8173
- vue.watch(
8174
- nodeData,
8175
- (nodeData2) => {
8176
- nodeStatusMap.value = createPageNodeStatus$1(nodeData2, nodeStatusMap.value);
8177
- },
8178
- {
8179
- immediate: true,
8180
- deep: true
8181
- }
8182
- );
8183
- return {
8184
- nodeStatusMap
8185
- };
8186
- };
8187
-
8188
8371
  const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
8189
8372
  ...{
8190
8373
  name: "MEditorCodeBlockList"
@@ -8668,7 +8851,6 @@
8668
8851
  });
8669
8852
 
8670
8853
  const _hoisted_1$6 = { class: "search-wrapper" };
8671
- const _hoisted_2$5 = { class: "data-source-list-panel-add-menu" };
8672
8854
  const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
8673
8855
  ...{
8674
8856
  name: "MEditorDataSourceListPanel"
@@ -8717,7 +8899,9 @@
8717
8899
  vue.createVNode(_sfc_main$o, { onSearch: filterTextChangeHandler }),
8718
8900
  vue.unref(editable) ? (vue.openBlock(), vue.createBlock(vue.unref(design.TMagicPopover), {
8719
8901
  key: 0,
8720
- placement: "right"
8902
+ placement: "right",
8903
+ trigger: "hover",
8904
+ "popper-class": "data-source-list-panel-add-menu"
8721
8905
  }, {
8722
8906
  reference: vue.withCtx(() => [
8723
8907
  vue.createVNode(vue.unref(design.TMagicButton), {
@@ -8730,21 +8914,19 @@
8730
8914
  _: 1
8731
8915
  })
8732
8916
  ]),
8733
- default: vue.withCtx(() => [
8734
- vue.createElementVNode("div", _hoisted_2$5, [
8735
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(datasourceTypeList.value, (item, index) => {
8736
- return vue.openBlock(), vue.createBlock(_sfc_main$y, {
8737
- data: {
8738
- type: "button",
8739
- text: item.text,
8740
- handler: () => {
8741
- addHandler(item.type);
8742
- }
8743
- },
8744
- key: index
8745
- }, null, 8, ["data"]);
8746
- }), 128))
8747
- ])
8917
+ default: vue.withCtx(() => [
8918
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(datasourceTypeList.value, (item, index) => {
8919
+ return vue.openBlock(), vue.createBlock(_sfc_main$y, {
8920
+ data: {
8921
+ type: "button",
8922
+ text: item.text,
8923
+ handler: () => {
8924
+ addHandler(item.type);
8925
+ }
8926
+ },
8927
+ key: index
8928
+ }, null, 8, ["data"]);
8929
+ }), 128))
8748
8930
  ]),
8749
8931
  _: 1
8750
8932
  })) : vue.createCommentVNode("", true),
@@ -9903,7 +10085,22 @@
9903
10085
  const props = __props;
9904
10086
  const services = vue.inject("services");
9905
10087
  const columnLeftWidth = vue.computed(() => services?.uiService.get("columnWidth")[ColumnLayout.LEFT] || 0);
9906
- const { height: columnLeftHeight } = useEditorContentHeight();
10088
+ const { height: editorContentHeight } = useEditorContentHeight();
10089
+ const columnLeftHeight = vue.ref(0);
10090
+ const unWatchEditorContentHeight = vue.watch(
10091
+ editorContentHeight,
10092
+ (height) => {
10093
+ if (height) {
10094
+ columnLeftHeight.value = height * 0.5;
10095
+ vue.nextTick().then(() => {
10096
+ unWatchEditorContentHeight();
10097
+ });
10098
+ }
10099
+ },
10100
+ {
10101
+ immediate: true
10102
+ }
10103
+ );
9907
10104
  const activeTabName = vue.ref(props.data?.status);
9908
10105
  const getItemConfig = (data) => {
9909
10106
  const map = {
@@ -10157,8 +10354,8 @@
10157
10354
  key: config.$key ?? index,
10158
10355
  visible: vue.unref(floatBoxStates)[config.$key].status,
10159
10356
  "onUpdate:visible": ($event) => vue.unref(floatBoxStates)[config.$key].status = $event,
10160
- height: vue.unref(columnLeftHeight),
10161
- "onUpdate:height": _cache[1] || (_cache[1] = ($event) => vue.isRef(columnLeftHeight) ? columnLeftHeight.value = $event : null),
10357
+ height: columnLeftHeight.value,
10358
+ "onUpdate:height": _cache[1] || (_cache[1] = ($event) => columnLeftHeight.value = $event),
10162
10359
  width: columnLeftWidth.value,
10163
10360
  title: config.text,
10164
10361
  position: {
@@ -10184,133 +10381,6 @@
10184
10381
  }
10185
10382
  });
10186
10383
 
10187
- class ScrollViewer extends events.EventEmitter {
10188
- container;
10189
- target;
10190
- zoom = 1;
10191
- scrollLeft = 0;
10192
- scrollTop = 0;
10193
- scrollHeight = 0;
10194
- scrollWidth = 0;
10195
- width = 0;
10196
- height = 0;
10197
- translateXCorrectionValue = 0;
10198
- translateYCorrectionValue = 0;
10199
- correctionScrollSize = {
10200
- width: 0,
10201
- height: 0
10202
- };
10203
- resizeObserver = new ResizeObserver(() => {
10204
- this.setSize();
10205
- this.setScrollSize();
10206
- });
10207
- constructor(options) {
10208
- super();
10209
- this.container = options.container;
10210
- this.target = options.target;
10211
- this.zoom = options.zoom;
10212
- if (this.correctionScrollSize) {
10213
- this.correctionScrollSize = {
10214
- ...this.correctionScrollSize,
10215
- ...options.correctionScrollSize
10216
- };
10217
- }
10218
- this.container.addEventListener("wheel", this.wheelHandler, false);
10219
- this.setSize();
10220
- this.setScrollSize();
10221
- this.resizeObserver.observe(this.container);
10222
- this.resizeObserver.observe(this.target);
10223
- }
10224
- destroy() {
10225
- this.resizeObserver.disconnect();
10226
- this.container.removeEventListener("wheel", this.wheelHandler, false);
10227
- this.removeAllListeners();
10228
- }
10229
- setZoom(zoom) {
10230
- this.zoom = zoom;
10231
- this.setScrollSize();
10232
- }
10233
- scrollTo({ left, top }) {
10234
- if (typeof left !== "undefined") {
10235
- this.scrollLeft = left;
10236
- }
10237
- if (typeof top !== "undefined") {
10238
- this.scrollTop = top;
10239
- }
10240
- const translateX = -this.scrollLeft + this.translateXCorrectionValue;
10241
- const translateY = -this.scrollTop + this.translateYCorrectionValue;
10242
- this.target.style.transform = `translate(${translateX}px, ${translateY}px)`;
10243
- }
10244
- wheelHandler = (event) => {
10245
- const { deltaX, deltaY, currentTarget } = event;
10246
- if (currentTarget !== this.container) return;
10247
- let top;
10248
- if (this.scrollHeight > this.height) {
10249
- top = this.scrollTop + this.getPos(deltaY, this.scrollTop, this.scrollHeight, this.height);
10250
- }
10251
- let left;
10252
- if (this.scrollWidth > this.width) {
10253
- left = this.scrollLeft + this.getPos(deltaX, this.scrollLeft, this.scrollWidth, this.width);
10254
- }
10255
- this.scrollTo({ left, top });
10256
- this.emit("scroll", {
10257
- scrollLeft: this.scrollLeft,
10258
- scrollTop: this.scrollTop,
10259
- scrollHeight: this.scrollHeight,
10260
- scrollWidth: this.scrollWidth
10261
- });
10262
- };
10263
- getPos(delta, scrollPos, scrollSize, size) {
10264
- let pos = 0;
10265
- if (delta < 0) {
10266
- if (scrollPos > 0) {
10267
- pos = Math.max(delta, -scrollPos);
10268
- }
10269
- } else {
10270
- const leftPos = scrollSize - size - scrollPos;
10271
- if (leftPos > 0) {
10272
- pos = Math.min(delta, leftPos);
10273
- }
10274
- }
10275
- return pos;
10276
- }
10277
- setScrollSize = () => {
10278
- const targetRect = this.target.getBoundingClientRect();
10279
- this.scrollWidth = targetRect.width * this.zoom + this.correctionScrollSize.width;
10280
- const targetMarginTop = Number(this.target.style.marginTop) || 0;
10281
- this.scrollHeight = (targetRect.height + targetMarginTop) * this.zoom + this.correctionScrollSize.height;
10282
- let left;
10283
- let top;
10284
- if (this.scrollWidth < this.width) {
10285
- left = 0;
10286
- this.translateXCorrectionValue = 0;
10287
- } else {
10288
- this.translateXCorrectionValue = (this.scrollWidth - this.width) / 2;
10289
- }
10290
- if (this.scrollHeight < this.height) {
10291
- top = 0;
10292
- this.translateYCorrectionValue = 0;
10293
- } else {
10294
- this.translateYCorrectionValue = (this.scrollHeight - this.height) / 2;
10295
- }
10296
- this.scrollTo({
10297
- left,
10298
- top
10299
- });
10300
- this.emit("scroll", {
10301
- scrollLeft: this.scrollLeft,
10302
- scrollTop: this.scrollTop,
10303
- scrollHeight: this.scrollHeight,
10304
- scrollWidth: this.scrollWidth
10305
- });
10306
- };
10307
- setSize = () => {
10308
- const { width, height } = this.container.getBoundingClientRect();
10309
- this.width = width;
10310
- this.height = height;
10311
- };
10312
- }
10313
-
10314
10384
  const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
10315
10385
  ...{
10316
10386
  name: "MEditorScrollBar"
@@ -10526,7 +10596,7 @@
10526
10596
  vue.nextTick(() => unWatch());
10527
10597
  stage2.on("select", (el, event) => {
10528
10598
  const els = stage2.renderer.getElementsFromPoint(event) || [];
10529
- const ids = els.map((el2) => el2.id).filter((id) => Boolean(id));
10599
+ const ids = els.map((el2) => utils.getIdFromEl()(el2)).filter((id) => Boolean(id));
10530
10600
  buttonVisible.value = ids.length > 3;
10531
10601
  filterTextChangeHandler(ids);
10532
10602
  });
@@ -10955,8 +11025,9 @@
10955
11025
  const doc = stage?.renderer.contentWindow?.document;
10956
11026
  const parentEl = doc?.querySelector(`.${stageOptions?.containerHighlightClassName}`);
10957
11027
  let parent = page.value;
10958
- if (parentEl) {
10959
- parent = services?.editorService.getNodeById(parentEl.id, false);
11028
+ const parentId = utils.getIdFromEl()(parentEl);
11029
+ if (parentId) {
11030
+ parent = services?.editorService.getNodeById(parentId, false);
10960
11031
  }
10961
11032
  if (parent && stageContainer.value && stage) {
10962
11033
  const layout = await services?.editorService.getLayout(parent);
@@ -11534,52 +11605,6 @@
11534
11605
  }
11535
11606
  const dataSourceService = new DataSource();
11536
11607
 
11537
- globalThis.requestIdleCallback = globalThis.requestIdleCallback || function(cb) {
11538
- const start = Date.now();
11539
- return setTimeout(() => {
11540
- cb({
11541
- didTimeout: false,
11542
- timeRemaining() {
11543
- return Math.max(0, 50 - (Date.now() - start));
11544
- }
11545
- });
11546
- }, 1);
11547
- };
11548
- class IdleTask extends events.EventEmitter {
11549
- taskList = [];
11550
- taskHandle = null;
11551
- enqueueTask(taskHandler, taskData) {
11552
- this.taskList.push({
11553
- handler: taskHandler,
11554
- data: taskData
11555
- });
11556
- if (!this.taskHandle) {
11557
- this.taskHandle = globalThis.requestIdleCallback(this.runTaskQueue.bind(this), { timeout: 1e4 });
11558
- }
11559
- }
11560
- on(eventName, listener) {
11561
- return super.on(eventName, listener);
11562
- }
11563
- once(eventName, listener) {
11564
- return super.once(eventName, listener);
11565
- }
11566
- emit(eventName, ...args) {
11567
- return super.emit(eventName, ...args);
11568
- }
11569
- runTaskQueue(deadline) {
11570
- while ((deadline.timeRemaining() > 15 || deadline.didTimeout) && this.taskList.length) {
11571
- const task = this.taskList.shift();
11572
- task.handler(task.data);
11573
- }
11574
- if (this.taskList.length) {
11575
- this.taskHandle = globalThis.requestIdleCallback(this.runTaskQueue.bind(this), { timeout: 1e4 });
11576
- } else {
11577
- this.taskHandle = 0;
11578
- this.emit("finish");
11579
- }
11580
- }
11581
- }
11582
-
11583
11608
  const idleTask = new IdleTask();
11584
11609
  class Dep extends BaseService {
11585
11610
  watcher = new dep.Watcher({ initialTargets: vue.reactive({}) });
@@ -12021,7 +12046,8 @@
12021
12046
  subStage?.renderer.contentWindow?.magic.onPageElUpdate(wrapDiv);
12022
12047
  });
12023
12048
  if (await stageOptions?.canSelect?.(contentEl)) {
12024
- subStage?.select(contentEl.id);
12049
+ const id = utils.getIdFromEl()(contentEl);
12050
+ id && subStage?.select(id);
12025
12051
  }
12026
12052
  }
12027
12053
  updateHandler = () => {
@@ -12072,7 +12098,7 @@
12072
12098
  eventMethodList: () => ({}),
12073
12099
  datasourceValues: () => ({}),
12074
12100
  datasourceConfigs: () => ({}),
12075
- canSelect: (el) => Boolean(el.id),
12101
+ canSelect: (el) => Boolean(utils.getIdFromEl()(el)),
12076
12102
  isContainer: (el) => el.classList.contains("magic-ui-container"),
12077
12103
  codeOptions: () => ({})
12078
12104
  };
@@ -12217,6 +12243,44 @@
12217
12243
  });
12218
12244
  };
12219
12245
  const initServiceEvents = (props, emit, { editorService, codeBlockService, dataSourceService, depService }) => {
12246
+ const rootChangeHandler = async (value, preValue) => {
12247
+ if (!value) return;
12248
+ value.codeBlocks = value.codeBlocks || {};
12249
+ value.dataSources = value.dataSources || [];
12250
+ codeBlockService.setCodeDsl(value.codeBlocks);
12251
+ dataSourceService.set("dataSources", value.dataSources);
12252
+ depService.removeTargets(dep.DepTargetType.CODE_BLOCK);
12253
+ Object.entries(value.codeBlocks).forEach(([id, code]) => {
12254
+ depService.addTarget(dep.createCodeBlockTarget(id, code));
12255
+ });
12256
+ dataSourceService.get("dataSources").forEach((ds) => {
12257
+ initDataSourceDepTarget(ds);
12258
+ });
12259
+ if (Array.isArray(value.items)) {
12260
+ collectIdle(value.items, true);
12261
+ } else {
12262
+ depService.clear();
12263
+ delete value.dataSourceDeps;
12264
+ delete value.dataSourceCondDeps;
12265
+ }
12266
+ const nodeId = editorService.get("node")?.id || props.defaultSelected;
12267
+ let node;
12268
+ if (nodeId) {
12269
+ node = editorService.getNodeById(nodeId);
12270
+ }
12271
+ if (node && node !== value) {
12272
+ await editorService.select(node.id);
12273
+ } else if (value.items?.length) {
12274
+ await editorService.select(value.items[0]);
12275
+ } else if (value.id) {
12276
+ editorService.set("nodes", [value]);
12277
+ editorService.set("parent", null);
12278
+ editorService.set("page", null);
12279
+ }
12280
+ if (vue.toRaw(value) !== vue.toRaw(preValue)) {
12281
+ emit("update:modelValue", value);
12282
+ }
12283
+ };
12220
12284
  const getApp = () => {
12221
12285
  const stage = editorService.get("stage");
12222
12286
  return stage?.renderer.runtime?.getApp?.();
@@ -12296,45 +12360,6 @@
12296
12360
  depService.addTarget(dep.createDataSourceMethodTarget(ds, vue.reactive({})));
12297
12361
  depService.addTarget(dep.createDataSourceCondTarget(ds, vue.reactive({})));
12298
12362
  };
12299
- const rootChangeHandler = async (value, preValue) => {
12300
- if (!value) return;
12301
- value.codeBlocks = value.codeBlocks || {};
12302
- value.dataSources = value.dataSources || [];
12303
- codeBlockService.setCodeDsl(value.codeBlocks);
12304
- dataSourceService.set("dataSources", value.dataSources);
12305
- depService.removeTargets(dep.DepTargetType.CODE_BLOCK);
12306
- Object.entries(value.codeBlocks).forEach(([id, code]) => {
12307
- depService.addTarget(dep.createCodeBlockTarget(id, code));
12308
- });
12309
- dataSourceService.get("dataSources").forEach((ds) => {
12310
- initDataSourceDepTarget(ds);
12311
- });
12312
- if (Array.isArray(value.items)) {
12313
- value.items.forEach((page) => {
12314
- depService.collectIdle([page], { pageId: page.id }, true);
12315
- });
12316
- } else {
12317
- depService.clear();
12318
- delete value.dataSourceDeps;
12319
- }
12320
- const nodeId = editorService.get("node")?.id || props.defaultSelected;
12321
- let node;
12322
- if (nodeId) {
12323
- node = editorService.getNodeById(nodeId);
12324
- }
12325
- if (node && node !== value) {
12326
- await editorService.select(node.id);
12327
- } else if (value.items?.length) {
12328
- await editorService.select(value.items[0]);
12329
- } else if (value.id) {
12330
- editorService.set("nodes", [value]);
12331
- editorService.set("parent", null);
12332
- editorService.set("page", null);
12333
- }
12334
- if (vue.toRaw(value) !== vue.toRaw(preValue)) {
12335
- emit("update:modelValue", value);
12336
- }
12337
- };
12338
12363
  const collectIdle = (nodes, deep) => {
12339
12364
  nodes.forEach((node) => {
12340
12365
  let pageId;
@@ -12357,7 +12382,7 @@
12357
12382
  depService.clear(nodes);
12358
12383
  };
12359
12384
  const historyChangeHandler = (page) => {
12360
- depService.collectIdle([page], { pageId: page.id }, true);
12385
+ collectIdle([page], true);
12361
12386
  };
12362
12387
  editorService.on("history-change", historyChangeHandler);
12363
12388
  editorService.on("root-change", rootChangeHandler);
@@ -12384,9 +12409,7 @@
12384
12409
  const root = editorService.get("root");
12385
12410
  removeDataSourceTarget(config.id);
12386
12411
  initDataSourceDepTarget(config);
12387
- (root?.items || []).forEach((page) => {
12388
- depService.collectIdle([page], { pageId: page.id }, true);
12389
- });
12412
+ collectIdle(root?.items || [], true);
12390
12413
  };
12391
12414
  const removeDataSourceTarget = (id) => {
12392
12415
  depService.removeTarget(id, dep.DepTargetType.DATA_SOURCE);
@@ -12697,6 +12720,7 @@
12697
12720
  exports.FloatingBox = _sfc_main$Q;
12698
12721
  exports.H_GUIDE_LINE_STORAGE_KEY = H_GUIDE_LINE_STORAGE_KEY;
12699
12722
  exports.Icon = _sfc_main$Y;
12723
+ exports.IdleTask = IdleTask;
12700
12724
  exports.KeyBindingCommand = KeyBindingCommand;
12701
12725
  exports.KeyValue = _sfc_main$D;
12702
12726
  exports.Keys = Keys;
@@ -12707,12 +12731,16 @@
12707
12731
  exports.PageFragmentSelect = _sfc_main$C;
12708
12732
  exports.PropsPanel = _sfc_main$p;
12709
12733
  exports.Resizer = _sfc_main$A;
12734
+ exports.ScrollViewer = ScrollViewer;
12710
12735
  exports.SideItemKey = SideItemKey;
12711
12736
  exports.SplitView = _sfc_main$z;
12712
12737
  exports.TMagicCodeEditor = _sfc_main$X;
12713
12738
  exports.TMagicEditor = _sfc_main;
12714
12739
  exports.ToolButton = _sfc_main$y;
12740
+ exports.Tree = _sfc_main$m;
12741
+ exports.TreeNode = _sfc_main$n;
12715
12742
  exports.UI_SELECT_MODE_EVENT_NAME = UI_SELECT_MODE_EVENT_NAME;
12743
+ exports.UndoRedo = UndoRedo;
12716
12744
  exports.V_GUIDE_LINE_STORAGE_KEY = V_GUIDE_LINE_STORAGE_KEY;
12717
12745
  exports.advancedTabConfig = advancedTabConfig;
12718
12746
  exports.arrayOptions = arrayOptions;
@@ -12766,10 +12794,15 @@
12766
12794
  exports.styleTabConfig = styleTabConfig;
12767
12795
  exports.traverseNode = traverseNode;
12768
12796
  exports.uiService = uiService;
12797
+ exports.updateStatus = updateStatus;
12769
12798
  exports.useCodeBlockEdit = useCodeBlockEdit;
12770
12799
  exports.useDataSourceMethod = useDataSourceMethod;
12771
12800
  exports.useEditorContentHeight = useEditorContentHeight;
12801
+ exports.useFilter = useFilter;
12772
12802
  exports.useFloatBox = useFloatBox;
12803
+ exports.useGetSo = useGetSo;
12804
+ exports.useNextFloatBoxPosition = useNextFloatBoxPosition;
12805
+ exports.useNodeStatus = useNodeStatus$1;
12773
12806
  exports.useStage = useStage;
12774
12807
  exports.useWindowRect = useWindowRect;
12775
12808
  exports.warn = warn;