aldehyde 0.2.479 → 0.2.481

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 (685) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +2 -2
  3. package/lib/controls/2dEditor/2dEditor/index.less +5 -5
  4. package/lib/controls/2dEditor/2dView/index.less +8 -8
  5. package/lib/controls/2dEditor/components/card.js +2 -2
  6. package/lib/controls/2dEditor/components/card.js.map +1 -1
  7. package/lib/controls/2dEditor/components/component.less +83 -83
  8. package/lib/controls/action/index.css +8 -8
  9. package/lib/controls/action/index.d.ts.map +1 -1
  10. package/lib/controls/chemstruc/graph.d.ts.map +1 -1
  11. package/lib/controls/chemstruc/index.css +28 -28
  12. package/lib/controls/collapse-card/index.css +8 -8
  13. package/lib/controls/collapse-card/index.d.ts.map +1 -1
  14. package/lib/controls/cquery/cquick-button.d.ts.map +1 -1
  15. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  16. package/lib/controls/entity-select/entity-select.js +3 -3
  17. package/lib/controls/entity-select/entity-select.js.map +1 -1
  18. package/lib/controls/entity-select/index.css +7 -7
  19. package/lib/controls/entity-select/lab-tree-select.d.ts.map +1 -1
  20. package/lib/controls/entity-select/popover-entity-select.d.ts.map +1 -1
  21. package/lib/controls/file-view/index.less +9 -9
  22. package/lib/controls/html-editor/index.less +67 -67
  23. package/lib/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.css +147 -147
  24. package/lib/controls/password-setter/index.css +2 -2
  25. package/lib/controls/password-setter/index.d.ts.map +1 -1
  26. package/lib/controls/qr-code/index.less +28 -28
  27. package/lib/controls/relation-existion/index.css +3 -3
  28. package/lib/controls/relation-existion/index.d.ts.map +1 -1
  29. package/lib/controls/rfield/index.css +4 -4
  30. package/lib/controls/rfield/index.d.ts.map +1 -1
  31. package/lib/controls/select/index.d.ts.map +1 -1
  32. package/lib/controls/signature/index.d.ts.map +1 -1
  33. package/lib/controls/text/ellipsis-text.d.ts.map +1 -1
  34. package/lib/controls/text/index.less +7 -7
  35. package/lib/controls/upload/index.d.ts.map +1 -1
  36. package/lib/controls/upload/mult-file-upload.d.ts.map +1 -1
  37. package/lib/custom-page/dtmpl-custom-edit-modal-page.d.ts.map +1 -1
  38. package/lib/detail/button/bottom-submit-button-bar.d.ts.map +1 -1
  39. package/lib/detail/button/cquery-button-bar.d.ts.map +1 -1
  40. package/lib/detail/button/fix-right-submit-button-bar.d.ts.map +1 -1
  41. package/lib/detail/button/index.css +42 -42
  42. package/lib/detail/dtmpl.css +67 -67
  43. package/lib/detail/edit/fields-edit-card.d.ts.map +1 -1
  44. package/lib/detail/edit/modal-row-edit.d.ts.map +1 -1
  45. package/lib/detail/edit/popover-edit-card.d.ts.map +1 -1
  46. package/lib/detail/rightbar/index.css +34 -34
  47. package/lib/detail/rightbar/index.d.ts.map +1 -1
  48. package/lib/detail/view/act-dtmpl-view.d.ts.map +1 -1
  49. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  50. package/lib/detail/view/modal-dtmpl-view.d.ts.map +1 -1
  51. package/lib/detail/view/snapshot-timeline.d.ts.map +1 -1
  52. package/lib/detail/view/tab-act-dtmpl-view.d.ts.map +1 -1
  53. package/lib/draw-canvas-edit/components/asset-bar/index.d.ts +1 -0
  54. package/lib/draw-canvas-edit/components/asset-bar/index.d.ts.map +1 -1
  55. package/lib/draw-canvas-edit/components/asset-bar/index.js +8 -6
  56. package/lib/draw-canvas-edit/components/asset-bar/index.js.map +1 -1
  57. package/lib/draw-canvas-edit/components/main-header/index.less +3 -0
  58. package/lib/draw-canvas-edit/components/render/components/index.d.ts +3 -0
  59. package/lib/draw-canvas-edit/components/render/components/index.d.ts.map +1 -0
  60. package/lib/draw-canvas-edit/components/render/components/index.js +3 -0
  61. package/lib/draw-canvas-edit/components/render/components/index.js.map +1 -0
  62. package/lib/draw-canvas-edit/components/render/components/workstation-component.d.ts +31 -0
  63. package/lib/draw-canvas-edit/components/render/components/workstation-component.d.ts.map +1 -0
  64. package/lib/draw-canvas-edit/components/render/components/workstation-component.js +105 -0
  65. package/lib/draw-canvas-edit/components/render/components/workstation-component.js.map +1 -0
  66. package/lib/draw-canvas-edit/components/render/draws/bg-draw.d.ts.map +1 -1
  67. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js +14 -1
  68. package/lib/draw-canvas-edit/components/render/draws/bg-draw.js.map +1 -1
  69. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.d.ts.map +1 -1
  70. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js +30 -6
  71. package/lib/draw-canvas-edit/components/render/draws/contextmenu-draw.js.map +1 -1
  72. package/lib/draw-canvas-edit/components/render/graphs/bezier.js +3 -3
  73. package/lib/draw-canvas-edit/components/render/graphs/bezier.js.map +1 -1
  74. package/lib/draw-canvas-edit/components/render/graphs/circle.js +2 -2
  75. package/lib/draw-canvas-edit/components/render/graphs/circle.js.map +1 -1
  76. package/lib/draw-canvas-edit/components/render/graphs/curve.js +3 -3
  77. package/lib/draw-canvas-edit/components/render/graphs/curve.js.map +1 -1
  78. package/lib/draw-canvas-edit/components/render/graphs/line.js +3 -3
  79. package/lib/draw-canvas-edit/components/render/graphs/line.js.map +1 -1
  80. package/lib/draw-canvas-edit/components/render/graphs/rect.js +2 -2
  81. package/lib/draw-canvas-edit/components/render/graphs/rect.js.map +1 -1
  82. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts +1 -1
  83. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.d.ts.map +1 -1
  84. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js +58 -122
  85. package/lib/draw-canvas-edit/components/render/handlers/drag-outside-handlers.js.map +1 -1
  86. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.d.ts.map +1 -1
  87. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js +2 -1
  88. package/lib/draw-canvas-edit/components/render/handlers/graph-handlers.js.map +1 -1
  89. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.d.ts.map +1 -1
  90. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js +11 -4
  91. package/lib/draw-canvas-edit/components/render/handlers/selection-handlers.js.map +1 -1
  92. package/lib/draw-canvas-edit/components/render/index.d.ts +3 -1
  93. package/lib/draw-canvas-edit/components/render/index.d.ts.map +1 -1
  94. package/lib/draw-canvas-edit/components/render/index.js +37 -26
  95. package/lib/draw-canvas-edit/components/render/index.js.map +1 -1
  96. package/lib/draw-canvas-edit/components/render/tools/attract-tool.d.ts +2 -1
  97. package/lib/draw-canvas-edit/components/render/tools/attract-tool.d.ts.map +1 -1
  98. package/lib/draw-canvas-edit/components/render/tools/attract-tool.js +33 -8
  99. package/lib/draw-canvas-edit/components/render/tools/attract-tool.js.map +1 -1
  100. package/lib/draw-canvas-edit/components/render/tools/component-factory.d.ts +64 -0
  101. package/lib/draw-canvas-edit/components/render/tools/component-factory.d.ts.map +1 -0
  102. package/lib/draw-canvas-edit/components/render/tools/component-factory.js +257 -0
  103. package/lib/draw-canvas-edit/components/render/tools/component-factory.js.map +1 -0
  104. package/lib/draw-canvas-edit/components/render/tools/copy-tool.d.ts +0 -2
  105. package/lib/draw-canvas-edit/components/render/tools/copy-tool.d.ts.map +1 -1
  106. package/lib/draw-canvas-edit/components/render/tools/copy-tool.js +23 -45
  107. package/lib/draw-canvas-edit/components/render/tools/copy-tool.js.map +1 -1
  108. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.d.ts.map +1 -1
  109. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js +20 -41
  110. package/lib/draw-canvas-edit/components/render/tools/import-export-tool.js.map +1 -1
  111. package/lib/draw-canvas-edit/components/render/tools/index.d.ts +1 -0
  112. package/lib/draw-canvas-edit/components/render/tools/index.d.ts.map +1 -1
  113. package/lib/draw-canvas-edit/components/render/tools/index.js +1 -0
  114. package/lib/draw-canvas-edit/components/render/tools/index.js.map +1 -1
  115. package/lib/draw-canvas-edit/components/render/tools/selection-tool.d.ts.map +1 -1
  116. package/lib/draw-canvas-edit/components/render/tools/selection-tool.js +32 -19
  117. package/lib/draw-canvas-edit/components/render/tools/selection-tool.js.map +1 -1
  118. package/lib/draw-canvas-edit/components/render/types.d.ts +11 -6
  119. package/lib/draw-canvas-edit/components/render/types.d.ts.map +1 -1
  120. package/lib/draw-canvas-edit/components/render/types.js.map +1 -1
  121. package/lib/draw-canvas-edit/components/setting-form/imag-upload.d.ts.map +1 -1
  122. package/lib/draw-canvas-edit/components/setting-form/imag-upload.js +2 -2
  123. package/lib/draw-canvas-edit/components/setting-form/imag-upload.js.map +1 -1
  124. package/lib/draw-canvas-edit/components/setting-form/index.d.ts.map +1 -1
  125. package/lib/draw-canvas-edit/components/setting-form/index.js +3 -5
  126. package/lib/draw-canvas-edit/components/setting-form/index.js.map +1 -1
  127. package/lib/draw-canvas-edit/index.d.ts.map +1 -1
  128. package/lib/draw-canvas-edit/index.js +4 -1
  129. package/lib/draw-canvas-edit/index.js.map +1 -1
  130. package/lib/draw-canvas-edit/index.less +48 -48
  131. package/lib/draw-canvas-view/index.d.ts.map +1 -1
  132. package/lib/draw-canvas-view/index.js +4 -2
  133. package/lib/draw-canvas-view/index.js.map +1 -1
  134. package/lib/draw-canvas-view/index.less +59 -59
  135. package/lib/draw-canvas-view/view.d.ts +2 -0
  136. package/lib/draw-canvas-view/view.d.ts.map +1 -1
  137. package/lib/draw-canvas-view/view.js +60 -36
  138. package/lib/draw-canvas-view/view.js.map +1 -1
  139. package/lib/export/export-frame.css +2 -2
  140. package/lib/export/export-frame.d.ts.map +1 -1
  141. package/lib/export/select-code-export-frame.d.ts.map +1 -1
  142. package/lib/form/criteria-form.js +17 -17
  143. package/lib/form/criteria-form.js.map +1 -1
  144. package/lib/form/dtmpl-form.css +3 -3
  145. package/lib/form/dtmpl-form.d.ts.map +1 -1
  146. package/lib/form/dtmpl-form.js +9 -0
  147. package/lib/form/dtmpl-form.js.map +1 -1
  148. package/lib/form/field-group-form.d.ts.map +1 -1
  149. package/lib/form/form-Item-group.d.ts.map +1 -1
  150. package/lib/form/form-Item-group.js +2 -2
  151. package/lib/form/form-Item-group.js.map +1 -1
  152. package/lib/form/index.css +12 -12
  153. package/lib/import/excel-import.d.ts.map +1 -1
  154. package/lib/import/index.css +53 -53
  155. package/lib/import/template.css +50 -50
  156. package/lib/layout/common.css +64 -64
  157. package/lib/layout/coverstyle.css +51 -51
  158. package/lib/layout/footer/index.css +5 -5
  159. package/lib/layout/header/index.css +122 -122
  160. package/lib/layout/menu/block.css +7 -7
  161. package/lib/layout/menu/block.d.ts.map +1 -1
  162. package/lib/layout/menu/l2menu-quick-bar.d.ts.map +1 -1
  163. package/lib/layout/menu/menu-2layers.d.ts.map +1 -1
  164. package/lib/layout/menu/message-bar.less +73 -73
  165. package/lib/layout/menu/reset-password.d.ts.map +1 -1
  166. package/lib/layout/menu/user-bar.d.ts.map +1 -1
  167. package/lib/layout/menu/userinfo-bar.d.ts.map +1 -1
  168. package/lib/layout/sidebar/index.css +57 -57
  169. package/lib/layout2/css/header.css +41 -41
  170. package/lib/layout2/css/sider.less +17 -17
  171. package/lib/layout2/css/tabs-layout.less +18 -18
  172. package/lib/layout3/css/header.less +195 -195
  173. package/lib/layout3/css/main.less +161 -161
  174. package/lib/layout3/css/sider.less +32 -32
  175. package/lib/layout3/css/tabs-layout.less +38 -38
  176. package/lib/layout4/css/header.less +196 -196
  177. package/lib/layout4/css/main.less +154 -154
  178. package/lib/layout4/css/sider.less +37 -37
  179. package/lib/layout4/css/tabs-layout.less +42 -42
  180. package/lib/layout5/css/header.less +35 -35
  181. package/lib/layout5/css/sider.less +18 -18
  182. package/lib/list/calendar/index.less +20 -20
  183. package/lib/list/card-list/index.less +154 -154
  184. package/lib/list/gantt/index.less +8 -8
  185. package/lib/list/vertical-list/index.less +208 -208
  186. package/lib/login/index.css +19 -19
  187. package/lib/login/login.d.ts.map +1 -1
  188. package/lib/login/vertify/index.css +143 -143
  189. package/lib/login3/index.less +136 -136
  190. package/lib/lowcode-components/act-table/index.less +26 -26
  191. package/lib/lowcode-components/base-button/index.less +7 -7
  192. package/lib/lowcode-components/base-map/index.js +6 -6
  193. package/lib/lowcode-components/base-radio/index.less +23 -23
  194. package/lib/lowcode-components/base-tabs/index.less +14 -14
  195. package/lib/lowcode-components/border/border10/index.less +26 -26
  196. package/lib/lowcode-components/border/border11/index.js +46 -46
  197. package/lib/lowcode-components/border/border11/index.less +17 -17
  198. package/lib/lowcode-components/border/border12/index.js +13 -13
  199. package/lib/lowcode-components/border/border12/index.less +13 -13
  200. package/lib/lowcode-components/border/border13/index.js +5 -5
  201. package/lib/lowcode-components/border/border13/index.less +13 -13
  202. package/lib/lowcode-components/border/border2/index.less +17 -17
  203. package/lib/lowcode-components/border/border3/index.less +25 -25
  204. package/lib/lowcode-components/border/border4/index.js +2 -2
  205. package/lib/lowcode-components/border/border4/index.less +72 -72
  206. package/lib/lowcode-components/border/border5/index.js +2 -2
  207. package/lib/lowcode-components/border/border5/index.less +35 -35
  208. package/lib/lowcode-components/border/border6/index.less +17 -17
  209. package/lib/lowcode-components/border/border7/index.less +26 -26
  210. package/lib/lowcode-components/border/border8/index.less +13 -13
  211. package/lib/lowcode-components/border/border9/index.js +14 -14
  212. package/lib/lowcode-components/border/border9/index.less +13 -13
  213. package/lib/lowcode-components/decoration/decoration1/index.less +7 -7
  214. package/lib/lowcode-components/decoration/decoration10/index.js +3 -3
  215. package/lib/lowcode-components/decoration/decoration10/index.less +5 -5
  216. package/lib/lowcode-components/decoration/decoration11/index.less +5 -5
  217. package/lib/lowcode-components/decoration/decoration2/index.less +6 -6
  218. package/lib/lowcode-components/decoration/decoration3/index.less +7 -7
  219. package/lib/lowcode-components/decoration/decoration4/index.less +29 -29
  220. package/lib/lowcode-components/decoration/decoration5/index.less +3 -3
  221. package/lib/lowcode-components/decoration/decoration6/index.less +7 -7
  222. package/lib/lowcode-components/decoration/decoration7/index.less +4 -4
  223. package/lib/lowcode-components/decoration/decoration8/index.less +14 -14
  224. package/lib/lowcode-components/decoration/decoration9/index.less +4 -4
  225. package/lib/lowcode-components/effectScatter-map/index.js +6 -6
  226. package/lib/lowcode-components/effectScatter-map-3d/index.js +6 -6
  227. package/lib/lowcode-components/lowcode-view/index.less +19 -19
  228. package/lib/lowcode-components/search-form/index.less +25 -25
  229. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  230. package/lib/module/dtmpl-edit-card.js +4 -4
  231. package/lib/module/dtmpl-edit-card.js.map +1 -1
  232. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  233. package/lib/module/dtmpl-edit-page.js +7 -4
  234. package/lib/module/dtmpl-edit-page.js.map +1 -1
  235. package/lib/module/index.less +4 -4
  236. package/lib/module/ltmpl-modal.d.ts.map +1 -1
  237. package/lib/module/ltmpl-table.d.ts.map +1 -1
  238. package/lib/routable/index.less +25 -25
  239. package/lib/table/act-table.d.ts.map +1 -1
  240. package/lib/table/act-table.js +8 -8
  241. package/lib/table/act-table.js.map +1 -1
  242. package/lib/table/column/index.less +63 -63
  243. package/lib/table/index.css +211 -211
  244. package/lib/table/modal-select-table.d.ts +2 -2
  245. package/lib/table/modal-select-table.d.ts.map +1 -1
  246. package/lib/table/modal-select-table.js +10 -10
  247. package/lib/table/modal-select-table.js.map +1 -1
  248. package/lib/table/pagination.css +14 -14
  249. package/lib/table/pagination.d.ts.map +1 -1
  250. package/lib/table/relation-table.d.ts +2 -2
  251. package/lib/table/relation-table.d.ts.map +1 -1
  252. package/lib/table/relation-table.js +1 -1
  253. package/lib/table/relation-table.js.map +1 -1
  254. package/lib/table/select-table.d.ts.map +1 -1
  255. package/lib/table/select-table.js +16 -4
  256. package/lib/table/select-table.js.map +1 -1
  257. package/lib/table/selected-rows-card.d.ts.map +1 -1
  258. package/lib/table/stat/restat.d.ts.map +1 -1
  259. package/lib/tmpl/hc-data-source.js +2 -2
  260. package/lib/tmpl/hc-data-source.js.map +1 -1
  261. package/lib/tmpl/interface.d.ts +7 -7
  262. package/lib/tmpl/interface.d.ts.map +1 -1
  263. package/lib/tmpl/tmpl-config-analysis.d.ts.map +1 -1
  264. package/lib/tmpl/tmpl-config-analysis.js +23 -23
  265. package/lib/tmpl/tmpl-config-analysis.js.map +1 -1
  266. package/lib/tree/act-tree.d.ts.map +1 -1
  267. package/lib/tree/block-menu-auth-tree.d.ts.map +1 -1
  268. package/lib/tree/index.css +22 -22
  269. package/lib/tree/tmpl-tree.d.ts.map +1 -1
  270. package/lib/units/index.js +3 -3
  271. package/lib/units/index.js.map +1 -1
  272. package/lib/welcome/components/menu-card.less +96 -96
  273. package/lib/welcome/components/page-card.less +49 -49
  274. package/lib/welcome/components/quick-entrance.less +120 -120
  275. package/lib/welcome/components/user-menus.less +192 -192
  276. package/lib/welcome/components/workbench.less +118 -118
  277. package/lib/welcome/index.css +13 -13
  278. package/package.json +223 -223
  279. package/src/aldehyde/controls/2dEditor/2dEditor/index.less +5 -5
  280. package/src/aldehyde/controls/2dEditor/2dEditor/index.tsx +270 -270
  281. package/src/aldehyde/controls/2dEditor/2dView/index.less +8 -8
  282. package/src/aldehyde/controls/2dEditor/2dView/index.tsx +110 -110
  283. package/src/aldehyde/controls/2dEditor/components/card.tsx +256 -256
  284. package/src/aldehyde/controls/2dEditor/components/component.less +83 -83
  285. package/src/aldehyde/controls/2dEditor/components/data.d.ts +32 -32
  286. package/src/aldehyde/controls/2dEditor/components/hotspot.tsx +80 -80
  287. package/src/aldehyde/controls/2dEditor/components/html-box.tsx +101 -101
  288. package/src/aldehyde/controls/2dEditor/components/image.tsx +99 -99
  289. package/src/aldehyde/controls/2dEditor/components/line.tsx +73 -73
  290. package/src/aldehyde/controls/action/index.css +8 -8
  291. package/src/aldehyde/controls/action/index.tsx +406 -406
  292. package/src/aldehyde/controls/action/utils.tsx +306 -306
  293. package/src/aldehyde/controls/auto-complete/index.tsx +82 -82
  294. package/src/aldehyde/controls/cascader/index.tsx +112 -112
  295. package/src/aldehyde/controls/chemstruc/graph.tsx +185 -185
  296. package/src/aldehyde/controls/chemstruc/index.css +28 -28
  297. package/src/aldehyde/controls/code-editor/sql-code-editor.tsx +73 -73
  298. package/src/aldehyde/controls/collapse-card/index.css +8 -8
  299. package/src/aldehyde/controls/collapse-card/index.tsx +109 -109
  300. package/src/aldehyde/controls/color-picker/index.tsx +21 -21
  301. package/src/aldehyde/controls/counting-tag/index.tsx +53 -53
  302. package/src/aldehyde/controls/cquery/cquick-button.tsx +145 -145
  303. package/src/aldehyde/controls/date-picker/index.tsx +199 -199
  304. package/src/aldehyde/controls/direct-file-view/drawer-file-view.tsx +54 -54
  305. package/src/aldehyde/controls/direct-file-view/index.tsx +145 -145
  306. package/src/aldehyde/controls/direct-upload/index.tsx +139 -139
  307. package/src/aldehyde/controls/entity-select/entity-select.tsx +791 -791
  308. package/src/aldehyde/controls/entity-select/index.css +7 -7
  309. package/src/aldehyde/controls/entity-select/lab-tree-select.tsx +154 -154
  310. package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +205 -205
  311. package/src/aldehyde/controls/entry-control.tsx +418 -418
  312. package/src/aldehyde/controls/enum-badge/index.tsx +42 -42
  313. package/src/aldehyde/controls/enum-tag/index.tsx +45 -45
  314. package/src/aldehyde/controls/field-history/index.tsx +81 -81
  315. package/src/aldehyde/controls/file-export/select-code-export.tsx +40 -40
  316. package/src/aldehyde/controls/file-view/drawer-file-view.tsx +117 -117
  317. package/src/aldehyde/controls/file-view/index.less +9 -9
  318. package/src/aldehyde/controls/file-view/index.tsx +148 -148
  319. package/src/aldehyde/controls/file-view/multi-file-view.tsx +39 -39
  320. package/src/aldehyde/controls/file-view/newin-file-view.tsx +40 -40
  321. package/src/aldehyde/controls/html-editor/draft.tsx +136 -136
  322. package/src/aldehyde/controls/html-editor/index.less +67 -67
  323. package/src/aldehyde/controls/icon-selector/app-icon-selector.tsx +68 -68
  324. package/src/aldehyde/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.css +147 -147
  325. package/src/aldehyde/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.json +240 -240
  326. package/src/aldehyde/controls/icon-selector/pc-icon-selector.tsx +68 -68
  327. package/src/aldehyde/controls/input-number/index.tsx +148 -148
  328. package/src/aldehyde/controls/input-range/index.tsx +59 -59
  329. package/src/aldehyde/controls/password-setter/index.css +2 -2
  330. package/src/aldehyde/controls/password-setter/index.js +88 -88
  331. package/src/aldehyde/controls/progress/index.tsx +74 -74
  332. package/src/aldehyde/controls/qr-code/index.less +28 -28
  333. package/src/aldehyde/controls/qr-code/index.tsx +40 -40
  334. package/src/aldehyde/controls/relation-existion/index.css +3 -3
  335. package/src/aldehyde/controls/relation-existion/index.tsx +144 -144
  336. package/src/aldehyde/controls/rfield/index.css +4 -4
  337. package/src/aldehyde/controls/rfield/index.tsx +225 -225
  338. package/src/aldehyde/controls/select/index.tsx +216 -216
  339. package/src/aldehyde/controls/signature/index.tsx +226 -226
  340. package/src/aldehyde/controls/single-checkbox/index.tsx +18 -18
  341. package/src/aldehyde/controls/steps/index.tsx +59 -59
  342. package/src/aldehyde/controls/text/ellipsis-text.tsx +98 -98
  343. package/src/aldehyde/controls/text/index.less +7 -7
  344. package/src/aldehyde/controls/tree-select/navigation-tree.tsx +122 -122
  345. package/src/aldehyde/controls/tree-select/tree-entity-select.tsx +121 -121
  346. package/src/aldehyde/controls/upload/index.tsx +128 -128
  347. package/src/aldehyde/controls/upload/mult-file-upload.tsx +240 -240
  348. package/src/aldehyde/controls/view-control.tsx +289 -289
  349. package/src/aldehyde/custom-page/custom-detail-modal-page.tsx +69 -69
  350. package/src/aldehyde/custom-page/custom-page-router.tsx +64 -64
  351. package/src/aldehyde/custom-page/def-custom-page.tsx +17 -17
  352. package/src/aldehyde/custom-page/dtmpl-custom-edit-modal-page.tsx +88 -88
  353. package/src/aldehyde/detail/button/bottom-submit-button-bar.tsx +91 -91
  354. package/src/aldehyde/detail/button/cquery-button-bar.tsx +144 -144
  355. package/src/aldehyde/detail/button/edit-button.tsx +61 -61
  356. package/src/aldehyde/detail/button/fix-right-submit-button-bar.tsx +186 -186
  357. package/src/aldehyde/detail/button/index.css +42 -42
  358. package/src/aldehyde/detail/button/inline-edit-button.tsx +40 -40
  359. package/src/aldehyde/detail/button/submit-button-bar.tsx +57 -57
  360. package/src/aldehyde/detail/button/view-button.tsx +64 -64
  361. package/src/aldehyde/detail/dtmpl.css +67 -67
  362. package/src/aldehyde/detail/edit/dtmpl-edit.tsx +279 -279
  363. package/src/aldehyde/detail/edit/fields-edit-card.tsx +145 -145
  364. package/src/aldehyde/detail/edit/modal-row-edit.tsx +95 -95
  365. package/src/aldehyde/detail/edit/popover-edit-card.tsx +167 -167
  366. package/src/aldehyde/detail/edit/popover-editor.tsx +70 -70
  367. package/src/aldehyde/detail/edit/post-result/index.tsx +86 -86
  368. package/src/aldehyde/detail/rightbar/index.css +34 -34
  369. package/src/aldehyde/detail/rightbar/index.tsx +92 -92
  370. package/src/aldehyde/detail/tooltipbar/index.tsx +32 -32
  371. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +288 -288
  372. package/src/aldehyde/detail/view/dtmpl-view.tsx +314 -314
  373. package/src/aldehyde/detail/view/field-view-group.tsx +88 -88
  374. package/src/aldehyde/detail/view/modal-dtmpl-view.tsx +73 -73
  375. package/src/aldehyde/detail/view/snapshot-timeline.tsx +231 -231
  376. package/src/aldehyde/detail/view/tab-act-dtmpl-view.tsx +304 -304
  377. package/src/aldehyde/detail/view/view-compare-panel.tsx +57 -57
  378. package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +8 -6
  379. package/src/aldehyde/draw-canvas-edit/components/main-header/index.less +3 -0
  380. package/src/aldehyde/draw-canvas-edit/components/render/components/index.ts +3 -0
  381. package/src/aldehyde/draw-canvas-edit/components/render/components/workstation-component.tsx +104 -0
  382. package/src/aldehyde/draw-canvas-edit/components/render/draws/bg-draw.ts +176 -160
  383. package/src/aldehyde/draw-canvas-edit/components/render/draws/contextmenu-draw.ts +329 -305
  384. package/src/aldehyde/draw-canvas-edit/components/render/graphs/bezier.ts +542 -542
  385. package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +2 -2
  386. package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +3 -3
  387. package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +3 -3
  388. package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +2 -2
  389. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-outside-handlers.ts +72 -157
  390. package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +7 -1
  391. package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +396 -390
  392. package/src/aldehyde/draw-canvas-edit/components/render/index.ts +808 -799
  393. package/src/aldehyde/draw-canvas-edit/components/render/tools/attract-tool.ts +457 -437
  394. package/src/aldehyde/draw-canvas-edit/components/render/tools/component-factory.ts +270 -0
  395. package/src/aldehyde/draw-canvas-edit/components/render/tools/copy-tool.ts +244 -266
  396. package/src/aldehyde/draw-canvas-edit/components/render/tools/import-export-tool.ts +576 -600
  397. package/src/aldehyde/draw-canvas-edit/components/render/tools/index.ts +10 -9
  398. package/src/aldehyde/draw-canvas-edit/components/render/tools/position-tool.ts +191 -191
  399. package/src/aldehyde/draw-canvas-edit/components/render/tools/selection-tool.ts +140 -129
  400. package/src/aldehyde/draw-canvas-edit/components/render/types.ts +294 -291
  401. package/src/aldehyde/draw-canvas-edit/components/setting-form/imag-upload.tsx +2 -1
  402. package/src/aldehyde/draw-canvas-edit/components/setting-form/index.tsx +291 -293
  403. package/src/aldehyde/draw-canvas-edit/constant.ts +5 -5
  404. package/src/aldehyde/draw-canvas-edit/index.less +48 -48
  405. package/src/aldehyde/draw-canvas-edit/index.tsx +201 -198
  406. package/src/aldehyde/draw-canvas-view/index.less +59 -59
  407. package/src/aldehyde/draw-canvas-view/index.tsx +49 -47
  408. package/src/aldehyde/draw-canvas-view/view.tsx +240 -212
  409. package/src/aldehyde/export/export-frame.css +2 -2
  410. package/src/aldehyde/export/export-frame.tsx +301 -301
  411. package/src/aldehyde/export/select-code-export-frame.tsx +212 -212
  412. package/src/aldehyde/form/criteria-form.tsx +604 -604
  413. package/src/aldehyde/form/dtmpl-form.css +3 -3
  414. package/src/aldehyde/form/dtmpl-form.tsx +552 -543
  415. package/src/aldehyde/form/field-group-form.tsx +102 -102
  416. package/src/aldehyde/form/fields-form.tsx +45 -45
  417. package/src/aldehyde/form/form-Item-group.tsx +245 -245
  418. package/src/aldehyde/form/index.css +12 -12
  419. package/src/aldehyde/hooks/use-match-route/index.tsx +62 -62
  420. package/src/aldehyde/hooks/use-tabs/index.tsx +139 -139
  421. package/src/aldehyde/hooks/useVarCssColor.ts +6 -6
  422. package/src/aldehyde/icon/aliIcon.tsx +9 -9
  423. package/src/aldehyde/icon/index.tsx +28 -28
  424. package/src/aldehyde/import/excel-import.tsx +450 -450
  425. package/src/aldehyde/import/index.css +53 -53
  426. package/src/aldehyde/import/template.css +50 -50
  427. package/src/aldehyde/index.tsx +220 -220
  428. package/src/aldehyde/layout/MainPage.tsx +334 -334
  429. package/src/aldehyde/layout/common.css +64 -64
  430. package/src/aldehyde/layout/coverstyle.css +51 -51
  431. package/src/aldehyde/layout/footer/index.css +5 -5
  432. package/src/aldehyde/layout/footer/index.js +17 -17
  433. package/src/aldehyde/layout/header/index.css +122 -122
  434. package/src/aldehyde/layout/header/index.tsx +152 -152
  435. package/src/aldehyde/layout/menu/block.css +7 -7
  436. package/src/aldehyde/layout/menu/block.tsx +174 -174
  437. package/src/aldehyde/layout/menu/l2menu-message-bar.tsx +160 -160
  438. package/src/aldehyde/layout/menu/l2menu-quick-bar.tsx +175 -175
  439. package/src/aldehyde/layout/menu/menu-2layers.tsx +117 -117
  440. package/src/aldehyde/layout/menu/menu-render.tsx +168 -168
  441. package/src/aldehyde/layout/menu/message-bar.less +73 -73
  442. package/src/aldehyde/layout/menu/reset-password.tsx +255 -255
  443. package/src/aldehyde/layout/menu/user-bar.tsx +259 -259
  444. package/src/aldehyde/layout/menu/userinfo-bar.tsx +69 -69
  445. package/src/aldehyde/layout/sidebar/index.css +57 -57
  446. package/src/aldehyde/layout/sidebar/index.tsx +84 -84
  447. package/src/aldehyde/layout2/components/icon-font.tsx +7 -7
  448. package/src/aldehyde/layout2/components/screenfull-button.tsx +21 -21
  449. package/src/aldehyde/layout2/components/search-menu.tsx +85 -85
  450. package/src/aldehyde/layout2/components/system-messages.tsx +75 -75
  451. package/src/aldehyde/layout2/components/theme-button.tsx +65 -65
  452. package/src/aldehyde/layout2/components/user-button.tsx +258 -258
  453. package/src/aldehyde/layout2/components/user-notification.tsx +74 -74
  454. package/src/aldehyde/layout2/css/header.css +41 -41
  455. package/src/aldehyde/layout2/css/sider.less +17 -17
  456. package/src/aldehyde/layout2/css/tabs-layout.less +18 -18
  457. package/src/aldehyde/layout2/header.tsx +278 -278
  458. package/src/aldehyde/layout2/layout-context.tsx +95 -95
  459. package/src/aldehyde/layout2/main.tsx +30 -30
  460. package/src/aldehyde/layout2/page.tsx +315 -315
  461. package/src/aldehyde/layout2/sider.tsx +230 -230
  462. package/src/aldehyde/layout2/tabs/tabs-context.tsx +37 -37
  463. package/src/aldehyde/layout2/tabs/tabs-layout.tsx +146 -146
  464. package/src/aldehyde/layout2/type/layout-type.ts +15 -15
  465. package/src/aldehyde/layout2/util/menu-util.tsx +125 -125
  466. package/src/aldehyde/layout3/components/tabs-layout.tsx +110 -110
  467. package/src/aldehyde/layout3/components/time.tsx +25 -25
  468. package/src/aldehyde/layout3/css/header.less +195 -195
  469. package/src/aldehyde/layout3/css/main.less +161 -161
  470. package/src/aldehyde/layout3/css/sider.less +32 -32
  471. package/src/aldehyde/layout3/css/tabs-layout.less +38 -38
  472. package/src/aldehyde/layout3/header.tsx +187 -187
  473. package/src/aldehyde/layout3/main.tsx +29 -29
  474. package/src/aldehyde/layout3/page.tsx +110 -110
  475. package/src/aldehyde/layout3/sider.tsx +198 -198
  476. package/src/aldehyde/layout4/components/tabs-layout.tsx +110 -110
  477. package/src/aldehyde/layout4/css/header.less +196 -196
  478. package/src/aldehyde/layout4/css/main.less +154 -154
  479. package/src/aldehyde/layout4/css/sider.less +37 -37
  480. package/src/aldehyde/layout4/css/tabs-layout.less +42 -42
  481. package/src/aldehyde/layout4/header.tsx +190 -190
  482. package/src/aldehyde/layout4/main.tsx +29 -29
  483. package/src/aldehyde/layout4/page.tsx +125 -125
  484. package/src/aldehyde/layout4/sider.tsx +201 -201
  485. package/src/aldehyde/layout5/css/header.less +35 -35
  486. package/src/aldehyde/layout5/css/sider.less +18 -18
  487. package/src/aldehyde/layout5/header.tsx +204 -204
  488. package/src/aldehyde/layout5/page.tsx +107 -107
  489. package/src/aldehyde/layout5/sider.tsx +235 -235
  490. package/src/aldehyde/list/calendar/index.less +20 -20
  491. package/src/aldehyde/list/calendar/index.tsx +157 -157
  492. package/src/aldehyde/list/card-list/card-list-item.tsx +111 -111
  493. package/src/aldehyde/list/card-list/index.less +154 -154
  494. package/src/aldehyde/list/card-list/index.tsx +83 -83
  495. package/src/aldehyde/list/gantt/index.less +8 -8
  496. package/src/aldehyde/list/gantt/index.tsx +508 -508
  497. package/src/aldehyde/list/vertical-list/index.less +208 -208
  498. package/src/aldehyde/list/vertical-list/index.tsx +55 -55
  499. package/src/aldehyde/list/vertical-list/item.tsx +136 -136
  500. package/src/aldehyde/locale/LocaleButton.tsx +48 -48
  501. package/src/aldehyde/locale/LocaleProvider.tsx +265 -265
  502. package/src/aldehyde/locale/langMp.ts +45 -45
  503. package/src/aldehyde/locale/translate.ts +80 -80
  504. package/src/aldehyde/locale/useLocale.ts +72 -72
  505. package/src/aldehyde/login/context-setter.tsx +130 -130
  506. package/src/aldehyde/login/index.css +19 -19
  507. package/src/aldehyde/login/login.tsx +255 -255
  508. package/src/aldehyde/login/router-login.tsx +107 -107
  509. package/src/aldehyde/login/vertify/index.css +143 -143
  510. package/src/aldehyde/login/vertify/index.tsx +360 -360
  511. package/src/aldehyde/login/vertify/tool.ts +13 -13
  512. package/src/aldehyde/login2/login-page.tsx +92 -92
  513. package/src/aldehyde/login2/login.tsx +226 -226
  514. package/src/aldehyde/login3/index.less +136 -136
  515. package/src/aldehyde/login3/login-page.tsx +71 -71
  516. package/src/aldehyde/lowcode-components/act-table/index.less +26 -26
  517. package/src/aldehyde/lowcode-components/act-table/index.tsx +139 -139
  518. package/src/aldehyde/lowcode-components/assets/lowcode-constant.tsx +12 -12
  519. package/src/aldehyde/lowcode-components/bar-chart/index.tsx +268 -268
  520. package/src/aldehyde/lowcode-components/base-button/index.less +7 -7
  521. package/src/aldehyde/lowcode-components/base-button/index.tsx +197 -197
  522. package/src/aldehyde/lowcode-components/base-image/index.tsx +220 -220
  523. package/src/aldehyde/lowcode-components/base-map/index.tsx +292 -292
  524. package/src/aldehyde/lowcode-components/base-radio/index.less +23 -23
  525. package/src/aldehyde/lowcode-components/base-radio/index.tsx +157 -157
  526. package/src/aldehyde/lowcode-components/base-table/index.tsx +268 -268
  527. package/src/aldehyde/lowcode-components/base-tabs/index.less +14 -14
  528. package/src/aldehyde/lowcode-components/base-tabs/index.tsx +183 -183
  529. package/src/aldehyde/lowcode-components/base-text/index.tsx +58 -58
  530. package/src/aldehyde/lowcode-components/border/border1/index.tsx +70 -70
  531. package/src/aldehyde/lowcode-components/border/border10/index.less +26 -26
  532. package/src/aldehyde/lowcode-components/border/border10/index.tsx +45 -45
  533. package/src/aldehyde/lowcode-components/border/border11/index.less +17 -17
  534. package/src/aldehyde/lowcode-components/border/border11/index.tsx +232 -232
  535. package/src/aldehyde/lowcode-components/border/border12/index.less +13 -13
  536. package/src/aldehyde/lowcode-components/border/border12/index.tsx +115 -115
  537. package/src/aldehyde/lowcode-components/border/border13/index.less +13 -13
  538. package/src/aldehyde/lowcode-components/border/border13/index.tsx +69 -69
  539. package/src/aldehyde/lowcode-components/border/border2/index.less +17 -17
  540. package/src/aldehyde/lowcode-components/border/border2/index.tsx +51 -51
  541. package/src/aldehyde/lowcode-components/border/border3/index.less +25 -25
  542. package/src/aldehyde/lowcode-components/border/border3/index.tsx +61 -61
  543. package/src/aldehyde/lowcode-components/border/border4/index.less +72 -72
  544. package/src/aldehyde/lowcode-components/border/border4/index.tsx +79 -79
  545. package/src/aldehyde/lowcode-components/border/border5/index.less +35 -35
  546. package/src/aldehyde/lowcode-components/border/border5/index.tsx +75 -75
  547. package/src/aldehyde/lowcode-components/border/border6/index.less +17 -17
  548. package/src/aldehyde/lowcode-components/border/border6/index.tsx +60 -60
  549. package/src/aldehyde/lowcode-components/border/border7/index.less +26 -26
  550. package/src/aldehyde/lowcode-components/border/border7/index.tsx +75 -75
  551. package/src/aldehyde/lowcode-components/border/border8/index.less +13 -13
  552. package/src/aldehyde/lowcode-components/border/border8/index.tsx +84 -84
  553. package/src/aldehyde/lowcode-components/border/border9/index.less +13 -13
  554. package/src/aldehyde/lowcode-components/border/border9/index.tsx +154 -154
  555. package/src/aldehyde/lowcode-components/capsule-bar-chart/index.tsx +290 -290
  556. package/src/aldehyde/lowcode-components/carousel/index.tsx +218 -218
  557. package/src/aldehyde/lowcode-components/circular-progress-chart/index.tsx +263 -263
  558. package/src/aldehyde/lowcode-components/column-3d-chart/index.tsx +438 -438
  559. package/src/aldehyde/lowcode-components/column-chart/index.tsx +293 -293
  560. package/src/aldehyde/lowcode-components/data-number/index.tsx +219 -219
  561. package/src/aldehyde/lowcode-components/data.d.ts +18 -18
  562. package/src/aldehyde/lowcode-components/decoration/decoration1/index.less +7 -7
  563. package/src/aldehyde/lowcode-components/decoration/decoration1/index.tsx +153 -153
  564. package/src/aldehyde/lowcode-components/decoration/decoration10/index.less +5 -5
  565. package/src/aldehyde/lowcode-components/decoration/decoration10/index.tsx +89 -89
  566. package/src/aldehyde/lowcode-components/decoration/decoration11/index.less +5 -5
  567. package/src/aldehyde/lowcode-components/decoration/decoration11/index.tsx +133 -133
  568. package/src/aldehyde/lowcode-components/decoration/decoration2/index.less +6 -6
  569. package/src/aldehyde/lowcode-components/decoration/decoration2/index.tsx +61 -61
  570. package/src/aldehyde/lowcode-components/decoration/decoration3/index.less +7 -7
  571. package/src/aldehyde/lowcode-components/decoration/decoration3/index.tsx +87 -87
  572. package/src/aldehyde/lowcode-components/decoration/decoration4/index.less +29 -29
  573. package/src/aldehyde/lowcode-components/decoration/decoration4/index.tsx +53 -53
  574. package/src/aldehyde/lowcode-components/decoration/decoration5/index.less +3 -3
  575. package/src/aldehyde/lowcode-components/decoration/decoration5/index.tsx +116 -116
  576. package/src/aldehyde/lowcode-components/decoration/decoration6/index.less +7 -7
  577. package/src/aldehyde/lowcode-components/decoration/decoration6/index.tsx +121 -121
  578. package/src/aldehyde/lowcode-components/decoration/decoration7/index.less +4 -4
  579. package/src/aldehyde/lowcode-components/decoration/decoration7/index.tsx +70 -70
  580. package/src/aldehyde/lowcode-components/decoration/decoration8/index.less +14 -14
  581. package/src/aldehyde/lowcode-components/decoration/decoration8/index.tsx +122 -122
  582. package/src/aldehyde/lowcode-components/decoration/decoration9/index.less +4 -4
  583. package/src/aldehyde/lowcode-components/decoration/decoration9/index.tsx +196 -196
  584. package/src/aldehyde/lowcode-components/effectScatter-map/index.tsx +315 -315
  585. package/src/aldehyde/lowcode-components/effectScatter-map-3d/index.tsx +419 -419
  586. package/src/aldehyde/lowcode-components/gauge-chart/index.tsx +254 -254
  587. package/src/aldehyde/lowcode-components/index.ts +130 -130
  588. package/src/aldehyde/lowcode-components/line-bar-chart/index.tsx +300 -300
  589. package/src/aldehyde/lowcode-components/line-chart/index.tsx +290 -290
  590. package/src/aldehyde/lowcode-components/liquid-chart/index.tsx +250 -250
  591. package/src/aldehyde/lowcode-components/lowcode-view/component/assets.ts +478 -478
  592. package/src/aldehyde/lowcode-components/lowcode-view/component/component-controller.ts +153 -153
  593. package/src/aldehyde/lowcode-components/lowcode-view/component/component-definition.ts +23 -23
  594. package/src/aldehyde/lowcode-components/lowcode-view/component/loading.tsx +20 -20
  595. package/src/aldehyde/lowcode-components/lowcode-view/component/util.ts +27 -27
  596. package/src/aldehyde/lowcode-components/lowcode-view/index.less +19 -19
  597. package/src/aldehyde/lowcode-components/lowcode-view/index.tsx +277 -277
  598. package/src/aldehyde/lowcode-components/lowcode-view/interface.ts +189 -189
  599. package/src/aldehyde/lowcode-components/pie-chart/index.tsx +349 -349
  600. package/src/aldehyde/lowcode-components/progress-chart/index.tsx +295 -295
  601. package/src/aldehyde/lowcode-components/radar-chart/index.tsx +322 -322
  602. package/src/aldehyde/lowcode-components/search-form/index.less +25 -25
  603. package/src/aldehyde/lowcode-components/search-form/index.tsx +121 -121
  604. package/src/aldehyde/lowcode-components/stroke-animation/index.tsx +219 -219
  605. package/src/aldehyde/module/block-menu-tree-drawer.tsx +118 -118
  606. package/src/aldehyde/module/criteria-page.tsx1 +175 -175
  607. package/src/aldehyde/module/draggable-modal.tsx +66 -66
  608. package/src/aldehyde/module/dtmpl-edit-card.tsx +437 -437
  609. package/src/aldehyde/module/dtmpl-edit-drawer.tsx +23 -23
  610. package/src/aldehyde/module/dtmpl-edit-modal.tsx +25 -25
  611. package/src/aldehyde/module/dtmpl-edit-page.tsx +558 -555
  612. package/src/aldehyde/module/dtmpl-editor.tsx +165 -165
  613. package/src/aldehyde/module/dtmpl-view-card.tsx +64 -64
  614. package/src/aldehyde/module/dtmpl-view-drawer.tsx +71 -71
  615. package/src/aldehyde/module/dtmpl-view-modal.tsx +56 -56
  616. package/src/aldehyde/module/embed-dtmpl-edit-page.tsx +137 -137
  617. package/src/aldehyde/module/index.less +4 -4
  618. package/src/aldehyde/module/ltmpl-drawer.tsx +60 -60
  619. package/src/aldehyde/module/ltmpl-modal.tsx +63 -63
  620. package/src/aldehyde/module/ltmpl-table.tsx +378 -378
  621. package/src/aldehyde/module/ttmpl-tree.tsx +47 -47
  622. package/src/aldehyde/routable/dtmpl-route.tsx +173 -173
  623. package/src/aldehyde/routable/import-route.tsx +35 -35
  624. package/src/aldehyde/routable/index.less +25 -25
  625. package/src/aldehyde/routable/ltmpl-route.tsx +539 -539
  626. package/src/aldehyde/routable/splitview-ltmpl-route.tsx +377 -377
  627. package/src/aldehyde/routable/ttmpl-route.tsx +93 -93
  628. package/src/aldehyde/routable/withroute.tsx +36 -36
  629. package/src/aldehyde/sso-Login/index.tsx +73 -73
  630. package/src/aldehyde/sso-Login/service/index.js +16 -16
  631. package/src/aldehyde/sso-Login/service/login.js +75 -75
  632. package/src/aldehyde/table/act-table.tsx +1831 -1831
  633. package/src/aldehyde/table/column/column-builder.tsx +864 -864
  634. package/src/aldehyde/table/column/column-selector.tsx +130 -130
  635. package/src/aldehyde/table/column/index.less +63 -63
  636. package/src/aldehyde/table/column/summary-builder.tsx +712 -712
  637. package/src/aldehyde/table/column/theme-color-getter.tsx +25 -25
  638. package/src/aldehyde/table/control-table-x-axis-wrapper.tsx +80 -80
  639. package/src/aldehyde/table/index.css +211 -211
  640. package/src/aldehyde/table/l2-act-table.tsx +91 -91
  641. package/src/aldehyde/table/modal-select-table.tsx +308 -308
  642. package/src/aldehyde/table/page-config-button.tsx +203 -203
  643. package/src/aldehyde/table/pagination.css +14 -14
  644. package/src/aldehyde/table/pagination.tsx +81 -81
  645. package/src/aldehyde/table/query-table.tsx +658 -658
  646. package/src/aldehyde/table/relation-table.tsx +1093 -1093
  647. package/src/aldehyde/table/report-table.tsx +125 -125
  648. package/src/aldehyde/table/resizable-table.tsx +97 -97
  649. package/src/aldehyde/table/select-table.tsx +559 -548
  650. package/src/aldehyde/table/selected-rows-card.tsx +78 -78
  651. package/src/aldehyde/table/stat/restat.tsx +122 -122
  652. package/src/aldehyde/table/table-util.tsx +25 -25
  653. package/src/aldehyde/tmpl/control-type-supportor.tsx +154 -154
  654. package/src/aldehyde/tmpl/hc-data-source.tsx +566 -566
  655. package/src/aldehyde/tmpl/hcservice-v3.tsx +1590 -1590
  656. package/src/aldehyde/tmpl/interface.tsx +919 -919
  657. package/src/aldehyde/tmpl/model-struc-v3.tsx +111 -111
  658. package/src/aldehyde/tmpl/superagent.js +146 -146
  659. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +585 -586
  660. package/src/aldehyde/tmpl/web-socket.ts +366 -366
  661. package/src/aldehyde/tree/act-tree.tsx +217 -217
  662. package/src/aldehyde/tree/block-menu-auth-tree.tsx +189 -189
  663. package/src/aldehyde/tree/index.css +22 -22
  664. package/src/aldehyde/tree/navigation-tree.tsx +39 -39
  665. package/src/aldehyde/tree/tmpl-tree.tsx +751 -751
  666. package/src/aldehyde/tree/tree-node.tsx +73 -73
  667. package/src/aldehyde/tree/tree-utils.tsx +317 -317
  668. package/src/aldehyde/units/EncryptUtils.js +37 -37
  669. package/src/aldehyde/units/image.d.ts +7 -7
  670. package/src/aldehyde/units/index.tsx +1367 -1367
  671. package/src/aldehyde/units/storage.js +2 -2
  672. package/src/aldehyde/utils/dsu.ts +27 -27
  673. package/src/aldehyde/welcome/HCWelcome.js +404 -404
  674. package/src/aldehyde/welcome/HCWelcome1.js +259 -259
  675. package/src/aldehyde/welcome/components/menu-card.less +96 -96
  676. package/src/aldehyde/welcome/components/menu-card.tsx +70 -70
  677. package/src/aldehyde/welcome/components/page-card.less +49 -49
  678. package/src/aldehyde/welcome/components/page-card.tsx +97 -97
  679. package/src/aldehyde/welcome/components/quick-entrance.less +120 -120
  680. package/src/aldehyde/welcome/components/quick-entrance.tsx +80 -80
  681. package/src/aldehyde/welcome/components/user-menus.less +192 -192
  682. package/src/aldehyde/welcome/components/user-menus.tsx +279 -279
  683. package/src/aldehyde/welcome/components/workbench.less +118 -118
  684. package/src/aldehyde/welcome/components/workbench.tsx +146 -146
  685. package/src/aldehyde/welcome/index.css +13 -13
