aldehyde 0.2.197 → 0.2.198

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 (569) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +2 -2
  3. package/lib/custom-page/def-custom-page.d.ts.map +1 -1
  4. package/lib/custom-page/dtmpl-custom-edit-modal-page.d.ts.map +1 -1
  5. package/lib/detail/dtmpl.css +57 -57
  6. package/lib/export/export-frame.css +2 -2
  7. package/lib/export/export-frame.d.ts.map +1 -1
  8. package/lib/export/select-code-export-frame.d.ts.map +1 -1
  9. package/lib/form/dtmpl-form.css +3 -3
  10. package/lib/form/dtmpl-form.d.ts.map +1 -1
  11. package/lib/form/field-group-form.d.ts.map +1 -1
  12. package/lib/form/form-Item-group.d.ts.map +1 -1
  13. package/lib/form/index.css +12 -12
  14. package/lib/hooks/useVarCssColor.d.ts.map +1 -1
  15. package/lib/import/excel-import.d.ts.map +1 -1
  16. package/lib/import/index.css +53 -53
  17. package/lib/import/template.css +50 -50
  18. package/lib/layout/common.css +64 -64
  19. package/lib/layout/coverstyle.css +51 -51
  20. package/lib/layout2/LayoutContext.d.ts.map +1 -1
  21. package/lib/locale/LocaleButton.d.ts.map +1 -1
  22. package/lib/locale/LocaleProvider.d.ts.map +1 -1
  23. package/lib/locale/langMp.d.ts.map +1 -1
  24. package/lib/locale/translate.d.ts.map +1 -1
  25. package/lib/locale/useLocale.d.ts.map +1 -1
  26. package/lib/login/index.css +19 -19
  27. package/lib/login/login.d.ts.map +1 -1
  28. package/lib/login2/Login.d.ts.map +1 -1
  29. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  30. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  31. package/lib/module/dtmpl-editor.d.ts.map +1 -1
  32. package/lib/module/dtmpl-view-card.d.ts.map +1 -1
  33. package/lib/module/embed-dtmpl-edit-page.d.ts.map +1 -1
  34. package/lib/module/ltmpl-modal.d.ts.map +1 -1
  35. package/lib/module/ltmpl-table.d.ts.map +1 -1
  36. package/lib/routable/dtmpl-route.d.ts.map +1 -1
  37. package/lib/routable/dtmpl-route.js +1 -1
  38. package/lib/routable/dtmpl-route.js.map +1 -1
  39. package/lib/routable/withroute.d.ts.map +1 -1
  40. package/lib/table/act-table.d.ts.map +1 -1
  41. package/lib/table/act-table.js +2 -1
  42. package/lib/table/act-table.js.map +1 -1
  43. package/lib/table/control-table-x-axis-wrapper.d.ts +2 -11
  44. package/lib/table/control-table-x-axis-wrapper.d.ts.map +1 -1
  45. package/lib/table/index.css +71 -71
  46. package/lib/table/l2-act-table.d.ts.map +1 -1
  47. package/lib/table/modal-select-table.d.ts.map +1 -1
  48. package/lib/table/pagination.css +14 -14
  49. package/lib/table/pagination.d.ts.map +1 -1
  50. package/lib/table/query-table.d.ts.map +1 -1
  51. package/lib/table/relation-table.d.ts.map +1 -1
  52. package/lib/table/select-table.d.ts.map +1 -1
  53. package/lib/table/selected-rows-card.d.ts.map +1 -1
  54. package/lib/tmpl/control-type-supportor.d.ts.map +1 -1
  55. package/lib/tmpl/hc-data-source.d.ts.map +1 -1
  56. package/lib/tmpl/hcservice-v3.d.ts.map +1 -1
  57. package/lib/tmpl/interface.d.ts +1 -0
  58. package/lib/tmpl/interface.d.ts.map +1 -1
  59. package/lib/tmpl/interface.js.map +1 -1
  60. package/lib/tmpl/tmpl-config-analysis.d.ts.map +1 -1
  61. package/lib/tree/act-tree.d.ts.map +1 -1
  62. package/lib/tree/block-menu-auth-tree.d.ts.map +1 -1
  63. package/lib/tree/index.css +20 -20
  64. package/lib/tree/tmpl-tree.d.ts.map +1 -1
  65. package/lib/tree/tree-node.d.ts.map +1 -1
  66. package/lib/tree/tree-utils.d.ts.map +1 -1
  67. package/lib/utils/dsu.d.ts.map +1 -1
  68. package/lib/welcome/index.css +13 -13
  69. package/lib/welcome/quick-entrance.d.ts.map +1 -1
  70. package/lib/welcome/workbench.d.ts.map +1 -1
  71. package/package.json +206 -206
  72. package/src/aldehyde/controls/action/index.css +8 -8
  73. package/src/aldehyde/controls/action/index.tsx +396 -401
  74. package/src/aldehyde/controls/action/utils.tsx +307 -307
  75. package/src/aldehyde/controls/auto-complete/index.tsx +82 -82
  76. package/src/aldehyde/controls/cascader/index.tsx +112 -112
  77. package/src/aldehyde/controls/chemstruc/graph.tsx +184 -184
  78. package/src/aldehyde/controls/chemstruc/index.css +28 -28
  79. package/src/aldehyde/controls/code-editor/sql-code-editor.tsx +73 -73
  80. package/src/aldehyde/controls/collapse-card/index.css +8 -8
  81. package/src/aldehyde/controls/collapse-card/index.tsx +109 -109
  82. package/src/aldehyde/controls/color-picker/index.css +26 -26
  83. package/src/aldehyde/controls/color-picker/index.tsx +114 -114
  84. package/src/aldehyde/controls/counting-tag/index.tsx +53 -53
  85. package/src/aldehyde/controls/cquery/cquick-button.tsx +144 -144
  86. package/src/aldehyde/controls/date-picker/index.tsx +146 -146
  87. package/src/aldehyde/controls/entity-select/entity-select.tsx +723 -723
  88. package/src/aldehyde/controls/entity-select/index.css +6 -6
  89. package/src/aldehyde/controls/entity-select/lab-tree-select.tsx +154 -154
  90. package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +190 -190
  91. package/src/aldehyde/controls/entry-control.tsx +359 -359
  92. package/src/aldehyde/controls/enum-badge/index.tsx +31 -31
  93. package/src/aldehyde/controls/enum-tag/index.tsx +35 -35
  94. package/src/aldehyde/controls/field-history/index.tsx +81 -81
  95. package/src/aldehyde/controls/file-export/select-code-export.tsx +40 -40
  96. package/src/aldehyde/controls/file-view/drawer-file-view.tsx +75 -75
  97. package/src/aldehyde/controls/file-view/index.tsx +142 -142
  98. package/src/aldehyde/controls/file-view/newin-file-view.tsx +40 -40
  99. package/src/aldehyde/controls/html-editor/draft.tsx +161 -161
  100. package/src/aldehyde/controls/html-editor/tinymce.js +54 -54
  101. package/src/aldehyde/controls/input-number/index.tsx +148 -148
  102. package/src/aldehyde/controls/input-range/index.tsx +59 -59
  103. package/src/aldehyde/controls/password-setter/index.css +2 -2
  104. package/src/aldehyde/controls/password-setter/index.js +88 -88
  105. package/src/aldehyde/controls/progress/index.tsx +74 -74
  106. package/src/aldehyde/controls/relation-existion/index.css +4 -4
  107. package/src/aldehyde/controls/relation-existion/index.tsx +140 -140
  108. package/src/aldehyde/controls/rfield/index.css +4 -4
  109. package/src/aldehyde/controls/rfield/index.tsx +226 -226
  110. package/src/aldehyde/controls/select/index.tsx +211 -211
  111. package/src/aldehyde/controls/signature/index.tsx +226 -226
  112. package/src/aldehyde/controls/steps/index.tsx +59 -59
  113. package/src/aldehyde/controls/text/ellipsis-text.tsx +96 -96
  114. package/src/aldehyde/controls/upload/index.tsx +138 -138
  115. package/src/aldehyde/controls/view-control.tsx +284 -284
  116. package/src/aldehyde/custom-page/custom-page-router.tsx +75 -75
  117. package/src/aldehyde/custom-page/def-custom-page.tsx +17 -17
  118. package/src/aldehyde/custom-page/dtmpl-custom-edit-modal-page.tsx +87 -87
  119. package/src/aldehyde/detail/button/bottom-submit-button-bar.tsx +90 -90
  120. package/src/aldehyde/detail/button/cquery-button-bar.tsx +144 -144
  121. package/src/aldehyde/detail/button/edit-button.tsx +62 -62
  122. package/src/aldehyde/detail/button/fix-right-submit-button-bar.tsx +178 -178
  123. package/src/aldehyde/detail/button/index.css +42 -42
  124. package/src/aldehyde/detail/button/submit-button-bar.tsx +56 -56
  125. package/src/aldehyde/detail/button/view-button.tsx +61 -61
  126. package/src/aldehyde/detail/dtmpl.css +57 -57
  127. package/src/aldehyde/detail/edit/dtmpl-edit.tsx +267 -267
  128. package/src/aldehyde/detail/edit/fields-edit-card.tsx +143 -143
  129. package/src/aldehyde/detail/edit/modal-row-edit.tsx +94 -94
  130. package/src/aldehyde/detail/edit/post-result/index.tsx +85 -85
  131. package/src/aldehyde/detail/edit/row-edit-card.tsx +179 -179
  132. package/src/aldehyde/detail/edit/row-editor.tsx +72 -72
  133. package/src/aldehyde/detail/rightbar/index.css +34 -34
  134. package/src/aldehyde/detail/rightbar/index.tsx +92 -92
  135. package/src/aldehyde/detail/tooltipbar/index.tsx +32 -32
  136. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +286 -271
  137. package/src/aldehyde/detail/view/dtmpl-view.tsx +319 -319
  138. package/src/aldehyde/detail/view/field-view-group.tsx +83 -83
  139. package/src/aldehyde/detail/view/modal-dtmpl-view.tsx +72 -72
  140. package/src/aldehyde/detail/view/snapshot-timeline.tsx +164 -164
  141. package/src/aldehyde/export/export-frame.css +2 -2
  142. package/src/aldehyde/export/export-frame.tsx +299 -299
  143. package/src/aldehyde/export/select-code-export-frame.tsx +218 -218
  144. package/src/aldehyde/form/criteria-form.tsx +488 -488
  145. package/src/aldehyde/form/dtmpl-form.css +3 -3
  146. package/src/aldehyde/form/dtmpl-form.tsx +502 -502
  147. package/src/aldehyde/form/field-group-form.tsx +98 -98
  148. package/src/aldehyde/form/fields-form.tsx +44 -44
  149. package/src/aldehyde/form/form-Item-group.tsx +211 -211
  150. package/src/aldehyde/form/index.css +12 -12
  151. package/src/aldehyde/hooks/useVarCssColor.ts +6 -6
  152. package/src/aldehyde/icon/index.tsx +28 -28
  153. package/src/aldehyde/import/excel-import.tsx +450 -450
  154. package/src/aldehyde/import/index.css +53 -53
  155. package/src/aldehyde/import/template.css +50 -50
  156. package/src/aldehyde/index.tsx +176 -176
  157. package/src/aldehyde/layout/MainPage.tsx +334 -334
  158. package/src/aldehyde/layout/common.css +64 -64
  159. package/src/aldehyde/layout/coverstyle.css +51 -51
  160. package/src/aldehyde/layout/footer/index.css +5 -5
  161. package/src/aldehyde/layout/footer/index.js +17 -17
  162. package/src/aldehyde/layout/header/index.css +122 -122
  163. package/src/aldehyde/layout/header/index.tsx +145 -145
  164. package/src/aldehyde/layout/menu/block.css +7 -7
  165. package/src/aldehyde/layout/menu/block.tsx +174 -174
  166. package/src/aldehyde/layout/menu/l2menu-message-bar.tsx +161 -161
  167. package/src/aldehyde/layout/menu/l2menu-quick-bar.tsx +159 -159
  168. package/src/aldehyde/layout/menu/menu-2layers.tsx +117 -117
  169. package/src/aldehyde/layout/menu/menu-render.tsx +165 -165
  170. package/src/aldehyde/layout/menu/reset-password.tsx +255 -255
  171. package/src/aldehyde/layout/menu/user-bar.tsx +258 -258
  172. package/src/aldehyde/layout/menu/userinfo-bar.tsx +69 -69
  173. package/src/aldehyde/layout/sidebar/index.css +57 -57
  174. package/src/aldehyde/layout/sidebar/index.tsx +85 -85
  175. package/src/aldehyde/layout2/LayoutContext.tsx +95 -95
  176. package/src/aldehyde/layout2/components/userButton.tsx +171 -171
  177. package/src/aldehyde/layout2/css/header.css +38 -38
  178. package/src/aldehyde/layout2/header.tsx +371 -371
  179. package/src/aldehyde/layout2/main.tsx +27 -27
  180. package/src/aldehyde/layout2/page.tsx +189 -189
  181. package/src/aldehyde/layout2/sider.tsx +335 -335
  182. package/src/aldehyde/layout2/type/layout.type.ts +10 -10
  183. package/src/aldehyde/layout2/util/menu.util.tsx +122 -122
  184. package/src/aldehyde/locale/LocaleButton.tsx +47 -47
  185. package/src/aldehyde/locale/LocaleProvider.tsx +204 -204
  186. package/src/aldehyde/locale/langMp.ts +45 -45
  187. package/src/aldehyde/locale/translate.ts +80 -80
  188. package/src/aldehyde/locale/useLocale.ts +56 -56
  189. package/src/aldehyde/login/context-setter.tsx +130 -130
  190. package/src/aldehyde/login/index.css +19 -19
  191. package/src/aldehyde/login/login.tsx +252 -252
  192. package/src/aldehyde/login/router-login.tsx +107 -107
  193. package/src/aldehyde/login/vertify/index.css +143 -143
  194. package/src/aldehyde/login/vertify/index.tsx +360 -360
  195. package/src/aldehyde/login/vertify/tool.ts +13 -13
  196. package/src/aldehyde/login2/Login.tsx +203 -203
  197. package/src/aldehyde/login2/LoginPage.tsx +64 -64
  198. package/src/aldehyde/login2/index.tsx +4 -4
  199. package/src/aldehyde/module/block-menu-tree-drawer.tsx +116 -116
  200. package/src/aldehyde/module/criteria-page.tsx1 +175 -175
  201. package/src/aldehyde/module/dtmpl-edit-card.tsx +313 -313
  202. package/src/aldehyde/module/dtmpl-edit-drawer.tsx +23 -23
  203. package/src/aldehyde/module/dtmpl-edit-modal.tsx +25 -25
  204. package/src/aldehyde/module/dtmpl-edit-page.tsx +396 -396
  205. package/src/aldehyde/module/dtmpl-editor.tsx +162 -162
  206. package/src/aldehyde/module/dtmpl-view-card.tsx +73 -73
  207. package/src/aldehyde/module/dtmpl-view-drawer.tsx +64 -64
  208. package/src/aldehyde/module/dtmpl-view-modal.tsx +53 -53
  209. package/src/aldehyde/module/embed-dtmpl-edit-page.tsx +137 -137
  210. package/src/aldehyde/module/ltmpl-drawer.tsx +57 -57
  211. package/src/aldehyde/module/ltmpl-modal.tsx +62 -62
  212. package/src/aldehyde/module/ltmpl-table.tsx +375 -375
  213. package/src/aldehyde/routable/dtmpl-route.tsx +166 -165
  214. package/src/aldehyde/routable/import-route.tsx +34 -34
  215. package/src/aldehyde/routable/ltmpl-route.tsx +436 -436
  216. package/src/aldehyde/routable/ttmpl-route.tsx +95 -95
  217. package/src/aldehyde/routable/withroute.tsx +25 -25
  218. package/src/aldehyde/table/act-table.tsx +1737 -1732
  219. package/src/aldehyde/table/column/column-selector.tsx +130 -130
  220. package/src/aldehyde/table/column/index.css +13 -13
  221. package/src/aldehyde/table/control-table-x-axis-wrapper.tsx +80 -80
  222. package/src/aldehyde/table/index.css +71 -71
  223. package/src/aldehyde/table/l2-act-table.tsx +91 -91
  224. package/src/aldehyde/table/modal-select-table.tsx +278 -278
  225. package/src/aldehyde/table/pagination.css +14 -14
  226. package/src/aldehyde/table/pagination.tsx +76 -76
  227. package/src/aldehyde/table/query-table.tsx +1421 -1421
  228. package/src/aldehyde/table/relation-table.tsx +855 -855
  229. package/src/aldehyde/table/select-table.tsx +272 -272
  230. package/src/aldehyde/table/selected-rows-card.tsx +75 -75
  231. package/src/aldehyde/table/stat/restat.tsx +123 -123
  232. package/src/aldehyde/table/table-util.tsx +25 -25
  233. package/src/aldehyde/tmpl/control-type-supportor.tsx +111 -111
  234. package/src/aldehyde/tmpl/hc-data-source.tsx +514 -514
  235. package/src/aldehyde/tmpl/hcservice-v3.tsx +1226 -1226
  236. package/src/aldehyde/tmpl/interface.tsx +614 -612
  237. package/src/aldehyde/tmpl/model-struc-v3.tsx +107 -107
  238. package/src/aldehyde/tmpl/superagent.js +165 -165
  239. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +342 -342
  240. package/src/aldehyde/tree/act-tree.tsx +220 -220
  241. package/src/aldehyde/tree/block-menu-auth-tree.tsx +187 -187
  242. package/src/aldehyde/tree/index.css +20 -20
  243. package/src/aldehyde/tree/tmpl-tree.tsx +678 -678
  244. package/src/aldehyde/tree/tree-node.tsx +73 -73
  245. package/src/aldehyde/tree/tree-utils.tsx +170 -170
  246. package/src/aldehyde/units/EncryptUtils.js +37 -37
  247. package/src/aldehyde/units/image.d.ts +7 -7
  248. package/src/aldehyde/units/index.tsx +978 -978
  249. package/src/aldehyde/units/storage.js +2 -2
  250. package/src/aldehyde/utils/dsu.ts +27 -27
  251. package/src/aldehyde/welcome/HCWelcome.js +321 -321
  252. package/src/aldehyde/welcome/HCWelcome1.js +259 -259
  253. package/src/aldehyde/welcome/index.css +13 -13
  254. package/src/aldehyde/welcome/quick-entrance.tsx +98 -98
  255. package/src/aldehyde/welcome/workbench.tsx +100 -100
  256. package/lib/controls/action/index.css +0 -9
  257. package/lib/controls/action/index.d.ts +0 -67
  258. package/lib/controls/action/index.d.ts.map +0 -1
  259. package/lib/controls/action/index.js +0 -243
  260. package/lib/controls/action/index.js.map +0 -1
  261. package/lib/controls/action/utils.d.ts +0 -15
  262. package/lib/controls/action/utils.d.ts.map +0 -1
  263. package/lib/controls/action/utils.js +0 -262
  264. package/lib/controls/action/utils.js.map +0 -1
  265. package/lib/controls/auto-complete/index.d.ts +0 -7
  266. package/lib/controls/auto-complete/index.d.ts.map +0 -1
  267. package/lib/controls/auto-complete/index.js +0 -58
  268. package/lib/controls/auto-complete/index.js.map +0 -1
  269. package/lib/controls/cascader/index.d.ts +0 -23
  270. package/lib/controls/cascader/index.d.ts.map +0 -1
  271. package/lib/controls/cascader/index.js +0 -108
  272. package/lib/controls/cascader/index.js.map +0 -1
  273. package/lib/controls/chemstruc/graph.d.ts +0 -40
  274. package/lib/controls/chemstruc/graph.d.ts.map +0 -1
  275. package/lib/controls/chemstruc/graph.js +0 -133
  276. package/lib/controls/chemstruc/graph.js.map +0 -1
  277. package/lib/controls/chemstruc/index.css +0 -28
  278. package/lib/controls/code-editor/sql-code-editor.d.ts +0 -15
  279. package/lib/controls/code-editor/sql-code-editor.d.ts.map +0 -1
  280. package/lib/controls/code-editor/sql-code-editor.js +0 -53
  281. package/lib/controls/code-editor/sql-code-editor.js.map +0 -1
  282. package/lib/controls/collapse-card/index.css +0 -9
  283. package/lib/controls/collapse-card/index.d.ts +0 -33
  284. package/lib/controls/collapse-card/index.d.ts.map +0 -1
  285. package/lib/controls/collapse-card/index.js +0 -74
  286. package/lib/controls/collapse-card/index.js.map +0 -1
  287. package/lib/controls/color-picker/index.css +0 -27
  288. package/lib/controls/color-picker/index.d.ts +0 -30
  289. package/lib/controls/color-picker/index.d.ts.map +0 -1
  290. package/lib/controls/color-picker/index.js +0 -64
  291. package/lib/controls/color-picker/index.js.map +0 -1
  292. package/lib/controls/counting-tag/index.d.ts +0 -20
  293. package/lib/controls/counting-tag/index.d.ts.map +0 -1
  294. package/lib/controls/counting-tag/index.js +0 -37
  295. package/lib/controls/counting-tag/index.js.map +0 -1
  296. package/lib/controls/cquery/cquick-button.d.ts +0 -36
  297. package/lib/controls/cquery/cquick-button.d.ts.map +0 -1
  298. package/lib/controls/cquery/cquick-button.js +0 -75
  299. package/lib/controls/cquery/cquick-button.js.map +0 -1
  300. package/lib/controls/date-picker/index.d.ts +0 -7
  301. package/lib/controls/date-picker/index.d.ts.map +0 -1
  302. package/lib/controls/date-picker/index.js +0 -91
  303. package/lib/controls/date-picker/index.js.map +0 -1
  304. package/lib/controls/entity-select/entity-select.d.ts +0 -87
  305. package/lib/controls/entity-select/entity-select.d.ts.map +0 -1
  306. package/lib/controls/entity-select/entity-select.js +0 -475
  307. package/lib/controls/entity-select/entity-select.js.map +0 -1
  308. package/lib/controls/entity-select/index.css +0 -6
  309. package/lib/controls/entity-select/lab-tree-select.d.ts +0 -36
  310. package/lib/controls/entity-select/lab-tree-select.d.ts.map +0 -1
  311. package/lib/controls/entity-select/lab-tree-select.js +0 -127
  312. package/lib/controls/entity-select/lab-tree-select.js.map +0 -1
  313. package/lib/controls/entity-select/popover-entity-select.d.ts +0 -33
  314. package/lib/controls/entity-select/popover-entity-select.d.ts.map +0 -1
  315. package/lib/controls/entity-select/popover-entity-select.js +0 -114
  316. package/lib/controls/entity-select/popover-entity-select.js.map +0 -1
  317. package/lib/controls/enum-badge/index.d.ts +0 -7
  318. package/lib/controls/enum-badge/index.d.ts.map +0 -1
  319. package/lib/controls/enum-badge/index.js +0 -14
  320. package/lib/controls/enum-badge/index.js.map +0 -1
  321. package/lib/controls/enum-tag/index.d.ts +0 -7
  322. package/lib/controls/enum-tag/index.d.ts.map +0 -1
  323. package/lib/controls/enum-tag/index.js +0 -27
  324. package/lib/controls/enum-tag/index.js.map +0 -1
  325. package/lib/controls/field-history/index.d.ts +0 -8
  326. package/lib/controls/field-history/index.d.ts.map +0 -1
  327. package/lib/controls/field-history/index.js +0 -67
  328. package/lib/controls/field-history/index.js.map +0 -1
  329. package/lib/controls/file-export/select-code-export.d.ts +0 -13
  330. package/lib/controls/file-export/select-code-export.d.ts.map +0 -1
  331. package/lib/controls/file-export/select-code-export.js +0 -14
  332. package/lib/controls/file-export/select-code-export.js.map +0 -1
  333. package/lib/controls/file-view/drawer-file-view.d.ts +0 -23
  334. package/lib/controls/file-view/drawer-file-view.d.ts.map +0 -1
  335. package/lib/controls/file-view/drawer-file-view.js +0 -49
  336. package/lib/controls/file-view/drawer-file-view.js.map +0 -1
  337. package/lib/controls/file-view/index.d.ts +0 -30
  338. package/lib/controls/file-view/index.d.ts.map +0 -1
  339. package/lib/controls/file-view/index.js +0 -122
  340. package/lib/controls/file-view/index.js.map +0 -1
  341. package/lib/controls/file-view/newin-file-view.d.ts +0 -18
  342. package/lib/controls/file-view/newin-file-view.d.ts.map +0 -1
  343. package/lib/controls/file-view/newin-file-view.js +0 -28
  344. package/lib/controls/file-view/newin-file-view.js.map +0 -1
  345. package/lib/controls/html-editor/draft.d.ts +0 -22
  346. package/lib/controls/html-editor/draft.d.ts.map +0 -1
  347. package/lib/controls/html-editor/draft.js +0 -122
  348. package/lib/controls/html-editor/draft.js.map +0 -1
  349. package/lib/controls/html-editor/tinymce.d.ts +0 -13
  350. package/lib/controls/html-editor/tinymce.d.ts.map +0 -1
  351. package/lib/controls/html-editor/tinymce.js +0 -47
  352. package/lib/controls/html-editor/tinymce.js.map +0 -1
  353. package/lib/controls/input-number/index.d.ts +0 -7
  354. package/lib/controls/input-number/index.d.ts.map +0 -1
  355. package/lib/controls/input-number/index.js +0 -77
  356. package/lib/controls/input-number/index.js.map +0 -1
  357. package/lib/controls/input-range/index.d.ts +0 -7
  358. package/lib/controls/input-range/index.d.ts.map +0 -1
  359. package/lib/controls/input-range/index.js +0 -29
  360. package/lib/controls/input-range/index.js.map +0 -1
  361. package/lib/controls/password-setter/index.css +0 -3
  362. package/lib/controls/password-setter/index.d.ts +0 -17
  363. package/lib/controls/password-setter/index.d.ts.map +0 -1
  364. package/lib/controls/password-setter/index.js +0 -59
  365. package/lib/controls/password-setter/index.js.map +0 -1
  366. package/lib/controls/progress/index.d.ts +0 -7
  367. package/lib/controls/progress/index.d.ts.map +0 -1
  368. package/lib/controls/progress/index.js +0 -52
  369. package/lib/controls/progress/index.js.map +0 -1
  370. package/lib/controls/relation-existion/index.css +0 -4
  371. package/lib/controls/relation-existion/index.d.ts +0 -31
  372. package/lib/controls/relation-existion/index.d.ts.map +0 -1
  373. package/lib/controls/relation-existion/index.js +0 -87
  374. package/lib/controls/relation-existion/index.js.map +0 -1
  375. package/lib/controls/rfield/index.css +0 -4
  376. package/lib/controls/rfield/index.d.ts +0 -41
  377. package/lib/controls/rfield/index.d.ts.map +0 -1
  378. package/lib/controls/rfield/index.js +0 -149
  379. package/lib/controls/rfield/index.js.map +0 -1
  380. package/lib/controls/select/index.d.ts +0 -30
  381. package/lib/controls/select/index.d.ts.map +0 -1
  382. package/lib/controls/select/index.js +0 -145
  383. package/lib/controls/select/index.js.map +0 -1
  384. package/lib/controls/signature/index.d.ts +0 -42
  385. package/lib/controls/signature/index.d.ts.map +0 -1
  386. package/lib/controls/signature/index.js +0 -155
  387. package/lib/controls/signature/index.js.map +0 -1
  388. package/lib/controls/steps/index.d.ts +0 -8
  389. package/lib/controls/steps/index.d.ts.map +0 -1
  390. package/lib/controls/steps/index.js +0 -47
  391. package/lib/controls/steps/index.js.map +0 -1
  392. package/lib/controls/text/ellipsis-text.d.ts +0 -31
  393. package/lib/controls/text/ellipsis-text.d.ts.map +0 -1
  394. package/lib/controls/text/ellipsis-text.js +0 -48
  395. package/lib/controls/text/ellipsis-text.js.map +0 -1
  396. package/lib/controls/upload/index.d.ts +0 -26
  397. package/lib/controls/upload/index.d.ts.map +0 -1
  398. package/lib/controls/upload/index.js +0 -109
  399. package/lib/controls/upload/index.js.map +0 -1
  400. package/lib/detail/button/bottom-submit-button-bar.d.ts +0 -24
  401. package/lib/detail/button/bottom-submit-button-bar.d.ts.map +0 -1
  402. package/lib/detail/button/bottom-submit-button-bar.js +0 -38
  403. package/lib/detail/button/bottom-submit-button-bar.js.map +0 -1
  404. package/lib/detail/button/cquery-button-bar.d.ts +0 -28
  405. package/lib/detail/button/cquery-button-bar.d.ts.map +0 -1
  406. package/lib/detail/button/cquery-button-bar.js +0 -79
  407. package/lib/detail/button/cquery-button-bar.js.map +0 -1
  408. package/lib/detail/button/edit-button.d.ts +0 -11
  409. package/lib/detail/button/edit-button.d.ts.map +0 -1
  410. package/lib/detail/button/edit-button.js +0 -29
  411. package/lib/detail/button/edit-button.js.map +0 -1
  412. package/lib/detail/button/fix-right-submit-button-bar.d.ts +0 -26
  413. package/lib/detail/button/fix-right-submit-button-bar.d.ts.map +0 -1
  414. package/lib/detail/button/fix-right-submit-button-bar.js +0 -93
  415. package/lib/detail/button/fix-right-submit-button-bar.js.map +0 -1
  416. package/lib/detail/button/index.css +0 -43
  417. package/lib/detail/button/submit-button-bar.d.ts +0 -22
  418. package/lib/detail/button/submit-button-bar.d.ts.map +0 -1
  419. package/lib/detail/button/submit-button-bar.js +0 -22
  420. package/lib/detail/button/submit-button-bar.js.map +0 -1
  421. package/lib/detail/button/view-button.d.ts +0 -11
  422. package/lib/detail/button/view-button.d.ts.map +0 -1
  423. package/lib/detail/button/view-button.js +0 -28
  424. package/lib/detail/button/view-button.js.map +0 -1
  425. package/lib/detail/edit/dtmpl-edit.d.ts +0 -48
  426. package/lib/detail/edit/dtmpl-edit.d.ts.map +0 -1
  427. package/lib/detail/edit/dtmpl-edit.js +0 -236
  428. package/lib/detail/edit/dtmpl-edit.js.map +0 -1
  429. package/lib/detail/edit/fields-edit-card.d.ts +0 -51
  430. package/lib/detail/edit/fields-edit-card.d.ts.map +0 -1
  431. package/lib/detail/edit/fields-edit-card.js +0 -63
  432. package/lib/detail/edit/fields-edit-card.js.map +0 -1
  433. package/lib/detail/edit/modal-row-edit.d.ts +0 -43
  434. package/lib/detail/edit/modal-row-edit.d.ts.map +0 -1
  435. package/lib/detail/edit/modal-row-edit.js +0 -60
  436. package/lib/detail/edit/modal-row-edit.js.map +0 -1
  437. package/lib/detail/edit/post-result/index.d.ts +0 -17
  438. package/lib/detail/edit/post-result/index.d.ts.map +0 -1
  439. package/lib/detail/edit/post-result/index.js +0 -33
  440. package/lib/detail/edit/post-result/index.js.map +0 -1
  441. package/lib/detail/edit/row-edit-card.d.ts +0 -54
  442. package/lib/detail/edit/row-edit-card.d.ts.map +0 -1
  443. package/lib/detail/edit/row-edit-card.js +0 -83
  444. package/lib/detail/edit/row-edit-card.js.map +0 -1
  445. package/lib/detail/edit/row-editor.d.ts +0 -33
  446. package/lib/detail/edit/row-editor.d.ts.map +0 -1
  447. package/lib/detail/edit/row-editor.js +0 -57
  448. package/lib/detail/edit/row-editor.js.map +0 -1
  449. package/lib/detail/rightbar/index.css +0 -35
  450. package/lib/detail/rightbar/index.d.ts +0 -31
  451. package/lib/detail/rightbar/index.d.ts.map +0 -1
  452. package/lib/detail/rightbar/index.js +0 -59
  453. package/lib/detail/rightbar/index.js.map +0 -1
  454. package/lib/detail/tooltipbar/index.d.ts +0 -19
  455. package/lib/detail/tooltipbar/index.d.ts.map +0 -1
  456. package/lib/detail/tooltipbar/index.js +0 -29
  457. package/lib/detail/tooltipbar/index.js.map +0 -1
  458. package/lib/detail/view/act-dtmpl-view.d.ts +0 -64
  459. package/lib/detail/view/act-dtmpl-view.d.ts.map +0 -1
  460. package/lib/detail/view/act-dtmpl-view.js +0 -152
  461. package/lib/detail/view/act-dtmpl-view.js.map +0 -1
  462. package/lib/detail/view/dtmpl-view.d.ts +0 -43
  463. package/lib/detail/view/dtmpl-view.d.ts.map +0 -1
  464. package/lib/detail/view/dtmpl-view.js +0 -164
  465. package/lib/detail/view/dtmpl-view.js.map +0 -1
  466. package/lib/detail/view/field-view-group.d.ts +0 -30
  467. package/lib/detail/view/field-view-group.d.ts.map +0 -1
  468. package/lib/detail/view/field-view-group.js +0 -45
  469. package/lib/detail/view/field-view-group.js.map +0 -1
  470. package/lib/detail/view/modal-dtmpl-view.d.ts +0 -40
  471. package/lib/detail/view/modal-dtmpl-view.d.ts.map +0 -1
  472. package/lib/detail/view/modal-dtmpl-view.js +0 -34
  473. package/lib/detail/view/modal-dtmpl-view.js.map +0 -1
  474. package/lib/detail/view/snapshot-timeline.d.ts +0 -44
  475. package/lib/detail/view/snapshot-timeline.d.ts.map +0 -1
  476. package/lib/detail/view/snapshot-timeline.js +0 -92
  477. package/lib/detail/view/snapshot-timeline.js.map +0 -1
  478. package/lib/index.d.ts +0 -51
  479. package/lib/index.d.ts.map +0 -1
  480. package/lib/index.js +0 -116
  481. package/lib/index.js.map +0 -1
  482. package/lib/layout/footer/index.css +0 -6
  483. package/lib/layout/footer/index.d.ts +0 -7
  484. package/lib/layout/footer/index.d.ts.map +0 -1
  485. package/lib/layout/footer/index.js +0 -12
  486. package/lib/layout/footer/index.js.map +0 -1
  487. package/lib/layout/header/index.css +0 -122
  488. package/lib/layout/header/index.d.ts +0 -10
  489. package/lib/layout/header/index.d.ts.map +0 -1
  490. package/lib/layout/header/index.js +0 -62
  491. package/lib/layout/header/index.js.map +0 -1
  492. package/lib/layout/menu/block.css +0 -7
  493. package/lib/layout/menu/block.d.ts +0 -33
  494. package/lib/layout/menu/block.d.ts.map +0 -1
  495. package/lib/layout/menu/block.js +0 -128
  496. package/lib/layout/menu/block.js.map +0 -1
  497. package/lib/layout/menu/l2menu-message-bar.d.ts +0 -28
  498. package/lib/layout/menu/l2menu-message-bar.d.ts.map +0 -1
  499. package/lib/layout/menu/l2menu-message-bar.js +0 -114
  500. package/lib/layout/menu/l2menu-message-bar.js.map +0 -1
  501. package/lib/layout/menu/l2menu-quick-bar.d.ts +0 -45
  502. package/lib/layout/menu/l2menu-quick-bar.d.ts.map +0 -1
  503. package/lib/layout/menu/l2menu-quick-bar.js +0 -108
  504. package/lib/layout/menu/l2menu-quick-bar.js.map +0 -1
  505. package/lib/layout/menu/menu-2layers.d.ts +0 -26
  506. package/lib/layout/menu/menu-2layers.d.ts.map +0 -1
  507. package/lib/layout/menu/menu-2layers.js +0 -95
  508. package/lib/layout/menu/menu-2layers.js.map +0 -1
  509. package/lib/layout/menu/menu-render.d.ts +0 -14
  510. package/lib/layout/menu/menu-render.d.ts.map +0 -1
  511. package/lib/layout/menu/menu-render.js +0 -159
  512. package/lib/layout/menu/menu-render.js.map +0 -1
  513. package/lib/layout/menu/reset-password.d.ts +0 -38
  514. package/lib/layout/menu/reset-password.d.ts.map +0 -1
  515. package/lib/layout/menu/reset-password.js +0 -143
  516. package/lib/layout/menu/reset-password.js.map +0 -1
  517. package/lib/layout/menu/user-bar.d.ts +0 -50
  518. package/lib/layout/menu/user-bar.d.ts.map +0 -1
  519. package/lib/layout/menu/user-bar.js +0 -161
  520. package/lib/layout/menu/user-bar.js.map +0 -1
  521. package/lib/layout/menu/userinfo-bar.d.ts +0 -34
  522. package/lib/layout/menu/userinfo-bar.d.ts.map +0 -1
  523. package/lib/layout/menu/userinfo-bar.js +0 -49
  524. package/lib/layout/menu/userinfo-bar.js.map +0 -1
  525. package/lib/layout/sidebar/index.css +0 -57
  526. package/lib/layout/sidebar/index.d.ts +0 -12
  527. package/lib/layout/sidebar/index.d.ts.map +0 -1
  528. package/lib/layout/sidebar/index.js +0 -45
  529. package/lib/layout/sidebar/index.js.map +0 -1
  530. package/lib/layout/sidebar/logo.png +0 -0
  531. package/lib/layout2/components/userButton.d.ts +0 -5
  532. package/lib/layout2/components/userButton.d.ts.map +0 -1
  533. package/lib/layout2/components/userButton.js +0 -133
  534. package/lib/layout2/components/userButton.js.map +0 -1
  535. package/lib/layout2/css/header.css +0 -38
  536. package/lib/layout2/imgs/home.png +0 -0
  537. package/lib/layout2/type/layout.type.d.ts +0 -10
  538. package/lib/layout2/type/layout.type.d.ts.map +0 -1
  539. package/lib/layout2/type/layout.type.js +0 -2
  540. package/lib/layout2/type/layout.type.js.map +0 -1
  541. package/lib/layout2/util/menu.util.d.ts +0 -28
  542. package/lib/layout2/util/menu.util.d.ts.map +0 -1
  543. package/lib/layout2/util/menu.util.js +0 -85
  544. package/lib/layout2/util/menu.util.js.map +0 -1
  545. package/lib/login/vertify/index.css +0 -144
  546. package/lib/login/vertify/index.d.ts +0 -78
  547. package/lib/login/vertify/index.d.ts.map +0 -1
  548. package/lib/login/vertify/index.js +0 -210
  549. package/lib/login/vertify/index.js.map +0 -1
  550. package/lib/login/vertify/tool.d.ts +0 -5
  551. package/lib/login/vertify/tool.d.ts.map +0 -1
  552. package/lib/login/vertify/tool.js +0 -11
  553. package/lib/login/vertify/tool.js.map +0 -1
  554. package/lib/login2/img/login-bg.png +0 -0
  555. package/lib/table/column/column-selector.d.ts +0 -25
  556. package/lib/table/column/column-selector.d.ts.map +0 -1
  557. package/lib/table/column/column-selector.js +0 -62
  558. package/lib/table/column/column-selector.js.map +0 -1
  559. package/lib/table/column/index.css +0 -14
  560. package/lib/table/stat/restat.d.ts +0 -38
  561. package/lib/table/stat/restat.d.ts.map +0 -1
  562. package/lib/table/stat/restat.js +0 -62
  563. package/lib/table/stat/restat.js.map +0 -1
  564. package/lib/welcome/img/development.png +0 -0
  565. package/lib/welcome/img/pain-point.png +0 -0
  566. package/lib/welcome/img/target.png +0 -0
  567. package/lib/welcome/img/time-cost.png +0 -0
  568. package/lib/welcome/img/time-prograss.png +0 -0
  569. package/lib/welcome/img/welcome.png +0 -0
