@epxing/designer 0.0.0-stage → 5.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/API.md +159 -0
  2. package/README.md +44 -2
  3. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  4. package/dist/_virtual/preload-helper.js +88 -0
  5. package/dist/assets/default-icon-2193FMjv.png +0 -0
  6. package/dist/assets/technology_bg-oWIS2awO.jpg +0 -0
  7. package/dist/assets/theme_black-Ctdygcr4.png +0 -0
  8. package/dist/assets/theme_technology-DJk-2e7g.png +0 -0
  9. package/dist/assets/theme_white-uMQ6JYml.png +0 -0
  10. package/dist/src/assets/images/dashboard/theme_black.png.js +4 -0
  11. package/dist/src/assets/images/dashboard/theme_technology.png.js +4 -0
  12. package/dist/src/assets/images/dashboard/theme_white.png.js +4 -0
  13. package/dist/src/assets/images/default-icon.png.js +4 -0
  14. package/dist/src/index.js +52 -0
  15. package/dist/src/page-designer/PageConfigPreview.js +101 -0
  16. package/dist/src/page-designer/PageDesigner.js +843 -0
  17. package/dist/src/page-designer/designer.js +1119 -0
  18. package/dist/src/page-designer/index.js +51 -0
  19. package/dist/src/page-designer/mixins/dragSourceMixin.js +94 -0
  20. package/dist/src/page-designer/page-variable-panel/JsonEditor.js +105 -0
  21. package/dist/src/page-designer/page-variable-panel/PageVariablePanel.js +938 -0
  22. package/dist/src/page-designer/page-variable-panel/index.js +6 -0
  23. package/dist/src/page-designer/page-variable-panel/jsonlint.js +229 -0
  24. package/dist/src/page-designer/previews/add-form/Preview.js +7 -0
  25. package/dist/src/page-designer/previews/add-form/Preview.vue.js +328 -0
  26. package/dist/src/page-designer/previews/add-form-item/Preview.js +193 -0
  27. package/dist/src/page-designer/previews/button/Preview.js +29 -0
  28. package/dist/src/page-designer/previews/card/Preview.js +86 -0
  29. package/dist/src/page-designer/previews/carousel/CarouselItemPreview.js +32 -0
  30. package/dist/src/page-designer/previews/carousel/Preview.js +60 -0
  31. package/dist/src/page-designer/previews/collapse/CollapseItemPreview.js +117 -0
  32. package/dist/src/page-designer/previews/collapse/Preview.js +34 -0
  33. package/dist/src/page-designer/previews/dropdown/Preview.js +67 -0
  34. package/dist/src/page-designer/previews/entity-list/Preview.js +521 -0
  35. package/dist/src/page-designer/previews/entity-sub-list/Preview.js +351 -0
  36. package/dist/src/page-designer/previews/entity-virtual-list/Preview.js +10 -0
  37. package/dist/src/page-designer/previews/form-field/preview/Checkbox.js +90 -0
  38. package/dist/src/page-designer/previews/form-field/preview/Date.js +76 -0
  39. package/dist/src/page-designer/previews/form-field/preview/Input.js +73 -0
  40. package/dist/src/page-designer/previews/form-field/preview/InputNumber.js +73 -0
  41. package/dist/src/page-designer/previews/form-field/preview/Object.js +76 -0
  42. package/dist/src/page-designer/previews/form-field/preview/Radio.js +145 -0
  43. package/dist/src/page-designer/previews/form-field/preview/Select.js +77 -0
  44. package/dist/src/page-designer/previews/form-field/preview/Textarea.js +77 -0
  45. package/dist/src/page-designer/previews/grid/Preview.js +138 -0
  46. package/dist/src/page-designer/previews/html/Preview.js +17 -0
  47. package/dist/src/page-designer/previews/icon/Preview.js +19 -0
  48. package/dist/src/page-designer/previews/image/Preview.js +35 -0
  49. package/dist/src/page-designer/previews/index.js +73 -0
  50. package/dist/src/page-designer/previews/layout/ColumnPreview.js +46 -0
  51. package/dist/src/page-designer/previews/layout/Preview.js +109 -0
  52. package/dist/src/page-designer/previews/num/Preview.js +131 -0
  53. package/dist/src/page-designer/previews/page-tabs/Preview.js +74 -0
  54. package/dist/src/page-designer/previews/step/Preview.js +206 -0
  55. package/dist/src/page-designer/previews/tabs/Preview.js +94 -0
  56. package/dist/src/page-designer/previews/tabs/tab-pane/Preview.js +32 -0
  57. package/dist/src/page-designer/previews/text/Preview.js +37 -0
  58. package/dist/src/page-designer/previews/text-editor/Preview.js +22 -0
  59. package/dist/src/page-designer/previews/video/Preview.js +9 -0
  60. package/dist/src/page-designer/setting-panel/Advance.js +280 -0
  61. package/dist/src/page-designer/setting-panel/CodeEditor.js +93 -0
  62. package/dist/src/page-designer/setting-panel/Property.js +164 -0
  63. package/dist/src/page-designer/setting-panel/Setting.js +295 -0
  64. package/dist/src/page-designer/setting-panel/Style.js +1590 -0
  65. package/dist/src/page-designer/setting-panel/css-editor/CssEditor.js +97 -0
  66. package/dist/src/page-designer/setting-panel/css-editor/css-hint.js +83 -0
  67. package/dist/src/page-designer/setting-panel/index.js +10 -0
  68. package/dist/src/page-designer/template-attribute-panel/TemplateAttributePanel.js +486 -0
  69. package/dist/src/page-designer/template-attribute-panel/index.js +4 -0
  70. package/dist/src/page-designer/template-library/Library.js +218 -0
  71. package/dist/src/page-designer/template-library/index.js +4 -0
  72. package/dist/src/page-designer/widget-library/Base.js +169 -0
  73. package/dist/src/page-designer/widget-library/Library.js +212 -0
  74. package/dist/src/page-designer/widget-library/index.js +6 -0
  75. package/dist/src/page-designer/widget-preview/Container.js +79 -0
  76. package/dist/src/page-designer/widget-preview/DragGhost.js +53 -0
  77. package/dist/src/page-designer/widget-preview/DropZoneOverlay.js +41 -0
  78. package/dist/src/page-designer/widget-preview/HoverOverlay.js +60 -0
  79. package/dist/src/page-designer/widget-preview/Mixin.js +259 -0
  80. package/dist/src/page-designer/widget-preview/Placeholder.js +27 -0
  81. package/dist/src/page-designer/widget-preview/Preview.js +276 -0
  82. package/dist/src/page-designer/widget-preview/PreviewItem.js +82 -0
  83. package/dist/src/page-designer/widget-preview/SelectedOverlay.js +331 -0
  84. package/dist/src/page-designer/widget-preview/Template.js +65 -0
  85. package/dist/src/page-designer/widget-preview/WidgetWrapper.js +169 -0
  86. package/dist/src/page-designer/widget-preview/directive.js +158 -0
  87. package/dist/src/page-designer/widget-preview/dropPosition.js +49 -0
  88. package/dist/src/page-designer/widget-preview/index.js +22 -0
  89. package/dist/src/page-designer/widget-preview/overlayPositionMixin.js +86 -0
  90. package/dist/src/page-designer/widget-preview/resolvePreviewName.js +31 -0
  91. package/dist/src/page-designer/widget-tree/Item.js +579 -0
  92. package/dist/src/page-designer/widget-tree/Tree.js +854 -0
  93. package/dist/src/page-designer/widget-tree/index.js +6 -0
  94. package/dist/src/visual/AddForm.js +171 -0
  95. package/dist/src/visual/AddFormItem.js +479 -0
  96. package/dist/src/visual/AppIndex.js +242 -0
  97. package/dist/src/visual/ApplyForm.js +134 -0
  98. package/dist/src/visual/AttributeList.js +343 -0
  99. package/dist/src/visual/BasePage.js +76 -0
  100. package/dist/src/visual/Button.js +4 -0
  101. package/dist/src/visual/Button.vue.js +89 -0
  102. package/dist/src/visual/CardNum.js +73 -0
  103. package/dist/src/visual/CategoryList.js +568 -0
  104. package/dist/src/visual/Chart.js +26 -0
  105. package/dist/src/visual/ChartNew.js +4 -0
  106. package/dist/src/visual/ChartNew.vue.js +54 -0
  107. package/dist/src/visual/CheckForm.js +109 -0
  108. package/dist/src/visual/ClientList.js +40 -0
  109. package/dist/src/visual/CodeManage.js +112 -0
  110. package/dist/src/visual/Component.js +5 -0
  111. package/dist/src/visual/Component.vue.js +1332 -0
  112. package/dist/src/visual/ComponentList.js +279 -0
  113. package/dist/src/visual/Config.js +7 -0
  114. package/dist/src/visual/Config.vue.js +862 -0
  115. package/dist/src/visual/ConfigItem.js +7 -0
  116. package/dist/src/visual/ConfigItem.vue.js +192 -0
  117. package/dist/src/visual/ConfigSelectItems.js +7 -0
  118. package/dist/src/visual/ConfigSelectItems.vue.js +260 -0
  119. package/dist/src/visual/CreatePage.js +388 -0
  120. package/dist/src/visual/DashboardDiv.js +57 -0
  121. package/dist/src/visual/DashboardTabs.js +8 -0
  122. package/dist/src/visual/DashboardTabs.vue.js +127 -0
  123. package/dist/src/visual/DashboardWidget.js +4 -0
  124. package/dist/src/visual/DashboardWidget.vue.js +62 -0
  125. package/dist/src/visual/DblogList.js +81 -0
  126. package/dist/src/visual/EntityAddPage.js +48 -0
  127. package/dist/src/visual/EntityApplyPage.js +53 -0
  128. package/dist/src/visual/EntityCardList.js +454 -0
  129. package/dist/src/visual/EntityCheckPage.js +65 -0
  130. package/dist/src/visual/EntityFindPage.js +44 -0
  131. package/dist/src/visual/EntityList.js +5 -0
  132. package/dist/src/visual/EntityList.vue.js +1221 -0
  133. package/dist/src/visual/EntityListPage.js +42 -0
  134. package/dist/src/visual/EntityNoSubmitSubList.js +266 -0
  135. package/dist/src/visual/EntityRightSubList.js +28 -0
  136. package/dist/src/visual/EntitySubAdd.js +9 -0
  137. package/dist/src/visual/EntitySubGridItem.js +65 -0
  138. package/dist/src/visual/EntitySubList.js +433 -0
  139. package/dist/src/visual/EntityTreeFindPage.js +31 -0
  140. package/dist/src/visual/EntityTreeManage.js +48 -0
  141. package/dist/src/visual/EntityTreePage.js +41 -0
  142. package/dist/src/visual/ExcelPreview.js +9 -0
  143. package/dist/src/visual/FormField.js +4 -0
  144. package/dist/src/visual/FormField.vue.js +121 -0
  145. package/dist/src/visual/HeaderNew.js +160 -0
  146. package/dist/src/visual/Html.js +7 -0
  147. package/dist/src/visual/Html.vue.js +109 -0
  148. package/dist/src/visual/Import.js +52 -0
  149. package/dist/src/visual/InterfaceSubList.js +20 -0
  150. package/dist/src/visual/ListFirst.js +703 -0
  151. package/dist/src/visual/MEntityAddPage.js +65 -0
  152. package/dist/src/visual/MEntityList.js +484 -0
  153. package/dist/src/visual/MEntityListPage.js +39 -0
  154. package/dist/src/visual/MEntitySubList.js +236 -0
  155. package/dist/src/visual/MetaList.js +22 -0
  156. package/dist/src/visual/ModuleIndexPage.js +66 -0
  157. package/dist/src/visual/ModuleList.js +46 -0
  158. package/dist/src/visual/NavAddForm.js +172 -0
  159. package/dist/src/visual/NavFormCatalogItem.js +43 -0
  160. package/dist/src/visual/NumItem.js +69 -0
  161. package/dist/src/visual/NumStatistic.js +5 -0
  162. package/dist/src/visual/NumStatistic.vue.js +81 -0
  163. package/dist/src/visual/OrgChart.js +106 -0
  164. package/dist/src/visual/PageCatalog.js +26 -0
  165. package/dist/src/visual/PageConfig.js +222 -0
  166. package/dist/src/visual/PageTabs.js +48 -0
  167. package/dist/src/visual/Progress.js +39 -0
  168. package/dist/src/visual/ProgressItem.js +43 -0
  169. package/dist/src/visual/SystemManager.js +76 -0
  170. package/dist/src/visual/Title.js +44 -0
  171. package/dist/src/visual/TodoList.js +13 -0
  172. package/dist/src/visual/UserFormItem.js +40 -0
  173. package/dist/src/visual/UserManage.js +34 -0
  174. package/dist/src/visual/chart/CircularPie.js +8 -0
  175. package/dist/src/visual/chart/Column.js +69 -0
  176. package/dist/src/visual/chart/HoriColumn.js +8 -0
  177. package/dist/src/visual/chart/Line.js +8 -0
  178. package/dist/src/visual/chart/Pie.js +8 -0
  179. package/dist/src/visual/config/Background.js +525 -0
  180. package/dist/src/visual/config/Chart.js +153 -0
  181. package/dist/src/visual/config/Checkbox.js +62 -0
  182. package/dist/src/visual/config/Color.js +40 -0
  183. package/dist/src/visual/config/DesignReport.js +23 -0
  184. package/dist/src/visual/config/Event.js +303 -0
  185. package/dist/src/visual/config/Field.js +519 -0
  186. package/dist/src/visual/config/Font.js +201 -0
  187. package/dist/src/visual/config/FormItem.js +22 -0
  188. package/dist/src/visual/config/Function.js +113 -0
  189. package/dist/src/visual/config/Html.js +110 -0
  190. package/dist/src/visual/config/Image.js +101 -0
  191. package/dist/src/visual/config/Input.js +176 -0
  192. package/dist/src/visual/config/Input.vue.js +479 -0
  193. package/dist/src/visual/config/LazyDialog.js +40 -0
  194. package/dist/src/visual/config/List.js +64 -0
  195. package/dist/src/visual/config/ListField.js +2079 -0
  196. package/dist/src/visual/config/MField.js +732 -0
  197. package/dist/src/visual/config/Number.js +36 -0
  198. package/dist/src/visual/config/Object.js +167 -0
  199. package/dist/src/visual/config/Operate.js +1108 -0
  200. package/dist/src/visual/config/OperateItem.js +1185 -0
  201. package/dist/src/visual/config/Options.js +7 -0
  202. package/dist/src/visual/config/Options.vue.js +278 -0
  203. package/dist/src/visual/config/OrderField.js +504 -0
  204. package/dist/src/visual/config/Page.js +75 -0
  205. package/dist/src/visual/config/Params.js +352 -0
  206. package/dist/src/visual/config/Radio.js +126 -0
  207. package/dist/src/visual/config/Row.js +103 -0
  208. package/dist/src/visual/config/Scope.js +349 -0
  209. package/dist/src/visual/config/Select.js +94 -0
  210. package/dist/src/visual/config/Switch.js +36 -0
  211. package/dist/src/visual/config/Textarea.js +174 -0
  212. package/dist/src/visual/config/Textarea.vue.js +507 -0
  213. package/dist/src/visual/config/Tree.js +137 -0
  214. package/dist/src/visual/config/remote-cache.js +29 -0
  215. package/dist/src/visual/config/show-condition.js +19 -0
  216. package/dist/src/visual/config/variable-sources.js +26 -0
  217. package/dist/src/visual/config/wait-ref.js +18 -0
  218. package/dist/src/visual/config-page/ComponentLibrary.js +169 -0
  219. package/dist/src/visual/config-page/ComponentLibraryDialog.js +249 -0
  220. package/dist/src/visual/config-page/ComponentList.js +8 -0
  221. package/dist/src/visual/config-page/ComponentList.vue.js +292 -0
  222. package/dist/src/visual/config-page/ComponentPreview.js +7 -0
  223. package/dist/src/visual/config-page/ComponentPreview.vue.js +151 -0
  224. package/dist/src/visual/config-page/ConfigOption.js +12 -0
  225. package/dist/src/visual/config-page/ConfigPanel.js +301 -0
  226. package/dist/src/visual/config-page/Dashboard.js +2159 -0
  227. package/dist/src/visual/config-page/DashboardDesign.js +605 -0
  228. package/dist/src/visual/config-page/DashboardGlobalConfig.js +5 -0
  229. package/dist/src/visual/config-page/DashboardGlobalConfig.vue.js +292 -0
  230. package/dist/src/visual/config-page/DashboardMobile.js +1114 -0
  231. package/dist/src/visual/config-page/DashboardSetting.js +85 -0
  232. package/dist/src/visual/config-page/PagePreview.js +7 -0
  233. package/dist/src/visual/config-page/PagePreview.vue.js +72 -0
  234. package/dist/src/visual/config-page/StyleConfig.js +978 -0
  235. package/dist/src/visual/config-page/VisualConfigPage.js +644 -0
  236. package/dist/src/visual/config-page/dashboard-theme-setting/Background.js +179 -0
  237. package/dist/src/visual/config-page/dashboard-theme-setting/Border.js +313 -0
  238. package/dist/src/visual/config-page/dashboard-theme-setting/Font.js +191 -0
  239. package/dist/src/visual/config-page/dashboard-theme-setting/Index.js +544 -0
  240. package/dist/src/visual/config-page/dashboard-theme-setting/Shadow.js +173 -0
  241. package/dist/src/visual/config-page/index.js +89 -0
  242. package/dist/src/visual/index.js +150 -0
  243. package/dist/src/visual/mixins/innerGridMixin.js +121 -0
  244. package/dist/src/visual/search/Filter.js +48 -0
  245. package/dist/src/visual/step/Index.js +7 -0
  246. package/dist/src/visual/step/Index.vue.js +485 -0
  247. package/dist/src/visual/step/Item.js +138 -0
  248. package/dist/src/visual/widgets/CardFormItemVisual.js +44 -0
  249. package/dist/src/visual/widgets/CarouselVisual.js +7 -0
  250. package/dist/src/visual/widgets/CarouselVisual.vue.js +303 -0
  251. package/dist/src/visual/widgets/CollapseVisual.js +7 -0
  252. package/dist/src/visual/widgets/CollapseVisual.vue.js +202 -0
  253. package/dist/src/visual/widgets/DropdownVisual.js +7 -0
  254. package/dist/src/visual/widgets/DropdownVisual.vue.js +955 -0
  255. package/dist/src/visual/widgets/LayoutConfig.js +7 -0
  256. package/dist/src/visual/widgets/LayoutConfig.vue.js +168 -0
  257. package/dist/src/visual/widgets/ListVisual.js +348 -0
  258. package/dist/src/visual/widgets/MEntityListFindVisual.js +75 -0
  259. package/dist/src/visual/widgets/ProcessFormItemVisual.js +4 -0
  260. package/dist/src/visual/widgets/ProcessFormItemVisual.vue.js +45 -0
  261. package/dist/src/visual/widgets/TabsConfig.js +7 -0
  262. package/dist/src/visual/widgets/TabsConfig.vue.js +343 -0
  263. package/dist/style.css +9907 -0
  264. package/package.json +103 -3
  265. package/src/index.js +27 -0
  266. package/src/page-designer/PageConfigPreview.vue +103 -0
  267. package/src/page-designer/PageDesigner.vue +1017 -0
  268. package/src/page-designer/designer.js +1299 -0
  269. package/src/page-designer/index.js +38 -0
  270. package/src/page-designer/mixins/dragSourceMixin.js +113 -0
  271. package/src/page-designer/page-variable-panel/JsonEditor.vue +109 -0
  272. package/src/page-designer/page-variable-panel/PageVariablePanel.vue +781 -0
  273. package/src/page-designer/page-variable-panel/index.js +6 -0
  274. package/src/page-designer/page-variable-panel/jsonlint.js +2 -0
  275. package/src/page-designer/previews/add-form/Preview.vue +331 -0
  276. package/src/page-designer/previews/add-form-item/Preview.vue +167 -0
  277. package/src/page-designer/previews/button/Preview.vue +27 -0
  278. package/src/page-designer/previews/card/Preview.vue +78 -0
  279. package/src/page-designer/previews/carousel/CarouselItemPreview.vue +32 -0
  280. package/src/page-designer/previews/carousel/Preview.vue +36 -0
  281. package/src/page-designer/previews/collapse/CollapseItemPreview.vue +136 -0
  282. package/src/page-designer/previews/collapse/Preview.vue +28 -0
  283. package/src/page-designer/previews/dropdown/Preview.vue +21 -0
  284. package/src/page-designer/previews/entity-list/Preview.vue +382 -0
  285. package/src/page-designer/previews/entity-sub-list/Preview.vue +283 -0
  286. package/src/page-designer/previews/entity-virtual-list/Preview.vue +14 -0
  287. package/src/page-designer/previews/form-field/preview/Checkbox.vue +57 -0
  288. package/src/page-designer/previews/form-field/preview/Date.vue +56 -0
  289. package/src/page-designer/previews/form-field/preview/Input.vue +53 -0
  290. package/src/page-designer/previews/form-field/preview/InputNumber.vue +53 -0
  291. package/src/page-designer/previews/form-field/preview/Object.vue +53 -0
  292. package/src/page-designer/previews/form-field/preview/Radio.vue +69 -0
  293. package/src/page-designer/previews/form-field/preview/Select.vue +55 -0
  294. package/src/page-designer/previews/form-field/preview/Textarea.vue +57 -0
  295. package/src/page-designer/previews/grid/Preview.vue +156 -0
  296. package/src/page-designer/previews/html/Preview.vue +11 -0
  297. package/src/page-designer/previews/icon/Preview.vue +12 -0
  298. package/src/page-designer/previews/image/Preview.vue +37 -0
  299. package/src/page-designer/previews/index.js +74 -0
  300. package/src/page-designer/previews/layout/ColumnPreview.vue +89 -0
  301. package/src/page-designer/previews/layout/Preview.vue +96 -0
  302. package/src/page-designer/previews/num/Preview.vue +100 -0
  303. package/src/page-designer/previews/page-tabs/Preview.vue +53 -0
  304. package/src/page-designer/previews/step/Preview.vue +190 -0
  305. package/src/page-designer/previews/tabs/Preview.vue +66 -0
  306. package/src/page-designer/previews/tabs/tab-pane/Preview.vue +32 -0
  307. package/src/page-designer/previews/text/Preview.vue +26 -0
  308. package/src/page-designer/previews/text-editor/Preview.vue +14 -0
  309. package/src/page-designer/previews/video/Preview.vue +9 -0
  310. package/src/page-designer/setting-panel/Advance.vue +175 -0
  311. package/src/page-designer/setting-panel/CodeEditor.vue +88 -0
  312. package/src/page-designer/setting-panel/Property.vue +163 -0
  313. package/src/page-designer/setting-panel/Setting.vue +271 -0
  314. package/src/page-designer/setting-panel/Style.vue +1096 -0
  315. package/src/page-designer/setting-panel/css-editor/CssEditor.vue +93 -0
  316. package/src/page-designer/setting-panel/css-editor/css-hint.js +58 -0
  317. package/src/page-designer/setting-panel/index.js +10 -0
  318. package/src/page-designer/template-attribute-panel/TemplateAttributePanel.vue +383 -0
  319. package/src/page-designer/template-attribute-panel/index.js +2 -0
  320. package/src/page-designer/template-library/Library.vue +153 -0
  321. package/src/page-designer/template-library/index.js +4 -0
  322. package/src/page-designer/widget-library/Base.vue +156 -0
  323. package/src/page-designer/widget-library/Library.vue +282 -0
  324. package/src/page-designer/widget-library/index.js +6 -0
  325. package/src/page-designer/widget-preview/Container.vue +89 -0
  326. package/src/page-designer/widget-preview/DragGhost.vue +83 -0
  327. package/src/page-designer/widget-preview/DropZoneOverlay.vue +51 -0
  328. package/src/page-designer/widget-preview/HoverOverlay.vue +85 -0
  329. package/src/page-designer/widget-preview/Mixin.js +285 -0
  330. package/src/page-designer/widget-preview/Placeholder.vue +22 -0
  331. package/src/page-designer/widget-preview/Preview.vue +322 -0
  332. package/src/page-designer/widget-preview/PreviewItem.vue +162 -0
  333. package/src/page-designer/widget-preview/SelectedOverlay.vue +340 -0
  334. package/src/page-designer/widget-preview/Template.vue +77 -0
  335. package/src/page-designer/widget-preview/WidgetWrapper.vue +197 -0
  336. package/src/page-designer/widget-preview/directive.js +258 -0
  337. package/src/page-designer/widget-preview/dropPosition.js +51 -0
  338. package/src/page-designer/widget-preview/index.js +23 -0
  339. package/src/page-designer/widget-preview/overlayPositionMixin.js +88 -0
  340. package/src/page-designer/widget-preview/resolvePreviewName.js +33 -0
  341. package/src/page-designer/widget-tree/Item.vue +719 -0
  342. package/src/page-designer/widget-tree/Tree.vue +995 -0
  343. package/src/page-designer/widget-tree/index.js +6 -0
  344. package/src/visual/AddForm.vue +172 -0
  345. package/src/visual/AddFormItem.vue +482 -0
  346. package/src/visual/AppIndex.vue +245 -0
  347. package/src/visual/ApplyForm.vue +140 -0
  348. package/src/visual/AttributeList.vue +344 -0
  349. package/src/visual/BasePage.vue +76 -0
  350. package/src/visual/Button.vue +80 -0
  351. package/src/visual/CardNum.vue +73 -0
  352. package/src/visual/CategoryList.vue +563 -0
  353. package/src/visual/Chart.vue +29 -0
  354. package/src/visual/ChartNew.vue +49 -0
  355. package/src/visual/CheckForm.vue +106 -0
  356. package/src/visual/ClientList.vue +42 -0
  357. package/src/visual/CodeManage.vue +116 -0
  358. package/src/visual/Component.vue +1342 -0
  359. package/src/visual/ComponentList.vue +280 -0
  360. package/src/visual/Config.vue +881 -0
  361. package/src/visual/ConfigItem.vue +218 -0
  362. package/src/visual/ConfigSelectItems.vue +445 -0
  363. package/src/visual/CreatePage.vue +389 -0
  364. package/src/visual/DashboardDiv.vue +197 -0
  365. package/src/visual/DashboardTabs.vue +118 -0
  366. package/src/visual/DashboardWidget.vue +55 -0
  367. package/src/visual/DblogList.vue +84 -0
  368. package/src/visual/EntityAddPage.vue +52 -0
  369. package/src/visual/EntityApplyPage.vue +57 -0
  370. package/src/visual/EntityCardList.vue +449 -0
  371. package/src/visual/EntityCheckPage.vue +69 -0
  372. package/src/visual/EntityFindPage.vue +55 -0
  373. package/src/visual/EntityList.vue +838 -0
  374. package/src/visual/EntityListPage.vue +97 -0
  375. package/src/visual/EntityNoSubmitSubList.vue +273 -0
  376. package/src/visual/EntityRightSubList.vue +32 -0
  377. package/src/visual/EntitySubAdd.vue +11 -0
  378. package/src/visual/EntitySubGridItem.vue +67 -0
  379. package/src/visual/EntitySubList.vue +440 -0
  380. package/src/visual/EntityTreeFindPage.vue +36 -0
  381. package/src/visual/EntityTreeManage.vue +50 -0
  382. package/src/visual/EntityTreePage.vue +45 -0
  383. package/src/visual/ExcelPreview.vue +11 -0
  384. package/src/visual/FormField.vue +113 -0
  385. package/src/visual/HeaderNew.vue +176 -0
  386. package/src/visual/Html.vue +104 -0
  387. package/src/visual/Import.vue +55 -0
  388. package/src/visual/InterfaceSubList.vue +23 -0
  389. package/src/visual/ListFirst.vue +614 -0
  390. package/src/visual/MEntityAddPage.vue +71 -0
  391. package/src/visual/MEntityList.vue +488 -0
  392. package/src/visual/MEntityListPage.vue +46 -0
  393. package/src/visual/MEntitySubList.vue +237 -0
  394. package/src/visual/MetaList.vue +24 -0
  395. package/src/visual/ModuleIndexPage.vue +70 -0
  396. package/src/visual/ModuleList.vue +46 -0
  397. package/src/visual/NavAddForm.vue +177 -0
  398. package/src/visual/NavFormCatalogItem.vue +47 -0
  399. package/src/visual/NumItem.vue +69 -0
  400. package/src/visual/NumStatistic.vue +242 -0
  401. package/src/visual/OrgChart.vue +113 -0
  402. package/src/visual/PageCatalog.vue +26 -0
  403. package/src/visual/PageConfig.vue +278 -0
  404. package/src/visual/PageTabs.vue +55 -0
  405. package/src/visual/Progress.vue +39 -0
  406. package/src/visual/ProgressItem.vue +43 -0
  407. package/src/visual/SystemManager.vue +80 -0
  408. package/src/visual/Title.vue +44 -0
  409. package/src/visual/TodoList.vue +18 -0
  410. package/src/visual/UserFormItem.vue +49 -0
  411. package/src/visual/UserManage.vue +36 -0
  412. package/src/visual/chart/CircularPie.vue +7 -0
  413. package/src/visual/chart/Column.vue +73 -0
  414. package/src/visual/chart/HoriColumn.vue +7 -0
  415. package/src/visual/chart/Line.vue +7 -0
  416. package/src/visual/chart/Pie.vue +7 -0
  417. package/src/visual/config/Background.vue +398 -0
  418. package/src/visual/config/Chart.vue +139 -0
  419. package/src/visual/config/Checkbox.vue +64 -0
  420. package/src/visual/config/Color.vue +40 -0
  421. package/src/visual/config/DesignReport.vue +20 -0
  422. package/src/visual/config/Event.vue +220 -0
  423. package/src/visual/config/Field.vue +597 -0
  424. package/src/visual/config/Font.vue +149 -0
  425. package/src/visual/config/FormItem.vue +25 -0
  426. package/src/visual/config/Function.vue +78 -0
  427. package/src/visual/config/Html.vue +98 -0
  428. package/src/visual/config/Image.vue +132 -0
  429. package/src/visual/config/Input.vue +712 -0
  430. package/src/visual/config/LazyDialog.vue +44 -0
  431. package/src/visual/config/List.vue +68 -0
  432. package/src/visual/config/ListField.vue +1714 -0
  433. package/src/visual/config/MField.vue +601 -0
  434. package/src/visual/config/Number.vue +41 -0
  435. package/src/visual/config/Object.vue +177 -0
  436. package/src/visual/config/Operate.vue +1083 -0
  437. package/src/visual/config/OperateItem.vue +917 -0
  438. package/src/visual/config/Options.vue +330 -0
  439. package/src/visual/config/OrderField.vue +587 -0
  440. package/src/visual/config/Page.vue +45 -0
  441. package/src/visual/config/Params.vue +228 -0
  442. package/src/visual/config/Radio.vue +93 -0
  443. package/src/visual/config/Row.vue +78 -0
  444. package/src/visual/config/Scope.vue +363 -0
  445. package/src/visual/config/Select.vue +93 -0
  446. package/src/visual/config/Switch.vue +36 -0
  447. package/src/visual/config/Textarea.vue +754 -0
  448. package/src/visual/config/Tree.vue +135 -0
  449. package/src/visual/config/remote-cache.js +35 -0
  450. package/src/visual/config/show-condition.js +21 -0
  451. package/src/visual/config/variable-sources.js +27 -0
  452. package/src/visual/config/wait-ref.js +17 -0
  453. package/src/visual/config-page/ComponentLibrary.vue +220 -0
  454. package/src/visual/config-page/ComponentLibraryDialog.vue +262 -0
  455. package/src/visual/config-page/ComponentList.vue +580 -0
  456. package/src/visual/config-page/ComponentPreview.vue +206 -0
  457. package/src/visual/config-page/ConfigOption.vue +16 -0
  458. package/src/visual/config-page/ConfigPanel.vue +301 -0
  459. package/src/visual/config-page/Dashboard.vue +2331 -0
  460. package/src/visual/config-page/DashboardDesign.vue +656 -0
  461. package/src/visual/config-page/DashboardGlobalConfig.vue +158 -0
  462. package/src/visual/config-page/DashboardMobile.vue +1118 -0
  463. package/src/visual/config-page/DashboardSetting.vue +47 -0
  464. package/src/visual/config-page/PagePreview.vue +105 -0
  465. package/src/visual/config-page/StyleConfig.vue +656 -0
  466. package/src/visual/config-page/VisualConfigPage.vue +746 -0
  467. package/src/visual/config-page/dashboard-theme-setting/Background.vue +98 -0
  468. package/src/visual/config-page/dashboard-theme-setting/Border.vue +185 -0
  469. package/src/visual/config-page/dashboard-theme-setting/Font.vue +101 -0
  470. package/src/visual/config-page/dashboard-theme-setting/Index.vue +471 -0
  471. package/src/visual/config-page/dashboard-theme-setting/Shadow.vue +102 -0
  472. package/src/visual/config-page/index.js +93 -0
  473. package/src/visual/index.js +23 -0
  474. package/src/visual/mixins/innerGridMixin.js +128 -0
  475. package/src/visual/search/Filter.vue +50 -0
  476. package/src/visual/step/Index.vue +361 -0
  477. package/src/visual/step/Item.vue +140 -0
  478. package/src/visual/widgets/CardFormItemVisual.vue +46 -0
  479. package/src/visual/widgets/CarouselVisual.vue +291 -0
  480. package/src/visual/widgets/CollapseVisual.vue +203 -0
  481. package/src/visual/widgets/DropdownVisual.vue +541 -0
  482. package/src/visual/widgets/LayoutConfig.vue +186 -0
  483. package/src/visual/widgets/ListVisual.vue +349 -0
  484. package/src/visual/widgets/MEntityListFindVisual.vue +77 -0
  485. package/src/visual/widgets/ProcessFormItemVisual.vue +58 -0
  486. package/src/visual/widgets/TabsConfig.vue +266 -0
  487. package/types/index.d.ts +22 -0
  488. package/types/page-designer.d.ts +3 -0
  489. package/types/visual-component.d.ts +1 -0
  490. package/types/visual-entity-list.d.ts +1 -0
  491. package/types/visual-entity-sub-list.d.ts +1 -0