@@ -1,601 +1,577 @@
1
- import Konva from 'konva';
2
- import { nanoid } from 'nanoid';
3
- import { Render } from '../index';
4
- import { LinkDraw, GraphDraw, RulerDraw, PreviewDraw } from '../draws';
5
- import { AssetSettings, AssetType } from '../types';
6
- import { BezierSceneFunc } from '../utils/bezier-scene-func';
7
-
8
- // 导入导出
9
-
10
- export class ImportExportTool {
11
-
12
- private render: Render;
13
- constructor(render: Render) {
14
- this.render = render;
15
- }
16
-
17
- /**
18
- * 获得显示内容
19
- * @param withLink 是否包含线条
20
- * @returns
21
- */
22
- getView(withLink: boolean = false) {
23
- // 复制画布
24
- const copy = this.render.stage.clone();
25
- // 提取 main layer 备用
26
- const main = copy.find('#main')[0] as Konva.Layer;
27
- const cover = copy.find('#cover')[0] as Konva.Layer;
28
- // 暂时清空所有 layer
29
- const copyChildren = copy.getChildren();
30
- copy.removeChildren();
31
- if (main && cover) {
32
- // 提取节点
33
- let nodes = main.getChildren((node) => !this.render.ignore(node));
34
- // 移除多余结构
35
- for (const node of nodes) {
36
- // 如果当前被选中,listening 会是 false,需恢复
37
- node.listening(true);
38
- // 恢复 draggable(因为,绘制 Graph 的时候,不允许直接拖动其他素材)
39
- node.draggable(!this.render.config.readonly);
40
- for (const child of (node as Konva.Group).children) {
41
- if (this.render.ignoreSelect(child)) {
42
- child.remove();
43
- }
44
- }
45
- }
46
-
47
- if (withLink) {
48
- // 从 Link group 中提取 连接线
49
- const linkDraw = cover.children.find((o) => o.attrs.name === LinkDraw.name) as Konva.Group;
50
- if (linkDraw) {
51
- nodes = nodes.concat(linkDraw.children.filter((o) => o.attrs.name === 'link-line'));
52
- }
53
- }
54
-
55
- // 重新装载节点
56
- const layer = new Konva.Layer();
57
- layer.add(...nodes);
58
- nodes = layer.getChildren();
59
-
60
- for (const node of nodes) {
61
- if (node.attrs.nodeMousedownPos) {
62
- // 修正正在选中的节点透明度
63
- node.setAttrs({ opacity: copy.attrs.lastOpacity ?? 1 });
64
- }
65
- }
66
-
67
- // 重新装载 layer
68
- copy.add(layer);
69
- main.removeChildren();
70
- cover.removeChildren();
71
- }
72
-
73
- copyChildren.forEach((o) => o.destroy());
74
- // 返回可视节点和 layer
75
- return copy;
76
- }
77
-
78
- // 保存
79
- save() {
80
- const copy = this.getView();
81
- const json = copy.toJSON();
82
- copy.destroy();
83
- // 通过 stage api 导出 json
84
- return json;
85
- }
86
-
87
- // 加载 image(用于导入)
88
- loadImage(src: string) {
89
- return new Promise<HTMLImageElement | null>((resolve) => {
90
- const img = new Image();
91
- img.onload = () => {
92
- // 返回加载完成的图片 element
93
- resolve(img);
94
- };
95
- img.onerror = () => {
96
- resolve(null);
97
- };
98
- img.src = src;
99
- });
100
- }
101
-
102
- // 恢复图片(用于导入)
103
- async restoreImage(nodes: Konva.Node[] = []) {
104
- for (const node of nodes) {
105
- if (node instanceof Konva.Group) {
106
- // 递归
107
- await this.restoreImage(node.getChildren());
108
- } else if (node instanceof Konva.Image) {
109
- // 处理图片
110
- if (node.attrs.svgXML) {
111
- // svg 素材
112
- const blob = new Blob([node.attrs.svgXML], { type: 'image/svg+xml' });
113
- // dataurl
114
- const url = URL.createObjectURL(blob);
115
- // 加载为图片 element
116
- const image = await this.loadImage(url);
117
- if (image) {
118
- // 设置图片
119
- node.image(image);
120
- }
121
- } else if (node.attrs.gif) {
122
- // gif 素材
123
- const imageNode = await this.render.assetTool.loadGif(node.attrs.gif);
124
- if (imageNode) {
125
- // 设置图片
126
- node.image(imageNode.image());
127
- }
128
- } else if (node.attrs.src) {
129
- // 其他图片素材
130
- const image = await this.loadImage(node.attrs.src);
131
- if (image) {
132
- // 设置图片
133
- node.image(image);
134
- }
135
- }
136
- }
137
- }
138
- }
139
-
140
- // 恢复图形
141
- restoreGraph(nodes: Konva.Node[] = []) {
142
- for (const node of nodes) {
143
- if (node instanceof Konva.Group && node.attrs.assetType === AssetType.Graph) {
144
- if (node.attrs.graphType === "Bezier") {
145
- const graph = node.findOne('.graph');
146
- if (graph instanceof Konva.Arrow) {
147
- graph.sceneFunc(BezierSceneFunc);
148
- }
149
- }
150
- const hoverRect = node.findOne('.hoverRect');
151
- if (hoverRect instanceof Konva.Rect) {
152
- hoverRect.on('mouseenter', () => {
153
- // 防止进入调整点,重复处理
154
- if (!node.attrs.hoverAnchor) {
155
- node.setAttr('hover', true);
156
- this.render.redraw([GraphDraw.name]);
157
- }
158
- setTimeout(() => {
159
- // 调整产生 redraw,导致离开调整点不触发其 mouseleave(进入其他元素区域除外)
160
- // 在此静态补充"离开调整点"
161
- // 不影响正常处理(调整点会不停 hoverAnchor = true)
162
- node.setAttr('hoverAnchor', false);
163
- });
164
-
165
- // 显示 连接点
166
- this.render.linkTool.pointsVisible(true, node);
167
- });
168
- hoverRect.on('mouseleave', () => {
169
- // 延迟事件,使调整点的 mouseleave 优先
170
- setTimeout(() => {
171
- // 防止进入调整点,重复处理
172
- // 补充 2,快速调整会漏掉
173
- if (!node.attrs.hoverAnchor) {
174
- node.setAttr('hover', false);
175
- node.setAttr('hoverAnchor', false);
176
- this.render.redraw([GraphDraw.name]);
177
- }
178
- });
179
- // 隐藏 连接点
180
- this.render.linkTool.pointsVisible(false, node);
181
- // 隐藏 hover 框
182
- node.findOne('#hoverRect')?.visible(false);
183
- });
184
- }
185
- }
186
- }
187
- }
188
-
189
- // 恢复
190
- async restore(json: string, silent = false) {
191
-
192
- try {
193
- this.render.emit('loading', true);
194
- // 清空选择
195
- this.render.selectionTool.selectingClear();
196
- this.render.linkTool.selectingClear();
197
- // 清空 main layer 节点
198
- this.render.layer.getChildren().forEach((o) => o.destroy());
199
- this.render.layer.removeChildren();
200
-
201
- // 加载 json,提取节点
202
- const container = document.createElement('div');
203
- const stage = Konva.Node.create(json, container);
204
- const main = stage.getChildren()[0];
205
- const nodes = main.getChildren();
206
- // 恢复节点图片素材
207
- await this.restoreImage(nodes);
208
- await this.restoreGraph(nodes);
209
- for (const node of nodes) {
210
- // 重置旧数据节点为可 draggable
211
- // 为了使旧数据和新节点一样
212
- // 可以直接被拖动
213
- node.draggable(!this.render.config.readonly);
214
- node.off('mouseenter');
215
- node.on('mouseenter', () => {
216
- // 显示 连接点
217
- this.render.linkTool.pointsVisible(true, node);
218
- });
219
- // 恢复的时候,恢复 hoverRect
220
- node.add(
221
- new Konva.Rect({
222
- id: 'hoverRect',
223
- width: node.width(),
224
- height: node.height(),
225
- fill: 'rgba(0,255,0,0.3)',
226
- visible: false
227
- })
228
- );
229
- node.off('mouseleave');
230
- node.on('mouseleave', () => {
231
- // 隐藏 连接点
232
- this.render.linkTool.pointsVisible(false, node);
233
- // 隐藏 hover 框
234
- node.findOne('#hoverRect')?.visible(false);
235
- });
236
- }
237
- // main layer 插入新节点
238
- this.render.layer.add(...nodes);
239
- // 同步页面设置
240
- this.render.stage.setAttr('pageSettings', stage.attrs.pageSettings);
241
- this.render.emit('page-settings-change', this.render.getPageSettings());
242
- // 更新背景
243
- this.render.updateBackground();
244
- // 上一步、下一步 无需更新 history 记录
245
- if (!silent) {
246
- // 更新历史
247
- this.render.updateHistory();
248
- }
249
- // 隐藏 连接点
250
- this.render.linkTool.pointsVisible(false);
251
- // 重绘
252
- this.render.redraw([
253
- GraphDraw.name,
254
- LinkDraw.name,
255
- RulerDraw.name,
256
- PreviewDraw.name
257
- ]);
258
- stage.destroy();
259
- } catch (e) {
260
- console.error(e);
261
- } finally {
262
- this.render.emit('loading', false);
263
- }
264
- }
265
-
266
- // 获取图片
267
- getImage(pixelRatio = 1, bgColor?: string) {
268
- // 在 getAssetView 的基础上,增加背景即可
269
- const copy = this.getAssetView();
270
- // 背景层
271
- const bgLayer = new Konva.Layer();
272
- // 背景矩形
273
- const bg = new Konva.Rect({ listening: false });
274
-
275
- bg.setAttrs({
276
- x: 0,
277
- y: 0,
278
- width: copy.width(),
279
- height: copy.height(),
280
- fill: bgColor ?? this.render.getPageSettings().background
281
- });
282
- // 添加背景
283
- bgLayer.add(bg);
284
- const children = copy.getChildren() as Konva.Layer[];
285
- copy.removeChildren();
286
- copy.add(bgLayer);
287
- copy.add(children[0], ...children.slice(1));
288
- const url = copy.toDataURL({ pixelRatio });
289
- copy.destroy();
290
- // 通过 stage api 导出图片
291
- return url;
292
- }
293
-
294
- // 获取元素图片
295
- getAssetImage(pixelRatio = 1, bgColor?: string) {
296
- // 获取可视节点和 layer
297
- const copy = this.getAssetView();
298
- // 背景层
299
- const bgLayer = new Konva.Layer();
300
- // 背景矩形
301
- const bg = new Konva.Rect({ listening: false });
302
- bg.setAttrs({
303
- x: -copy.x(),
304
- y: -copy.y(),
305
- width: copy.width(),
306
- height: copy.height(),
307
- fill: bgColor ?? this.render.getPageSettings().background
308
- });
309
- // 添加背景
310
- bgLayer.add(bg);
311
- // 插入背景
312
- const children = copy.getChildren();
313
- copy.removeChildren();
314
- copy.add(bgLayer);
315
- copy.add(children[0], ...children.slice(1));
316
- const url = copy.toDataURL({ pixelRatio });
317
- copy.destroy();
318
- // 通过 stage api 导出图片
319
- return url;
320
- }
321
-
322
- // blob to base64 url
323
- blobToBase64(blob: Blob, type: string): Promise<string> {
324
- return new Promise((resolve) => {
325
- const file = new File([blob], 'image', { type });
326
- const fileReader = new FileReader();
327
- fileReader.readAsDataURL(file);
328
- fileReader.onload = function () {
329
- resolve((this.result as string) ?? '');
330
- };
331
- });
332
- }
333
-
334
- // 替换 svg blob: 链接
335
- parseSvgImage(urls: string[]): Promise<string[]> {
336
- return new Promise((resolve) => {
337
- if (urls.length > 0) {
338
- Promise.all(urls.map((o) => fetch(o))).then((rs: Response[]) => {
339
- // fetch
340
- // 替换为 svg 嵌套
341
- Promise.all(rs.map((o) => o.text())).then((xmls: string[]) => {
342
- // svg xml
343
- resolve(xmls);
344
- });
345
- });
346
- } else {
347
- resolve([]);
348
- }
349
- });
350
- }
351
-
352
- // 替换其他 image 链接
353
- parseOtherImage(urls: string[]): Promise<string[]> {
354
- return new Promise((resolve) => {
355
- if (urls.length > 0) {
356
- Promise.all(urls.map((o) => fetch(o))).then((rs: Response[]) => {
357
- // fetch
358
- // 替换为 base64 url image
359
- Promise.all(rs.map((o) => o.blob())).then((bs: Blob[]) => {
360
- // blob
361
- Promise.all(bs.map((o) => this.blobToBase64(o, 'image/*'))).then((urls: string[]) => {
362
- // base64
363
- resolve(urls);
364
- });
365
- });
366
- });
367
- } else {
368
- resolve([]);
369
- }
370
- });
371
- }
372
-
373
- // 替换 image 链接
374
- parseImage(xml: string): Promise<string> {
375
- return new Promise((resolve) => {
376
- // 找出 blob:http 图片链接(目前发现只有 svg 是)
377
- const svgs = xml.match(/(?<=xlink:href=")blob:https?:\/\/[^"]+(?=")/g) ?? [];
378
- // 其他图片转为 base64
379
- const imgs = xml.match(/(?<=xlink:href=")(?<!blob:)[^"]+(?=")/g) ?? [];
380
- Promise.all([this.parseSvgImage(svgs), this.parseOtherImage(imgs)]).then(
381
- ([svgXmls, imgUrls]) => {
382
- // svg xml
383
- svgs.forEach((svg, idx) => {
384
- // 替换
385
- xml = xml.replace(
386
- new RegExp(`<image[^><]* xlink:href="${svg}"[^><]*/>`),
387
- svgXmls[idx].match(/<svg[^><]*>.*<\/svg>/)?.[0] ?? '' // 仅保留 svg 结构
388
- );
389
- });
390
- // base64
391
- imgs.forEach((img, idx) => {
392
- // 替换
393
- xml = xml.replace(`"${img}"`, `"${imgUrls[idx]}"`);
394
- });
395
- // 替换完成
396
- resolve(xml);
397
- }
398
- );
399
- });
400
- }
401
-
402
- /**
403
- * 获得显示内容(用于另存为元素)
404
- * @returns Konva.Stage
405
- */
406
- getAssetView() {
407
- const copy = this.getView(true);
408
- const children = copy.getChildren()[0].getChildren();
409
- const nodes: Konva.Stage | Konva.Layer | Konva.Group | Konva.Node[] = [...children];
410
-
411
- let minX = Infinity,
412
- maxX = -Infinity,
413
- minY = Infinity,
414
- maxY = -Infinity,
415
- minStartX = Infinity,
416
- minStartY = Infinity;
417
-
418
- const stageState = this.render.getStageState();
419
- for (const node of nodes) {
420
- if (node instanceof Konva.Group) {
421
- const { x, y, width, height } = ((rect) => ({
422
- x: this.render.toStageValue(rect.x - stageState.x),
423
- y: this.render.toStageValue(rect.y - stageState.y),
424
- width: this.render.toStageValue(rect.width),
425
- height: this.render.toStageValue(rect.height)
426
- }))(node.getClientRect());
427
- if (x < minX) {
428
- minX = x;
429
- }
430
- if (x + width > maxX) {
431
- maxX = x + width;
432
- }
433
- if (y < minY) {
434
- minY = y;
435
- }
436
- if (y + height > maxY) {
437
- maxY = y + height;
438
- }
439
- if (x < minStartX) {
440
- minStartX = x;
441
- }
442
- if (y < minStartY) {
443
- minStartY = y;
444
- }
445
-
446
- // 移除辅助元素
447
- if (node instanceof Konva.Group) {
448
- const clickMask = node.findOne('#click-mask');
449
- if (clickMask) {
450
- clickMask.destroy();
451
- }
452
- }
453
- } else if (node instanceof Konva.Line && node.name() === 'link-line') {
454
- // 连线占用空间
455
- const points = node.points();
456
- for (let i = 0; i < points.length; i += 2) {
457
- const [x, y] = [points[i], points[i + 1]];
458
- if (x < minX) {
459
- minX = x - 1;
460
- }
461
- if (x > maxX) {
462
- maxX = x + 1;
463
- }
464
- if (y < minY) {
465
- minY = y - 1;
466
- }
467
- if (y > maxY) {
468
- maxY = y + 1;
469
- }
470
- if (x < minStartX) {
471
- minStartX = x - 1;
472
- }
473
- if (y < minStartY) {
474
- minStartY = y - 1;
475
- }
476
- }
477
- }
478
- }
479
-
480
- for (const node of nodes) {
481
- if (node instanceof Konva.Group) {
482
- node.x(node.x() - minStartX);
483
- node.y(node.y() - minStartY);
484
- } else if (node instanceof Konva.Line && node.name() === 'link-line') {
485
- const points = node.points();
486
- for (let i = 0; i < points.length; i += 2) {
487
- points[i] = points[i] - minStartX;
488
- points[i + 1] = points[i + 1] - minStartY;
489
- }
490
- node.points(points);
491
- }
492
- }
493
-
494
- copy.x(0);
495
- copy.y(0);
496
- copy.width(maxX - minX);
497
- copy.height(maxY - minY);
498
- copy.scale({ x: 1, y: 1 });
499
- return copy;
500
- }
501
-
502
- /**
503
- * 获得元素(用于另存为元素)
504
- * @returns Konva.Stage
505
- */
506
- getAsset() {
507
- const copy = this.getAssetView();
508
- // 添加背景
509
- const background = this.render.getBackground();
510
- background.width(copy.width());
511
- background.height(copy.height());
512
- copy.children[0].add(background);
513
- background.moveToBottom();
514
- const json = copy.toJSON();
515
- const obj = JSON.parse(json);
516
- const assets = obj.children[0].children;
517
-
518
- for (const asset of assets) {
519
- if (asset.attrs.name === 'asset') {
520
- asset.attrs.name = 'sub-asset';
521
- }
522
- if (asset.attrs.selected) {
523
- asset.attrs.selected = false;
524
- }
525
- }
526
-
527
- this.render.linkTool.jsonIdCover(assets);
528
-
529
- // 通过 stage api 导出 json
530
- const result = JSON.stringify({
531
- ...obj.children[0],
532
- className: 'Group',
533
- attrs: {
534
- width: copy.width(),
535
- height: copy.height(),
536
- x: 0,
537
- y: 0
538
- }
539
- });
540
-
541
- copy.destroy();
542
- return result;
543
- }
544
-
545
- /**
546
- * 添加文字素材
547
- * @param pos 落点位置
548
- * @param settings 设置项
549
- * @returns
550
- */
551
- addTextAsset(pos: Konva.Vector2d, settings?: Partial<AssetSettings>) {
552
- // 获取页面默认设置
553
- const pageSettings = this.render.getPageSettings();
554
-
555
- // 合并设置
556
- const assetSettings: AssetSettings = {
557
- stroke: pageSettings.stroke,
558
- strokeWidth: pageSettings.strokeWidth,
559
- fill: pageSettings.fill,
560
- arrowStart: false,
561
- arrowEnd: false,
562
- fontSize: pageSettings.fontSize,
563
- textFill: pageSettings.textFill,
564
- text: 'Text',
565
- x: pos.x,
566
- y: pos.y,
567
- rotation: 0,
568
- tension: 0.5,
569
- ...settings
570
- };
571
-
572
- const group = new Konva.Group({
573
- id: nanoid(),
574
- name: 'asset',
575
- assetType: AssetType.Text,
576
- draggable: true,
577
- position: { x: pos.x, y: pos.y }
578
- });
579
-
580
- group.setAttr('assetSettings', assetSettings);
581
-
582
- const text = new Konva.Text({
583
- text: assetSettings.text,
584
- fill: assetSettings.textFill,
585
- fontSize: assetSettings.fontSize,
586
- draggable: false,
587
- name: 'text-node'
588
- });
589
-
590
- const bg = new Konva.Rect({
591
- width: text.width(),
592
- height: text.height()
593
- });
594
-
595
- group.add(text);
596
- group.add(bg);
597
- this.render.layer.add(group);
598
- this.render.layer.draw();
599
- return group;
600
- }
1
+ import Konva from 'konva';
2
+ import { nanoid } from 'nanoid';
3
+ import { Render } from '../index';
4
+ import { LinkDraw, GraphDraw, RulerDraw, PreviewDraw } from '../draws';
5
+ import { AssetSettings, AssetType } from '../types';
6
+ import { BezierSceneFunc } from '../utils/bezier-scene-func';
7
+
8
+ // 导入导出
9
+
10
+ export class ImportExportTool {
11
+
12
+ private render: Render;
13
+ constructor(render: Render) {
14
+ this.render = render;
15
+ }
16
+
17
+ /**
18
+ * 获得显示内容
19
+ * @param withLink 是否包含线条
20
+ * @returns
21
+ */
22
+ getView(withLink: boolean = false) {
23
+ // 复制画布
24
+ const copy = this.render.stage.clone();
25
+ // 提取 main layer 备用
26
+ const main = copy.find('#main')[0] as Konva.Layer;
27
+ const cover = copy.find('#cover')[0] as Konva.Layer;
28
+ // 暂时清空所有 layer
29
+ const copyChildren = copy.getChildren();
30
+ copy.removeChildren();
31
+ if (main && cover) {
32
+ // 提取节点
33
+ let nodes = main.getChildren((node) => !this.render.ignore(node));
34
+ // 移除多余结构
35
+ for (const node of nodes) {
36
+ // 如果当前被选中,listening 会是 false,需恢复
37
+ node.listening(true);
38
+ // 恢复 draggable(因为,绘制 Graph 的时候,不允许直接拖动其他素材)
39
+ node.draggable(!this.render.config.readonly && !node.attrs.locked);
40
+ for (const child of (node as Konva.Group).children) {
41
+ if (this.render.ignoreSelect(child)) {
42
+ child.remove();
43
+ }
44
+ }
45
+ }
46
+
47
+ if (withLink) {
48
+ // 从 Link group 中提取 连接线
49
+ const linkDraw = cover.children.find((o) => o.attrs.name === LinkDraw.name) as Konva.Group;
50
+ if (linkDraw) {
51
+ nodes = nodes.concat(linkDraw.children.filter((o) => o.attrs.name === 'link-line'));
52
+ }
53
+ }
54
+
55
+ // 重新装载节点
56
+ const layer = new Konva.Layer();
57
+ layer.add(...nodes);
58
+ nodes = layer.getChildren();
59
+
60
+ for (const node of nodes) {
61
+ if (node.attrs.nodeMousedownPos) {
62
+ // 修正正在选中的节点透明度
63
+ node.setAttrs({ opacity: copy.attrs.lastOpacity ?? 1 });
64
+ }
65
+ }
66
+
67
+ // 重新装载 layer
68
+ copy.add(layer);
69
+ main.removeChildren();
70
+ cover.removeChildren();
71
+ }
72
+
73
+ copyChildren.forEach((o) => o.destroy());
74
+ // 返回可视节点和 layer
75
+ return copy;
76
+ }
77
+
78
+ // 保存
79
+ save() {
80
+ const copy = this.getView();
81
+ const json = copy.toJSON();
82
+ copy.destroy();
83
+ // 通过 stage api 导出 json
84
+ return json;
85
+ }
86
+
87
+ // 加载 image(用于导入)
88
+ loadImage(src: string) {
89
+ return new Promise<HTMLImageElement | null>((resolve) => {
90
+ const img = new Image();
91
+ img.onload = () => {
92
+ // 返回加载完成的图片 element
93
+ resolve(img);
94
+ };
95
+ img.onerror = () => {
96
+ resolve(null);
97
+ };
98
+ img.src = src;
99
+ });
100
+ }
101
+
102
+ // 恢复图片(用于导入)
103
+ async restoreImage(nodes: Konva.Node[] = []) {
104
+ for (const node of nodes) {
105
+ if (node instanceof Konva.Group) {
106
+ // 递归
107
+ await this.restoreImage(node.getChildren());
108
+ } else if (node instanceof Konva.Image) {
109
+ // 处理图片
110
+ if (node.attrs.svgXML) { // svg 素材
111
+ const blob = new Blob([node.attrs.svgXML], { type: 'image/svg+xml' });
112
+ const url = URL.createObjectURL(blob);
113
+ const image = await this.loadImage(url);
114
+ if (image) { // 设置图片
115
+ node.image(image);
116
+ }
117
+ } else if (node.attrs.gif) { // gif 素材
118
+ const imageNode = await this.render.assetTool.loadGif(node.attrs.gif);
119
+ if (imageNode) {
120
+ node.image(imageNode.image());
121
+ }
122
+ } else if (node.attrs.src) { // 其他图片素材
123
+ const image = await this.loadImage(node.attrs.src);
124
+ if (image) {
125
+ node.image(image);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ // 恢复图形
133
+ restoreGraph(nodes: Konva.Node[] = []) {
134
+ for (const node of nodes) {
135
+ if (node instanceof Konva.Group && node.attrs.assetType === AssetType.Graph) {
136
+ if (node.attrs.graphType === "Bezier") {
137
+ const graph = node.findOne('.graph');
138
+ if (graph instanceof Konva.Arrow) {
139
+ graph.sceneFunc(BezierSceneFunc);
140
+ }
141
+ }
142
+ const hoverRect = node.findOne('.hoverRect');
143
+ if (hoverRect instanceof Konva.Rect) {
144
+ hoverRect.on('mouseenter', () => {
145
+ // 防止进入调整点,重复处理
146
+ if (!node.attrs.hoverAnchor) {
147
+ node.setAttr('hover', true);
148
+ this.render.redraw([GraphDraw.name]);
149
+ }
150
+ setTimeout(() => {
151
+ // 调整产生 redraw,导致离开调整点不触发其 mouseleave(进入其他元素区域除外)
152
+ // 在此静态补充"离开调整点"
153
+ // 不影响正常处理(调整点会不停 hoverAnchor = true)
154
+ node.setAttr('hoverAnchor', false);
155
+ });
156
+
157
+ // 显示 连接点
158
+ this.render.linkTool.pointsVisible(true, node);
159
+ });
160
+ hoverRect.on('mouseleave', () => {
161
+ // 延迟事件,使调整点的 mouseleave 优先
162
+ setTimeout(() => {
163
+ // 防止进入调整点,重复处理
164
+ // 补充 2,快速调整会漏掉
165
+ if (!node.attrs.hoverAnchor) {
166
+ node.setAttr('hover', false);
167
+ node.setAttr('hoverAnchor', false);
168
+ this.render.redraw([GraphDraw.name]);
169
+ }
170
+ });
171
+ // 隐藏 连接点
172
+ this.render.linkTool.pointsVisible(false, node);
173
+ // 隐藏 hover 框
174
+ node.findOne('#hoverRect')?.visible(false);
175
+ });
176
+ }
177
+ }
178
+ }
179
+ }
180
+
181
+ // 恢复(导入)
182
+ async restore(json: string, silent = false) {
183
+ if (!Object.keys(JSON.parse(json)).length) {
184
+ return;
185
+ }
186
+ const readonly = this.render.config.readonly;
187
+ try {
188
+ this.render.emit('loading', true);
189
+ // 清空选择
190
+ this.render.selectionTool.selectingClear();
191
+ this.render.linkTool.selectingClear();
192
+ // 清空 main layer 节点
193
+ this.render.layer.getChildren().forEach((o) => o.destroy());
194
+ this.render.layer.removeChildren();
195
+ // 加载 json,提取节点
196
+ const container = document.createElement('div');
197
+ // 反序列化
198
+ const stage = Konva.Node.create(json, container);
199
+ const main = stage.getChildren()[0];
200
+ const nodes = main.getChildren();
201
+ // 恢复节点图片素材
202
+ await this.restoreImage(nodes);
203
+ await this.restoreGraph(nodes);
204
+ for (const node of nodes) {
205
+ // 重置旧数据节点为可 draggable
206
+ node.draggable(!readonly && !node.attrs.locked);
207
+ // 组件鼠标移入移出事件
208
+ this.render.componentFactory.groupMouseenter({ group: node });
209
+ this.render.componentFactory.groupMouseleave({ group: node });
210
+ if (readonly) {
211
+ this.render.componentFactory.readonlyInitComponentSetting({ node });
212
+ }
213
+ }
214
+ this.render.layer.add(...nodes); // 插入节点
215
+ // 同步页面设置
216
+ this.render.stage.setAttr('pageSettings', stage.attrs.pageSettings);
217
+ this.render.emit('page-settings-change', this.render.getPageSettings());
218
+ // 更新背景
219
+ this.render.updateBackground();
220
+ // 上一步、下一步 无需更新 history 记录
221
+ if (!silent) {
222
+ // 更新历史
223
+ this.render.updateHistory();
224
+ }
225
+ // 隐藏 连接点
226
+ this.render.linkTool.pointsVisible(false);
227
+ // 重绘
228
+ this.render.redraw([
229
+ GraphDraw.name,
230
+ LinkDraw.name,
231
+ RulerDraw.name,
232
+ PreviewDraw.name
233
+ ]);
234
+ stage.destroy();
235
+ } catch (e) {
236
+ console.error(e);
237
+ } finally {
238
+ this.render.emit('loading', false);
239
+ }
240
+ }
241
+
242
+ // 获取图片
243
+ getImage(pixelRatio = 1, bgColor?: string) {
244
+ // getAssetView 的基础上,增加背景即可
245
+ const copy = this.getAssetView();
246
+ // 背景层
247
+ const bgLayer = new Konva.Layer();
248
+ // 背景矩形
249
+ const bg = new Konva.Rect({ listening: false });
250
+
251
+ bg.setAttrs({
252
+ x: 0,
253
+ y: 0,
254
+ width: copy.width(),
255
+ height: copy.height(),
256
+ fill: bgColor ?? this.render.getPageSettings().background
257
+ });
258
+ // 添加背景
259
+ bgLayer.add(bg);
260
+ const children = copy.getChildren() as Konva.Layer[];
261
+ copy.removeChildren();
262
+ copy.add(bgLayer);
263
+ copy.add(children[0], ...children.slice(1));
264
+ const url = copy.toDataURL({ pixelRatio });
265
+ copy.destroy();
266
+ // 通过 stage api 导出图片
267
+ return url;
268
+ }
269
+
270
+ // 获取元素图片
271
+ getAssetImage(pixelRatio = 1, bgColor?: string) {
272
+ // 获取可视节点和 layer
273
+ const copy = this.getAssetView();
274
+ // 背景层
275
+ const bgLayer = new Konva.Layer();
276
+ // 背景矩形
277
+ const bg = new Konva.Rect({ listening: false });
278
+ bg.setAttrs({
279
+ x: -copy.x(),
280
+ y: -copy.y(),
281
+ width: copy.width(),
282
+ height: copy.height(),
283
+ fill: bgColor ?? this.render.getPageSettings().background
284
+ });
285
+ // 添加背景
286
+ bgLayer.add(bg);
287
+ // 插入背景
288
+ const children = copy.getChildren();
289
+ copy.removeChildren();
290
+ copy.add(bgLayer);
291
+ copy.add(children[0], ...children.slice(1));
292
+ const url = copy.toDataURL({ pixelRatio });
293
+ copy.destroy();
294
+ // 通过 stage api 导出图片
295
+ return url;
296
+ }
297
+
298
+ // blob to base64 url
299
+ blobToBase64(blob: Blob, type: string): Promise<string> {
300
+ return new Promise((resolve) => {
301
+ const file = new File([blob], 'image', { type });
302
+ const fileReader = new FileReader();
303
+ fileReader.readAsDataURL(file);
304
+ fileReader.onload = function () {
305
+ resolve((this.result as string) ?? '');
306
+ };
307
+ });
308
+ }
309
+
310
+ // 替换 svg blob: 链接
311
+ parseSvgImage(urls: string[]): Promise<string[]> {
312
+ return new Promise((resolve) => {
313
+ if (urls.length > 0) {
314
+ Promise.all(urls.map((o) => fetch(o))).then((rs: Response[]) => {
315
+ // fetch
316
+ // 替换为 svg 嵌套
317
+ Promise.all(rs.map((o) => o.text())).then((xmls: string[]) => {
318
+ // svg xml
319
+ resolve(xmls);
320
+ });
321
+ });
322
+ } else {
323
+ resolve([]);
324
+ }
325
+ });
326
+ }
327
+
328
+ // 替换其他 image 链接
329
+ parseOtherImage(urls: string[]): Promise<string[]> {
330
+ return new Promise((resolve) => {
331
+ if (urls.length > 0) {
332
+ Promise.all(urls.map((o) => fetch(o))).then((rs: Response[]) => {
333
+ // fetch
334
+ // 替换为 base64 url image
335
+ Promise.all(rs.map((o) => o.blob())).then((bs: Blob[]) => {
336
+ // blob
337
+ Promise.all(bs.map((o) => this.blobToBase64(o, 'image/*'))).then((urls: string[]) => {
338
+ // base64
339
+ resolve(urls);
340
+ });
341
+ });
342
+ });
343
+ } else {
344
+ resolve([]);
345
+ }
346
+ });
347
+ }
348
+
349
+ // 替换 image 链接
350
+ parseImage(xml: string): Promise<string> {
351
+ return new Promise((resolve) => {
352
+ // 找出 blob:http 图片链接(目前发现只有 svg 是)
353
+ const svgs = xml.match(/(?<=xlink:href=")blob:https?:\/\/[^"]+(?=")/g) ?? [];
354
+ // 其他图片转为 base64
355
+ const imgs = xml.match(/(?<=xlink:href=")(?<!blob:)[^"]+(?=")/g) ?? [];
356
+ Promise.all([this.parseSvgImage(svgs), this.parseOtherImage(imgs)]).then(
357
+ ([svgXmls, imgUrls]) => {
358
+ // svg xml
359
+ svgs.forEach((svg, idx) => {
360
+ // 替换
361
+ xml = xml.replace(
362
+ new RegExp(`<image[^><]* xlink:href="${svg}"[^><]*/>`),
363
+ svgXmls[idx].match(/<svg[^><]*>.*<\/svg>/)?.[0] ?? '' // 仅保留 svg 结构
364
+ );
365
+ });
366
+ // base64
367
+ imgs.forEach((img, idx) => {
368
+ // 替换
369
+ xml = xml.replace(`"${img}"`, `"${imgUrls[idx]}"`);
370
+ });
371
+ // 替换完成
372
+ resolve(xml);
373
+ }
374
+ );
375
+ });
376
+ }
377
+
378
+ /**
379
+ * 获得显示内容(用于另存为元素)
380
+ * @returns Konva.Stage
381
+ */
382
+ getAssetView() {
383
+ const copy = this.getView(true);
384
+ const children = copy.getChildren()[0].getChildren();
385
+ const nodes: Konva.Stage | Konva.Layer | Konva.Group | Konva.Node[] = [...children];
386
+
387
+ let minX = Infinity,
388
+ maxX = -Infinity,
389
+ minY = Infinity,
390
+ maxY = -Infinity,
391
+ minStartX = Infinity,
392
+ minStartY = Infinity;
393
+
394
+ const stageState = this.render.getStageState();
395
+ for (const node of nodes) {
396
+ if (node instanceof Konva.Group) {
397
+ const { x, y, width, height } = ((rect) => ({
398
+ x: this.render.toStageValue(rect.x - stageState.x),
399
+ y: this.render.toStageValue(rect.y - stageState.y),
400
+ width: this.render.toStageValue(rect.width),
401
+ height: this.render.toStageValue(rect.height)
402
+ }))(node.getClientRect());
403
+ if (x < minX) {
404
+ minX = x;
405
+ }
406
+ if (x + width > maxX) {
407
+ maxX = x + width;
408
+ }
409
+ if (y < minY) {
410
+ minY = y;
411
+ }
412
+ if (y + height > maxY) {
413
+ maxY = y + height;
414
+ }
415
+ if (x < minStartX) {
416
+ minStartX = x;
417
+ }
418
+ if (y < minStartY) {
419
+ minStartY = y;
420
+ }
421
+
422
+ // 移除辅助元素
423
+ if (node instanceof Konva.Group) {
424
+ const clickMask = node.findOne('#click-mask');
425
+ if (clickMask) {
426
+ clickMask.destroy();
427
+ }
428
+ }
429
+ } else if (node instanceof Konva.Line && node.name() === 'link-line') {
430
+ // 连线占用空间
431
+ const points = node.points();
432
+ for (let i = 0; i < points.length; i += 2) {
433
+ const [x, y] = [points[i], points[i + 1]];
434
+ if (x < minX) {
435
+ minX = x - 1;
436
+ }
437
+ if (x > maxX) {
438
+ maxX = x + 1;
439
+ }
440
+ if (y < minY) {
441
+ minY = y - 1;
442
+ }
443
+ if (y > maxY) {
444
+ maxY = y + 1;
445
+ }
446
+ if (x < minStartX) {
447
+ minStartX = x - 1;
448
+ }
449
+ if (y < minStartY) {
450
+ minStartY = y - 1;
451
+ }
452
+ }
453
+ }
454
+ }
455
+
456
+ for (const node of nodes) {
457
+ if (node instanceof Konva.Group) {
458
+ node.x(node.x() - minStartX);
459
+ node.y(node.y() - minStartY);
460
+ } else if (node instanceof Konva.Line && node.name() === 'link-line') {
461
+ const points = node.points();
462
+ for (let i = 0; i < points.length; i += 2) {
463
+ points[i] = points[i] - minStartX;
464
+ points[i + 1] = points[i + 1] - minStartY;
465
+ }
466
+ node.points(points);
467
+ }
468
+ }
469
+
470
+ copy.x(0);
471
+ copy.y(0);
472
+ copy.width(maxX - minX);
473
+ copy.height(maxY - minY);
474
+ copy.scale({ x: 1, y: 1 });
475
+ return copy;
476
+ }
477
+
478
+ /**
479
+ * 获得元素(用于另存为元素)
480
+ * @returns Konva.Stage
481
+ */
482
+ getAsset() {
483
+ const copy = this.getAssetView();
484
+ // 添加背景
485
+ const background = this.render.getBackground();
486
+ background.width(copy.width());
487
+ background.height(copy.height());
488
+ copy.children[0].add(background);
489
+ background.moveToBottom();
490
+ const json = copy.toJSON();
491
+ const obj = JSON.parse(json);
492
+ const assets = obj.children[0].children;
493
+
494
+ for (const asset of assets) {
495
+ if (asset.attrs.name === 'asset') {
496
+ asset.attrs.name = 'sub-asset';
497
+ }
498
+ if (asset.attrs.selected) {
499
+ asset.attrs.selected = false;
500
+ }
501
+ }
502
+
503
+ this.render.linkTool.jsonIdCover(assets);
504
+
505
+ // 通过 stage api 导出 json
506
+ const result = JSON.stringify({
507
+ ...obj.children[0],
508
+ className: 'Group',
509
+ attrs: {
510
+ width: copy.width(),
511
+ height: copy.height(),
512
+ x: 0,
513
+ y: 0
514
+ }
515
+ });
516
+
517
+ copy.destroy();
518
+ return result;
519
+ }
520
+
521
+ /**
522
+ * 添加文字素材
523
+ * @param pos 落点位置
524
+ * @param settings 设置项
525
+ * @returns
526
+ */
527
+ addTextAsset(pos: Konva.Vector2d, settings?: Partial<AssetSettings>) {
528
+ // 获取页面默认设置
529
+ const pageSettings = this.render.getPageSettings();
530
+
531
+ // 合并设置
532
+ const assetSettings: AssetSettings = {
533
+ stroke: "#000000",
534
+ strokeWidth: 1,
535
+ fill: "#000000",
536
+ arrowStart: false,
537
+ arrowEnd: false,
538
+ fontSize: pageSettings.fontSize,
539
+ textFill: pageSettings.textFill,
540
+ text: 'Text',
541
+ x: pos.x,
542
+ y: pos.y,
543
+ rotation: 0,
544
+ tension: 0.5,
545
+ ...settings
546
+ };
547
+
548
+ const group = new Konva.Group({
549
+ id: nanoid(),
550
+ name: 'asset',
551
+ assetType: AssetType.Text,
552
+ draggable: true,
553
+ position: { x: pos.x, y: pos.y }
554
+ });
555
+
556
+ group.setAttr('assetSettings', assetSettings);
557
+
558
+ const text = new Konva.Text({
559
+ text: assetSettings.text,
560
+ fill: assetSettings.textFill,
561
+ fontSize: assetSettings.fontSize,
562
+ draggable: false,
563
+ name: 'text-node'
564
+ });
565
+
566
+ const bg = new Konva.Rect({
567
+ width: text.width(),
568
+ height: text.height()
569
+ });
570
+
571
+ group.add(text);
572
+ group.add(bg);
573
+ this.render.layer.add(group);
574
+ this.render.layer.draw();
575
+ return group;
576
+ }
601
577
  }