@@ -1,360 +1,360 @@
1
- import React, { useRef, useState, useEffect, ReactNode, memo } from "react";
2
- import { getRandomNumberByRange, sum, square } from "./tool";
3
- import "./index.css";
4
- import { useLocale } from "../../locale/useLocale";
5
-
6
- interface VertifyType {
7
- spliced: boolean;
8
- verified: boolean; // 简单验证拖动轨迹,为零时表示Y轴上下没有波动,可能非人为操作
9
- left: number; // 滑块的移动位置
10
- destX: number; // 滑块的目标位置
11
- }
12
-
13
- interface IVertifyProp {
14
- /**
15
- * @description canvas宽度
16
- * @default 320
17
- */
18
- width?: number;
19
- /**
20
- * @description canvas高度
21
- * @default 160
22
- */
23
- height?: number;
24
- /**
25
- * @description 滑块边长
26
- * @default 42
27
- */
28
- l?: number;
29
- /**
30
- * @description 滑块半径
31
- * @default 9
32
- */
33
- r?: number;
34
- /**
35
- * @description 是否可见
36
- * @default true
37
- */
38
- visible?: boolean;
39
- /**
40
- * @description 滑块文本
41
- * @default 向右滑动填充拼图
42
- */
43
- text?: string | ReactNode;
44
- /**
45
- * @description 刷新按钮icon, 为icon的url地址
46
- * @default -
47
- */
48
- refreshIcon?: string;
49
- /**
50
- * @description 用于获取随机图片的url地址
51
- * @default https://picsum.photos/${id}/${width}/${height}, 具体参考https://picsum.photos/, 只需要实现类似接口即可
52
- */
53
- imgUrl?: string;
54
- /**
55
- * @description 拖拽滑块时的回调, 参数为当前滑块拖拽的距离
56
- * @default (l: number):void => {}
57
- */
58
- onDraw?: (l: number) => {};
59
- /**
60
- * @description 用户的自定义验证逻辑
61
- * @default (arg: VertifyType) => VertifyType
62
- */
63
- onCustomVertify?: (arg: VertifyType) => VertifyType;
64
- /**
65
- * @description 验证成功回调
66
- * @default ():void => {}
67
- */
68
- onSuccess?: VoidFunction;
69
- /**
70
- * @description 验证失败回调
71
- * @default ():void => {}
72
- */
73
- onFail?: VoidFunction;
74
- /**
75
- * @description 刷新时回调
76
- * @default ():void => {}
77
- */
78
- onRefresh?: VoidFunction;
79
- }
80
-
81
- export default memo(
82
- ({
83
- width = 320,
84
- height = 160,
85
- l = 42,
86
- r = 9,
87
- imgUrl,
88
- text,
89
- refreshIcon = "http://cdn.dooring.cn/dr/icon12.png",
90
- visible = true,
91
- onDraw,
92
- onCustomVertify,
93
- onSuccess,
94
- onFail,
95
- onRefresh,
96
- }: IVertifyProp) => {
97
- const { translate } = useLocale();
98
-
99
- const [isLoading, setLoading] = useState(false);
100
- const [sliderLeft, setSliderLeft] = useState(0);
101
- const [sliderClass, setSliderClass] = useState("sliderContainer");
102
- const [textTip, setTextTip] = useState(text);
103
- const canvasRef = useRef<any>(null);
104
- const blockRef = useRef<any>(null);
105
- const imgRef = useRef<any>(null);
106
- const isMouseDownRef = useRef<boolean>(false);
107
- const trailRef = useRef<number[]>([]);
108
- const originXRef = useRef<number>(0);
109
- const originYRef = useRef<number>(0);
110
- const xRef = useRef<number>(0);
111
- const yRef = useRef<number>(0);
112
- const PI = Math.PI;
113
- const L = l + r * 2 + 3; // 滑块实际边长
114
-
115
- const drawPath = (
116
- ctx: any,
117
- x: number,
118
- y: number,
119
- operation: "fill" | "clip"
120
- ) => {
121
- ctx.beginPath();
122
- ctx.moveTo(x, y);
123
- ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);
124
- ctx.lineTo(x + l, y);
125
- ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);
126
- ctx.lineTo(x + l, y + l);
127
- ctx.lineTo(x, y + l);
128
- ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);
129
- ctx.lineTo(x, y);
130
- ctx.lineWidth = 2;
131
- ctx.fillStyle = "rgba(255, 255, 255, 0.7)";
132
- ctx.strokeStyle = "rgba(255, 255, 255, 0.7)";
133
- ctx.stroke();
134
- ctx.globalCompositeOperation = "destination-over";
135
- operation === "fill" ? ctx.fill() : ctx.clip();
136
- };
137
-
138
- const getRandomImgSrc = () => {
139
- return (
140
- imgUrl ||
141
- `https://picsum.photos/id/${getRandomNumberByRange(
142
- 0,
143
- 1084
144
- )}/${width}/${height}`
145
- );
146
- };
147
-
148
- const createImg = (onload: VoidFunction) => {
149
- const img = new Image();
150
- img.crossOrigin = "Anonymous";
151
- img.onload = onload;
152
- img.onerror = () => {
153
- (img as any).setSrc(getRandomImgSrc()); // 图片加载失败的时候重新加载其他图片
154
- };
155
-
156
- (img as any).setSrc = (src: string) => {
157
- const isIE = window.navigator.userAgent.indexOf("Trident") > -1;
158
- if (isIE) {
159
- // IE浏览器无法通过img.crossOrigin跨域,使用ajax获取图片blob然后转为dataURL显示
160
- const xhr = new XMLHttpRequest();
161
- xhr.onloadend = function(e: any) {
162
- const file = new FileReader(); // FileReader仅支持IE10+
163
- file.readAsDataURL(e.target.response);
164
- file.onloadend = function(e) {
165
- img.src = e?.target?.result as string;
166
- };
167
- };
168
- xhr.open("GET", src);
169
- xhr.responseType = "blob";
170
- xhr.send();
171
- } else img.src = src;
172
- };
173
-
174
- (img as any).setSrc(getRandomImgSrc());
175
- return img;
176
- };
177
-
178
- const draw = (img: HTMLImageElement) => {
179
- const canvasCtx = canvasRef.current.getContext("2d");
180
- const blockCtx = blockRef.current.getContext("2d");
181
- // 随机位置创建拼图形状
182
- xRef.current = getRandomNumberByRange(L + 10, width - (L + 10));
183
- yRef.current = getRandomNumberByRange(10 + r * 2, height - (L + 10));
184
- drawPath(canvasCtx, xRef.current, yRef.current, "fill");
185
- drawPath(blockCtx, xRef.current, yRef.current, "clip");
186
-
187
- // 画入图片
188
- canvasCtx.drawImage(img, 0, 0, width, height);
189
- blockCtx.drawImage(img, 0, 0, width, height);
190
-
191
- // 提取滑块并放到最左边
192
- const y1 = yRef.current - r * 2 - 1;
193
- const ImageData = blockCtx.getImageData(xRef.current - 3, y1, L, L);
194
- blockRef.current.width = L;
195
- blockCtx.putImageData(ImageData, 0, y1);
196
- };
197
-
198
- const initImg = () => {
199
- setLoading(true);
200
- const img = createImg(() => {
201
- setLoading(false);
202
- draw(img);
203
- });
204
- imgRef.current = img;
205
- };
206
-
207
- const reset = () => {
208
- const canvasCtx = canvasRef.current.getContext("2d");
209
- const blockCtx = blockRef.current.getContext("2d");
210
- // 重置样式
211
- setSliderLeft(0);
212
- setSliderClass("sliderContainer");
213
- blockRef.current.width = width;
214
- blockRef.current.style.left = 0 + "px";
215
-
216
- // 清空画布
217
- canvasCtx.clearRect(0, 0, width, height);
218
- blockCtx.clearRect(0, 0, width, height);
219
-
220
- // 重新加载图片
221
- setLoading(true);
222
- imgRef.current.setSrc(getRandomImgSrc());
223
- };
224
-
225
- const handleRefresh = () => {
226
- reset();
227
- typeof onRefresh === "function" && onRefresh();
228
- };
229
-
230
- const verify = () => {
231
- const arr = trailRef.current; // 拖动时y轴的移动距离
232
- const average = arr.reduce(sum) / arr.length;
233
- const deviations = arr.map((x) => x - average);
234
- const stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length);
235
- const left = parseInt(blockRef.current.style.left);
236
- return {
237
- spliced: Math.abs(left - xRef.current) < 10,
238
- verified: stddev !== 0, // 简单验证拖动轨迹,为零时表示Y轴上下没有波动,可能非人为操作
239
- left,
240
- destX: xRef.current,
241
- };
242
- };
243
-
244
- const handleDragStart = function(e: any) {
245
- originXRef.current = e.clientX || e.touches[0].clientX;
246
- originYRef.current = e.clientY || e.touches[0].clientY;
247
- isMouseDownRef.current = true;
248
- };
249
-
250
- const handleDragMove = (e: any) => {
251
- if (!isMouseDownRef.current) return false;
252
- e.preventDefault();
253
- const eventX = e.clientX || e.touches[0].clientX;
254
- const eventY = e.clientY || e.touches[0].clientY;
255
- const moveX = eventX - originXRef.current;
256
- const moveY = eventY - originYRef.current;
257
- if (moveX < 0 || moveX + 38 >= width) return false;
258
- setSliderLeft(moveX);
259
- const blockLeft = ((width - 40 - 20) / (width - 40)) * moveX;
260
- blockRef.current.style.left = blockLeft + "px";
261
-
262
- setSliderClass("sliderContainer sliderContainer_active");
263
- trailRef.current.push(moveY);
264
- onDraw && onDraw(blockLeft);
265
- };
266
-
267
- const handleDragEnd = (e: any) => {
268
- if (!isMouseDownRef.current) return false;
269
- isMouseDownRef.current = false;
270
- const eventX = e.clientX || e.changedTouches[0].clientX;
271
- if (eventX === originXRef.current) return false;
272
- setSliderClass("sliderContainer");
273
- const { spliced, verified } = onCustomVertify
274
- ? onCustomVertify(verify())
275
- : verify();
276
- if (spliced) {
277
- if (verified) {
278
- setSliderClass("sliderContainer sliderContainer_success");
279
- typeof onSuccess === "function" && onSuccess();
280
- } else {
281
- setSliderClass("sliderContainer sliderContainer_fail");
282
- setTextTip(translate("${请再试一次}"));
283
- reset();
284
- }
285
- } else {
286
- setSliderClass("sliderContainer sliderContainer_fail");
287
- typeof onFail === "function" && onFail();
288
- setTimeout(reset.bind(this), 1000);
289
- }
290
- };
291
-
292
- useEffect(() => {
293
- if (visible) {
294
- imgRef.current ? reset() : initImg();
295
- }
296
- }, [visible]);
297
-
298
- return (
299
- <div
300
- className="vertifyWrap"
301
- style={{
302
- width: width + "px",
303
- margin: "0 auto",
304
- display: visible ? "" : "none",
305
- background: "white",
306
- }}
307
- onMouseMove={handleDragMove}
308
- onMouseUp={handleDragEnd}
309
- onTouchMove={handleDragMove}
310
- onTouchEnd={handleDragEnd}
311
- >
312
- <div className="canvasArea">
313
- <canvas ref={canvasRef} width={width} height={height}></canvas>
314
- <canvas
315
- ref={blockRef}
316
- className="block"
317
- width={width}
318
- height={height}
319
- onMouseDown={handleDragStart}
320
- onTouchStart={handleDragStart}
321
- ></canvas>
322
- </div>
323
- <div
324
- className={sliderClass}
325
- style={{
326
- pointerEvents: isLoading ? "none" : "auto",
327
- width: width + "px",
328
- }}
329
- >
330
- <div className="sliderMask" style={{ width: sliderLeft + "px" }}>
331
- <div
332
- className="slider"
333
- style={{ left: sliderLeft + "px" }}
334
- onMouseDown={handleDragStart}
335
- onTouchStart={handleDragStart}
336
- >
337
- <div className="sliderIcon">&rarr;</div>
338
- </div>
339
- </div>
340
- <div className="sliderText">{textTip}</div>
341
- </div>
342
- <div
343
- className="refreshIcon"
344
- onClick={handleRefresh}
345
- style={{ backgroundImage: `url(${refreshIcon})` }}
346
- ></div>
347
- <div
348
- className="loadingContainer"
349
- style={{
350
- width: width + "px",
351
- height: height + "px",
352
- display: isLoading ? "" : "none",
353
- }}
354
- >
355
- <div className="loadingIcon"></div>
356
- </div>
357
- </div>
358
- );
359
- }
360
- );
1
+ import React, { useRef, useState, useEffect, ReactNode, memo } from "react";
2
+ import { getRandomNumberByRange, sum, square } from "./tool";
3
+ import "./index.css";
4
+ import { useLocale } from "../../locale/useLocale";
5
+
6
+ interface VertifyType {
7
+ spliced: boolean;
8
+ verified: boolean; // 简单验证拖动轨迹,为零时表示Y轴上下没有波动,可能非人为操作
9
+ left: number; // 滑块的移动位置
10
+ destX: number; // 滑块的目标位置
11
+ }
12
+
13
+ interface IVertifyProp {
14
+ /**
15
+ * @description canvas宽度
16
+ * @default 320
17
+ */
18
+ width?: number;
19
+ /**
20
+ * @description canvas高度
21
+ * @default 160
22
+ */
23
+ height?: number;
24
+ /**
25
+ * @description 滑块边长
26
+ * @default 42
27
+ */
28
+ l?: number;
29
+ /**
30
+ * @description 滑块半径
31
+ * @default 9
32
+ */
33
+ r?: number;
34
+ /**
35
+ * @description 是否可见
36
+ * @default true
37
+ */
38
+ visible?: boolean;
39
+ /**
40
+ * @description 滑块文本
41
+ * @default 向右滑动填充拼图
42
+ */
43
+ text?: string | ReactNode;
44
+ /**
45
+ * @description 刷新按钮icon, 为icon的url地址
46
+ * @default -
47
+ */
48
+ refreshIcon?: string;
49
+ /**
50
+ * @description 用于获取随机图片的url地址
51
+ * @default https://picsum.photos/${id}/${width}/${height}, 具体参考https://picsum.photos/, 只需要实现类似接口即可
52
+ */
53
+ imgUrl?: string;
54
+ /**
55
+ * @description 拖拽滑块时的回调, 参数为当前滑块拖拽的距离
56
+ * @default (l: number):void => {}
57
+ */
58
+ onDraw?: (l: number) => {};
59
+ /**
60
+ * @description 用户的自定义验证逻辑
61
+ * @default (arg: VertifyType) => VertifyType
62
+ */
63
+ onCustomVertify?: (arg: VertifyType) => VertifyType;
64
+ /**
65
+ * @description 验证成功回调
66
+ * @default ():void => {}
67
+ */
68
+ onSuccess?: VoidFunction;
69
+ /**
70
+ * @description 验证失败回调
71
+ * @default ():void => {}
72
+ */
73
+ onFail?: VoidFunction;
74
+ /**
75
+ * @description 刷新时回调
76
+ * @default ():void => {}
77
+ */
78
+ onRefresh?: VoidFunction;
79
+ }
80
+
81
+ export default memo(
82
+ ({
83
+ width = 320,
84
+ height = 160,
85
+ l = 42,
86
+ r = 9,
87
+ imgUrl,
88
+ text,
89
+ refreshIcon = "http://cdn.dooring.cn/dr/icon12.png",
90
+ visible = true,
91
+ onDraw,
92
+ onCustomVertify,
93
+ onSuccess,
94
+ onFail,
95
+ onRefresh,
96
+ }: IVertifyProp) => {
97
+ const { translate } = useLocale();
98
+
99
+ const [isLoading, setLoading] = useState(false);
100
+ const [sliderLeft, setSliderLeft] = useState(0);
101
+ const [sliderClass, setSliderClass] = useState("sliderContainer");
102
+ const [textTip, setTextTip] = useState(text);
103
+ const canvasRef = useRef<any>(null);
104
+ const blockRef = useRef<any>(null);
105
+ const imgRef = useRef<any>(null);
106
+ const isMouseDownRef = useRef<boolean>(false);
107
+ const trailRef = useRef<number[]>([]);
108
+ const originXRef = useRef<number>(0);
109
+ const originYRef = useRef<number>(0);
110
+ const xRef = useRef<number>(0);
111
+ const yRef = useRef<number>(0);
112
+ const PI = Math.PI;
113
+ const L = l + r * 2 + 3; // 滑块实际边长
114
+
115
+ const drawPath = (
116
+ ctx: any,
117
+ x: number,
118
+ y: number,
119
+ operation: "fill" | "clip"
120
+ ) => {
121
+ ctx.beginPath();
122
+ ctx.moveTo(x, y);
123
+ ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);
124
+ ctx.lineTo(x + l, y);
125
+ ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);
126
+ ctx.lineTo(x + l, y + l);
127
+ ctx.lineTo(x, y + l);
128
+ ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);
129
+ ctx.lineTo(x, y);
130
+ ctx.lineWidth = 2;
131
+ ctx.fillStyle = "rgba(255, 255, 255, 0.7)";
132
+ ctx.strokeStyle = "rgba(255, 255, 255, 0.7)";
133
+ ctx.stroke();
134
+ ctx.globalCompositeOperation = "destination-over";
135
+ operation === "fill" ? ctx.fill() : ctx.clip();
136
+ };
137
+
138
+ const getRandomImgSrc = () => {
139
+ return (
140
+ imgUrl ||
141
+ `https://picsum.photos/id/${getRandomNumberByRange(
142
+ 0,
143
+ 1084
144
+ )}/${width}/${height}`
145
+ );
146
+ };
147
+
148
+ const createImg = (onload: VoidFunction) => {
149
+ const img = new Image();
150
+ img.crossOrigin = "Anonymous";
151
+ img.onload = onload;
152
+ img.onerror = () => {
153
+ (img as any).setSrc(getRandomImgSrc()); // 图片加载失败的时候重新加载其他图片
154
+ };
155
+
156
+ (img as any).setSrc = (src: string) => {
157
+ const isIE = window.navigator.userAgent.indexOf("Trident") > -1;
158
+ if (isIE) {
159
+ // IE浏览器无法通过img.crossOrigin跨域,使用ajax获取图片blob然后转为dataURL显示
160
+ const xhr = new XMLHttpRequest();
161
+ xhr.onloadend = function(e: any) {
162
+ const file = new FileReader(); // FileReader仅支持IE10+
163
+ file.readAsDataURL(e.target.response);
164
+ file.onloadend = function(e) {
165
+ img.src = e?.target?.result as string;
166
+ };
167
+ };
168
+ xhr.open("GET", src);
169
+ xhr.responseType = "blob";
170
+ xhr.send();
171
+ } else img.src = src;
172
+ };
173
+
174
+ (img as any).setSrc(getRandomImgSrc());
175
+ return img;
176
+ };
177
+
178
+ const draw = (img: HTMLImageElement) => {
179
+ const canvasCtx = canvasRef.current.getContext("2d");
180
+ const blockCtx = blockRef.current.getContext("2d");
181
+ // 随机位置创建拼图形状
182
+ xRef.current = getRandomNumberByRange(L + 10, width - (L + 10));
183
+ yRef.current = getRandomNumberByRange(10 + r * 2, height - (L + 10));
184
+ drawPath(canvasCtx, xRef.current, yRef.current, "fill");
185
+ drawPath(blockCtx, xRef.current, yRef.current, "clip");
186
+
187
+ // 画入图片
188
+ canvasCtx.drawImage(img, 0, 0, width, height);
189
+ blockCtx.drawImage(img, 0, 0, width, height);
190
+
191
+ // 提取滑块并放到最左边
192
+ const y1 = yRef.current - r * 2 - 1;
193
+ const ImageData = blockCtx.getImageData(xRef.current - 3, y1, L, L);
194
+ blockRef.current.width = L;
195
+ blockCtx.putImageData(ImageData, 0, y1);
196
+ };
197
+
198
+ const initImg = () => {
199
+ setLoading(true);
200
+ const img = createImg(() => {
201
+ setLoading(false);
202
+ draw(img);
203
+ });
204
+ imgRef.current = img;
205
+ };
206
+
207
+ const reset = () => {
208
+ const canvasCtx = canvasRef.current.getContext("2d");
209
+ const blockCtx = blockRef.current.getContext("2d");
210
+ // 重置样式
211
+ setSliderLeft(0);
212
+ setSliderClass("sliderContainer");
213
+ blockRef.current.width = width;
214
+ blockRef.current.style.left = 0 + "px";
215
+
216
+ // 清空画布
217
+ canvasCtx.clearRect(0, 0, width, height);
218
+ blockCtx.clearRect(0, 0, width, height);
219
+
220
+ // 重新加载图片
221
+ setLoading(true);
222
+ imgRef.current.setSrc(getRandomImgSrc());
223
+ };
224
+
225
+ const handleRefresh = () => {
226
+ reset();
227
+ typeof onRefresh === "function" && onRefresh();
228
+ };
229
+
230
+ const verify = () => {
231
+ const arr = trailRef.current; // 拖动时y轴的移动距离
232
+ const average = arr.reduce(sum) / arr.length;
233
+ const deviations = arr.map((x) => x - average);
234
+ const stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length);
235
+ const left = parseInt(blockRef.current.style.left);
236
+ return {
237
+ spliced: Math.abs(left - xRef.current) < 10,
238
+ verified: stddev !== 0, // 简单验证拖动轨迹,为零时表示Y轴上下没有波动,可能非人为操作
239
+ left,
240
+ destX: xRef.current,
241
+ };
242
+ };
243
+
244
+ const handleDragStart = function(e: any) {
245
+ originXRef.current = e.clientX || e.touches[0].clientX;
246
+ originYRef.current = e.clientY || e.touches[0].clientY;
247
+ isMouseDownRef.current = true;
248
+ };
249
+
250
+ const handleDragMove = (e: any) => {
251
+ if (!isMouseDownRef.current) return false;
252
+ e.preventDefault();
253
+ const eventX = e.clientX || e.touches[0].clientX;
254
+ const eventY = e.clientY || e.touches[0].clientY;
255
+ const moveX = eventX - originXRef.current;
256
+ const moveY = eventY - originYRef.current;
257
+ if (moveX < 0 || moveX + 38 >= width) return false;
258
+ setSliderLeft(moveX);
259
+ const blockLeft = ((width - 40 - 20) / (width - 40)) * moveX;
260
+ blockRef.current.style.left = blockLeft + "px";
261
+
262
+ setSliderClass("sliderContainer sliderContainer_active");
263
+ trailRef.current.push(moveY);
264
+ onDraw && onDraw(blockLeft);
265
+ };
266
+
267
+ const handleDragEnd = (e: any) => {
268
+ if (!isMouseDownRef.current) return false;
269
+ isMouseDownRef.current = false;
270
+ const eventX = e.clientX || e.changedTouches[0].clientX;
271
+ if (eventX === originXRef.current) return false;
272
+ setSliderClass("sliderContainer");
273
+ const { spliced, verified } = onCustomVertify
274
+ ? onCustomVertify(verify())
275
+ : verify();
276
+ if (spliced) {
277
+ if (verified) {
278
+ setSliderClass("sliderContainer sliderContainer_success");
279
+ typeof onSuccess === "function" && onSuccess();
280
+ } else {
281
+ setSliderClass("sliderContainer sliderContainer_fail");
282
+ setTextTip(translate("${请再试一次}"));
283
+ reset();
284
+ }
285
+ } else {
286
+ setSliderClass("sliderContainer sliderContainer_fail");
287
+ typeof onFail === "function" && onFail();
288
+ setTimeout(reset.bind(this), 1000);
289
+ }
290
+ };
291
+
292
+ useEffect(() => {
293
+ if (visible) {
294
+ imgRef.current ? reset() : initImg();
295
+ }
296
+ }, [visible]);
297
+
298
+ return (
299
+ <div
300
+ className="vertifyWrap"
301
+ style={{
302
+ width: width + "px",
303
+ margin: "0 auto",
304
+ display: visible ? "" : "none",
305
+ background: "white",
306
+ }}
307
+ onMouseMove={handleDragMove}
308
+ onMouseUp={handleDragEnd}
309
+ onTouchMove={handleDragMove}
310
+ onTouchEnd={handleDragEnd}
311
+ >
312
+ <div className="canvasArea">
313
+ <canvas ref={canvasRef} width={width} height={height}></canvas>
314
+ <canvas
315
+ ref={blockRef}
316
+ className="block"
317
+ width={width}
318
+ height={height}
319
+ onMouseDown={handleDragStart}
320
+ onTouchStart={handleDragStart}
321
+ ></canvas>
322
+ </div>
323
+ <div
324
+ className={sliderClass}
325
+ style={{
326
+ pointerEvents: isLoading ? "none" : "auto",
327
+ width: width + "px",
328
+ }}
329
+ >
330
+ <div className="sliderMask" style={{ width: sliderLeft + "px" }}>
331
+ <div
332
+ className="slider"
333
+ style={{ left: sliderLeft + "px" }}
334
+ onMouseDown={handleDragStart}
335
+ onTouchStart={handleDragStart}
336
+ >
337
+ <div className="sliderIcon">&rarr;</div>
338
+ </div>
339
+ </div>
340
+ <div className="sliderText">{textTip}</div>
341
+ </div>
342
+ <div
343
+ className="refreshIcon"
344
+ onClick={handleRefresh}
345
+ style={{ backgroundImage: `url(${refreshIcon})` }}
346
+ ></div>
347
+ <div
348
+ className="loadingContainer"
349
+ style={{
350
+ width: width + "px",
351
+ height: height + "px",
352
+ display: isLoading ? "" : "none",
353
+ }}
354
+ >
355
+ <div className="loadingIcon"></div>
356
+ </div>
357
+ </div>
358
+ );
359
+ }
360
+ );