@@ -0,0 +1,854 @@
1
+ import { getWidgetChildren } from "../designer.js";
2
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, Fragment, renderList, withModifiers, createCommentVNode, createVNode, withCtx, createTextVNode } from "vue";
3
+ /* empty css */
4
+ import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
5
+ const _sfc_main = {
6
+ name: "epx-page-designer-widget-tree",
7
+ components: {},
8
+ props: {
9
+ designer: {
10
+ type: Object
11
+ },
12
+ isFloating: {
13
+ type: Boolean,
14
+ default: false
15
+ }
16
+ },
17
+ data() {
18
+ return {
19
+ dragtInContext: null,
20
+ showModal: false,
21
+ showTemplateModal: false,
22
+ template: {
23
+ NAME: "",
24
+ LEVEL: "03"
25
+ },
26
+ // 拖拽状态(仅用于大纲树内部拖拽排序)
27
+ dragState: null,
28
+ // 占位符位置:{ parentId: string | null, index: number }
29
+ placeholder: null,
30
+ // hover 提示:{ widgetId: string|null, invalid: boolean }
31
+ dropHint: null,
32
+ // 组件库原生拖拽状态(仅用于显示虚线占位框并在 drop 时插入)
33
+ libraryDragActive: false,
34
+ // 上一次占位符位置,用于防抖动
35
+ lastPlaceholder: null,
36
+ // 节流定时器
37
+ hoverThrottleTimer: null
38
+ };
39
+ },
40
+ computed: {
41
+ widgetList: {
42
+ get() {
43
+ return this.designer.widgetList;
44
+ },
45
+ set(v) {
46
+ this.designer.widgetList = v;
47
+ }
48
+ }
49
+ },
50
+ watch: {
51
+ // 监听预览区域的拖拽状态,同步显示占位符
52
+ "designer.previewDragTarget": {
53
+ handler(target) {
54
+ if (target) {
55
+ if (target.widgetId) {
56
+ const widget = this.designer.getWidgetItemById(target.widgetId);
57
+ if (widget) {
58
+ this.placeholder = {
59
+ parentId: target.widgetId,
60
+ index: typeof target.index === "number" ? target.index : 0
61
+ };
62
+ this.libraryDragActive = true;
63
+ this.$nextTick(() => {
64
+ this.scrollToWidget(target.widgetId);
65
+ });
66
+ }
67
+ } else if (target.position === "root") {
68
+ this.placeholder = {
69
+ parentId: null,
70
+ index: typeof target.index === "number" ? target.index : 0
71
+ };
72
+ this.libraryDragActive = true;
73
+ this.$nextTick(() => {
74
+ this.scrollToRootPlaceholder(target.index);
75
+ });
76
+ }
77
+ } else {
78
+ this.placeholder = null;
79
+ }
80
+ }
81
+ }
82
+ },
83
+ methods: {
84
+ onPlaceholderDragOver(e) {
85
+ e.preventDefault();
86
+ e.stopPropagation();
87
+ if (this.isDraggingFromLibrary(e)) {
88
+ const isDraggingWidget = this.designer.dragState.dragSource === "preview";
89
+ e.dataTransfer.dropEffect = isDraggingWidget ? "move" : "copy";
90
+ }
91
+ },
92
+ onPlaceholderDragEnter(e) {
93
+ e.stopPropagation();
94
+ },
95
+ isDraggingFromLibrary(e) {
96
+ if (!e || !e.dataTransfer || !e.dataTransfer.types) return false;
97
+ return e.dataTransfer.types.includes("text/plain");
98
+ },
99
+ parseLibraryDragPayload(e) {
100
+ const DRAG_PAYLOAD_PREFIX = "page-designer-widget:";
101
+ const TEMPLATE_PAYLOAD_PREFIX = "page-designer-template:";
102
+ if (!e || !e.dataTransfer) return null;
103
+ try {
104
+ const raw = e.dataTransfer.getData("text/plain") || "";
105
+ try {
106
+ const data = JSON.parse(raw);
107
+ if (data && data.type === "widget-reorder") {
108
+ return { isWidgetReorder: true, ...data };
109
+ }
110
+ } catch (_) {
111
+ }
112
+ if (raw.startsWith(TEMPLATE_PAYLOAD_PREFIX)) {
113
+ const templateData = JSON.parse(raw.slice(TEMPLATE_PAYLOAD_PREFIX.length));
114
+ return { isTemplate: true, ...templateData };
115
+ }
116
+ if (raw.startsWith(DRAG_PAYLOAD_PREFIX)) {
117
+ return JSON.parse(raw.slice(DRAG_PAYLOAD_PREFIX.length));
118
+ }
119
+ return null;
120
+ } catch (err) {
121
+ return null;
122
+ }
123
+ },
124
+ resetLibraryDragState() {
125
+ if (this.dragState) return;
126
+ this.libraryDragActive = false;
127
+ this.placeholder = null;
128
+ this.dropHint = null;
129
+ this.lastPlaceholder = null;
130
+ if (this.hoverThrottleTimer) {
131
+ clearTimeout(this.hoverThrottleTimer);
132
+ this.hoverThrottleTimer = null;
133
+ }
134
+ },
135
+ notifyDragEnd() {
136
+ if (this.designer && this.designer.vueInstance) {
137
+ this.designer.emitEvent("drag-end");
138
+ }
139
+ },
140
+ isIdInSubtree(rootWidget, id) {
141
+ if (!rootWidget || !id) return false;
142
+ if (rootWidget.id === id) return true;
143
+ const items = rootWidget.items || [];
144
+ for (const child of items) {
145
+ if (this.isIdInSubtree(child, id)) return true;
146
+ }
147
+ return false;
148
+ },
149
+ /**
150
+ * 判断根级是否在某个 index 位置显示占位虚线框
151
+ */
152
+ showRootPlaceholderAt(index) {
153
+ if (!this.placeholder || this.placeholder.parentId !== null) return false;
154
+ return this.placeholder.index === index;
155
+ },
156
+ /**
157
+ * 根级计算插入位置(组件库拖拽 hover 在树空白处时)
158
+ */
159
+ getRootInsertIndex(e) {
160
+ const listEl = this.$refs.rootList;
161
+ if (!listEl) return 0;
162
+ const y = e.clientY;
163
+ const children = [...listEl.children].filter((el) => el && el.dataset && el.dataset.treeWidgetId);
164
+ if (children.length === 0) return 0;
165
+ for (let i = 0; i < children.length; i++) {
166
+ const r = children[i].getBoundingClientRect();
167
+ if (r.top + r.height / 2 > y) return i;
168
+ }
169
+ return children.length;
170
+ },
171
+ onTreeDragEnter(e) {
172
+ if (!this.isDraggingFromLibrary(e)) return;
173
+ this.libraryDragActive = true;
174
+ },
175
+ onTreeDragOver(e) {
176
+ if (!this.isDraggingFromLibrary(e)) return;
177
+ e.preventDefault();
178
+ if (this.designer && this.designer.updateDragGhostPosition) {
179
+ this.designer.updateDragGhostPosition(e.clientX, e.clientY);
180
+ }
181
+ const isDraggingWidget = this.designer.dragState.dragSource === "preview";
182
+ e.dataTransfer.dropEffect = isDraggingWidget ? "move" : "copy";
183
+ this.libraryDragActive = true;
184
+ this.dropHint = null;
185
+ this.placeholder = {
186
+ parentId: null,
187
+ index: this.getRootInsertIndex(e)
188
+ };
189
+ },
190
+ onTreeDragLeave(e) {
191
+ if (!this.isDraggingFromLibrary(e)) return;
192
+ if (this.$el && !this.$el.contains(e.relatedTarget)) {
193
+ this.resetLibraryDragState();
194
+ }
195
+ },
196
+ onTreeDrop(e) {
197
+ if (!this.isDraggingFromLibrary(e)) return;
198
+ e.preventDefault();
199
+ const payload = this.parseLibraryDragPayload(e);
200
+ if (!payload) {
201
+ this.resetLibraryDragState();
202
+ return;
203
+ }
204
+ if (payload.isWidgetReorder) {
205
+ this.handleWidgetReorderToTree(payload);
206
+ this.resetLibraryDragState();
207
+ return;
208
+ }
209
+ if (payload.isTemplate) {
210
+ this.insertTemplateByPlaceholder(payload);
211
+ } else if (payload.code) {
212
+ this.insertLibraryWidgetByPlaceholder(payload);
213
+ }
214
+ this.resetLibraryDragState();
215
+ },
216
+ /**
217
+ * TreeItem 发起拖拽开始
218
+ */
219
+ handleItemDragStart({ widget, parentWidget }) {
220
+ if (!widget) return;
221
+ const parentList = parentWidget ? parentWidget.items || [] : this.widgetList;
222
+ const sourceIndex = parentList.findIndex((item) => item.id === widget.id);
223
+ if (sourceIndex === -1) return;
224
+ this.dragState = {
225
+ widget,
226
+ parentWidget: parentWidget || null,
227
+ sourceIndex,
228
+ invalid: false,
229
+ // 标记本次拖拽过程中是否真正发生过“移动/hover 到目标位置”
230
+ hasMoved: false
231
+ };
232
+ this.placeholder = {
233
+ parentId: parentWidget ? parentWidget.id : null,
234
+ index: sourceIndex + 1
235
+ };
236
+ this.dropHint = null;
237
+ document.addEventListener("mouseup", this.handleDocumentMouseUp);
238
+ },
239
+ /**
240
+ * TreeItem 上鼠标移动,用于更新占位位置
241
+ * - 如果目标是容器,则占位在该容器的第一个子元素位置
242
+ * - 如果是普通组件,根据鼠标在上半部分 / 下半部分,决定占位在上面还是下面
243
+ */
244
+ handleItemHoverForDrop({ widget, parentWidget, index, isContainer, position }) {
245
+ if (!this.dragState || !widget) return;
246
+ if (this.dragState.widget && this.dragState.widget.id === widget.id) return;
247
+ const invalid = this.isIdInSubtree(this.dragState.widget, widget.id);
248
+ this.dragState.invalid = !!invalid;
249
+ this.dropHint = { widgetId: widget.id, invalid: !!invalid };
250
+ if (invalid) return;
251
+ this.dragState.hasMoved = true;
252
+ if (isContainer && position === "inside") {
253
+ this.placeholder = {
254
+ parentId: widget.id,
255
+ index: 0
256
+ };
257
+ return;
258
+ }
259
+ const baseIndex = typeof index === "number" ? index : 0;
260
+ const offset = position === "before" ? 0 : 1;
261
+ this.placeholder = {
262
+ parentId: parentWidget ? parentWidget.id : null,
263
+ index: baseIndex + offset
264
+ };
265
+ },
266
+ /**
267
+ * 文档级 mouseup:完成一次拖拽排序
268
+ * 如果在大纲树外部松手,则视为取消拖拽,不做任何排序变更
269
+ */
270
+ handleDocumentMouseUp(e) {
271
+ if (e && e.target && e.target.closest && !e.target.closest(".epx-page-designer-widget-tree")) {
272
+ this.resetDragState();
273
+ return;
274
+ }
275
+ if (this.dragState && !this.dragState.hasMoved) {
276
+ this.resetDragState();
277
+ return;
278
+ }
279
+ if (!this.dragState || !this.placeholder || this.dragState.invalid) {
280
+ this.resetDragState();
281
+ return;
282
+ }
283
+ const { widget, parentWidget, sourceIndex } = this.dragState;
284
+ const sourceList = parentWidget ? parentWidget.items || [] : this.widgetList;
285
+ if (!sourceList || sourceIndex < 0 || sourceIndex >= sourceList.length) {
286
+ this.resetDragState();
287
+ return;
288
+ }
289
+ let targetParent = null;
290
+ if (this.placeholder.parentId) {
291
+ targetParent = this.designer.getWidgetItemById ? this.designer.getWidgetItemById(this.placeholder.parentId) : null;
292
+ }
293
+ if (targetParent && !targetParent.items) {
294
+ this.designer.updateWidget(targetParent.id, { items: [] });
295
+ }
296
+ const targetList = targetParent ? targetParent.items : this.widgetList;
297
+ let targetIndex = this.placeholder.index;
298
+ const sameList = targetList === sourceList;
299
+ sourceList.splice(sourceIndex, 1);
300
+ if (sameList && targetIndex > sourceIndex) {
301
+ targetIndex = targetIndex - 1;
302
+ }
303
+ if (targetIndex < 0) targetIndex = 0;
304
+ if (targetIndex > targetList.length) targetIndex = targetList.length;
305
+ targetList.splice(targetIndex, 0, widget);
306
+ this.designer.setSelected && this.designer.setSelected(widget);
307
+ this.designer.emitHistoryChange && this.designer.emitHistoryChange();
308
+ this.resetDragState();
309
+ },
310
+ /**
311
+ * TreeItem 内部触发的拖拽结束(在组件 header 区域松手)
312
+ */
313
+ handleItemDragEnd(payload) {
314
+ this.handleDocumentMouseUp(payload && payload.event);
315
+ },
316
+ resetDragState() {
317
+ document.removeEventListener("mouseup", this.handleDocumentMouseUp);
318
+ this.dragState = null;
319
+ this.placeholder = null;
320
+ this.dropHint = null;
321
+ },
322
+ handleLibraryHoverForDrop(ctx) {
323
+ if (!ctx || !ctx.event || !this.isDraggingFromLibrary(ctx.event)) return;
324
+ if (this.hoverThrottleTimer) return;
325
+ this.hoverThrottleTimer = setTimeout(() => {
326
+ this.hoverThrottleTimer = null;
327
+ }, 50);
328
+ this.libraryDragActive = true;
329
+ this.dropHint = { widgetId: ctx.widget && ctx.widget.id, invalid: false };
330
+ let newPlaceholder;
331
+ if (ctx.isContainer && ctx.position === "inside") {
332
+ newPlaceholder = { parentId: ctx.widget.id, index: 0 };
333
+ } else {
334
+ const baseIndex = typeof ctx.index === "number" ? ctx.index : 0;
335
+ const offset = ctx.position === "before" ? 0 : 1;
336
+ newPlaceholder = {
337
+ parentId: ctx.parentWidget ? ctx.parentWidget.id : null,
338
+ index: baseIndex + offset
339
+ };
340
+ }
341
+ if (!this.lastPlaceholder || this.lastPlaceholder.parentId !== newPlaceholder.parentId || this.lastPlaceholder.index !== newPlaceholder.index) {
342
+ this.placeholder = newPlaceholder;
343
+ this.lastPlaceholder = { ...newPlaceholder };
344
+ }
345
+ },
346
+ handleLibraryDrop(ctx) {
347
+ if (!ctx || !ctx.event || !this.isDraggingFromLibrary(ctx.event)) return;
348
+ ctx.event.preventDefault();
349
+ const payload = this.parseLibraryDragPayload(ctx.event);
350
+ if (!payload) {
351
+ this.resetLibraryDragState();
352
+ return;
353
+ }
354
+ if (!this.placeholder) {
355
+ if (ctx.widget && ctx.isContainer) {
356
+ const items = ctx.widget.items || [];
357
+ this.placeholder = { parentId: ctx.widget.id, index: items.length };
358
+ } else {
359
+ const baseIndex = typeof ctx.index === "number" ? ctx.index : (this.widgetList || []).length;
360
+ this.placeholder = { parentId: ctx.parentWidget ? ctx.parentWidget.id : null, index: baseIndex + 1 };
361
+ }
362
+ }
363
+ if (payload.isWidgetReorder) {
364
+ this.handleWidgetReorderToTree(payload);
365
+ this.resetLibraryDragState();
366
+ return;
367
+ }
368
+ if (payload.isTemplate) {
369
+ this.insertTemplateByPlaceholder(payload);
370
+ } else if (payload.code) {
371
+ this.insertLibraryWidgetByPlaceholder(payload);
372
+ }
373
+ this.resetLibraryDragState();
374
+ },
375
+ insertLibraryWidgetByPlaceholder(payload) {
376
+ const widgetInfo = this.designer.getWidgetByType(payload.code) || {};
377
+ const widget = {
378
+ id: this.designer.genId(payload.code),
379
+ contentType: payload.code,
380
+ title: payload.title || widgetInfo.TITLE
381
+ };
382
+ if (payload.custom) widget.type = "custom";
383
+ if (widgetInfo.CODE === "chart") {
384
+ this.designer.updateWidgetConfig(widget.id, { metaId: this.designer.page.metaId });
385
+ }
386
+ let targetParent = null;
387
+ if (this.placeholder && this.placeholder.parentId) {
388
+ targetParent = this.designer.getWidgetItemById ? this.designer.getWidgetItemById(this.placeholder.parentId) : null;
389
+ if (targetParent) {
390
+ const parentInfo = this.designer.getWidgetByType(targetParent.contentType, targetParent.type) || {};
391
+ if (parentInfo.CONTAINER !== "1") targetParent = null;
392
+ }
393
+ }
394
+ if (targetParent && !targetParent.items) {
395
+ this.designer.updateWidget(targetParent.id, { items: [] });
396
+ }
397
+ const targetList = targetParent ? targetParent.items : this.widgetList;
398
+ let index = this.placeholder ? this.placeholder.index : targetList.length;
399
+ if (index < 0) index = 0;
400
+ if (index > targetList.length) index = targetList.length;
401
+ targetList.splice(index, 0, widget);
402
+ this.designer.setSelected && this.designer.setSelected(widget);
403
+ this.designer.emitHistoryChange && this.designer.emitHistoryChange();
404
+ },
405
+ insertTemplateByPlaceholder(payload) {
406
+ const { items, itemConfigs, templateJs } = payload;
407
+ if (!items || !items.length) return;
408
+ let targetParent = null;
409
+ if (this.placeholder && this.placeholder.parentId) {
410
+ targetParent = this.designer.getWidgetItemById ? this.designer.getWidgetItemById(this.placeholder.parentId) : null;
411
+ if (targetParent) {
412
+ const parentInfo = this.designer.getWidgetByType(targetParent.contentType, targetParent.type) || {};
413
+ if (parentInfo.CONTAINER !== "1") targetParent = null;
414
+ }
415
+ }
416
+ if (targetParent && !targetParent.items) {
417
+ this.designer.updateWidget(targetParent.id, { items: [] });
418
+ }
419
+ const targetList = targetParent ? targetParent.items : this.widgetList;
420
+ let index = this.placeholder ? this.placeholder.index : targetList.length;
421
+ if (index < 0) index = 0;
422
+ if (index > targetList.length) index = targetList.length;
423
+ targetList.splice(index, 0, ...items);
424
+ this.designer.mergeWidgetConfig(itemConfigs);
425
+ if (templateJs) {
426
+ let { JS = "" } = this.designer.pageConfig;
427
+ const result = JS.match(/export\sfunction\s(\w+)/g);
428
+ const events = [];
429
+ if (result) {
430
+ result.forEach((item) => {
431
+ events.push(item.replace(/export\sfunction\s/, ""));
432
+ });
433
+ }
434
+ const templateJsResult = templateJs.split(/export\s+function\s+/);
435
+ templateJsResult.forEach((item) => {
436
+ const funtionStr = item.replace(/\/\*(\n|.)+?\*\/[\n\s]+$/, "");
437
+ if (funtionStr.replace(/[\n\s]+/g, "").length > 0) {
438
+ const funtionName = funtionStr.split(/\s+\(/)[0];
439
+ if (![...new Set(events)].includes(funtionName)) {
440
+ JS += "export function " + funtionStr.replace(/^\w+/, funtionName);
441
+ }
442
+ }
443
+ });
444
+ this.designer.updatePageConfig({ JS });
445
+ }
446
+ this.designer.setSelected && this.designer.setSelected(items[0]);
447
+ this.designer.emitHistoryChange && this.designer.emitHistoryChange();
448
+ },
449
+ openAddDialog(v) {
450
+ this.showModal = true;
451
+ this.addToParentWidget = v;
452
+ },
453
+ addComponent(v, type) {
454
+ if (type === "template") {
455
+ this.addTemplate(v);
456
+ } else {
457
+ this.designer.addWidgetByInfo(v, this.addToParentWidget);
458
+ }
459
+ this.showModal = false;
460
+ },
461
+ addTemplate(template) {
462
+ const content = template.CONTENT;
463
+ if (content) {
464
+ const config = JSON.parse(content);
465
+ const { items, itemConfigs, JS: templateJs } = config;
466
+ const formatConfig = (arr) => {
467
+ arr.forEach((compItem) => {
468
+ const oldId = compItem.id;
469
+ const newId = compItem.contentType + "_" + this.$util.genId();
470
+ if (itemConfigs[oldId]) {
471
+ itemConfigs[newId] = itemConfigs[oldId];
472
+ delete itemConfigs[oldId];
473
+ }
474
+ compItem.id = newId;
475
+ const children = getWidgetChildren(compItem);
476
+ if (children.length > 0) {
477
+ formatConfig(children);
478
+ }
479
+ });
480
+ };
481
+ formatConfig(items);
482
+ this.designer.addWidgets(items, this.addToParentWidget);
483
+ this.designer.mergeWidgetConfig(itemConfigs);
484
+ if (templateJs) {
485
+ let { JS = "" } = this.designer.pageConfig;
486
+ const result = JS.match(/export\sfunction\s(\w+)/g);
487
+ const events = [];
488
+ if (result) {
489
+ result.forEach((item) => {
490
+ events.push(item.replace(/export\sfunction\s/, ""));
491
+ });
492
+ }
493
+ const templateJsResult = templateJs.split(/export\s+function\s+/);
494
+ templateJsResult.forEach((item) => {
495
+ const funtionStr = item.replace(/\/\*(\n|.)+?\*\/[\n\s]+$/, "");
496
+ if (funtionStr.replace(/[\n\s]+/g, "").length > 0) {
497
+ const funtionName = funtionStr.split(/\s+\(/)[0];
498
+ if (![...new Set(events)].includes(funtionName)) {
499
+ JS += "export function " + funtionStr.replace(/^\w+/, funtionName);
500
+ }
501
+ }
502
+ });
503
+ this.designer.updatePageConfig({ JS });
504
+ }
505
+ }
506
+ },
507
+ openTemplateDialog(v) {
508
+ this.showTemplateModal = true;
509
+ this.template = {
510
+ NAME: "",
511
+ LEVEL: "03",
512
+ CONTENT: JSON.stringify(v)
513
+ };
514
+ },
515
+ saveAsTemplate() {
516
+ if (!this.template.ID) {
517
+ this.$message.error("请输入模板编号");
518
+ return;
519
+ }
520
+ if (!this.template.NAME) {
521
+ this.$message.error("请输入模板名称");
522
+ return;
523
+ }
524
+ const params = {
525
+ "bean.CLIENT": this.CLIENT,
526
+ "bean.SYSTEM": this.SYSTEM,
527
+ "bean.ID": this.template.ID,
528
+ "bean.NAME": this.template.NAME,
529
+ "bean.TYPE": "01",
530
+ "bean.LEVEL": this.template.LEVEL,
531
+ "bean.PICTURE": this.template.PICTURE,
532
+ "bean.CONTENT": this.template.CONTENT
533
+ };
534
+ this.$http.save({
535
+ entityId: "FM_TEMPLATE",
536
+ ...params
537
+ }).then(() => {
538
+ this.$message.success("保存成功");
539
+ this.showTemplateModal = false;
540
+ }).catch((err) => {
541
+ this.$message.error(err.message);
542
+ });
543
+ },
544
+ // 滚动到指定组件位置
545
+ scrollToWidget(widgetId) {
546
+ const treeContainer = this.$el.querySelector(".epx-page-designer-widget-tree__list");
547
+ if (!treeContainer) return;
548
+ const targetElement = treeContainer.querySelector(`[data-tree-widget-id="${widgetId}"]`);
549
+ if (!targetElement) return;
550
+ const containerRect = treeContainer.getBoundingClientRect();
551
+ const targetRect = targetElement.getBoundingClientRect();
552
+ const isVisible = targetRect.top >= containerRect.top && targetRect.bottom <= containerRect.bottom;
553
+ if (!isVisible) {
554
+ const scrollTop = targetElement.offsetTop - treeContainer.offsetTop - 100;
555
+ treeContainer.scrollTo({
556
+ top: Math.max(0, scrollTop),
557
+ behavior: "smooth"
558
+ });
559
+ }
560
+ },
561
+ // 滚动到根级占位符位置
562
+ scrollToRootPlaceholder(index) {
563
+ const treeContainer = this.$el.querySelector(".epx-page-designer-widget-tree__list");
564
+ if (!treeContainer) return;
565
+ const rootItems = treeContainer.querySelectorAll("[data-tree-widget-id]");
566
+ if (!rootItems || rootItems.length === 0) return;
567
+ let targetElement;
568
+ if (index >= rootItems.length) {
569
+ targetElement = rootItems[rootItems.length - 1];
570
+ } else if (index > 0) {
571
+ targetElement = rootItems[index];
572
+ } else {
573
+ targetElement = rootItems[0];
574
+ }
575
+ if (targetElement) {
576
+ const containerRect = treeContainer.getBoundingClientRect();
577
+ const targetRect = targetElement.getBoundingClientRect();
578
+ const isVisible = targetRect.top >= containerRect.top && targetRect.bottom <= containerRect.bottom;
579
+ if (!isVisible) {
580
+ const scrollTop = targetElement.offsetTop - treeContainer.offsetTop - 100;
581
+ treeContainer.scrollTo({
582
+ top: Math.max(0, scrollTop),
583
+ behavior: "smooth"
584
+ });
585
+ }
586
+ }
587
+ },
588
+ /**
589
+ * 处理从预览区域拖拽组件到大纲树
590
+ */
591
+ handleWidgetReorderToTree(payload) {
592
+ const { widgetId, parentWidgetId } = payload;
593
+ if (!widgetId) return;
594
+ const sourceWidget = this.designer.getWidgetItemById(widgetId);
595
+ if (!sourceWidget) return;
596
+ let targetParent = null;
597
+ if (this.placeholder && this.placeholder.parentId) {
598
+ targetParent = this.designer.getWidgetItemById(this.placeholder.parentId);
599
+ if (targetParent) {
600
+ const parentInfo = this.designer.getWidgetByType(targetParent.contentType, targetParent.type) || {};
601
+ if (parentInfo.CONTAINER !== "1") targetParent = null;
602
+ }
603
+ }
604
+ if (targetParent && !targetParent.items) {
605
+ this.designer.updateWidget(targetParent.id, { items: [] });
606
+ }
607
+ const targetList = targetParent ? targetParent.items : this.widgetList;
608
+ let targetIndex = this.placeholder ? this.placeholder.index : targetList.length;
609
+ const sourceParentId = parentWidgetId || null;
610
+ const targetParentId = targetParent ? targetParent.id : null;
611
+ let sourceIndex = -1;
612
+ if (sourceParentId === targetParentId) {
613
+ sourceIndex = targetList.findIndex((w) => w.id === widgetId);
614
+ if (sourceIndex !== -1 && targetIndex > sourceIndex) {
615
+ targetIndex = targetIndex - 1;
616
+ }
617
+ }
618
+ if (parentWidgetId) {
619
+ const sourceParent = this.designer.getWidgetItemById(parentWidgetId);
620
+ if (sourceParent && sourceParent.items) {
621
+ const sourceList = [...sourceParent.items];
622
+ const idx = sourceList.findIndex((w) => w.id === widgetId);
623
+ if (idx !== -1) {
624
+ sourceList.splice(idx, 1);
625
+ this.designer.updateWidget(sourceParent.id, { items: sourceList });
626
+ }
627
+ }
628
+ } else {
629
+ const rootList = [...this.widgetList];
630
+ const idx = rootList.findIndex((w) => w.id === widgetId);
631
+ if (idx !== -1) {
632
+ rootList.splice(idx, 1);
633
+ this.widgetList = rootList;
634
+ }
635
+ }
636
+ const finalTargetList = targetParent ? targetParent.items : this.widgetList;
637
+ if (targetIndex < 0) targetIndex = 0;
638
+ if (targetIndex > finalTargetList.length) targetIndex = finalTargetList.length;
639
+ finalTargetList.splice(targetIndex, 0, sourceWidget);
640
+ if (targetParent) {
641
+ this.designer.updateWidget(targetParent.id, { items: [...finalTargetList] });
642
+ }
643
+ this.designer.setSelected && this.designer.setSelected(sourceWidget);
644
+ this.designer.emitHistoryChange && this.designer.emitHistoryChange();
645
+ }
646
+ },
647
+ created() {
648
+ if (this.designer && this.designer.handleEvent) {
649
+ this.designer.handleEvent("library-drag-end", () => {
650
+ this.resetLibraryDragState();
651
+ });
652
+ }
653
+ }
654
+ };
655
+ const _hoisted_1 = { class: "epx-page-designer-widget-tree__header" };
656
+ const _hoisted_2 = {
657
+ ref: "rootList",
658
+ class: "epx-page-designer-widget-tree__list"
659
+ };
660
+ const _hoisted_3 = { class: "epx-page-designer__template-form-item" };
661
+ const _hoisted_4 = { class: "epx-page-designer__template-form-item" };
662
+ const _hoisted_5 = { class: "epx-page-designer__template-form-item" };
663
+ const _hoisted_6 = {
664
+ key: 0,
665
+ class: "epx-page-designer__template-form-item"
666
+ };
667
+ const _hoisted_7 = { class: "dialog-footer" };
668
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
669
+ const _component_epx_page_designer_widget_tree_item = resolveComponent("epx-page-designer-widget-tree-item");
670
+ const _component_el_button = resolveComponent("el-button");
671
+ const _component_epx_visual_component_library_dialog = resolveComponent("epx-visual-component-library-dialog");
672
+ const _component_el_dialog = resolveComponent("el-dialog");
673
+ const _component_el_input = resolveComponent("el-input");
674
+ const _component_epx_photo = resolveComponent("epx-photo");
675
+ const _component_el_radio = resolveComponent("el-radio");
676
+ const _component_el_radio_group = resolveComponent("el-radio-group");
677
+ return openBlock(), createElementBlock("div", {
678
+ class: normalizeClass(["epx-page-designer-widget-tree", { "is-dragging": $data.dragState && !!$data.dragState.widget }])
679
+ }, [
680
+ createElementVNode("div", _hoisted_1, [
681
+ createElementVNode("span", null, toDisplayString(_ctx.$t("Outline of the component")), 1),
682
+ createElementVNode("i", {
683
+ class: "el-icon-close",
684
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close"))
685
+ })
686
+ ]),
687
+ createElementVNode("div", {
688
+ class: "epx-page-designer-widget-tree__container",
689
+ onDragenter: _cache[8] || (_cache[8] = (...args) => $options.onTreeDragEnter && $options.onTreeDragEnter(...args)),
690
+ onDragover: _cache[9] || (_cache[9] = (...args) => $options.onTreeDragOver && $options.onTreeDragOver(...args)),
691
+ onDragleave: _cache[10] || (_cache[10] = (...args) => $options.onTreeDragLeave && $options.onTreeDragLeave(...args)),
692
+ onDrop: _cache[11] || (_cache[11] = (...args) => $options.onTreeDrop && $options.onTreeDrop(...args))
693
+ }, [
694
+ createElementVNode("ul", _hoisted_2, [
695
+ (openBlock(true), createElementBlock(Fragment, null, renderList($options.widgetList, (widget, index) => {
696
+ return openBlock(), createElementBlock(Fragment, {
697
+ key: widget.id
698
+ }, [
699
+ $options.showRootPlaceholderAt(index) ? (openBlock(), createElementBlock("li", {
700
+ key: 0,
701
+ class: "epx-page-designer-widget-tree-item epx-page-designer-widget-tree-item--placeholder",
702
+ onDragover: _cache[1] || (_cache[1] = withModifiers((...args) => $options.onPlaceholderDragOver && $options.onPlaceholderDragOver(...args), ["prevent"])),
703
+ onDragenter: _cache[2] || (_cache[2] = (...args) => $options.onPlaceholderDragEnter && $options.onPlaceholderDragEnter(...args)),
704
+ onDrop: _cache[3] || (_cache[3] = withModifiers((...args) => $options.onTreeDrop && $options.onTreeDrop(...args), ["prevent"]))
705
+ }, [..._cache[19] || (_cache[19] = [
706
+ createElementVNode("div", { class: "epx-page-designer-widget-tree-item__placeholder-box" }, null, -1)
707
+ ])], 32)) : createCommentVNode("", true),
708
+ createVNode(_component_epx_page_designer_widget_tree_item, {
709
+ designer: $props.designer,
710
+ widget,
711
+ level: 0,
712
+ "parent-widget": null,
713
+ index,
714
+ "dragging-id": $data.dragState && $data.dragState.widget && $data.dragState.widget.id,
715
+ placeholder: $data.placeholder,
716
+ "drop-hint": $data.dropHint,
717
+ onAdd: $options.openAddDialog,
718
+ onAddTemplate: $options.openTemplateDialog,
719
+ onDragStart: $options.handleItemDragStart,
720
+ onHoverForDrop: $options.handleItemHoverForDrop,
721
+ onDragEnd: $options.handleItemDragEnd,
722
+ onLibraryHoverForDrop: $options.handleLibraryHoverForDrop,
723
+ onLibraryDrop: $options.handleLibraryDrop
724
+ }, null, 8, ["designer", "widget", "index", "dragging-id", "placeholder", "drop-hint", "onAdd", "onAddTemplate", "onDragStart", "onHoverForDrop", "onDragEnd", "onLibraryHoverForDrop", "onLibraryDrop"])
725
+ ], 64);
726
+ }), 128)),
727
+ $options.showRootPlaceholderAt($options.widgetList.length) ? (openBlock(), createElementBlock("li", {
728
+ key: "root-placeholder-end",
729
+ class: "epx-page-designer-widget-tree-item epx-page-designer-widget-tree-item--placeholder",
730
+ onDragover: _cache[4] || (_cache[4] = withModifiers((...args) => $options.onPlaceholderDragOver && $options.onPlaceholderDragOver(...args), ["prevent"])),
731
+ onDragenter: _cache[5] || (_cache[5] = (...args) => $options.onPlaceholderDragEnter && $options.onPlaceholderDragEnter(...args)),
732
+ onDrop: _cache[6] || (_cache[6] = withModifiers((...args) => $options.onTreeDrop && $options.onTreeDrop(...args), ["prevent"]))
733
+ }, [..._cache[20] || (_cache[20] = [
734
+ createElementVNode("div", { class: "epx-page-designer-widget-tree-item__placeholder-box" }, null, -1)
735
+ ])], 32)) : createCommentVNode("", true)
736
+ ], 512),
737
+ createVNode(_component_el_button, {
738
+ class: "epx-page-designer-widget-tree__add root",
739
+ type: "primary",
740
+ size: "default",
741
+ onClick: _cache[7] || (_cache[7] = withModifiers(($event) => $options.openAddDialog(null), ["stop"]))
742
+ }, {
743
+ default: withCtx(() => [
744
+ createTextVNode("+ " + toDisplayString(_ctx.$t("new add component")), 1)
745
+ ]),
746
+ _: 1
747
+ })
748
+ ], 32),
749
+ createVNode(_component_el_dialog, {
750
+ title: _ctx.$t("Page Component Query"),
751
+ "model-value": !!$data.showModal,
752
+ width: "960px",
753
+ "append-to-body": "",
754
+ onClose: _cache[12] || (_cache[12] = ($event) => {
755
+ $data.showModal = false;
756
+ _ctx.addToParentWidget = null;
757
+ })
758
+ }, {
759
+ default: withCtx(() => [
760
+ createVNode(_component_epx_visual_component_library_dialog, { onClick: $options.addComponent }, null, 8, ["onClick"])
761
+ ]),
762
+ _: 1
763
+ }, 8, ["title", "model-value"]),
764
+ createVNode(_component_el_dialog, {
765
+ title: "保存模板",
766
+ "model-value": !!$data.showTemplateModal,
767
+ width: "520px",
768
+ "append-to-body": "",
769
+ onClose: _cache[18] || (_cache[18] = ($event) => $data.showTemplateModal = false)
770
+ }, {
771
+ footer: withCtx(() => [
772
+ createElementVNode("div", _hoisted_7, [
773
+ createVNode(_component_el_button, {
774
+ onClick: _cache[17] || (_cache[17] = ($event) => $data.showTemplateModal = false)
775
+ }, {
776
+ default: withCtx(() => [..._cache[27] || (_cache[27] = [
777
+ createTextVNode("取 消", -1)
778
+ ])]),
779
+ _: 1
780
+ }),
781
+ createVNode(_component_el_button, {
782
+ type: "primary",
783
+ onClick: $options.saveAsTemplate
784
+ }, {
785
+ default: withCtx(() => [..._cache[28] || (_cache[28] = [
786
+ createTextVNode("确 定", -1)
787
+ ])]),
788
+ _: 1
789
+ }, 8, ["onClick"])
790
+ ])
791
+ ]),
792
+ default: withCtx(() => [
793
+ createElementVNode("div", _hoisted_3, [
794
+ _cache[21] || (_cache[21] = createElementVNode("label", { for: "" }, "模板编号:", -1)),
795
+ createVNode(_component_el_input, {
796
+ size: "default",
797
+ modelValue: $data.template.ID,
798
+ "onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => $data.template.ID = $event)
799
+ }, null, 8, ["modelValue"])
800
+ ]),
801
+ createElementVNode("div", _hoisted_4, [
802
+ _cache[22] || (_cache[22] = createElementVNode("label", { for: "" }, "模板名称:", -1)),
803
+ createVNode(_component_el_input, {
804
+ size: "default",
805
+ modelValue: $data.template.NAME,
806
+ "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => $data.template.NAME = $event)
807
+ }, null, 8, ["modelValue"])
808
+ ]),
809
+ createElementVNode("div", _hoisted_5, [
810
+ _cache[23] || (_cache[23] = createElementVNode("label", { for: "" }, "缩略图:", -1)),
811
+ createVNode(_component_epx_photo, {
812
+ modelValue: $data.template.PICTURE,
813
+ "onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => $data.template.PICTURE = $event),
814
+ fieldConfigs: { attriName: "PICTURE", attriLabel: "缩略图", state: "EDIT" }
815
+ }, null, 8, ["modelValue"])
816
+ ]),
817
+ _ctx.clientConfig.CODE === "frame" ? (openBlock(), createElementBlock("div", _hoisted_6, [
818
+ _cache[26] || (_cache[26] = createElementVNode("label", { for: "" }, "应用级别:", -1)),
819
+ createVNode(_component_el_radio_group, {
820
+ modelValue: $data.template.LEVEL,
821
+ "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => $data.template.LEVEL = $event)
822
+ }, {
823
+ default: withCtx(() => [
824
+ createVNode(_component_el_radio, {
825
+ label: "01",
826
+ value: "01"
827
+ }, {
828
+ default: withCtx(() => [..._cache[24] || (_cache[24] = [
829
+ createTextVNode("平台级", -1)
830
+ ])]),
831
+ _: 1
832
+ }),
833
+ createVNode(_component_el_radio, {
834
+ label: "03",
835
+ value: "03"
836
+ }, {
837
+ default: withCtx(() => [..._cache[25] || (_cache[25] = [
838
+ createTextVNode("系统级", -1)
839
+ ])]),
840
+ _: 1
841
+ })
842
+ ]),
843
+ _: 1
844
+ }, 8, ["modelValue"])
845
+ ])) : createCommentVNode("", true)
846
+ ]),
847
+ _: 1
848
+ }, 8, ["model-value"])
849
+ ], 2);
850
+ }
851
+ const WidgetTree = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
852
+ export {
853
+ WidgetTree as default
854
+ };