@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,261 @@
1
+ import { Layout } from "../type.js";
2
+ import { calcValueByFontsize, getElById, getNodePath, isNumber, isPage, isPageFragment, isPop, isValueIncludeDataSource } from "@tmagic/utils";
3
+ import { NODE_CONDS_KEY } from "@tmagic/core";
4
+ import { isObject } from "lodash-es";
5
+ import serialize from "serialize-javascript";
6
+ import { detailedDiff } from "deep-object-diff";
7
+ //#region packages/editor/src/utils/editor.ts
8
+ var COPY_STORAGE_KEY = "$MagicEditorCopyData";
9
+ var COPY_CODE_STORAGE_KEY = "$MagicEditorCopyCode";
10
+ var COPY_DS_STORAGE_KEY = "$MagicEditorCopyDataSource";
11
+ /**
12
+ * 获取所有页面配置
13
+ * @param root DSL跟节点
14
+ * @returns 所有页面配置
15
+ */
16
+ var getPageList = (root) => {
17
+ if (!root) return [];
18
+ if (!Array.isArray(root.items)) return [];
19
+ return root.items.filter((item) => isPage(item));
20
+ };
21
+ var getPageFragmentList = (root) => {
22
+ if (!root) return [];
23
+ if (!Array.isArray(root.items)) return [];
24
+ return root.items.filter((item) => isPageFragment(item));
25
+ };
26
+ /**
27
+ * 获取所有页面名称
28
+ * @param pages 所有页面配置
29
+ * @returns 所有页面名称
30
+ */
31
+ var getPageNameList = (pages) => pages.map((page) => page.name || "index");
32
+ /**
33
+ * 新增页面时,生成页面名称
34
+ * @param {Object} pageNameList 所有页面名称
35
+ * @returns {string}
36
+ */
37
+ var generatePageName = (pageNameList, type) => {
38
+ let pageLength = pageNameList.length;
39
+ if (!pageLength) return `${type}_index`;
40
+ let pageName = `${type}_${pageLength}`;
41
+ while (pageNameList.includes(pageName)) {
42
+ pageLength += 1;
43
+ pageName = `${type}_${pageLength}`;
44
+ }
45
+ return pageName;
46
+ };
47
+ /**
48
+ * 新增页面时,生成页面名称
49
+ * @param {Object} app 所有页面配置
50
+ * @returns {string}
51
+ */
52
+ var generatePageNameByApp = (app, type) => generatePageName(getPageNameList(type === "page" ? getPageList(app) : getPageFragmentList(app)), type);
53
+ var getNodeIndex = (id, parent) => {
54
+ return (parent?.items || []).findIndex((item) => `${item.id}` === `${id}`);
55
+ };
56
+ var getRelativeStyle = (style = {}) => ({
57
+ ...style,
58
+ position: "relative",
59
+ top: 0,
60
+ left: 0
61
+ });
62
+ var getMiddleTop = (node, parentNode, stage) => {
63
+ let height = node.style?.height || 0;
64
+ if (!stage || typeof node.style?.top !== "undefined" || !parentNode.style) return node.style?.top;
65
+ if (!isNumber(height)) height = 0;
66
+ const { height: parentHeight } = parentNode.style;
67
+ let wrapperHeightDeal = parentHeight;
68
+ if (stage.mask && stage.renderer) {
69
+ const { scrollTop = 0, wrapperHeight } = stage.mask;
70
+ wrapperHeightDeal = calcValueByFontsize(stage.renderer.getDocument(), wrapperHeight);
71
+ const scrollTopDeal = calcValueByFontsize(stage.renderer.getDocument(), scrollTop);
72
+ if (isPage(parentNode)) return (wrapperHeightDeal - height) / 2 + scrollTopDeal;
73
+ }
74
+ return (Math.min(parentHeight, wrapperHeightDeal) - height) / 2;
75
+ };
76
+ var getInitPositionStyle = (style = {}, layout) => {
77
+ if (layout === Layout.ABSOLUTE) {
78
+ const newStyle = {
79
+ ...style,
80
+ position: "absolute"
81
+ };
82
+ if (typeof newStyle.left === "undefined" && typeof newStyle.right === "undefined") newStyle.left = 0;
83
+ return newStyle;
84
+ }
85
+ if (layout === Layout.RELATIVE) return getRelativeStyle(style);
86
+ return style;
87
+ };
88
+ var setChildrenLayout = (node, layout) => {
89
+ node.items?.forEach((child) => {
90
+ setLayout(child, layout);
91
+ });
92
+ return node;
93
+ };
94
+ var setLayout = (node, layout) => {
95
+ if (isPop(node)) return;
96
+ const style = node.style || {};
97
+ if (style.position === "fixed") return;
98
+ if (layout !== Layout.RELATIVE) style.position = "absolute";
99
+ else {
100
+ node.style = getRelativeStyle(style);
101
+ node.style.right = "auto";
102
+ node.style.bottom = "auto";
103
+ }
104
+ return node;
105
+ };
106
+ var change2Fixed = (node, root) => {
107
+ const style = { ...node.style || {} };
108
+ const path = getNodePath(node.id, root.items);
109
+ const offset = {
110
+ left: 0,
111
+ top: 0
112
+ };
113
+ if (!node.style?.right && isNumber(node.style?.left || 0)) for (const value of path) {
114
+ if (value.style?.right || !isNumber(value.style?.left || 0)) {
115
+ offset.left = 0;
116
+ break;
117
+ }
118
+ offset.left = offset.left + Number(value.style?.left || 0);
119
+ }
120
+ if (!node.style?.bottom && isNumber(node.style?.top || 0)) for (const value of path) {
121
+ if (value.style?.bottom || !isNumber(value.style?.top || 0)) {
122
+ offset.top = 0;
123
+ break;
124
+ }
125
+ offset.top = offset.top + Number(value.style?.top || 0);
126
+ }
127
+ if (offset.left) style.left = offset.left;
128
+ if (offset.top) style.top = offset.top;
129
+ return style;
130
+ };
131
+ var Fixed2Other = async (node, root, getLayout) => {
132
+ const path = getNodePath(node.id, root.items);
133
+ const cur = path.pop();
134
+ const offset = {
135
+ left: cur?.style?.left || 0,
136
+ top: cur?.style?.top || 0
137
+ };
138
+ if (!node.style?.right && isNumber(node.style?.left || 0)) for (const value of path) {
139
+ if (value.style?.right || !isNumber(value.style?.left || 0)) {
140
+ offset.left = 0;
141
+ break;
142
+ }
143
+ offset.left = offset.left - Number(value.style?.left || 0);
144
+ }
145
+ if (!node.style?.bottom && isNumber(node.style?.top || 0)) for (const value of path) {
146
+ if (value.style?.bottom || !isNumber(value.style?.top || 0)) {
147
+ offset.top = 0;
148
+ break;
149
+ }
150
+ offset.top = offset.top - Number(value.style?.top || 0);
151
+ }
152
+ const style = node.style || {};
153
+ const parent = path.pop();
154
+ if (!parent) return getRelativeStyle(style);
155
+ if (await getLayout(parent) !== Layout.RELATIVE) {
156
+ if (offset.left) style.left = offset.left;
157
+ if (offset.top) style.top = offset.top;
158
+ return {
159
+ ...style,
160
+ position: "absolute"
161
+ };
162
+ }
163
+ return getRelativeStyle(style);
164
+ };
165
+ var getGuideLineFromCache = (key) => {
166
+ if (!key) return [];
167
+ const guideLineCacheData = globalThis.localStorage.getItem(key);
168
+ if (guideLineCacheData) try {
169
+ return JSON.parse(guideLineCacheData) || [];
170
+ } catch (e) {
171
+ console.error(e);
172
+ }
173
+ return [];
174
+ };
175
+ var fixNodeLeft = (config, parent, doc) => {
176
+ if (!doc || !config.style || !isNumber(config.style.left)) return config.style?.left;
177
+ const el = getElById()(doc, `${config.id}`);
178
+ const parentEl = getElById()(doc, `${parent.id}`);
179
+ const left = Number(config.style?.left) || 0;
180
+ if (el && parentEl) {
181
+ const calcParentOffsetWidth = calcValueByFontsize(doc, parentEl.offsetWidth);
182
+ const calcElOffsetWidth = calcValueByFontsize(doc, el.offsetWidth);
183
+ if (calcElOffsetWidth + left > calcParentOffsetWidth) return calcParentOffsetWidth - calcElOffsetWidth;
184
+ }
185
+ return config.style.left;
186
+ };
187
+ var fixNodePosition = (config, parent, stage) => {
188
+ if (config.style?.position !== "absolute") return config.style;
189
+ return {
190
+ ...config.style || {},
191
+ top: getMiddleTop(config, parent, stage),
192
+ left: fixNodeLeft(config, parent, stage?.renderer?.contentWindow?.document)
193
+ };
194
+ };
195
+ var serializeConfig = (config) => serialize(config, {
196
+ space: 2,
197
+ unsafe: true
198
+ }).replace(/"(\w+)":\s/g, "$1: ");
199
+ var moveItemsInContainer = (sourceIndices, parent, targetIndex) => {
200
+ sourceIndices.sort((a, b) => a - b);
201
+ for (let i = sourceIndices.length - 1; i >= 0; i--) {
202
+ const sourceIndex = sourceIndices[i];
203
+ if (sourceIndex === targetIndex) continue;
204
+ const [item] = parent.items.splice(sourceIndex, 1);
205
+ parent.items.splice(sourceIndex < targetIndex ? targetIndex - 1 : targetIndex, 0, item);
206
+ for (let j = i - 1; j >= 0; j--) if (sourceIndices[j] >= targetIndex) sourceIndices[j] += 1;
207
+ }
208
+ };
209
+ var isIncludeDataSourceByDiffAddResult = (diffResult) => {
210
+ for (const value of Object.values(diffResult)) {
211
+ if (isValueIncludeDataSource(value)) return true;
212
+ if (isObject(value)) return isIncludeDataSourceByDiffAddResult(value);
213
+ }
214
+ return false;
215
+ };
216
+ var isIncludeDataSourceByDiffUpdatedResult = (diffResult, oldNode) => {
217
+ for (const [key, value] of Object.entries(diffResult)) {
218
+ if (isValueIncludeDataSource(value)) return true;
219
+ if (isValueIncludeDataSource(oldNode[key])) return true;
220
+ if (isObject(value)) return isIncludeDataSourceByDiffUpdatedResult(value, oldNode[key]);
221
+ }
222
+ return false;
223
+ };
224
+ var isIncludeDataSource = (node, oldNode) => {
225
+ const diffResult = detailedDiff(oldNode, node);
226
+ let isIncludeDataSource = false;
227
+ if (diffResult.updated) {
228
+ if (diffResult.updated[NODE_CONDS_KEY]) return true;
229
+ isIncludeDataSource = isIncludeDataSourceByDiffUpdatedResult(diffResult.updated, oldNode);
230
+ if (isIncludeDataSource) return true;
231
+ }
232
+ if (diffResult.added) {
233
+ isIncludeDataSource = isIncludeDataSourceByDiffAddResult(diffResult.added);
234
+ if (isIncludeDataSource) return true;
235
+ }
236
+ if (diffResult.deleted) {
237
+ if (diffResult.deleted[NODE_CONDS_KEY]) return true;
238
+ isIncludeDataSource = isIncludeDataSourceByDiffAddResult(diffResult.deleted);
239
+ if (isIncludeDataSource) return true;
240
+ }
241
+ return isIncludeDataSource;
242
+ };
243
+ var buildChangeRecords = (value, basePath) => {
244
+ const changeRecords = [];
245
+ const buildChangeRecords = (obj, basePath) => {
246
+ Object.entries(obj).forEach(([key, value]) => {
247
+ if (value !== void 0) {
248
+ const currentPath = basePath ? `${basePath}.${key}` : key;
249
+ if (typeof value === "object" && value !== null && !Array.isArray(value)) buildChangeRecords(value, currentPath);
250
+ else changeRecords.push({
251
+ propPath: currentPath,
252
+ value
253
+ });
254
+ }
255
+ });
256
+ };
257
+ buildChangeRecords(value, basePath);
258
+ return changeRecords;
259
+ };
260
+ //#endregion
261
+ export { COPY_CODE_STORAGE_KEY, COPY_DS_STORAGE_KEY, COPY_STORAGE_KEY, Fixed2Other, buildChangeRecords, change2Fixed, fixNodeLeft, fixNodePosition, generatePageName, generatePageNameByApp, getGuideLineFromCache, getInitPositionStyle, getNodeIndex, getPageFragmentList, getPageList, getPageNameList, getRelativeStyle, isIncludeDataSource, moveItemsInContainer, serializeConfig, setChildrenLayout, setLayout };
@@ -0,0 +1,106 @@
1
+ import { KeyBindingCommand } from "../type.js";
2
+ //#region packages/editor/src/utils/keybinding-config.ts
3
+ var KeyBindingContainerKey = /* @__PURE__ */ function(KeyBindingContainerKey) {
4
+ KeyBindingContainerKey["STAGE"] = "stage";
5
+ KeyBindingContainerKey["LAYER_PANEL"] = "layer-panel";
6
+ return KeyBindingContainerKey;
7
+ }({});
8
+ var keybinding_config_default = [
9
+ {
10
+ command: KeyBindingCommand.DELETE_NODE,
11
+ keybinding: ["delete", "backspace"],
12
+ when: [[KeyBindingContainerKey.STAGE, "keyup"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
13
+ },
14
+ {
15
+ command: KeyBindingCommand.COPY_NODE,
16
+ keybinding: "ctrl+c",
17
+ when: [[KeyBindingContainerKey.STAGE, "keydown"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
18
+ },
19
+ {
20
+ command: KeyBindingCommand.PASTE_NODE,
21
+ keybinding: "ctrl+v",
22
+ when: [[KeyBindingContainerKey.STAGE, "keydown"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
23
+ },
24
+ {
25
+ command: KeyBindingCommand.CUT_NODE,
26
+ keybinding: "ctrl+x",
27
+ when: [[KeyBindingContainerKey.STAGE, "keydown"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
28
+ },
29
+ {
30
+ command: KeyBindingCommand.UNDO,
31
+ keybinding: "ctrl+z",
32
+ when: [[KeyBindingContainerKey.STAGE, "keydown"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
33
+ },
34
+ {
35
+ command: KeyBindingCommand.REDO,
36
+ keybinding: "ctrl+shift+z",
37
+ when: [[KeyBindingContainerKey.STAGE, "keydown"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
38
+ },
39
+ {
40
+ command: KeyBindingCommand.MOVE_UP_1,
41
+ keybinding: "up",
42
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
43
+ },
44
+ {
45
+ command: KeyBindingCommand.MOVE_DOWN_1,
46
+ keybinding: "down",
47
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
48
+ },
49
+ {
50
+ command: KeyBindingCommand.MOVE_LEFT_1,
51
+ keybinding: "left",
52
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
53
+ },
54
+ {
55
+ command: KeyBindingCommand.MOVE_RIGHT_1,
56
+ keybinding: "right",
57
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
58
+ },
59
+ {
60
+ command: KeyBindingCommand.MOVE_UP_10,
61
+ keybinding: "ctrl+up",
62
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
63
+ },
64
+ {
65
+ command: KeyBindingCommand.MOVE_DOWN_10,
66
+ keybinding: "ctrl+down",
67
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
68
+ },
69
+ {
70
+ command: KeyBindingCommand.MOVE_LEFT_10,
71
+ keybinding: "ctrl+left",
72
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
73
+ },
74
+ {
75
+ command: KeyBindingCommand.MOVE_RIGHT_10,
76
+ keybinding: "ctrl+right",
77
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
78
+ },
79
+ {
80
+ command: KeyBindingCommand.SWITCH_NODE,
81
+ keybinding: "tab",
82
+ when: [[KeyBindingContainerKey.STAGE, "keydown"], [KeyBindingContainerKey.LAYER_PANEL, "keydown"]]
83
+ },
84
+ {
85
+ command: KeyBindingCommand.ZOOM_IN,
86
+ keybinding: ["ctrl+=", "ctrl+numpadplus"],
87
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
88
+ },
89
+ {
90
+ command: KeyBindingCommand.ZOOM_OUT,
91
+ keybinding: ["ctrl+-", "ctrl+numpad-"],
92
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
93
+ },
94
+ {
95
+ command: KeyBindingCommand.ZOOM_FIT,
96
+ keybinding: "ctrl+0",
97
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
98
+ },
99
+ {
100
+ command: KeyBindingCommand.ZOOM_RESET,
101
+ keybinding: "ctrl+1",
102
+ when: [[KeyBindingContainerKey.STAGE, "keydown"]]
103
+ }
104
+ ];
105
+ //#endregion
106
+ export { KeyBindingContainerKey, keybinding_config_default as default };
@@ -0,0 +1,18 @@
1
+ //#region packages/editor/src/utils/logger.ts
2
+ var log = (...args) => {
3
+ if (process.env.NODE_ENV === "development") console.log("magic editor: ", ...args);
4
+ };
5
+ var info = (...args) => {
6
+ if (process.env.NODE_ENV === "development") console.info("magic editor: ", ...args);
7
+ };
8
+ var warn = (...args) => {
9
+ if (process.env.NODE_ENV === "development") console.warn("magic editor: ", ...args);
10
+ };
11
+ var debug = (...args) => {
12
+ if (process.env.NODE_ENV === "development") console.debug("magic editor: ", ...args);
13
+ };
14
+ var error = (...args) => {
15
+ if (process.env.NODE_ENV === "development") console.error("magic editor: ", ...args);
16
+ };
17
+ //#endregion
18
+ export { debug, error, info, log, warn };
@@ -0,0 +1,13 @@
1
+ //#region packages/editor/src/utils/monaco-editor.ts
2
+ var cached;
3
+ var monaco_editor_default = () => {
4
+ if (!cached) cached = Promise.all([import("emmet-monaco-es"), import("monaco-editor")]).then(([emmet, monaco]) => {
5
+ const { emmetHTML, emmetCSS } = emmet;
6
+ emmetHTML(monaco);
7
+ emmetCSS(monaco, ["css", "scss"]);
8
+ return monaco;
9
+ });
10
+ return cached;
11
+ };
12
+ //#endregion
13
+ export { monaco_editor_default as default };
@@ -0,0 +1,73 @@
1
+ import props_default from "../services/props.js";
2
+ import { generatePageNameByApp, getInitPositionStyle } from "./editor.js";
3
+ import editor_default from "../services/editor.js";
4
+ import { calcValueByFontsize, getElById, isPage, isPageFragment } from "@tmagic/utils";
5
+ import { NodeType } from "@tmagic/core";
6
+ import { toRaw } from "vue";
7
+ import { isEmpty } from "lodash-es";
8
+ //#region packages/editor/src/utils/operator.ts
9
+ /**
10
+ * 粘贴前置操作:返回分配了新id以及校准了坐标的配置
11
+ * @param position 粘贴的坐标
12
+ * @param config 待粘贴的元素配置(复制时保存的那份配置)
13
+ * @returns
14
+ */
15
+ var beforePaste = (position, config, doc) => {
16
+ if (!config[0]?.style) return config;
17
+ const curNode = editor_default.get("node");
18
+ const { left: referenceLeft, top: referenceTop } = config[0].style;
19
+ return config.map((configItem) => {
20
+ const { offsetX = 0, offsetY = 0, ...positionClone } = position;
21
+ let pastePosition = positionClone;
22
+ if (!isEmpty(pastePosition) && curNode?.items) pastePosition = getPositionInContainer(pastePosition, curNode.id, doc);
23
+ if (pastePosition.left && configItem.style?.left) pastePosition.left = configItem.style.left - referenceLeft + pastePosition.left;
24
+ if (pastePosition.top && configItem.style?.top) pastePosition.top = configItem.style?.top - referenceTop + pastePosition.top;
25
+ const pasteConfig = props_default.setNewItemId(configItem, false);
26
+ if (pasteConfig.style) {
27
+ const { left, top } = pasteConfig.style;
28
+ if (typeof left === "number" || !!left && !isNaN(Number(left))) pasteConfig.style.left = Number(left) + offsetX;
29
+ if (typeof top === "number" || !!top && !isNaN(Number(top))) pasteConfig.style.top = Number(top) + offsetY;
30
+ pasteConfig.style = {
31
+ ...pasteConfig.style,
32
+ ...pastePosition
33
+ };
34
+ }
35
+ const root = editor_default.get("root");
36
+ if ((isPage(pasteConfig) || isPageFragment(pasteConfig)) && root) pasteConfig.name = generatePageNameByApp(root, isPage(pasteConfig) ? NodeType.PAGE : NodeType.PAGE_FRAGMENT);
37
+ return pasteConfig;
38
+ });
39
+ };
40
+ /**
41
+ * 将元素粘贴到容器内时,将相对于画布坐标转换为相对于容器的坐标
42
+ * @param position PastePosition 粘贴时相对于画布的坐标
43
+ * @param id 元素id
44
+ * @returns PastePosition 转换后的坐标
45
+ */
46
+ var getPositionInContainer = (position = {}, id, doc) => {
47
+ let { left = 0, top = 0 } = position;
48
+ const stageDoc = editor_default.get("stage")?.renderer?.contentWindow?.document;
49
+ const parentElRect = (stageDoc && getElById()(stageDoc, `${id}`))?.getBoundingClientRect();
50
+ left = left - calcValueByFontsize(doc, parentElRect?.left || 0);
51
+ top = top - calcValueByFontsize(doc, parentElRect?.top || 0);
52
+ return {
53
+ left,
54
+ top
55
+ };
56
+ };
57
+ var getAddParent = (node) => {
58
+ const curNode = editor_default.get("node");
59
+ let parentNode;
60
+ if (isPage(node)) parentNode = editor_default.get("root");
61
+ else if (curNode?.items) parentNode = curNode;
62
+ else if (curNode?.id) parentNode = editor_default.getParentById(curNode.id, false);
63
+ return parentNode;
64
+ };
65
+ var getDefaultConfig = async (addNode, parentNode) => {
66
+ const { type, inputEvent, ...config } = addNode;
67
+ const layout = await editor_default.getLayout(toRaw(parentNode), addNode);
68
+ const newNode = { ...toRaw(await props_default.getPropsValue(type, config)) };
69
+ newNode.style = getInitPositionStyle(newNode.style, layout);
70
+ return newNode;
71
+ };
72
+ //#endregion
73
+ export { beforePaste, getAddParent, getDefaultConfig, getPositionInContainer };