@tmagic/editor 1.7.6 → 1.7.8-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 (238) hide show
  1. package/LICENSE +235 -164
  2. package/dist/es/Editor.js +5 -0
  3. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +214 -0
  4. package/dist/es/_virtual/_plugin-vue_export-helper.js +8 -0
  5. package/dist/es/components/CodeBlockEditor.js +5 -0
  6. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +337 -0
  7. package/dist/es/components/CodeParams.js +5 -0
  8. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +63 -0
  9. package/dist/es/components/ContentMenu.js +5 -0
  10. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +160 -0
  11. package/dist/es/components/FloatingBox.js +5 -0
  12. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +161 -0
  13. package/dist/es/components/Icon.js +5 -0
  14. package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +39 -0
  15. package/dist/es/components/Resizer.js +5 -0
  16. package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +20 -0
  17. package/dist/es/components/ScrollBar.js +6 -0
  18. package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +72 -0
  19. package/dist/es/components/ScrollViewer.js +5 -0
  20. package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +104 -0
  21. package/dist/es/components/SearchInput.js +5 -0
  22. package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +40 -0
  23. package/dist/es/components/SplitView.js +5 -0
  24. package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +135 -0
  25. package/dist/es/components/ToolButton.js +5 -0
  26. package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +131 -0
  27. package/dist/es/components/Tree.js +5 -0
  28. package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +60 -0
  29. package/dist/es/components/TreeNode.js +5 -0
  30. package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +126 -0
  31. package/dist/es/editorProps.js +34 -0
  32. package/dist/es/fields/Code.js +5 -0
  33. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +54 -0
  34. package/dist/es/fields/CodeLink.js +5 -0
  35. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +69 -0
  36. package/dist/es/fields/CodeSelect.js +5 -0
  37. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +116 -0
  38. package/dist/es/fields/CodeSelectCol.js +5 -0
  39. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +145 -0
  40. package/dist/es/fields/CondOpSelect.js +5 -0
  41. package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +81 -0
  42. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.js +5 -0
  43. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +158 -0
  44. package/dist/es/fields/DataSourceFieldSelect/Index.js +5 -0
  45. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +155 -0
  46. package/dist/es/fields/DataSourceFields.js +5 -0
  47. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +390 -0
  48. package/dist/es/fields/DataSourceInput.js +5 -0
  49. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +268 -0
  50. package/dist/es/fields/DataSourceMethodSelect.js +5 -0
  51. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +144 -0
  52. package/dist/es/fields/DataSourceMethods.js +5 -0
  53. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +148 -0
  54. package/dist/es/fields/DataSourceMocks.js +5 -0
  55. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +259 -0
  56. package/dist/es/fields/DataSourceSelect.js +5 -0
  57. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +101 -0
  58. package/dist/es/fields/DisplayConds.js +5 -0
  59. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +156 -0
  60. package/dist/es/fields/EventSelect.js +5 -0
  61. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +338 -0
  62. package/dist/es/fields/KeyValue.js +5 -0
  63. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +158 -0
  64. package/dist/es/fields/PageFragmentSelect.js +5 -0
  65. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +81 -0
  66. package/dist/es/fields/StyleSetter/Index.js +5 -0
  67. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +92 -0
  68. package/dist/es/fields/StyleSetter/components/BackgroundPosition.js +5 -0
  69. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +96 -0
  70. package/dist/es/fields/StyleSetter/components/Border.js +5 -0
  71. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +100 -0
  72. package/dist/es/fields/StyleSetter/components/Box.js +5 -0
  73. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +81 -0
  74. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +17 -0
  75. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +14 -0
  76. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +17 -0
  77. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +17 -0
  78. package/dist/es/fields/StyleSetter/icons/display/Block.js +14 -0
  79. package/dist/es/fields/StyleSetter/icons/display/Flex.js +14 -0
  80. package/dist/es/fields/StyleSetter/icons/display/Inline.js +14 -0
  81. package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +14 -0
  82. package/dist/es/fields/StyleSetter/icons/display/None.js +14 -0
  83. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +14 -0
  84. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +14 -0
  85. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +14 -0
  86. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +14 -0
  87. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +14 -0
  88. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +14 -0
  89. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +14 -0
  90. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +14 -0
  91. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +14 -0
  92. package/dist/es/fields/StyleSetter/icons/text-align/Center.js +14 -0
  93. package/dist/es/fields/StyleSetter/icons/text-align/Left.js +14 -0
  94. package/dist/es/fields/StyleSetter/icons/text-align/Right.js +14 -0
  95. package/dist/es/fields/StyleSetter/pro/Background.js +5 -0
  96. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +114 -0
  97. package/dist/es/fields/StyleSetter/pro/Border.js +5 -0
  98. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +50 -0
  99. package/dist/es/fields/StyleSetter/pro/Font.js +5 -0
  100. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +98 -0
  101. package/dist/es/fields/StyleSetter/pro/Layout.js +5 -0
  102. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +287 -0
  103. package/dist/es/fields/StyleSetter/pro/Position.js +5 -0
  104. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +95 -0
  105. package/dist/es/fields/UISelect.js +6 -0
  106. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +161 -0
  107. package/dist/es/hooks/use-code-block-edit.js +54 -0
  108. package/dist/es/hooks/use-data-source-edit.js +29 -0
  109. package/dist/es/hooks/use-editor-content-height.js +17 -0
  110. package/dist/es/hooks/use-filter.js +35 -0
  111. package/dist/es/hooks/use-float-box.js +76 -0
  112. package/dist/es/hooks/use-getso.js +28 -0
  113. package/dist/es/hooks/use-next-float-box-position.js +27 -0
  114. package/dist/es/hooks/use-node-status.js +28 -0
  115. package/dist/es/hooks/use-services.js +9 -0
  116. package/dist/es/hooks/use-stage.js +107 -0
  117. package/dist/es/hooks/use-window-rect.js +19 -0
  118. package/dist/es/icons/CenterIcon.js +5 -0
  119. package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +40 -0
  120. package/dist/es/icons/CodeIcon.js +5 -0
  121. package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +19 -0
  122. package/dist/es/icons/FolderMinusIcon.js +5 -0
  123. package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +27 -0
  124. package/dist/es/index.js +79 -0
  125. package/dist/es/initService.js +392 -0
  126. package/dist/es/layouts/AddPageBox.js +5 -0
  127. package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +38 -0
  128. package/dist/es/layouts/CodeEditor.js +5 -0
  129. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +270 -0
  130. package/dist/es/layouts/Framework.js +5 -0
  131. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +134 -0
  132. package/dist/es/layouts/NavMenu.js +5 -0
  133. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +181 -0
  134. package/dist/es/layouts/page-bar/AddButton.js +5 -0
  135. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +57 -0
  136. package/dist/es/layouts/page-bar/PageBar.js +5 -0
  137. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +135 -0
  138. package/dist/es/layouts/page-bar/PageBarScrollContainer.js +5 -0
  139. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +119 -0
  140. package/dist/es/layouts/page-bar/PageList.js +5 -0
  141. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +54 -0
  142. package/dist/es/layouts/page-bar/Search.js +5 -0
  143. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +60 -0
  144. package/dist/es/layouts/props-panel/FormPanel.js +5 -0
  145. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +129 -0
  146. package/dist/es/layouts/props-panel/PropsPanel.js +5 -0
  147. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +179 -0
  148. package/dist/es/layouts/props-panel/use-style-panel.js +40 -0
  149. package/dist/es/layouts/sidebar/ComponentListPanel.js +5 -0
  150. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +121 -0
  151. package/dist/es/layouts/sidebar/Sidebar.js +5 -0
  152. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +314 -0
  153. package/dist/es/layouts/sidebar/code-block/CodeBlockList.js +5 -0
  154. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +161 -0
  155. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.js +5 -0
  156. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +113 -0
  157. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +60 -0
  158. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.js +5 -0
  159. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +44 -0
  160. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.js +5 -0
  161. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +103 -0
  162. package/dist/es/layouts/sidebar/data-source/DataSourceList.js +5 -0
  163. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +162 -0
  164. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.js +5 -0
  165. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +133 -0
  166. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +59 -0
  167. package/dist/es/layouts/sidebar/layer/LayerMenu.js +5 -0
  168. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +90 -0
  169. package/dist/es/layouts/sidebar/layer/LayerNodeTool.js +5 -0
  170. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +35 -0
  171. package/dist/es/layouts/sidebar/layer/LayerPanel.js +5 -0
  172. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +99 -0
  173. package/dist/es/layouts/sidebar/layer/use-click.js +68 -0
  174. package/dist/es/layouts/sidebar/layer/use-drag.js +118 -0
  175. package/dist/es/layouts/sidebar/layer/use-keybinding.js +36 -0
  176. package/dist/es/layouts/sidebar/layer/use-node-status.js +75 -0
  177. package/dist/es/layouts/workspace/Breadcrumb.js +5 -0
  178. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +39 -0
  179. package/dist/es/layouts/workspace/Workspace.js +5 -0
  180. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +43 -0
  181. package/dist/es/layouts/workspace/viewer/NodeListMenu.js +5 -0
  182. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +88 -0
  183. package/dist/es/layouts/workspace/viewer/Stage.js +5 -0
  184. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +206 -0
  185. package/dist/es/layouts/workspace/viewer/StageOverlay.js +5 -0
  186. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +89 -0
  187. package/dist/es/layouts/workspace/viewer/ViewerMenu.js +5 -0
  188. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +132 -0
  189. package/dist/es/plugin.js +61 -0
  190. package/dist/es/services/BaseService.js +148 -0
  191. package/dist/es/services/codeBlock.js +251 -0
  192. package/dist/es/services/componentList.js +29 -0
  193. package/dist/es/services/dataSource.js +157 -0
  194. package/dist/es/services/dep.js +173 -0
  195. package/dist/es/services/editor.js +752 -0
  196. package/dist/es/services/events.js +64 -0
  197. package/dist/es/services/history.js +84 -0
  198. package/dist/es/services/keybinding.js +182 -0
  199. package/dist/es/services/props.js +215 -0
  200. package/dist/es/services/stageOverlay.js +161 -0
  201. package/dist/es/services/storage.js +127 -0
  202. package/dist/es/services/ui.js +112 -0
  203. package/dist/es/style.css +1937 -0
  204. package/dist/es/type.js +90 -0
  205. package/dist/es/utils/compose.js +44 -0
  206. package/dist/es/utils/config.js +8 -0
  207. package/dist/es/utils/const.js +15 -0
  208. package/dist/es/utils/content-menu.js +76 -0
  209. package/dist/es/utils/data-source/formConfigs/base.js +28 -0
  210. package/dist/es/utils/data-source/formConfigs/http.js +74 -0
  211. package/dist/es/utils/data-source/index.js +201 -0
  212. package/dist/es/utils/dep/idle-task.js +76 -0
  213. package/dist/es/utils/dep/worker.js +19 -0
  214. package/dist/es/utils/editor.js +261 -0
  215. package/dist/es/utils/keybinding-config.js +106 -0
  216. package/dist/es/utils/logger.js +18 -0
  217. package/dist/es/utils/monaco-editor.js +13 -0
  218. package/dist/es/utils/operator.js +73 -0
  219. package/dist/es/utils/props.js +232 -0
  220. package/dist/es/utils/scroll-viewer.js +115 -0
  221. package/dist/es/utils/tree.js +11 -0
  222. package/dist/es/utils/undo-redo.js +43 -0
  223. package/dist/style.css +10 -10
  224. package/dist/tmagic-editor.umd.cjs +18427 -21980
  225. package/package.json +17 -13
  226. package/src/fields/CodeLink.vue +2 -2
  227. package/src/fields/DataSourceFieldSelect/Index.vue +10 -2
  228. package/src/fields/EventSelect.vue +6 -5
  229. package/src/index.ts +1 -73
  230. package/src/layouts/CodeEditor.vue +15 -8
  231. package/src/layouts/Framework.vue +1 -1
  232. package/src/plugin.ts +92 -0
  233. package/src/type.ts +6 -7
  234. package/src/utils/index.ts +1 -0
  235. package/src/utils/monaco-editor.ts +13 -6
  236. package/src/utils/props.ts +2 -0
  237. package/types/index.d.ts +3388 -3342
  238. package/dist/tmagic-editor.js +0 -17037
