@tmagic/editor 1.8.0-beta.2 → 1.8.0-beta.21

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 (308) hide show
  1. package/dist/es/Editor.vue_vue_type_script_setup_true_lang.js +43 -9
  2. package/dist/es/components/CodeBlockEditor.vue_vue_type_script_setup_true_lang.js +8 -4
  3. package/dist/es/components/CodeParams.vue_vue_type_script_setup_true_lang.js +3 -2
  4. package/dist/es/components/CompareForm.vue_vue_type_script_setup_true_lang.js +22 -98
  5. package/dist/es/components/ContentMenu.vue_vue_type_script_setup_true_lang.js +32 -9
  6. package/dist/es/components/FloatingBox.vue_vue_type_script_setup_true_lang.js +68 -17
  7. package/dist/es/components/Icon.vue_vue_type_script_setup_true_lang.js +1 -1
  8. package/dist/es/components/Resizer.vue_vue_type_script_setup_true_lang.js +1 -1
  9. package/dist/es/components/ScrollBar.js +0 -1
  10. package/dist/es/components/ScrollBar.vue_vue_type_script_setup_true_lang.js +1 -1
  11. package/dist/es/components/ScrollViewer.vue_vue_type_script_setup_true_lang.js +1 -1
  12. package/dist/es/components/SearchInput.vue_vue_type_script_setup_true_lang.js +1 -1
  13. package/dist/es/components/SplitView.vue_vue_type_script_setup_true_lang.js +1 -1
  14. package/dist/es/components/ToolButton.vue_vue_type_script_setup_true_lang.js +7 -7
  15. package/dist/es/components/Tree.vue_vue_type_script_setup_true_lang.js +1 -1
  16. package/dist/es/components/TreeNode.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/es/components/ViewForm.js +5 -0
  18. package/dist/es/components/ViewForm.vue_vue_type_script_setup_true_lang.js +58 -0
  19. package/dist/es/editorProps.js +9 -1
  20. package/dist/es/fields/Code.vue_vue_type_script_setup_true_lang.js +16 -5
  21. package/dist/es/fields/CodeLink.vue_vue_type_script_setup_true_lang.js +7 -7
  22. package/dist/es/fields/CodeSelect.vue_vue_type_script_setup_true_lang.js +81 -44
  23. package/dist/es/fields/CodeSelectCol.vue_vue_type_script_setup_true_lang.js +10 -3
  24. package/dist/es/fields/CondOpSelect.vue_vue_type_script_setup_true_lang.js +7 -19
  25. package/dist/es/fields/DataSourceFieldSelect/FieldSelect.vue_vue_type_script_setup_true_lang.js +13 -6
  26. package/dist/es/fields/DataSourceFieldSelect/Index.vue_vue_type_script_setup_true_lang.js +11 -8
  27. package/dist/es/fields/DataSourceFields.vue_vue_type_script_setup_true_lang.js +39 -12
  28. package/dist/es/fields/DataSourceInput.vue_vue_type_script_setup_true_lang.js +11 -20
  29. package/dist/es/fields/DataSourceMethodSelect.vue_vue_type_script_setup_true_name_true_lang.js +11 -6
  30. package/dist/es/fields/DataSourceMethods.vue_vue_type_script_setup_true_lang.js +30 -14
  31. package/dist/es/fields/DataSourceMocks.vue_vue_type_script_setup_true_lang.js +11 -4
  32. package/dist/es/fields/DataSourceSelect.vue_vue_type_script_setup_true_lang.js +5 -2
  33. package/dist/es/fields/DisplayConds.vue_vue_type_script_setup_true_lang.js +38 -6
  34. package/dist/es/fields/EventSelect.vue_vue_type_script_setup_true_lang.js +156 -155
  35. package/dist/es/fields/KeyValue.vue_vue_type_script_setup_true_lang.js +5 -2
  36. package/dist/es/fields/PageFragmentSelect.vue_vue_type_script_setup_true_lang.js +5 -2
  37. package/dist/es/fields/StyleSetter/Index.vue_vue_type_script_setup_true_lang.js +8 -10
  38. package/dist/es/fields/StyleSetter/components/BackgroundPosition.vue_vue_type_script_setup_true_lang.js +5 -2
  39. package/dist/es/fields/StyleSetter/components/Border.vue_vue_type_script_setup_true_lang.js +28 -6
  40. package/dist/es/fields/StyleSetter/components/Box.vue_vue_type_script_setup_true_lang.js +1 -1
  41. package/dist/es/fields/StyleSetter/icons/align-items/Center.js +31 -0
  42. package/dist/es/fields/StyleSetter/icons/align-items/FlexEnd.js +31 -0
  43. package/dist/es/fields/StyleSetter/icons/align-items/FlexStart.js +31 -0
  44. package/dist/es/fields/StyleSetter/icons/align-items/SpaceAround.js +50 -0
  45. package/dist/es/fields/StyleSetter/icons/align-items/SpaceBetween.js +50 -0
  46. package/dist/es/fields/StyleSetter/icons/background-repeat/NoRepeat.js +7 -7
  47. package/dist/es/fields/StyleSetter/icons/background-repeat/Repeat.js +6 -3
  48. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatX.js +29 -6
  49. package/dist/es/fields/StyleSetter/icons/background-repeat/RepeatY.js +32 -6
  50. package/dist/es/fields/StyleSetter/icons/display/Block.js +1 -1
  51. package/dist/es/fields/StyleSetter/icons/display/Flex.js +1 -1
  52. package/dist/es/fields/StyleSetter/icons/display/Inline.js +1 -1
  53. package/dist/es/fields/StyleSetter/icons/display/InlineBlock.js +1 -1
  54. package/dist/es/fields/StyleSetter/icons/display/None.js +1 -1
  55. package/dist/es/fields/StyleSetter/icons/flex-direction/Column.js +11 -3
  56. package/dist/es/fields/StyleSetter/icons/flex-direction/ColumnReverse.js +11 -3
  57. package/dist/es/fields/StyleSetter/icons/flex-direction/Row.js +11 -3
  58. package/dist/es/fields/StyleSetter/icons/flex-direction/RowReverse.js +11 -3
  59. package/dist/es/fields/StyleSetter/icons/justify-content/Center.js +17 -3
  60. package/dist/es/fields/StyleSetter/icons/justify-content/FlexEnd.js +19 -3
  61. package/dist/es/fields/StyleSetter/icons/justify-content/FlexStart.js +19 -3
  62. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceAround.js +37 -3
  63. package/dist/es/fields/StyleSetter/icons/justify-content/SpaceBetween.js +33 -3
  64. package/dist/es/fields/StyleSetter/icons/text-align/Center.js +1 -1
  65. package/dist/es/fields/StyleSetter/icons/text-align/Left.js +1 -1
  66. package/dist/es/fields/StyleSetter/icons/text-align/Right.js +1 -1
  67. package/dist/es/fields/StyleSetter/pro/Background.vue_vue_type_script_setup_true_lang.js +56 -30
  68. package/dist/es/fields/StyleSetter/pro/Border.vue_vue_type_script_setup_true_lang.js +7 -4
  69. package/dist/es/fields/StyleSetter/pro/Font.vue_vue_type_script_setup_true_lang.js +35 -26
  70. package/dist/es/fields/StyleSetter/pro/Layout.vue_vue_type_script_setup_true_lang.js +76 -48
  71. package/dist/es/fields/StyleSetter/pro/Position.vue_vue_type_script_setup_true_lang.js +29 -23
  72. package/dist/es/fields/StyleSetter/pro/Transform.vue_vue_type_script_setup_true_lang.js +7 -4
  73. package/dist/es/fields/UISelect.js +0 -1
  74. package/dist/es/fields/UISelect.vue_vue_type_script_setup_true_lang.js +5 -2
  75. package/dist/es/hooks/use-code-block-edit.js +6 -3
  76. package/dist/es/hooks/use-compare-form.js +119 -0
  77. package/dist/es/hooks/use-data-source-edit.js +5 -2
  78. package/dist/es/hooks/use-stage.js +9 -4
  79. package/dist/es/icons/CenterIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  80. package/dist/es/icons/CodeIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  81. package/dist/es/icons/DatasourceIcon.js +17 -0
  82. package/dist/es/icons/FolderMinusIcon.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/es/index.js +24 -10
  84. package/dist/es/initService.js +19 -13
  85. package/dist/es/layouts/AddPageBox.vue_vue_type_script_setup_true_lang.js +1 -1
  86. package/dist/es/layouts/CodeEditor.vue_vue_type_script_setup_true_lang.js +24 -12
  87. package/dist/es/layouts/Framework.vue_vue_type_script_setup_true_lang.js +25 -18
  88. package/dist/es/layouts/NavMenu.vue_vue_type_script_setup_true_lang.js +4 -4
  89. package/dist/es/layouts/NavMenuColumn.vue_vue_type_script_setup_true_lang.js +1 -1
  90. package/dist/es/layouts/history-list/Bucket.vue_vue_type_script_setup_true_lang.js +25 -38
  91. package/dist/es/layouts/history-list/BucketTab.js +5 -0
  92. package/dist/es/layouts/history-list/BucketTab.vue_vue_type_script_setup_true_lang.js +62 -0
  93. package/dist/es/layouts/history-list/GroupRow.vue_vue_type_script_setup_true_lang.js +177 -88
  94. package/dist/es/layouts/history-list/HistoryDiffDialog.vue_vue_type_script_setup_true_lang.js +139 -37
  95. package/dist/es/layouts/history-list/HistoryListPanel.vue_vue_type_script_setup_true_lang.js +164 -107
  96. package/dist/es/layouts/history-list/InitialRow.vue_vue_type_script_setup_true_lang.js +44 -9
  97. package/dist/es/layouts/history-list/PageTab.vue_vue_type_script_setup_true_lang.js +49 -53
  98. package/dist/es/layouts/history-list/composables.js +138 -108
  99. package/dist/es/layouts/history-list/useHistoryList.js +56 -0
  100. package/dist/es/layouts/history-list/useHistoryRevert.js +317 -0
  101. package/dist/es/layouts/page-bar/AddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  102. package/dist/es/layouts/page-bar/PageBar.vue_vue_type_script_setup_true_lang.js +5 -3
  103. package/dist/es/layouts/page-bar/PageBarScrollContainer.vue_vue_type_script_setup_true_lang.js +1 -1
  104. package/dist/es/layouts/page-bar/PageList.vue_vue_type_script_setup_true_lang.js +1 -1
  105. package/dist/es/layouts/page-bar/Search.vue_vue_type_script_setup_true_lang.js +2 -2
  106. package/dist/es/layouts/props-panel/FormPanel.vue_vue_type_script_setup_true_lang.js +50 -7
  107. package/dist/es/layouts/props-panel/PropsPanel.vue_vue_type_script_setup_true_lang.js +33 -13
  108. package/dist/es/layouts/props-panel/use-style-panel.js +3 -2
  109. package/dist/es/layouts/sidebar/ComponentListPanel.vue_vue_type_script_setup_true_lang.js +3 -3
  110. package/dist/es/layouts/sidebar/Sidebar.vue_vue_type_script_setup_true_lang.js +26 -38
  111. package/dist/es/layouts/sidebar/code-block/CodeBlockList.vue_vue_type_script_setup_true_lang.js +4 -4
  112. package/dist/es/layouts/sidebar/code-block/CodeBlockListPanel.vue_vue_type_script_setup_true_lang.js +4 -4
  113. package/dist/es/layouts/sidebar/code-block/useContentMenu.js +19 -4
  114. package/dist/es/layouts/sidebar/data-source/DataSourceAddButton.vue_vue_type_script_setup_true_lang.js +1 -1
  115. package/dist/es/layouts/sidebar/data-source/DataSourceConfigPanel.vue_vue_type_script_setup_true_lang.js +23 -6
  116. package/dist/es/layouts/sidebar/data-source/DataSourceList.vue_vue_type_script_setup_true_lang.js +1 -1
  117. package/dist/es/layouts/sidebar/data-source/DataSourceListPanel.vue_vue_type_script_setup_true_lang.js +27 -5
  118. package/dist/es/layouts/sidebar/data-source/useContentMenu.js +19 -4
  119. package/dist/es/layouts/sidebar/layer/LayerMenu.vue_vue_type_script_setup_true_lang.js +8 -8
  120. package/dist/es/layouts/sidebar/layer/LayerNodeContent.js +5 -0
  121. package/dist/es/layouts/sidebar/layer/LayerNodeContent.vue_vue_type_script_setup_true_lang.js +46 -0
  122. package/dist/es/layouts/sidebar/layer/LayerNodeTool.vue_vue_type_script_setup_true_lang.js +2 -2
  123. package/dist/es/layouts/sidebar/layer/LayerPanel.vue_vue_type_script_setup_true_lang.js +3 -2
  124. package/dist/es/layouts/sidebar/layer/use-click.js +3 -3
  125. package/dist/es/layouts/sidebar/layer/use-node-status.js +2 -2
  126. package/dist/es/layouts/workspace/Breadcrumb.vue_vue_type_script_setup_true_lang.js +1 -1
  127. package/dist/es/layouts/workspace/Workspace.vue_vue_type_script_setup_true_lang.js +1 -1
  128. package/dist/es/layouts/workspace/viewer/NodeListMenu.vue_vue_type_script_setup_true_lang.js +9 -3
  129. package/dist/es/layouts/workspace/viewer/Stage.vue_vue_type_script_setup_true_lang.js +2 -2
  130. package/dist/es/layouts/workspace/viewer/StageOverlay.vue_vue_type_script_setup_true_lang.js +1 -1
  131. package/dist/es/layouts/workspace/viewer/ViewerMenu.vue_vue_type_script_setup_true_lang.js +16 -16
  132. package/dist/es/plugin.js +5 -2
  133. package/dist/es/services/codeBlock.js +137 -56
  134. package/dist/es/services/dataSource.js +122 -52
  135. package/dist/es/services/dep.js +162 -41
  136. package/dist/es/services/editor.js +613 -179
  137. package/dist/es/services/events.js +2 -2
  138. package/dist/es/services/history.js +350 -386
  139. package/dist/es/services/keybinding.js +6 -6
  140. package/dist/es/services/props.js +3 -2
  141. package/dist/es/services/storage.js +2 -2
  142. package/dist/es/services/ui.js +10 -2
  143. package/dist/es/style.css +549 -113
  144. package/dist/es/utils/config.js +4 -1
  145. package/dist/es/utils/const.js +2 -2
  146. package/dist/es/utils/content-menu.js +19 -11
  147. package/dist/es/utils/data-source/index.js +34 -11
  148. package/dist/es/utils/dep/collect-worker-client.js +114 -0
  149. package/dist/es/utils/dep/idle-task.js +70 -22
  150. package/dist/es/utils/dep/worker.js +1 -1
  151. package/dist/es/utils/editor.js +103 -49
  152. package/dist/es/utils/event.js +135 -0
  153. package/dist/es/utils/history.js +220 -0
  154. package/dist/es/utils/indexed-db.js +86 -0
  155. package/dist/es/utils/monaco-editor.js +22 -6
  156. package/dist/es/utils/operator.js +2 -2
  157. package/dist/es/utils/props.js +114 -33
  158. package/dist/es/utils/type-match-rules.js +367 -0
  159. package/dist/es/utils/undo-redo.js +60 -1
  160. package/dist/style.css +549 -113
  161. package/dist/themes/magic-admin.css +3028 -0
  162. package/dist/tmagic-editor.umd.cjs +14403 -10121
  163. package/package.json +8 -8
  164. package/src/Editor.vue +43 -2
  165. package/src/components/CodeBlockEditor.vue +3 -0
  166. package/src/components/CompareForm.vue +18 -146
  167. package/src/components/ContentMenu.vue +44 -8
  168. package/src/components/FloatingBox.vue +84 -9
  169. package/src/components/ScrollBar.vue +0 -67
  170. package/src/components/ToolButton.vue +2 -2
  171. package/src/components/ViewForm.vue +55 -0
  172. package/src/editorProps.ts +30 -0
  173. package/src/fields/Code.vue +10 -2
  174. package/src/fields/CodeLink.vue +2 -5
  175. package/src/fields/CodeSelect.vue +54 -40
  176. package/src/fields/CodeSelectCol.vue +8 -1
  177. package/src/fields/CondOpSelect.vue +2 -24
  178. package/src/fields/DataSourceFieldSelect/FieldSelect.vue +16 -2
  179. package/src/fields/DataSourceFieldSelect/Index.vue +14 -5
  180. package/src/fields/DataSourceFields.vue +42 -8
  181. package/src/fields/DataSourceInput.vue +10 -28
  182. package/src/fields/DataSourceMethodSelect.vue +9 -4
  183. package/src/fields/DataSourceMethods.vue +42 -21
  184. package/src/fields/DataSourceMocks.vue +3 -0
  185. package/src/fields/DisplayConds.vue +18 -1
  186. package/src/fields/EventSelect.vue +152 -166
  187. package/src/fields/StyleSetter/Index.vue +3 -12
  188. package/src/fields/StyleSetter/components/Border.vue +15 -6
  189. package/src/fields/StyleSetter/icons/align-items/Center.vue +19 -0
  190. package/src/fields/StyleSetter/icons/align-items/FlexEnd.vue +19 -0
  191. package/src/fields/StyleSetter/icons/align-items/FlexStart.vue +19 -0
  192. package/src/fields/StyleSetter/icons/align-items/SpaceAround.vue +34 -0
  193. package/src/fields/StyleSetter/icons/align-items/SpaceBetween.vue +34 -0
  194. package/src/fields/StyleSetter/icons/align-items/index.ts +5 -0
  195. package/src/fields/StyleSetter/icons/background-repeat/NoRepeat.vue +20 -4
  196. package/src/fields/StyleSetter/icons/background-repeat/Repeat.vue +10 -28
  197. package/src/fields/StyleSetter/icons/background-repeat/RepeatX.vue +4 -5
  198. package/src/fields/StyleSetter/icons/background-repeat/RepeatY.vue +4 -5
  199. package/src/fields/StyleSetter/icons/flex-direction/Column.vue +4 -3
  200. package/src/fields/StyleSetter/icons/flex-direction/ColumnReverse.vue +4 -3
  201. package/src/fields/StyleSetter/icons/flex-direction/Row.vue +4 -3
  202. package/src/fields/StyleSetter/icons/flex-direction/RowReverse.vue +4 -3
  203. package/src/fields/StyleSetter/icons/justify-content/Center.vue +5 -2
  204. package/src/fields/StyleSetter/icons/justify-content/FlexEnd.vue +15 -2
  205. package/src/fields/StyleSetter/icons/justify-content/FlexStart.vue +15 -2
  206. package/src/fields/StyleSetter/icons/justify-content/SpaceAround.vue +28 -3
  207. package/src/fields/StyleSetter/icons/justify-content/SpaceBetween.vue +28 -2
  208. package/src/fields/StyleSetter/pro/Background.vue +99 -55
  209. package/src/fields/StyleSetter/pro/Border.vue +9 -11
  210. package/src/fields/StyleSetter/pro/Font.vue +66 -64
  211. package/src/fields/StyleSetter/pro/Layout.vue +211 -139
  212. package/src/fields/StyleSetter/pro/Position.vue +69 -67
  213. package/src/fields/StyleSetter/pro/Transform.vue +23 -25
  214. package/src/fields/UISelect.vue +0 -12
  215. package/src/hooks/index.ts +1 -0
  216. package/src/hooks/use-code-block-edit.ts +4 -3
  217. package/src/hooks/use-compare-form.ts +187 -0
  218. package/src/hooks/use-data-source-edit.ts +2 -2
  219. package/src/hooks/use-stage.ts +5 -3
  220. package/src/icons/DatasourceIcon.vue +7 -0
  221. package/src/index.ts +12 -0
  222. package/src/initService.ts +26 -16
  223. package/src/layouts/CodeEditor.vue +34 -11
  224. package/src/layouts/Framework.vue +15 -8
  225. package/src/layouts/NavMenu.vue +3 -3
  226. package/src/layouts/history-list/Bucket.vue +33 -41
  227. package/src/layouts/history-list/BucketTab.vue +72 -0
  228. package/src/layouts/history-list/GroupRow.vue +190 -93
  229. package/src/layouts/history-list/HistoryDiffDialog.vue +169 -90
  230. package/src/layouts/history-list/HistoryListPanel.vue +191 -95
  231. package/src/layouts/history-list/InitialRow.vue +38 -8
  232. package/src/layouts/history-list/PageTab.vue +67 -43
  233. package/src/layouts/history-list/composables.ts +239 -125
  234. package/src/layouts/history-list/useHistoryList.ts +60 -0
  235. package/src/layouts/history-list/useHistoryRevert.ts +425 -0
  236. package/src/layouts/page-bar/PageBar.vue +4 -2
  237. package/src/layouts/props-panel/FormPanel.vue +72 -6
  238. package/src/layouts/props-panel/PropsPanel.vue +62 -18
  239. package/src/layouts/props-panel/use-style-panel.ts +4 -3
  240. package/src/layouts/sidebar/ComponentListPanel.vue +10 -6
  241. package/src/layouts/sidebar/Sidebar.vue +13 -6
  242. package/src/layouts/sidebar/code-block/CodeBlockList.vue +5 -5
  243. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +5 -2
  244. package/src/layouts/sidebar/code-block/useContentMenu.ts +14 -2
  245. package/src/layouts/sidebar/data-source/DataSourceConfigPanel.vue +34 -2
  246. package/src/layouts/sidebar/data-source/DataSourceListPanel.vue +29 -4
  247. package/src/layouts/sidebar/data-source/useContentMenu.ts +14 -2
  248. package/src/layouts/sidebar/layer/LayerMenu.vue +21 -13
  249. package/src/layouts/sidebar/layer/LayerNodeContent.vue +57 -0
  250. package/src/layouts/sidebar/layer/LayerNodeTool.vue +7 -4
  251. package/src/layouts/sidebar/layer/LayerPanel.vue +4 -1
  252. package/src/layouts/sidebar/layer/use-click.ts +3 -3
  253. package/src/layouts/sidebar/layer/use-node-status.ts +2 -2
  254. package/src/layouts/workspace/viewer/NodeListMenu.vue +4 -1
  255. package/src/layouts/workspace/viewer/Stage.vue +1 -1
  256. package/src/layouts/workspace/viewer/ViewerMenu.vue +15 -15
  257. package/src/plugin.ts +6 -3
  258. package/src/services/codeBlock.ts +152 -47
  259. package/src/services/dataSource.ts +120 -41
  260. package/src/services/dep.ts +292 -47
  261. package/src/services/editor.ts +820 -224
  262. package/src/services/events.ts +3 -3
  263. package/src/services/history.ts +449 -412
  264. package/src/services/keybinding.ts +6 -6
  265. package/src/services/ui.ts +33 -5
  266. package/src/theme/code-block.scss +37 -0
  267. package/src/theme/common/var.scss +1 -1
  268. package/src/theme/component-list-panel.scss +2 -2
  269. package/src/theme/data-source-field.scss +4 -0
  270. package/src/theme/display-conds.scss +11 -0
  271. package/src/theme/event.scss +70 -1
  272. package/src/theme/floating-box.scss +9 -1
  273. package/src/theme/framework.scss +4 -1
  274. package/src/theme/history-list-panel.scss +157 -23
  275. package/src/theme/layer-node-content.scss +14 -0
  276. package/src/theme/nav-menu.scss +5 -1
  277. package/src/theme/page-bar.scss +0 -4
  278. package/src/theme/props-panel.scss +5 -4
  279. package/src/theme/scroll-bar.scss +64 -0
  280. package/src/theme/style-setter/border.scss +17 -5
  281. package/src/theme/theme.scss +4 -0
  282. package/src/theme/themes/magic-admin/index.scss +214 -0
  283. package/src/theme/ui-select.scss +9 -0
  284. package/src/type.ts +668 -124
  285. package/src/utils/config.ts +9 -1
  286. package/src/utils/const.ts +3 -2
  287. package/src/utils/content-menu.ts +20 -11
  288. package/src/utils/data-source/index.ts +32 -12
  289. package/src/utils/dep/collect-worker-client.ts +149 -0
  290. package/src/utils/dep/idle-task.ts +104 -35
  291. package/src/utils/dep/worker.ts +113 -9
  292. package/src/utils/editor.ts +166 -60
  293. package/src/utils/event.ts +237 -0
  294. package/src/utils/history.ts +286 -0
  295. package/src/utils/index.ts +4 -0
  296. package/src/utils/indexed-db.ts +122 -0
  297. package/src/utils/monaco-editor.ts +27 -0
  298. package/src/utils/operator.ts +2 -2
  299. package/src/utils/props.ts +114 -11
  300. package/src/utils/type-match-rules.ts +684 -0
  301. package/src/utils/undo-redo.ts +88 -0
  302. package/types/index.d.ts +1990 -517
  303. package/dist/es/layouts/history-list/CodeBlockTab.js +0 -5
  304. package/dist/es/layouts/history-list/CodeBlockTab.vue_vue_type_script_setup_true_lang.js +0 -62
  305. package/dist/es/layouts/history-list/DataSourceTab.js +0 -5
  306. package/dist/es/layouts/history-list/DataSourceTab.vue_vue_type_script_setup_true_lang.js +0 -62
  307. package/src/layouts/history-list/CodeBlockTab.vue +0 -61
  308. package/src/layouts/history-list/DataSourceTab.vue +0 -61
