aldehyde 0.2.480 → 0.2.482

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