@@ -0,0 +1,135 @@
1
+ import { useServices } from "../../hooks/use-services.js";
2
+ import ToolButton_default from "../../components/ToolButton.js";
3
+ import AddButton_default from "./AddButton.js";
4
+ import PageBarScrollContainer_default from "./PageBarScrollContainer.js";
5
+ import PageList_default from "./PageList.js";
6
+ import Search_default from "./Search.js";
7
+ import { TMagicIcon, TMagicPopover } from "@tmagic/design";
8
+ import { NodeType } from "@tmagic/core";
9
+ import { Fragment, computed, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useTemplateRef, watch, withCtx } from "vue";
10
+ import { CaretBottom, Delete, DocumentCopy } from "@element-plus/icons-vue";
11
+ //#region packages/editor/src/layouts/page-bar/PageBar.vue?vue&type=script&setup=true&lang.ts
12
+ var _hoisted_1 = { class: "m-editor-page-bar-tabs" };
13
+ var _hoisted_2 = ["data-page-id", "onClick"];
14
+ var _hoisted_3 = { class: "m-editor-page-bar-title" };
15
+ var _hoisted_4 = ["title"];
16
+ var PageBar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ name: "MEditorPageBar",
18
+ __name: "PageBar",
19
+ props: {
20
+ disabledPageFragment: { type: Boolean },
21
+ pageBarSortOptions: {},
22
+ filterFunction: {
23
+ type: Function,
24
+ default: (page, keyword) => page.name?.includes(keyword) || `${page.id}`.includes(keyword)
25
+ }
26
+ },
27
+ setup(__props) {
28
+ const props = __props;
29
+ const { editorService } = useServices();
30
+ const root = computed(() => editorService.get("root"));
31
+ const page = computed(() => editorService.get("page"));
32
+ const query = ref({
33
+ pageType: [NodeType.PAGE, NodeType.PAGE_FRAGMENT],
34
+ keyword: ""
35
+ });
36
+ const list = computed(() => {
37
+ const { pageType, keyword } = query.value;
38
+ if (pageType.length === 0) return [];
39
+ return (root.value?.items || []).filter((item) => {
40
+ if (pageType.includes(item.type)) {
41
+ if (keyword) return props.filterFunction(item, keyword);
42
+ return true;
43
+ }
44
+ return false;
45
+ });
46
+ });
47
+ const switchPage = (id) => {
48
+ editorService.select(id);
49
+ };
50
+ const copy = (node) => {
51
+ node && editorService.copy(node);
52
+ editorService.paste({
53
+ left: 0,
54
+ top: 0
55
+ });
56
+ };
57
+ const remove = (node) => {
58
+ editorService.remove(node);
59
+ };
60
+ const pageBarScrollContainerRef = useTemplateRef("pageBarScrollContainer");
61
+ const pageBarItemEls = useTemplateRef("pageBarItems");
62
+ watch(page, (page) => {
63
+ if (!page || !pageBarScrollContainerRef.value?.itemsContainerWidth || !pageBarItemEls.value || pageBarItemEls.value.length < 2) return;
64
+ const firstItem = pageBarItemEls.value[0];
65
+ const lastItem = pageBarItemEls.value[pageBarItemEls.value.length - 1];
66
+ if (page.id === firstItem.dataset.pageId) pageBarScrollContainerRef.value.scroll("start");
67
+ else if (page.id === lastItem.dataset.pageId) pageBarScrollContainerRef.value.scroll("end");
68
+ else {
69
+ const pageItem = pageBarItemEls.value.find((item) => item.dataset.pageId === page.id);
70
+ if (!pageItem) return;
71
+ const pageItemRect = pageItem.getBoundingClientRect();
72
+ const offsetLeft = pageItemRect.left - firstItem.getBoundingClientRect().left;
73
+ const { itemsContainerWidth } = pageBarScrollContainerRef.value;
74
+ const left = itemsContainerWidth - offsetLeft - pageItemRect.width;
75
+ const translateLeft = pageBarScrollContainerRef.value.getTranslateLeft();
76
+ if (offsetLeft + translateLeft < 0 || offsetLeft + pageItemRect.width > itemsContainerWidth - translateLeft) pageBarScrollContainerRef.value.scrollTo(left);
77
+ }
78
+ });
79
+ return (_ctx, _cache) => {
80
+ return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(PageBarScrollContainer_default, {
81
+ ref: "pageBarScrollContainer",
82
+ "page-bar-sort-options": __props.pageBarSortOptions,
83
+ length: list.value.length
84
+ }, {
85
+ prepend: withCtx(() => [
86
+ renderSlot(_ctx.$slots, "page-bar-add-button", {}, () => [createVNode(AddButton_default)]),
87
+ createVNode(Search_default, {
88
+ query: query.value,
89
+ "onUpdate:query": _cache[0] || (_cache[0] = ($event) => query.value = $event)
90
+ }, null, 8, ["query"]),
91
+ createVNode(PageList_default, { list: list.value }, {
92
+ "page-list-popover": withCtx(({ list }) => [renderSlot(_ctx.$slots, "page-list-popover", { list })]),
93
+ _: 3
94
+ }, 8, ["list"])
95
+ ]),
96
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(list.value, (item) => {
97
+ return openBlock(), createElementBlock("div", {
98
+ class: normalizeClass(["m-editor-page-bar-item", { active: page.value?.id === item.id }]),
99
+ ref_for: true,
100
+ ref: "pageBarItems",
101
+ key: item.id,
102
+ "data-page-id": item.id,
103
+ onClick: ($event) => switchPage(item.id)
104
+ }, [createElementVNode("div", _hoisted_3, [renderSlot(_ctx.$slots, "page-bar-title", { page: item }, () => [createElementVNode("span", { title: item.name }, toDisplayString(item.name || item.id), 9, _hoisted_4)])]), createVNode(unref(TMagicPopover), {
105
+ "popper-class": "page-bar-popover",
106
+ placement: "top",
107
+ trigger: "hover",
108
+ width: 160,
109
+ "destroy-on-close": true
110
+ }, {
111
+ reference: withCtx(() => [createVNode(unref(TMagicIcon), { class: "m-editor-page-bar-menu-icon" }, {
112
+ default: withCtx(() => [createVNode(unref(CaretBottom))]),
113
+ _: 1
114
+ })]),
115
+ default: withCtx(() => [createElementVNode("div", null, [renderSlot(_ctx.$slots, "page-bar-popover", { page: item }, () => [createVNode(ToolButton_default, { data: {
116
+ type: "button",
117
+ text: "复制",
118
+ icon: unref(DocumentCopy),
119
+ handler: () => copy(item)
120
+ } }, null, 8, ["data"]), createVNode(ToolButton_default, { data: {
121
+ type: "button",
122
+ text: "删除",
123
+ icon: unref(Delete),
124
+ handler: () => remove(item)
125
+ } }, null, 8, ["data"])])])]),
126
+ _: 2
127
+ }, 1024)], 10, _hoisted_2);
128
+ }), 128))]),
129
+ _: 3
130
+ }, 8, ["page-bar-sort-options", "length"])]);
131
+ };
132
+ }
133
+ });
134
+ //#endregion
135
+ export { PageBar_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import PageBarScrollContainer_vue_vue_type_script_setup_true_lang_default from "./PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/page-bar/PageBarScrollContainer.vue
3
+ var PageBarScrollContainer_default = PageBarScrollContainer_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { PageBarScrollContainer_default as default };
@@ -0,0 +1,119 @@
1
+ import { useServices } from "../../hooks/use-services.js";
2
+ import Icon_default from "../../components/Icon.js";
3
+ import { computed, createCommentVNode, createElementBlock, createVNode, defineComponent, nextTick, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, unref, useTemplateRef, watch } from "vue";
4
+ import { ArrowLeftBold, ArrowRightBold } from "@element-plus/icons-vue";
5
+ import Sortable from "sortablejs";
6
+ //#region packages/editor/src/layouts/page-bar/PageBarScrollContainer.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = {
8
+ class: "m-editor-page-bar",
9
+ ref: "pageBar"
10
+ };
11
+ var _hoisted_2 = {
12
+ key: 0,
13
+ class: "m-editor-page-bar-items",
14
+ ref: "itemsContainer"
15
+ };
16
+ var PageBarScrollContainer_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
17
+ name: "MEditorPageBarScrollContainer",
18
+ __name: "PageBarScrollContainer",
19
+ props: {
20
+ pageBarSortOptions: {},
21
+ length: {}
22
+ },
23
+ setup(__props, { expose: __expose }) {
24
+ const props = __props;
25
+ const { editorService, uiService } = useServices();
26
+ const itemsContainerEl = useTemplateRef("itemsContainer");
27
+ const canScroll = ref(false);
28
+ const showAddPageButton = computed(() => uiService.get("showAddPageButton"));
29
+ const showPageListButton = computed(() => uiService.get("showPageListButton"));
30
+ const itemsContainerWidth = ref(0);
31
+ const pageBarEl = useTemplateRef("pageBar");
32
+ const setCanScroll = () => {
33
+ itemsContainerWidth.value = (pageBarEl.value?.clientWidth || 0) - 74 - 37 - (showAddPageButton.value ? 37 : 21) - (showPageListButton.value ? 37 : 0);
34
+ nextTick(() => {
35
+ if (itemsContainerEl.value) canScroll.value = itemsContainerEl.value.scrollWidth - itemsContainerWidth.value > 1;
36
+ });
37
+ };
38
+ const resizeObserver = new ResizeObserver(() => {
39
+ setCanScroll();
40
+ });
41
+ onMounted(() => {
42
+ pageBarEl.value && resizeObserver.observe(pageBarEl.value);
43
+ itemsContainerEl.value && resizeObserver.observe(itemsContainerEl.value);
44
+ });
45
+ onBeforeUnmount(() => {
46
+ resizeObserver.disconnect();
47
+ });
48
+ let translateLeft = 0;
49
+ const scroll = (type) => {
50
+ if (!itemsContainerEl.value || !canScroll.value) return;
51
+ const maxScrollLeft = itemsContainerEl.value.scrollWidth - itemsContainerWidth.value;
52
+ if (type === "left") scrollTo(translateLeft + 200);
53
+ else if (type === "right") scrollTo(translateLeft - 200);
54
+ else if (type === "start") scrollTo(0);
55
+ else if (type === "end") scrollTo(-maxScrollLeft);
56
+ };
57
+ const scrollTo = (value) => {
58
+ if (!itemsContainerEl.value || !canScroll.value) return;
59
+ const maxScrollLeft = itemsContainerEl.value.scrollWidth - itemsContainerWidth.value;
60
+ if (value >= 0) value = 0;
61
+ if (-value > maxScrollLeft) value = -maxScrollLeft;
62
+ translateLeft = value;
63
+ itemsContainerEl.value.style.transform = `translate(${translateLeft}px, 0px)`;
64
+ };
65
+ watch(() => props.length, (length = 0, preLength = 0) => {
66
+ setTimeout(() => {
67
+ setCanScroll();
68
+ nextTick(() => {
69
+ if (length < preLength || preLength === 0) scroll("start");
70
+ else scroll("end");
71
+ });
72
+ if (length > 1) {
73
+ const el = document.querySelector(".m-editor-page-bar-items");
74
+ let beforeDragList = [];
75
+ const options = {
76
+ dataIdAttr: "data-page-id",
77
+ onStart: async (event) => {
78
+ if (typeof props.pageBarSortOptions?.beforeStart === "function") await props.pageBarSortOptions.beforeStart(event, sortable);
79
+ beforeDragList = sortable.toArray();
80
+ },
81
+ onUpdate: async (event) => {
82
+ await editorService.sort(beforeDragList[event.oldIndex], beforeDragList[event.newIndex]);
83
+ if (typeof props.pageBarSortOptions?.afterUpdate === "function") await props.pageBarSortOptions.afterUpdate(event, sortable);
84
+ },
85
+ ...props.pageBarSortOptions ? props.pageBarSortOptions : {}
86
+ };
87
+ if (!el) return;
88
+ const sortable = new Sortable(el, options);
89
+ }
90
+ });
91
+ }, { immediate: true });
92
+ __expose({
93
+ itemsContainerWidth,
94
+ scroll,
95
+ scrollTo,
96
+ getTranslateLeft() {
97
+ return translateLeft;
98
+ }
99
+ });
100
+ return (_ctx, _cache) => {
101
+ return openBlock(), createElementBlock("div", _hoisted_1, [
102
+ renderSlot(_ctx.$slots, "prepend"),
103
+ __props.length ? (openBlock(), createElementBlock("div", _hoisted_2, [renderSlot(_ctx.$slots, "default")], 512)) : createCommentVNode("v-if", true),
104
+ canScroll.value ? (openBlock(), createElementBlock("div", {
105
+ key: 1,
106
+ class: "m-editor-page-bar-item m-editor-page-bar-item-icon m-editor-page-bar-item-left-icon",
107
+ onClick: _cache[0] || (_cache[0] = ($event) => scroll("left"))
108
+ }, [createVNode(Icon_default, { icon: unref(ArrowLeftBold) }, null, 8, ["icon"])])) : createCommentVNode("v-if", true),
109
+ canScroll.value ? (openBlock(), createElementBlock("div", {
110
+ key: 2,
111
+ class: "m-editor-page-bar-item m-editor-page-bar-item-icon m-editor-page-bar-item-right-icon",
112
+ onClick: _cache[1] || (_cache[1] = ($event) => scroll("right"))
113
+ }, [createVNode(Icon_default, { icon: unref(ArrowRightBold) }, null, 8, ["icon"])])) : createCommentVNode("v-if", true)
114
+ ], 512);
115
+ };
116
+ }
117
+ });
118
+ //#endregion
119
+ export { PageBarScrollContainer_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import PageList_vue_vue_type_script_setup_true_lang_default from "./PageList.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/page-bar/PageList.vue
3
+ var PageList_default = PageList_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { PageList_default as default };
@@ -0,0 +1,54 @@
1
+ import { useServices } from "../../hooks/use-services.js";
2
+ import ToolButton_default from "../../components/ToolButton.js";
3
+ import { TMagicIcon, TMagicPopover } from "@tmagic/design";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, renderList, renderSlot, unref, withCtx } from "vue";
5
+ import { Files } from "@element-plus/icons-vue";
6
+ //#region packages/editor/src/layouts/page-bar/PageList.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = {
8
+ key: 0,
9
+ id: "m-editor-page-bar-list-icon",
10
+ class: "m-editor-page-bar-item m-editor-page-bar-item-icon"
11
+ };
12
+ var _hoisted_2 = { class: "page-bar-popover-wrapper" };
13
+ var _hoisted_3 = { class: "page-bar-popover-inner" };
14
+ var PageList_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
15
+ name: "MEditorPageList",
16
+ __name: "PageList",
17
+ props: { list: {} },
18
+ setup(__props) {
19
+ const { editorService, uiService } = useServices();
20
+ const showPageListButton = computed(() => uiService.get("showPageListButton"));
21
+ const page = computed(() => editorService.get("page"));
22
+ const switchPage = async (id) => {
23
+ await editorService.select(id);
24
+ };
25
+ return (_ctx, _cache) => {
26
+ return showPageListButton.value ? (openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(TMagicPopover), {
27
+ "popper-class": "page-bar-popover",
28
+ placement: "top",
29
+ trigger: "hover",
30
+ width: 160,
31
+ "destroy-on-close": true
32
+ }, {
33
+ reference: withCtx(() => [createVNode(unref(TMagicIcon), { class: "m-editor-page-list-menu-icon" }, {
34
+ default: withCtx(() => [createVNode(unref(Files))]),
35
+ _: 1
36
+ })]),
37
+ default: withCtx(() => [createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [renderSlot(_ctx.$slots, "page-list-popover", { list: __props.list }, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.list, (item, index) => {
38
+ return openBlock(), createBlock(ToolButton_default, {
39
+ data: {
40
+ type: "button",
41
+ text: item.devconfig?.tabName || item.name || item.id,
42
+ className: item.id === page.value?.id ? "active" : "",
43
+ handler: () => switchPage(item.id)
44
+ },
45
+ key: index
46
+ }, null, 8, ["data"]);
47
+ }), 128))])])])]),
48
+ _: 3
49
+ })])) : createCommentVNode("v-if", true);
50
+ };
51
+ }
52
+ });
53
+ //#endregion
54
+ export { PageList_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import Search_vue_vue_type_script_setup_true_lang_default from "./Search.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/page-bar/Search.vue
3
+ var Search_default = Search_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { Search_default as default };
@@ -0,0 +1,60 @@
1
+ import Icon_default from "../../components/Icon.js";
2
+ import { MForm, createForm } from "@tmagic/form";
3
+ import { NodeType } from "@tmagic/core";
4
+ import { Teleport, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, ref, unref, useModel } from "vue";
5
+ import { Search } from "@element-plus/icons-vue";
6
+ //#region packages/editor/src/layouts/page-bar/Search.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = { class: "m-editor-page-bar-item m-editor-page-bar-item-icon m-editor-page-bar-search" };
8
+ var Search_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
+ __name: "Search",
10
+ props: {
11
+ "query": {},
12
+ "queryModifiers": {}
13
+ },
14
+ emits: /* @__PURE__ */ mergeModels(["search"], ["update:query"]),
15
+ setup(__props, { emit: __emit }) {
16
+ const emit = __emit;
17
+ const query = useModel(__props, "query");
18
+ const formConfig = createForm([{
19
+ type: "checkbox-group",
20
+ name: "pageType",
21
+ options: [{
22
+ value: NodeType.PAGE,
23
+ text: "页面"
24
+ }, {
25
+ value: NodeType.PAGE_FRAGMENT,
26
+ text: "页面片段"
27
+ }]
28
+ }, {
29
+ name: "keyword",
30
+ type: "text",
31
+ placeholder: "请输入关键字",
32
+ clearable: true
33
+ }]);
34
+ const visible = ref(false);
35
+ const onFormChange = (values) => {
36
+ query.value = values;
37
+ emit("search", values);
38
+ };
39
+ return (_ctx, _cache) => {
40
+ return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(Icon_default, {
41
+ icon: unref(Search),
42
+ onClick: _cache[0] || (_cache[0] = ($event) => visible.value = !visible.value),
43
+ class: normalizeClass({ "icon-active": visible.value })
44
+ }, null, 8, ["icon", "class"]), visible.value ? (openBlock(), createBlock(Teleport, {
45
+ key: 0,
46
+ to: ".m-editor-page-bar-tabs"
47
+ }, [query.value ? (openBlock(), createBlock(unref(MForm), {
48
+ key: 0,
49
+ class: "m-editor-page-bar-search-panel",
50
+ inline: true,
51
+ config: unref(formConfig),
52
+ "init-values": query.value,
53
+ "prevent-submit-default": true,
54
+ onChange: onFormChange
55
+ }, null, 8, ["config", "init-values"])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true)]);
56
+ };
57
+ }
58
+ });
59
+ //#endregion
60
+ export { Search_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import FormPanel_vue_vue_type_script_setup_true_lang_default from "./FormPanel.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/props-panel/FormPanel.vue
3
+ var FormPanel_default = FormPanel_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { FormPanel_default as default };
@@ -0,0 +1,129 @@
1
+ import { useServices } from "../../hooks/use-services.js";
2
+ import { useEditorContentHeight } from "../../hooks/use-editor-content-height.js";
3
+ import Icon_default from "../../components/Icon.js";
4
+ import CodeEditor_default from "../CodeEditor.js";
5
+ import { MForm } from "@tmagic/form";
6
+ import { TMagicButton, TMagicScrollbar } from "@tmagic/design";
7
+ import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, getCurrentInstance, inject, normalizeClass, onMounted, onUnmounted, openBlock, ref, renderSlot, unref, useTemplateRef, watchEffect, withCtx } from "vue";
8
+ import { Document } from "@element-plus/icons-vue";
9
+ //#region packages/editor/src/layouts/props-panel/FormPanel.vue?vue&type=script&setup=true&lang.ts
10
+ var _hoisted_1 = { class: "m-editor-props-form-panel" };
11
+ var FormPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
12
+ name: "MEditorFormPanel",
13
+ __name: "FormPanel",
14
+ props: {
15
+ config: {},
16
+ values: {},
17
+ disabledShowSrc: { type: Boolean },
18
+ labelWidth: {},
19
+ codeValueKey: {},
20
+ labelPosition: {},
21
+ extendState: { type: Function }
22
+ },
23
+ emits: [
24
+ "submit",
25
+ "submit-error",
26
+ "form-error",
27
+ "mounted",
28
+ "unmounted"
29
+ ],
30
+ setup(__props, { expose: __expose, emit: __emit }) {
31
+ const props = __props;
32
+ const emit = __emit;
33
+ const services = useServices();
34
+ const { editorService, uiService } = services;
35
+ const codeOptions = inject("codeOptions", {});
36
+ const showSrc = ref(false);
37
+ const propsPanelSize = computed(() => uiService.get("propsPanelSize") || "small");
38
+ const { height: editorContentHeight } = useEditorContentHeight();
39
+ const stage = computed(() => editorService.get("stage"));
40
+ const configFormRef = useTemplateRef("configForm");
41
+ watchEffect(() => {
42
+ if (configFormRef.value) {
43
+ configFormRef.value.formState.stage = stage.value;
44
+ configFormRef.value.formState.services = services;
45
+ }
46
+ });
47
+ const internalInstance = getCurrentInstance();
48
+ onMounted(() => {
49
+ emit("mounted", internalInstance?.proxy);
50
+ });
51
+ onUnmounted(() => {
52
+ emit("unmounted");
53
+ });
54
+ const submit = async (v, eventData) => {
55
+ try {
56
+ emit("submit", await configFormRef.value?.submitForm(), eventData);
57
+ } catch (e) {
58
+ emit("submit-error", e);
59
+ }
60
+ };
61
+ const errorHandler = (e) => {
62
+ emit("form-error", e);
63
+ };
64
+ const saveCode = (values) => {
65
+ emit("submit", props.codeValueKey ? { [props.codeValueKey]: values } : values);
66
+ };
67
+ __expose({
68
+ configForm: configFormRef,
69
+ submit
70
+ });
71
+ return (_ctx, _cache) => {
72
+ return openBlock(), createElementBlock("div", _hoisted_1, [
73
+ renderSlot(_ctx.$slots, "props-form-panel-header"),
74
+ createVNode(unref(TMagicScrollbar), null, {
75
+ default: withCtx(() => [createVNode(unref(MForm), {
76
+ ref: "configForm",
77
+ class: normalizeClass(propsPanelSize.value),
78
+ "popper-class": `m-editor-props-panel-popper ${propsPanelSize.value}`,
79
+ "label-width": __props.labelWidth,
80
+ "label-position": __props.labelPosition,
81
+ size: propsPanelSize.value,
82
+ "init-values": __props.values,
83
+ config: __props.config,
84
+ "extend-state": __props.extendState,
85
+ onChange: submit,
86
+ onError: errorHandler
87
+ }, null, 8, [
88
+ "class",
89
+ "popper-class",
90
+ "label-width",
91
+ "label-position",
92
+ "size",
93
+ "init-values",
94
+ "config",
95
+ "extend-state"
96
+ ])]),
97
+ _: 1
98
+ }),
99
+ !__props.disabledShowSrc ? (openBlock(), createBlock(unref(TMagicButton), {
100
+ key: 0,
101
+ class: "m-editor-props-panel-src-icon",
102
+ circle: "",
103
+ title: "源码",
104
+ type: showSrc.value ? "primary" : "",
105
+ onClick: _cache[0] || (_cache[0] = ($event) => showSrc.value = !showSrc.value)
106
+ }, {
107
+ default: withCtx(() => [createVNode(Icon_default, { icon: unref(Document) }, null, 8, ["icon"])]),
108
+ _: 1
109
+ }, 8, ["type"])) : createCommentVNode("v-if", true),
110
+ showSrc.value ? (openBlock(), createBlock(CodeEditor_default, {
111
+ key: 1,
112
+ class: "m-editor-props-panel-src-code",
113
+ "editor-custom-type": "m-editor-props-panel-src-code",
114
+ height: `${unref(editorContentHeight)}px`,
115
+ "init-values": __props.codeValueKey ? __props.values[__props.codeValueKey] : __props.values,
116
+ options: unref(codeOptions),
117
+ parse: true,
118
+ onSave: saveCode
119
+ }, null, 8, [
120
+ "height",
121
+ "init-values",
122
+ "options"
123
+ ])) : createCommentVNode("v-if", true)
124
+ ]);
125
+ };
126
+ }
127
+ });
128
+ //#endregion
129
+ export { FormPanel_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import PropsPanel_vue_vue_type_script_setup_true_lang_default from "./PropsPanel.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/props-panel/PropsPanel.vue
3
+ var PropsPanel_default = PropsPanel_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { PropsPanel_default as default };