@@ -1,10 +1,10 @@
1
1
  import { getEditorConfig } from "../utils/config.js";
2
+ import { serializeConfig } from "../utils/editor.js";
2
3
  import monaco_editor_default from "../utils/monaco-editor.js";
3
4
  import Icon_default from "../components/Icon.js";
4
5
  import { TMagicButton } from "@tmagic/design";
5
6
  import { Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, ref, unref, useTemplateRef, watch, withCtx } from "vue";
6
7
  import { throttle } from "lodash-es";
7
- import serialize from "serialize-javascript";
8
8
  import { FullScreen } from "@element-plus/icons-vue";
9
9
  //#region packages/editor/src/layouts/CodeEditor.vue?vue&type=script&setup=true&lang.ts
10
10
  var _hoisted_1 = { class: "magic-code-editor" };
@@ -12,7 +12,7 @@ var _hoisted_2 = {
12
12
  ref: "codeEditor",
13
13
  class: "magic-code-editor-content"
14
14
  };
15
- var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
15
+ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
16
16
  name: "MEditorCodeEditor",
17
17
  __name: "CodeEditor",
18
18
  props: {
@@ -94,10 +94,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
94
94
  const toString = (v, language) => {
95
95
  let value;
96
96
  if (typeof v !== "string") if (language === "json") value = JSON.stringify(v, null, 2);
97
- else value = serialize(v, {
98
- space: 2,
99
- unsafe: true
100
- }).replace(/"(\w+)":\s/g, "$1: ");
97
+ else value = serializeConfig(v);
101
98
  else value = v;
102
99
  if (language === "javascript" && value.startsWith("{") && value.endsWith("}")) value = `(${value})`;
103
100
  return value;
@@ -113,6 +110,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
113
110
  const values = ref("");
114
111
  const loading = ref(false);
115
112
  const codeEditorEl = useTemplateRef("codeEditor");
113
+ let destroyed = false;
116
114
  const resizeObserver = new globalThis.ResizeObserver(throttle(() => {
117
115
  vsEditor?.layout();
118
116
  vsDiffEditor?.layout();
@@ -153,11 +151,17 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
153
151
  emit("save", props.parse ? parseCode(newValue, props.language) : newValue);
154
152
  }
155
153
  };
154
+ const isEditorElValid = () => !destroyed && !!codeEditorEl.value && codeEditorEl.value.isConnected;
156
155
  const init = async () => {
157
- if (!codeEditorEl.value) return;
158
- if (codeEditorEl.value.clientHeight === 0) await nextTick();
156
+ if (!isEditorElValid()) return;
157
+ if (codeEditorEl.value.clientHeight === 0) {
158
+ await nextTick();
159
+ if (!isEditorElValid()) return;
160
+ }
159
161
  cachedExtraHeight = null;
160
162
  monaco = await monaco_editor_default();
163
+ if (!isEditorElValid()) return;
164
+ const editorEl = codeEditorEl.value;
161
165
  const options = {
162
166
  value: values.value,
163
167
  language: props.language,
@@ -166,19 +170,26 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
166
170
  ...props.options
167
171
  };
168
172
  if (props.type === "diff") {
169
- vsDiffEditor = await getEditorConfig("customCreateMonacoDiffEditor")(monaco, codeEditorEl.value, options);
173
+ vsDiffEditor = await getEditorConfig("customCreateMonacoDiffEditor")(monaco, editorEl, options);
170
174
  vsDiffEditor.getModifiedEditor().onDidChangeModelContent(() => {
171
175
  if (props.autosize) setAutoHeight(getEditorValue());
172
176
  });
173
177
  } else {
174
- vsEditor = await getEditorConfig("customCreateMonacoEditor")(monaco, codeEditorEl.value, options);
178
+ vsEditor = await getEditorConfig("customCreateMonacoEditor")(monaco, editorEl, options);
175
179
  vsEditor.onDidChangeModelContent(() => {
176
180
  if (props.autosize) setAutoHeight(getEditorValue());
177
181
  });
178
182
  }
183
+ if (destroyed) {
184
+ vsEditor?.dispose();
185
+ vsDiffEditor?.dispose();
186
+ vsEditor = null;
187
+ vsDiffEditor = null;
188
+ return;
189
+ }
179
190
  setEditorValue(props.initValues, props.modifiedValues);
180
191
  emit("initd", vsEditor);
181
- codeEditorEl.value.addEventListener("keydown", handleKeyDown);
192
+ editorEl.addEventListener("keydown", handleKeyDown);
182
193
  if (props.type !== "diff" && props.autoSave) vsEditor?.onDidBlurEditorWidget(() => {
183
194
  const newValue = getEditorValue();
184
195
  if (values.value !== newValue) {
@@ -186,7 +197,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
186
197
  emit("save", props.parse ? parseCode(newValue, props.language) : newValue);
187
198
  }
188
199
  });
189
- resizeObserver.observe(codeEditorEl.value);
200
+ resizeObserver.observe(editorEl);
190
201
  };
191
202
  watch(() => props.initValues, (v, preV) => {
192
203
  if (v !== preV) setEditorValue(props.initValues, props.modifiedValues);
@@ -208,6 +219,7 @@ var CodeEditor_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
208
219
  loading.value = false;
209
220
  });
210
221
  onBeforeUnmount(() => {
222
+ destroyed = true;
211
223
  resizeObserver.disconnect();
212
224
  vsEditor?.dispose();
213
225
  vsDiffEditor?.dispose();
@@ -6,21 +6,17 @@ import SplitView_default from "../components/SplitView.js";
6
6
  import PageBar_default from "./page-bar/PageBar.js";
7
7
  import AddPageBox_default from "./AddPageBox.js";
8
8
  import CodeEditor_default from "./CodeEditor.js";
9
- import { computed, createCommentVNode, createElementBlock, createSlots, createVNode, defineComponent, inject, onBeforeUnmount, onMounted, openBlock, renderSlot, unref, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
9
+ import { computed, createCommentVNode, createElementBlock, createSlots, createVNode, defineComponent, inject, normalizeClass, onBeforeUnmount, onMounted, openBlock, renderSlot, unref, useTemplateRef, vShow, watch, withCtx, withDirectives } from "vue";
10
10
  //#region packages/editor/src/layouts/Framework.vue?vue&type=script&setup=true&lang.ts
11
- var _hoisted_1 = {
12
- class: "m-editor",
13
- ref: "content",
14
- style: { "min-width": "900px" }
15
- };
16
- var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
+ var Framework_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
17
12
  name: "MEditorFramework",
18
13
  __name: "Framework",
19
14
  props: {
20
15
  disabledPageFragment: { type: Boolean },
21
16
  pageBarSortOptions: {},
22
17
  pageFilterFunction: { type: Function },
23
- hideSidebar: { type: Boolean }
18
+ hideSidebar: { type: Boolean },
19
+ theme: {}
24
20
  },
25
21
  setup(__props) {
26
22
  const props = __props;
@@ -33,13 +29,16 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
33
29
  const pageLength = computed(() => editorService.get("pageLength") || 0);
34
30
  const showSrc = computed(() => uiService.get("showSrc"));
35
31
  const columnWidth = computed(() => uiService.get("columnWidth"));
32
+ const minLeftColumnWidth = computed(() => uiService.get("minLeftColumnWidth"));
33
+ const minCenterColumnWidth = computed(() => uiService.get("minCenterColumnWidth"));
34
+ const minRightColumnWidth = computed(() => uiService.get("minRightColumnWidth"));
36
35
  watch(pageLength, () => {
37
36
  splitViewRef.value?.updateWidth();
38
37
  });
39
38
  watch(() => uiService.get("hideSlideBar"), (hideSlideBar) => {
40
39
  uiService.set("columnWidth", {
41
40
  ...columnWidth.value,
42
- left: hideSlideBar ? 0 : storageService.getItem("$MagicEditorLeftColumnWidthData", { protocol: Protocol.NUMBER }) || 310
41
+ left: hideSlideBar ? 0 : storageService.getItem("$MagicEditorLeftColumnWidthData", { protocol: Protocol.NUMBER }) || 345
43
42
  });
44
43
  });
45
44
  const columnWidthChange = (columnW) => {
@@ -66,23 +65,31 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
66
65
  const saveCode = (value) => {
67
66
  try {
68
67
  const parseDSL = getEditorConfig("parseDSL");
69
- editorService.set("root", parseDSL(value));
68
+ editorService.set("root", parseDSL(value), { historySource: "root-code" });
70
69
  } catch (e) {
71
70
  console.error(e);
72
71
  }
73
72
  };
74
73
  return (_ctx, _cache) => {
75
- return openBlock(), createElementBlock("div", _hoisted_1, [
74
+ return openBlock(), createElementBlock("div", {
75
+ ref: "content",
76
+ class: normalizeClass([
77
+ "m-editor",
78
+ __props.theme ? `m-editor--${__props.theme}` : "",
79
+ __props.theme ? `m-theme--${__props.theme}` : ""
80
+ ]),
81
+ style: { "min-width": "900px" }
82
+ }, [
76
83
  renderSlot(_ctx.$slots, "header"),
77
84
  renderSlot(_ctx.$slots, "nav"),
78
85
  renderSlot(_ctx.$slots, "content-before"),
79
- showSrc.value ? renderSlot(_ctx.$slots, "src-code", { key: 0 }, () => [createVNode(CodeEditor_default, {
86
+ showSrc.value ? renderSlot(_ctx.$slots, "src-code", {}, () => [createVNode(CodeEditor_default, {
80
87
  class: "m-editor-content",
81
88
  "editor-custom-type": "m-editor-content",
82
89
  "init-values": root.value,
83
90
  options: unref(codeOptions),
84
91
  onSave: saveCode
85
- }, null, 8, ["init-values", "options"])]) : createCommentVNode("v-if", true),
92
+ }, null, 8, ["init-values", "options"])], void 0, 0) : createCommentVNode("v-if", true),
86
93
  withDirectives(createVNode(SplitView_default, {
87
94
  ref: "splitView",
88
95
  class: "m-editor-content",
@@ -91,13 +98,13 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
91
98
  "right-class": "m-editor-framework-right",
92
99
  left: __props.hideSidebar ? void 0 : columnWidth.value.left,
93
100
  right: columnWidth.value.right,
94
- "min-left": __props.hideSidebar ? 0 : unref(200),
95
- "min-right": unref(300),
96
- "min-center": unref(400),
101
+ "min-left": __props.hideSidebar ? 0 : minLeftColumnWidth.value,
102
+ "min-right": minRightColumnWidth.value,
103
+ "min-center": minCenterColumnWidth.value,
97
104
  width: frameworkRect.value.width,
98
105
  onChange: columnWidthChange
99
106
  }, createSlots({
100
- center: withCtx(() => [page.value ? renderSlot(_ctx.$slots, "workspace", { key: 0 }) : renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [createVNode(AddPageBox_default, { "disabled-page-fragment": __props.disabledPageFragment }, null, 8, ["disabled-page-fragment"])]), renderSlot(_ctx.$slots, "page-bar", {}, () => [createVNode(PageBar_default, {
107
+ center: withCtx(() => [page.value ? renderSlot(_ctx.$slots, "workspace", {}, void 0, void 0, 0) : renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(AddPageBox_default, { "disabled-page-fragment": __props.disabledPageFragment }, null, 8, ["disabled-page-fragment"])], void 0, 1), renderSlot(_ctx.$slots, "page-bar", {}, () => [createVNode(PageBar_default, {
101
108
  "disabled-page-fragment": __props.disabledPageFragment,
102
109
  "page-bar-sort-options": __props.pageBarSortOptions,
103
110
  "filter-function": __props.pageFilterFunction
@@ -131,7 +138,7 @@ var Framework_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
131
138
  ]), [[vShow, !showSrc.value]]),
132
139
  renderSlot(_ctx.$slots, "content-after"),
133
140
  renderSlot(_ctx.$slots, "footer")
134
- ], 512);
141
+ ], 2);
135
142
  };
136
143
  }
137
144
  });
@@ -6,7 +6,7 @@ import { NodeType } from "@tmagic/core";
6
6
  import { Fragment, computed, createBlock, createElementBlock, defineComponent, markRaw, normalizeStyle, onBeforeUnmount, onMounted, openBlock, renderList, unref, useTemplateRef } from "vue";
7
7
  import { Back, Delete, FullScreen, Grid, Memo, Right, ScaleToOriginal, ZoomIn, ZoomOut } from "@element-plus/icons-vue";
8
8
  //#region packages/editor/src/layouts/NavMenu.vue?vue&type=script&setup=true&lang.ts
9
- var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
+ var NavMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
10
  name: "MEditorNavMenu",
11
11
  __name: "NavMenu",
12
12
  props: {
@@ -45,7 +45,7 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
45
45
  disabled: () => editorService.get("node")?.type === NodeType.PAGE,
46
46
  handler: () => {
47
47
  const node = editorService.get("node");
48
- node && editorService.remove(node);
48
+ node && editorService.remove(node, { historySource: "toolbar" });
49
49
  }
50
50
  });
51
51
  break;
@@ -55,7 +55,7 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
55
55
  className: "undo",
56
56
  icon: markRaw(Back),
57
57
  tooltip: `后退(${ctrl}+z)`,
58
- disabled: () => !historyService.state.canUndo,
58
+ disabled: () => !historyService.canUndo("page", editorService.get("page")?.id),
59
59
  handler: () => editorService.undo()
60
60
  });
61
61
  break;
@@ -65,7 +65,7 @@ var NavMenu_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
65
65
  className: "redo",
66
66
  icon: markRaw(Right),
67
67
  tooltip: `前进(${ctrl}+Shift+z)`,
68
- disabled: () => !historyService.state.canRedo,
68
+ disabled: () => !historyService.canRedo("page", editorService.get("page")?.id),
69
69
  handler: () => editorService.redo()
70
70
  });
71
71
  break;
@@ -4,7 +4,7 @@ import { Fragment, computed, createBlock, createElementBlock, createElementVNode
4
4
  import { ArrowDown, ArrowUp } from "@element-plus/icons-vue";
5
5
  //#region packages/editor/src/layouts/NavMenuColumn.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = { class: "m-editor-nav-menu-overflow-list" };
7
- var NavMenuColumn_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7
+ var NavMenuColumn_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
8
  name: "MEditorNavMenuColumn",
9
9
  __name: "NavMenuColumn",
10
10
  props: {
@@ -1,22 +1,19 @@
1
+ import { isHistoryGroupExpanded, toRowGroup } from "./composables.js";
1
2
  import GroupRow_default from "./GroupRow.js";
2
3
  import InitialRow_default from "./InitialRow.js";
3
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, renderList, toDisplayString } from "vue";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, renderList, toDisplayString, unref } from "vue";
4
5
  //#region packages/editor/src/layouts/history-list/Bucket.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = { class: "m-editor-history-list-bucket" };
6
7
  var _hoisted_2 = { class: "m-editor-history-list-bucket-title" };
7
8
  var _hoisted_3 = { class: "m-editor-history-list-bucket-count" };
8
9
  var _hoisted_4 = { class: "m-editor-history-list-ul" };
9
- var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ var Bucket_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
11
  name: "MEditorHistoryListBucket",
11
12
  __name: "Bucket",
12
13
  props: {
13
- title: {},
14
+ config: {},
14
15
  bucketId: {},
15
- prefix: {},
16
16
  groups: {},
17
- describeGroup: { type: Function },
18
- describeStep: { type: Function },
19
- isStepDiffable: { type: Function },
20
17
  expanded: {}
21
18
  },
22
19
  emits: [
@@ -28,54 +25,44 @@ var Bucket_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
28
25
  ],
29
26
  setup(__props) {
30
27
  const props = __props;
28
+ /**
29
+ * 子项 / 折叠状态 key:`${prefix}-${bucketId}-${组内首步 index}`。
30
+ * 以稳定的 step 索引(而非展示位置)标识分组,历史数据更新后已展开的分组状态仍能正确保持。
31
+ */
32
+ const rowKey = (group) => `${props.config.prefix}-${props.bucketId}-${group.steps[0]?.index}`;
33
+ /** 把原始分组派生为 GroupRow 直接消费的视图模型。 */
34
+ const toRow = (group) => toRowGroup(group, rowKey(group), props.config);
31
35
  /** 该 bucket 是否处于初始状态(栈 cursor=0),等价于全部 group 都未 applied。 */
32
36
  const isInitial = computed(() => props.groups.length > 0 && props.groups.every((g) => !g.applied));
33
37
  return (_ctx, _cache) => {
34
38
  return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
35
- createElementVNode("span", null, toDisplayString(__props.title), 1),
39
+ createElementVNode("span", null, toDisplayString(__props.config.title), 1),
36
40
  createElementVNode("code", null, toDisplayString(String(__props.bucketId)), 1),
37
41
  createElementVNode("span", _hoisted_3, toDisplayString(__props.groups.length) + " 组", 1)
38
42
  ]), createElementVNode("ul", _hoisted_4, [
39
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.groups, (group, gIdx) => {
43
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.groups, (group) => {
40
44
  return openBlock(), createBlock(GroupRow_default, {
41
- key: `${__props.prefix}-${__props.bucketId}-${gIdx}`,
42
- "group-key": `${__props.prefix}-${__props.bucketId}-${gIdx}`,
43
- applied: group.applied,
44
- merged: group.steps.length > 1,
45
- "op-type": group.opType,
46
- desc: __props.describeGroup(group),
47
- "step-count": group.steps.length,
48
- "sub-steps": group.steps.map((s) => ({
49
- index: s.index,
50
- applied: s.applied,
51
- isCurrent: s.isCurrent,
52
- desc: __props.describeStep(s.step),
53
- diffable: __props.isStepDiffable ? __props.isStepDiffable(s.step) : false,
54
- revertable: s.applied
55
- })),
56
- "is-current": group.isCurrent,
57
- expanded: !!__props.expanded[`${__props.prefix}-${__props.bucketId}-${gIdx}`],
45
+ key: rowKey(group),
46
+ group: toRow(group),
47
+ expanded: unref(isHistoryGroupExpanded)(__props.expanded, rowKey(group)),
48
+ "goto-enabled": __props.config.gotoEnabled,
58
49
  onToggle: _cache[0] || (_cache[0] = (key) => _ctx.$emit("toggle", key)),
59
50
  onGoto: _cache[1] || (_cache[1] = (index) => _ctx.$emit("goto", __props.bucketId, index)),
60
51
  onDiffStep: _cache[2] || (_cache[2] = (index) => _ctx.$emit("diff-step", __props.bucketId, index)),
61
52
  onRevertStep: _cache[3] || (_cache[3] = (index) => _ctx.$emit("revert-step", __props.bucketId, index))
62
53
  }, null, 8, [
63
- "group-key",
64
- "applied",
65
- "merged",
66
- "op-type",
67
- "desc",
68
- "step-count",
69
- "sub-steps",
70
- "is-current",
71
- "expanded"
54
+ "group",
55
+ "expanded",
56
+ "goto-enabled"
72
57
  ]);
73
58
  }), 128)),
74
- createCommentVNode("\n 初始状态项:永远位于该 bucket 列表底部(同样按倒序展示,最底部 = 最早状态)。\n 当 bucket 内所有 group 都未 applied 时即为当前位置。\n "),
75
- createVNode(InitialRow_default, {
59
+ createCommentVNode("\n 初始状态项:永远位于该 bucket 列表底部(同样按倒序展示,最底部 = 最早状态)。\n 当 bucket 内所有 group 都未 applied 时即为当前位置。\n config.showInitial=false 时不展示(用于没有\"撤销到初始状态\"语义的自定义历史,如业务模块历史)。\n "),
60
+ __props.config.showInitial !== false ? (openBlock(), createBlock(InitialRow_default, {
61
+ key: 0,
76
62
  "is-current": isInitial.value,
63
+ "goto-enabled": __props.config.gotoEnabled,
77
64
  onGotoInitial: _cache[4] || (_cache[4] = ($event) => _ctx.$emit("goto-initial", __props.bucketId))
78
- }, null, 8, ["is-current"])
65
+ }, null, 8, ["is-current", "goto-enabled"])) : createCommentVNode("v-if", true)
79
66
  ])]);
80
67
  };
81
68
  }
@@ -0,0 +1,5 @@
1
+ import BucketTab_vue_vue_type_script_setup_true_lang_default from "./BucketTab.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/editor/src/layouts/history-list/BucketTab.vue
3
+ var BucketTab_default = BucketTab_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { BucketTab_default as default };
@@ -0,0 +1,62 @@
1
+ import Bucket_default from "./Bucket.js";
2
+ import { TMagicScrollbar } from "@tmagic/design";
3
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, renderList, unref, withCtx } from "vue";
4
+ //#region packages/editor/src/layouts/history-list/BucketTab.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = {
6
+ key: 0,
7
+ class: "m-editor-history-list-empty"
8
+ };
9
+ var _hoisted_2 = {
10
+ key: 0,
11
+ class: "m-editor-history-list-toolbar"
12
+ };
13
+ var _hoisted_3 = ["title"];
14
+ var BucketTab_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
15
+ name: "MEditorHistoryListBucketTab",
16
+ __name: "BucketTab",
17
+ props: {
18
+ config: {},
19
+ buckets: {},
20
+ expanded: {}
21
+ },
22
+ emits: [
23
+ "toggle",
24
+ "goto",
25
+ "goto-initial",
26
+ "diff-step",
27
+ "revert-step",
28
+ "clear"
29
+ ],
30
+ setup(__props) {
31
+ return (_ctx, _cache) => {
32
+ return !__props.buckets.length ? (openBlock(), createElementBlock("div", _hoisted_1, "暂无操作记录")) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [__props.config.showClear !== false ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("span", {
33
+ class: "m-editor-history-list-clear",
34
+ title: `清空${__props.config.title}的历史记录`,
35
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("clear"))
36
+ }, "清空", 8, _hoisted_3)])) : createCommentVNode("v-if", true), createVNode(unref(TMagicScrollbar), { "max-height": "360px" }, {
37
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.buckets, (bucket) => {
38
+ return openBlock(), createBlock(Bucket_default, {
39
+ key: `${__props.config.prefix}-${bucket.id}`,
40
+ config: __props.config,
41
+ "bucket-id": bucket.id,
42
+ groups: bucket.groups,
43
+ expanded: __props.expanded,
44
+ onToggle: _cache[1] || (_cache[1] = (key) => _ctx.$emit("toggle", key)),
45
+ onGoto: _cache[2] || (_cache[2] = (id, index) => _ctx.$emit("goto", id, index)),
46
+ onGotoInitial: _cache[3] || (_cache[3] = (id) => _ctx.$emit("goto-initial", id)),
47
+ onDiffStep: _cache[4] || (_cache[4] = (id, index) => _ctx.$emit("diff-step", id, index)),
48
+ onRevertStep: _cache[5] || (_cache[5] = (id, index) => _ctx.$emit("revert-step", id, index))
49
+ }, null, 8, [
50
+ "config",
51
+ "bucket-id",
52
+ "groups",
53
+ "expanded"
54
+ ]);
55
+ }), 128))]),
56
+ _: 1
57
+ })], 64));
58
+ };
59
+ }
60
+ });
61
+ //#endregion
62
+ export { BucketTab_vue_vue_type_script_setup_true_lang_default as default };