@ibiz-template/vue3-util 0.7.41-alpha.13 → 0.7.41-alpha.131

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 (647) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/index.system.min.js +1 -1
  3. package/es/common/badge/badge.css +1 -1
  4. package/es/common/badge/badge.d.ts +6 -8
  5. package/es/common/badge/badge.d.ts.map +1 -1
  6. package/es/common/badge/badge.mjs +13 -7
  7. package/es/common/code-list/code-list.d.ts +10 -10
  8. package/es/common/code-list/code-list.d.ts.map +1 -1
  9. package/es/common/code-list/code-list.mjs +1 -1
  10. package/es/common/control-base/control-base.d.ts.map +1 -1
  11. package/es/common/control-base/control-base.mjs +9 -15
  12. package/es/common/control-loading-placeholder/control-loading-placeholder.d.ts +4 -4
  13. package/es/common/control-loading-placeholder/control-loading-placeholder.d.ts.map +1 -1
  14. package/es/common/control-shell/control-shell.d.ts +7 -7
  15. package/es/common/control-shell/control-shell.d.ts.map +1 -1
  16. package/es/common/control-shell/control-shell.mjs +1 -1
  17. package/es/common/custom-render/custom-render.d.ts +4 -4
  18. package/es/common/custom-render/custom-render.d.ts.map +1 -1
  19. package/es/common/icon/icon.d.ts +4 -4
  20. package/es/common/icon/icon.d.ts.map +1 -1
  21. package/es/common/icon/icon.mjs +12 -0
  22. package/es/common/index.d.ts +1 -0
  23. package/es/common/index.d.ts.map +1 -1
  24. package/es/common/index.mjs +1 -0
  25. package/es/common/router-view/router-view.d.ts +7 -8
  26. package/es/common/router-view/router-view.d.ts.map +1 -1
  27. package/es/common/router-view/router-view.mjs +1 -1
  28. package/es/common/signature-pad/signature-pad.css +1 -0
  29. package/es/common/signature-pad/signature-pad.d.ts +19 -0
  30. package/es/common/signature-pad/signature-pad.d.ts.map +1 -0
  31. package/es/common/signature-pad/signature-pad.mjs +165 -0
  32. package/es/common/signature-pad/util/bezier.d.ts +58 -0
  33. package/es/common/signature-pad/util/bezier.d.ts.map +1 -0
  34. package/es/common/signature-pad/util/bezier.mjs +109 -0
  35. package/es/common/signature-pad/util/point.d.ts +55 -0
  36. package/es/common/signature-pad/util/point.d.ts.map +1 -0
  37. package/es/common/signature-pad/util/point.mjs +51 -0
  38. package/es/common/signature-pad/util/signature_pad.d.ts +593 -0
  39. package/es/common/signature-pad/util/signature_pad.d.ts.map +1 -0
  40. package/es/common/signature-pad/util/signature_pad.mjs +1018 -0
  41. package/es/common/view-shell/view-shell.d.ts +19 -12
  42. package/es/common/view-shell/view-shell.d.ts.map +1 -1
  43. package/es/common/view-shell/view-shell.mjs +42 -23
  44. package/es/control/panel/panel/index.d.ts +5 -5
  45. package/es/control/panel/panel/index.d.ts.map +1 -1
  46. package/es/control/panel/panel/panel.d.ts +6 -6
  47. package/es/control/panel/panel/panel.d.ts.map +1 -1
  48. package/es/control/panel/panel/panel.mjs +13 -5
  49. package/es/control/panel/view-layout-panel/index.d.ts +5 -5
  50. package/es/control/panel/view-layout-panel/index.d.ts.map +1 -1
  51. package/es/control/panel/view-layout-panel/view-layout-panel.d.ts +7 -7
  52. package/es/control/panel/view-layout-panel/view-layout-panel.d.ts.map +1 -1
  53. package/es/control/panel/view-layout-panel/view-layout-panel.mjs +6 -6
  54. package/es/index.mjs +9 -11
  55. package/es/locale/en/index.d.ts +1 -0
  56. package/es/locale/en/index.d.ts.map +1 -1
  57. package/es/locale/en/index.mjs +2 -1
  58. package/es/locale/zh-CN/index.d.ts +1 -0
  59. package/es/locale/zh-CN/index.d.ts.map +1 -1
  60. package/es/locale/zh-CN/index.mjs +2 -1
  61. package/es/node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.mjs +2 -2
  62. package/es/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.controller.d.ts.map +1 -1
  63. package/es/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.controller.mjs +3 -1
  64. package/es/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.css +1 -1
  65. package/es/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.d.ts +6 -4
  66. package/es/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.d.ts.map +1 -1
  67. package/es/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.mjs +17 -6
  68. package/es/panel-component/auth-wxmp-qrcode/index.d.ts +6 -4
  69. package/es/panel-component/auth-wxmp-qrcode/index.d.ts.map +1 -1
  70. package/es/panel-component/grid-container/grid-container.controller.d.ts +3 -3
  71. package/es/panel-component/grid-container/grid-container.controller.d.ts.map +1 -1
  72. package/es/panel-component/grid-container/grid-container.controller.mjs +2 -2
  73. package/es/panel-component/grid-container/grid-container.d.ts +8 -6
  74. package/es/panel-component/grid-container/grid-container.d.ts.map +1 -1
  75. package/es/panel-component/grid-container/grid-container.mjs +17 -6
  76. package/es/panel-component/grid-container/grid-container.state.d.ts +3 -3
  77. package/es/panel-component/grid-container/grid-container.state.d.ts.map +1 -1
  78. package/es/panel-component/grid-container/grid-container.state.mjs +2 -2
  79. package/es/panel-component/grid-container/index.d.ts +8 -6
  80. package/es/panel-component/grid-container/index.d.ts.map +1 -1
  81. package/es/panel-component/index.d.ts +0 -1
  82. package/es/panel-component/index.d.ts.map +1 -1
  83. package/es/panel-component/index.mjs +1 -5
  84. package/es/panel-component/multi-data-container/index.d.ts +6 -4
  85. package/es/panel-component/multi-data-container/index.d.ts.map +1 -1
  86. package/es/panel-component/multi-data-container/multi-data-container.controller.d.ts +4 -4
  87. package/es/panel-component/multi-data-container/multi-data-container.controller.d.ts.map +1 -1
  88. package/es/panel-component/multi-data-container/multi-data-container.controller.mjs +88 -69
  89. package/es/panel-component/multi-data-container/multi-data-container.d.ts +7 -5
  90. package/es/panel-component/multi-data-container/multi-data-container.d.ts.map +1 -1
  91. package/es/panel-component/multi-data-container/multi-data-container.mjs +20 -6
  92. package/es/panel-component/multi-data-container/multi-data-container.state.d.ts +3 -3
  93. package/es/panel-component/multi-data-container/multi-data-container.state.d.ts.map +1 -1
  94. package/es/panel-component/multi-data-container/multi-data-container.state.mjs +2 -2
  95. package/es/panel-component/multi-data-container-raw/index.d.ts +6 -4
  96. package/es/panel-component/multi-data-container-raw/index.d.ts.map +1 -1
  97. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.controller.d.ts +4 -4
  98. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.controller.d.ts.map +1 -1
  99. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.controller.mjs +88 -69
  100. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.d.ts +7 -5
  101. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.d.ts.map +1 -1
  102. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.mjs +23 -7
  103. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.state.d.ts +3 -3
  104. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.state.d.ts.map +1 -1
  105. package/es/panel-component/multi-data-container-raw/multi-data-container-raw.state.mjs +2 -2
  106. package/es/panel-component/nav-pos/index.d.ts +7 -5
  107. package/es/panel-component/nav-pos/index.d.ts.map +1 -1
  108. package/es/panel-component/nav-pos/nav-pos.controller.d.ts +1 -1
  109. package/es/panel-component/nav-pos/nav-pos.d.ts +8 -6
  110. package/es/panel-component/nav-pos/nav-pos.d.ts.map +1 -1
  111. package/es/panel-component/nav-pos/nav-pos.mjs +20 -5
  112. package/es/panel-component/panel-container/index.d.ts +7 -6
  113. package/es/panel-component/panel-container/index.d.ts.map +1 -1
  114. package/es/panel-component/panel-container/index.mjs +1 -2
  115. package/es/panel-component/panel-container/panel-container.d.ts +7 -5
  116. package/es/panel-component/panel-container/panel-container.d.ts.map +1 -1
  117. package/es/panel-component/panel-container/panel-container.mjs +36 -15
  118. package/es/panel-component/panel-container/panel-container.provider.d.ts +2 -2
  119. package/es/panel-component/panel-container/panel-container.provider.d.ts.map +1 -1
  120. package/es/panel-component/panel-container/panel-container.provider.mjs +1 -1
  121. package/es/panel-component/panel-container-image/index.d.ts +6 -4
  122. package/es/panel-component/panel-container-image/index.d.ts.map +1 -1
  123. package/es/panel-component/panel-container-image/panel-container-image.controller.d.ts +3 -3
  124. package/es/panel-component/panel-container-image/panel-container-image.controller.d.ts.map +1 -1
  125. package/es/panel-component/panel-container-image/panel-container-image.controller.mjs +2 -2
  126. package/es/panel-component/panel-container-image/panel-container-image.css +1 -1
  127. package/es/panel-component/panel-container-image/panel-container-image.d.ts +6 -4
  128. package/es/panel-component/panel-container-image/panel-container-image.d.ts.map +1 -1
  129. package/es/panel-component/panel-container-image/panel-container-image.mjs +24 -10
  130. package/es/panel-component/panel-container-image/panel-container-image.state.d.ts +3 -3
  131. package/es/panel-component/panel-container-image/panel-container-image.state.d.ts.map +1 -1
  132. package/es/panel-component/panel-container-image/panel-container-image.state.mjs +2 -2
  133. package/es/panel-component/panel-container-tabs/index.d.ts +6 -6
  134. package/es/panel-component/panel-container-tabs/index.d.ts.map +1 -1
  135. package/es/panel-component/panel-container-tabs/panel-container-tabs.d.ts +5 -5
  136. package/es/panel-component/panel-container-tabs/panel-container-tabs.d.ts.map +1 -1
  137. package/es/panel-component/panel-container-tabs/panel-container-tabs.mjs +1 -1
  138. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.d.ts +2 -2
  139. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.d.ts.map +1 -1
  140. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.mjs +1 -1
  141. package/es/panel-component/panel-ctrl-pos/index.d.ts +6 -4
  142. package/es/panel-component/panel-ctrl-pos/index.d.ts.map +1 -1
  143. package/es/panel-component/panel-ctrl-pos/panel-ctrl-pos.d.ts +6 -4
  144. package/es/panel-component/panel-ctrl-pos/panel-ctrl-pos.d.ts.map +1 -1
  145. package/es/panel-component/panel-ctrl-pos/panel-ctrl-pos.mjs +12 -4
  146. package/es/panel-component/panel-ctrl-view-page-caption/index.d.ts +6 -4
  147. package/es/panel-component/panel-ctrl-view-page-caption/index.d.ts.map +1 -1
  148. package/es/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.css +1 -0
  149. package/es/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.d.ts +7 -4
  150. package/es/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.d.ts.map +1 -1
  151. package/es/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.mjs +16 -8
  152. package/es/panel-component/panel-field/index.d.ts +7 -4
  153. package/es/panel-component/panel-field/index.d.ts.map +1 -1
  154. package/es/panel-component/panel-field/panel-field.controller.d.ts +12 -0
  155. package/es/panel-component/panel-field/panel-field.controller.d.ts.map +1 -1
  156. package/es/panel-component/panel-field/panel-field.controller.mjs +37 -3
  157. package/es/panel-component/panel-field/panel-field.css +1 -1
  158. package/es/panel-component/panel-field/panel-field.d.ts +7 -4
  159. package/es/panel-component/panel-field/panel-field.d.ts.map +1 -1
  160. package/es/panel-component/panel-field/panel-field.mjs +29 -12
  161. package/es/panel-component/panel-item-render/index.d.ts +6 -4
  162. package/es/panel-component/panel-item-render/index.d.ts.map +1 -1
  163. package/es/panel-component/panel-item-render/panel-item-render.controller.d.ts.map +1 -1
  164. package/es/panel-component/panel-item-render/panel-item-render.controller.mjs +7 -5
  165. package/es/panel-component/panel-item-render/panel-item-render.d.ts +6 -4
  166. package/es/panel-component/panel-item-render/panel-item-render.d.ts.map +1 -1
  167. package/es/panel-component/panel-item-render/panel-item-render.mjs +13 -4
  168. package/es/panel-component/panel-rawitem/index.d.ts +8 -6
  169. package/es/panel-component/panel-rawitem/index.d.ts.map +1 -1
  170. package/es/panel-component/panel-rawitem/panel-rawitem.d.ts +8 -6
  171. package/es/panel-component/panel-rawitem/panel-rawitem.d.ts.map +1 -1
  172. package/es/panel-component/panel-rawitem/panel-rawitem.mjs +15 -10
  173. package/es/panel-component/panel-tab-page/index.d.ts +8 -6
  174. package/es/panel-component/panel-tab-page/index.d.ts.map +1 -1
  175. package/es/panel-component/panel-tab-page/panel-tab-page.d.ts +10 -8
  176. package/es/panel-component/panel-tab-page/panel-tab-page.d.ts.map +1 -1
  177. package/es/panel-component/panel-tab-page/panel-tab-page.mjs +23 -8
  178. package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts +2 -2
  179. package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts.map +1 -1
  180. package/es/panel-component/panel-tab-page/panel-tab-page.provider.mjs +2 -2
  181. package/es/panel-component/scroll-container/index.d.ts +6 -4
  182. package/es/panel-component/scroll-container/index.d.ts.map +1 -1
  183. package/es/panel-component/scroll-container/scroll-container/scroll-container.controller.d.ts +3 -3
  184. package/es/panel-component/scroll-container/scroll-container/scroll-container.controller.d.ts.map +1 -1
  185. package/es/panel-component/scroll-container/scroll-container/scroll-container.controller.mjs +2 -2
  186. package/es/panel-component/scroll-container/scroll-container/scroll-container.d.ts +6 -4
  187. package/es/panel-component/scroll-container/scroll-container/scroll-container.d.ts.map +1 -1
  188. package/es/panel-component/scroll-container/scroll-container/scroll-container.mjs +26 -15
  189. package/es/panel-component/scroll-container/scroll-container-item/scroll-container-item.controller.d.ts +3 -3
  190. package/es/panel-component/scroll-container/scroll-container-item/scroll-container-item.controller.d.ts.map +1 -1
  191. package/es/panel-component/scroll-container/scroll-container-item/scroll-container-item.controller.mjs +2 -2
  192. package/es/panel-component/scroll-container/scroll-container-item/scroll-container-item.d.ts +6 -4
  193. package/es/panel-component/scroll-container/scroll-container-item/scroll-container-item.d.ts.map +1 -1
  194. package/es/panel-component/scroll-container/scroll-container-item/scroll-container-item.mjs +21 -6
  195. package/es/panel-component/single-data-container/index.d.ts +6 -4
  196. package/es/panel-component/single-data-container/index.d.ts.map +1 -1
  197. package/es/panel-component/single-data-container/single-data-container.controller.d.ts +4 -4
  198. package/es/panel-component/single-data-container/single-data-container.controller.d.ts.map +1 -1
  199. package/es/panel-component/single-data-container/single-data-container.controller.mjs +98 -73
  200. package/es/panel-component/single-data-container/single-data-container.d.ts +7 -5
  201. package/es/panel-component/single-data-container/single-data-container.d.ts.map +1 -1
  202. package/es/panel-component/single-data-container/single-data-container.mjs +22 -6
  203. package/es/panel-component/single-data-container/single-data-container.state.d.ts +3 -3
  204. package/es/panel-component/single-data-container/single-data-container.state.d.ts.map +1 -1
  205. package/es/panel-component/single-data-container/single-data-container.state.mjs +2 -2
  206. package/es/panel-component/teleport-placeholder/index.d.ts +7 -5
  207. package/es/panel-component/teleport-placeholder/index.d.ts.map +1 -1
  208. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts +7 -5
  209. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts.map +1 -1
  210. package/es/panel-component/teleport-placeholder/teleport-placeholder.mjs +11 -4
  211. package/es/plugin/plugin-factory/plugin-factory.d.ts +15 -0
  212. package/es/plugin/plugin-factory/plugin-factory.d.ts.map +1 -1
  213. package/es/plugin/plugin-factory/plugin-factory.mjs +34 -6
  214. package/es/props/editor/autocomplete.d.ts +2 -2
  215. package/es/props/editor/check-box-list.d.ts +2 -2
  216. package/es/props/editor/check-box.d.ts +2 -2
  217. package/es/props/editor/code.d.ts +17 -0
  218. package/es/props/editor/code.d.ts.map +1 -1
  219. package/es/props/editor/code.mjs +7 -2
  220. package/es/props/editor/common.d.ts +7 -0
  221. package/es/props/editor/common.d.ts.map +1 -1
  222. package/es/props/editor/common.mjs +5 -1
  223. package/es/props/editor/data-picker.d.ts +2 -2
  224. package/es/props/editor/date-picker.d.ts +2 -2
  225. package/es/props/editor/date-range-select.d.ts +4 -0
  226. package/es/props/editor/date-range-select.d.ts.map +1 -1
  227. package/es/props/editor/date-range.d.ts +2 -2
  228. package/es/props/editor/dropdown-list.d.ts +2 -2
  229. package/es/props/editor/html.d.ts +17 -0
  230. package/es/props/editor/html.d.ts.map +1 -1
  231. package/es/props/editor/html.mjs +7 -2
  232. package/es/props/editor/index.mjs +3 -3
  233. package/es/props/editor/list-box.d.ts +2 -2
  234. package/es/props/editor/markdown.d.ts +89 -0
  235. package/es/props/editor/markdown.d.ts.map +1 -1
  236. package/es/props/editor/markdown.mjs +28 -3
  237. package/es/props/editor/number-range.d.ts +2 -2
  238. package/es/props/editor/radio-button-list.d.ts +2 -2
  239. package/es/props/editor/rate.d.ts +2 -2
  240. package/es/props/editor/raw.d.ts +2 -2
  241. package/es/props/editor/slider.d.ts +2 -2
  242. package/es/props/editor/span.d.ts +18 -2
  243. package/es/props/editor/span.d.ts.map +1 -1
  244. package/es/props/editor/span.mjs +6 -1
  245. package/es/props/editor/stepper.d.ts +2 -2
  246. package/es/props/editor/switch.d.ts +2 -2
  247. package/es/props/editor/text-box.d.ts +2 -2
  248. package/es/props/index.mjs +3 -3
  249. package/es/use/index.d.ts +2 -0
  250. package/es/use/index.d.ts.map +1 -1
  251. package/es/use/index.mjs +4 -2
  252. package/es/use/popover/popover.d.ts +7 -0
  253. package/es/use/popover/popover.d.ts.map +1 -1
  254. package/es/use/popover/popover.mjs +9 -2
  255. package/es/use/storage/index.d.ts +4 -6
  256. package/es/use/storage/index.d.ts.map +1 -1
  257. package/es/use/storage/index.mjs +16 -11
  258. package/es/use/tooltip/tooltip.d.ts +103 -0
  259. package/es/use/tooltip/tooltip.d.ts.map +1 -0
  260. package/es/use/tooltip/tooltip.mjs +68 -0
  261. package/es/use/use-semantic-node/use-semantic-node.d.ts +15 -0
  262. package/es/use/use-semantic-node/use-semantic-node.d.ts.map +1 -0
  263. package/es/use/use-semantic-node/use-semantic-node.mjs +100 -0
  264. package/es/use/vue/vue.d.ts +9 -0
  265. package/es/use/vue/vue.d.ts.map +1 -1
  266. package/es/use/vue/vue.mjs +15 -2
  267. package/es/util/index.d.ts +0 -1
  268. package/es/util/index.d.ts.map +1 -1
  269. package/es/util/index.mjs +0 -1
  270. package/es/util/install.d.ts.map +1 -1
  271. package/es/util/overlay-container/overlay-container.d.ts +1 -1
  272. package/es/util/overlay-container/overlay-container.d.ts.map +1 -1
  273. package/es/util/overlay-container/overlay-container.mjs +7 -2
  274. package/es/util/overlay-view-util/overlay-view-util.d.ts +2 -2
  275. package/es/util/overlay-view-util/overlay-view-util.d.ts.map +1 -1
  276. package/es/util/overlay-view-util/overlay-view-util.mjs +2 -1
  277. package/es/util/route/route.d.ts.map +1 -1
  278. package/es/util/route/route.mjs +13 -3
  279. package/es/util/store/app-store/app-store.d.ts +2 -2
  280. package/es/util/store/ui-store/ui-store.d.ts +2 -2
  281. package/es/view/app-redirect-view/app-redirect-view.d.ts +1 -1
  282. package/es/view/app-redirect-view/app-redirect-view.d.ts.map +1 -1
  283. package/es/view/app-redirect-view/app-redirect-view.mjs +1 -1
  284. package/es/view/common/index.d.ts +5 -5
  285. package/es/view/common/index.d.ts.map +1 -1
  286. package/es/view/common/view.d.ts +5 -5
  287. package/es/view/common/view.d.ts.map +1 -1
  288. package/es/view/common/view.mjs +17 -3
  289. package/es/view/de-redirect-view/de-redirect-view.d.ts +8 -8
  290. package/es/view/de-redirect-view/de-redirect-view.d.ts.map +1 -1
  291. package/es/view/de-redirect-view/de-redirect-view.mjs +1 -1
  292. package/es/view/de-redirect-view/index.d.ts +8 -8
  293. package/es/view/de-redirect-view/index.d.ts.map +1 -1
  294. package/es/view/html-view/html-view.d.ts +8 -9
  295. package/es/view/html-view/html-view.d.ts.map +1 -1
  296. package/es/view/html-view/html-view.mjs +10 -17
  297. package/es/view/html-view/index.d.ts +7 -8
  298. package/es/view/html-view/index.d.ts.map +1 -1
  299. package/es/view/portal-view/index.d.ts +5 -5
  300. package/es/view/portal-view/index.d.ts.map +1 -1
  301. package/es/view/portal-view/portal-view.d.ts +5 -5
  302. package/es/view/portal-view/portal-view.d.ts.map +1 -1
  303. package/es/view/todo-redirect/todo-redirect.d.ts +1 -1
  304. package/es/view/todo-redirect/todo-redirect.d.ts.map +1 -1
  305. package/lib/common/badge/badge.cjs +12 -6
  306. package/lib/common/badge/badge.css +1 -1
  307. package/lib/common/control-base/control-base.cjs +8 -14
  308. package/lib/common/icon/icon.cjs +12 -0
  309. package/lib/common/index.cjs +2 -0
  310. package/lib/common/signature-pad/signature-pad.cjs +167 -0
  311. package/lib/common/signature-pad/signature-pad.css +1 -0
  312. package/lib/common/signature-pad/util/bezier.cjs +111 -0
  313. package/lib/common/signature-pad/util/point.cjs +53 -0
  314. package/lib/common/signature-pad/util/signature_pad.cjs +1022 -0
  315. package/lib/common/view-shell/view-shell.cjs +40 -21
  316. package/lib/control/panel/panel/panel.cjs +11 -3
  317. package/lib/control/panel/view-layout-panel/view-layout-panel.cjs +4 -4
  318. package/lib/index.cjs +57 -47
  319. package/lib/locale/en/index.cjs +2 -1
  320. package/lib/locale/zh-CN/index.cjs +2 -1
  321. package/lib/node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.cjs +2 -2
  322. package/lib/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.cjs +16 -5
  323. package/lib/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.controller.cjs +3 -1
  324. package/lib/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.css +1 -1
  325. package/lib/panel-component/grid-container/grid-container.cjs +16 -5
  326. package/lib/panel-component/grid-container/grid-container.controller.cjs +1 -1
  327. package/lib/panel-component/grid-container/grid-container.state.cjs +1 -1
  328. package/lib/panel-component/index.cjs +21 -22
  329. package/lib/panel-component/multi-data-container/multi-data-container.cjs +19 -5
  330. package/lib/panel-component/multi-data-container/multi-data-container.controller.cjs +87 -68
  331. package/lib/panel-component/multi-data-container/multi-data-container.state.cjs +1 -1
  332. package/lib/panel-component/multi-data-container-raw/multi-data-container-raw.cjs +22 -6
  333. package/lib/panel-component/multi-data-container-raw/multi-data-container-raw.controller.cjs +87 -68
  334. package/lib/panel-component/multi-data-container-raw/multi-data-container-raw.state.cjs +1 -1
  335. package/lib/panel-component/nav-pos/nav-pos.cjs +18 -3
  336. package/lib/panel-component/panel-container/index.cjs +8 -4
  337. package/lib/panel-component/panel-container/panel-container.cjs +36 -15
  338. package/lib/panel-component/panel-container/panel-container.provider.cjs +2 -2
  339. package/lib/panel-component/panel-container-image/panel-container-image.cjs +23 -9
  340. package/lib/panel-component/panel-container-image/panel-container-image.controller.cjs +1 -1
  341. package/lib/panel-component/panel-container-image/panel-container-image.css +1 -1
  342. package/lib/panel-component/panel-container-image/panel-container-image.state.cjs +1 -1
  343. package/lib/panel-component/panel-container-tabs/panel-container-tabs.cjs +2 -2
  344. package/lib/panel-component/panel-container-tabs/panel-container-tabs.provider.cjs +2 -2
  345. package/lib/panel-component/panel-ctrl-pos/panel-ctrl-pos.cjs +11 -3
  346. package/lib/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.cjs +15 -7
  347. package/lib/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.css +1 -0
  348. package/lib/panel-component/panel-field/panel-field.cjs +28 -11
  349. package/lib/panel-component/panel-field/panel-field.controller.cjs +37 -3
  350. package/lib/panel-component/panel-field/panel-field.css +1 -1
  351. package/lib/panel-component/panel-item-render/panel-item-render.cjs +12 -3
  352. package/lib/panel-component/panel-item-render/panel-item-render.controller.cjs +7 -5
  353. package/lib/panel-component/panel-rawitem/panel-rawitem.cjs +14 -9
  354. package/lib/panel-component/panel-tab-page/panel-tab-page.cjs +21 -6
  355. package/lib/panel-component/panel-tab-page/panel-tab-page.provider.cjs +1 -1
  356. package/lib/panel-component/scroll-container/scroll-container/scroll-container.cjs +25 -14
  357. package/lib/panel-component/scroll-container/scroll-container/scroll-container.controller.cjs +1 -1
  358. package/lib/panel-component/scroll-container/scroll-container-item/scroll-container-item.cjs +20 -5
  359. package/lib/panel-component/scroll-container/scroll-container-item/scroll-container-item.controller.cjs +1 -1
  360. package/lib/panel-component/single-data-container/single-data-container.cjs +21 -5
  361. package/lib/panel-component/single-data-container/single-data-container.controller.cjs +97 -72
  362. package/lib/panel-component/single-data-container/single-data-container.state.cjs +1 -1
  363. package/lib/panel-component/teleport-placeholder/teleport-placeholder.cjs +10 -3
  364. package/lib/plugin/plugin-factory/plugin-factory.cjs +33 -5
  365. package/lib/props/editor/code.cjs +6 -0
  366. package/lib/props/editor/common.cjs +5 -1
  367. package/lib/props/editor/html.cjs +6 -0
  368. package/lib/props/editor/index.cjs +3 -0
  369. package/lib/props/editor/markdown.cjs +27 -1
  370. package/lib/props/editor/span.cjs +6 -1
  371. package/lib/props/index.cjs +3 -0
  372. package/lib/use/index.cjs +8 -0
  373. package/lib/use/popover/popover.cjs +8 -0
  374. package/lib/use/storage/index.cjs +16 -11
  375. package/lib/use/tooltip/tooltip.cjs +72 -0
  376. package/lib/use/use-semantic-node/use-semantic-node.cjs +102 -0
  377. package/lib/use/vue/vue.cjs +14 -0
  378. package/lib/util/index.cjs +0 -2
  379. package/lib/util/overlay-container/overlay-container.cjs +7 -2
  380. package/lib/util/overlay-view-util/overlay-view-util.cjs +2 -1
  381. package/lib/util/route/route.cjs +13 -3
  382. package/lib/view/common/view.cjs +15 -1
  383. package/lib/view/html-view/html-view.cjs +8 -15
  384. package/package.json +8 -7
  385. package/src/common/badge/badge.scss +49 -0
  386. package/src/common/badge/badge.tsx +55 -0
  387. package/src/common/code-list/code-list.scss +15 -0
  388. package/src/common/code-list/code-list.tsx +184 -0
  389. package/src/common/control-base/control-base.scss +42 -0
  390. package/src/common/control-base/control-base.tsx +308 -0
  391. package/src/common/control-loading-placeholder/control-loading-placeholder.tsx +22 -0
  392. package/src/common/control-shell/control-shell.scss +5 -0
  393. package/src/common/control-shell/control-shell.tsx +90 -0
  394. package/src/common/custom-render/custom-render.scss +4 -0
  395. package/src/common/custom-render/custom-render.tsx +111 -0
  396. package/src/common/icon/icon.scss +13 -0
  397. package/src/common/icon/icon.tsx +105 -0
  398. package/src/common/index.ts +10 -0
  399. package/src/common/router-view/router-view.tsx +74 -0
  400. package/src/common/signature-pad/signature-pad.scss +10 -0
  401. package/src/common/signature-pad/signature-pad.tsx +174 -0
  402. package/src/common/signature-pad/util/bezier.ts +164 -0
  403. package/src/common/signature-pad/util/point.ts +96 -0
  404. package/src/common/signature-pad/util/signature_pad.ts +1543 -0
  405. package/src/common/view-shell/view-shell.scss +5 -0
  406. package/src/common/view-shell/view-shell.tsx +337 -0
  407. package/src/control/index.ts +1 -0
  408. package/src/control/panel/index.ts +2 -0
  409. package/src/control/panel/panel/index.ts +12 -0
  410. package/src/control/panel/panel/panel.provider.ts +14 -0
  411. package/src/control/panel/panel/panel.scss +9 -0
  412. package/src/control/panel/panel/panel.tsx +273 -0
  413. package/src/control/panel/view-layout-panel/index.ts +18 -0
  414. package/src/control/panel/view-layout-panel/view-layout-panel.provider.ts +14 -0
  415. package/src/control/panel/view-layout-panel/view-layout-panel.scss +9 -0
  416. package/src/control/panel/view-layout-panel/view-layout-panel.tsx +266 -0
  417. package/src/hooks/app/app.hooks.ts +63 -0
  418. package/src/hooks/index.ts +1 -0
  419. package/src/index.ts +19 -0
  420. package/src/interface/index.ts +1 -0
  421. package/src/interface/util/index.ts +1 -0
  422. package/src/interface/util/route/route.ts +116 -0
  423. package/src/locale/en/index.ts +74 -0
  424. package/src/locale/index.ts +2 -0
  425. package/src/locale/zh-CN/index.ts +66 -0
  426. package/src/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.controller.ts +248 -0
  427. package/src/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.provider.ts +28 -0
  428. package/src/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.scss +51 -0
  429. package/src/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.state.ts +58 -0
  430. package/src/panel-component/auth-wxmp-qrcode/auth-wxmp-qrcode.tsx +109 -0
  431. package/src/panel-component/auth-wxmp-qrcode/index.ts +18 -0
  432. package/src/panel-component/grid-container/grid-container.controller.ts +24 -0
  433. package/src/panel-component/grid-container/grid-container.provider.ts +30 -0
  434. package/src/panel-component/grid-container/grid-container.scss +17 -0
  435. package/src/panel-component/grid-container/grid-container.state.ts +12 -0
  436. package/src/panel-component/grid-container/grid-container.tsx +141 -0
  437. package/src/panel-component/grid-container/index.ts +19 -0
  438. package/src/panel-component/index.ts +17 -0
  439. package/src/panel-component/multi-data-container/index.ts +22 -0
  440. package/src/panel-component/multi-data-container/multi-data-container-item.controller.ts +179 -0
  441. package/src/panel-component/multi-data-container/multi-data-container-itm.state.ts +20 -0
  442. package/src/panel-component/multi-data-container/multi-data-container.controller.ts +456 -0
  443. package/src/panel-component/multi-data-container/multi-data-container.provider.ts +30 -0
  444. package/src/panel-component/multi-data-container/multi-data-container.scss +10 -0
  445. package/src/panel-component/multi-data-container/multi-data-container.state.ts +19 -0
  446. package/src/panel-component/multi-data-container/multi-data-container.tsx +137 -0
  447. package/src/panel-component/multi-data-container-raw/index.ts +22 -0
  448. package/src/panel-component/multi-data-container-raw/multi-data-container-raw.controller.ts +448 -0
  449. package/src/panel-component/multi-data-container-raw/multi-data-container-raw.provider.ts +30 -0
  450. package/src/panel-component/multi-data-container-raw/multi-data-container-raw.scss +12 -0
  451. package/src/panel-component/multi-data-container-raw/multi-data-container-raw.state.ts +19 -0
  452. package/src/panel-component/multi-data-container-raw/multi-data-container-raw.tsx +129 -0
  453. package/src/panel-component/nav-pos/index.ts +16 -0
  454. package/src/panel-component/nav-pos/nav-pos.controller.ts +438 -0
  455. package/src/panel-component/nav-pos/nav-pos.provider.ts +38 -0
  456. package/src/panel-component/nav-pos/nav-pos.scss +4 -0
  457. package/src/panel-component/nav-pos/nav-pos.state.ts +55 -0
  458. package/src/panel-component/nav-pos/nav-pos.tsx +166 -0
  459. package/src/panel-component/panel-container/index.ts +30 -0
  460. package/src/panel-component/panel-container/panel-container.provider.ts +30 -0
  461. package/src/panel-component/panel-container/panel-container.scss +21 -0
  462. package/src/panel-component/panel-container/panel-container.tsx +138 -0
  463. package/src/panel-component/panel-container-image/index.ts +22 -0
  464. package/src/panel-component/panel-container-image/panel-container-image.controller.ts +24 -0
  465. package/src/panel-component/panel-container-image/panel-container-image.provider.ts +30 -0
  466. package/src/panel-component/panel-container-image/panel-container-image.scss +17 -0
  467. package/src/panel-component/panel-container-image/panel-container-image.state.ts +12 -0
  468. package/src/panel-component/panel-container-image/panel-container-image.tsx +116 -0
  469. package/src/panel-component/panel-container-tabs/index.ts +18 -0
  470. package/src/panel-component/panel-container-tabs/panel-container-tabs.provider.ts +30 -0
  471. package/src/panel-component/panel-container-tabs/panel-container-tabs.scss +25 -0
  472. package/src/panel-component/panel-container-tabs/panel-container-tabs.tsx +47 -0
  473. package/src/panel-component/panel-ctrl-pos/index.ts +14 -0
  474. package/src/panel-component/panel-ctrl-pos/panel-ctrl-pos.controller.ts +50 -0
  475. package/src/panel-component/panel-ctrl-pos/panel-ctrl-pos.provider.ts +30 -0
  476. package/src/panel-component/panel-ctrl-pos/panel-ctrl-pos.scss +8 -0
  477. package/src/panel-component/panel-ctrl-pos/panel-ctrl-pos.tsx +72 -0
  478. package/src/panel-component/panel-ctrl-view-page-caption/index.ts +18 -0
  479. package/src/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.controller.ts +32 -0
  480. package/src/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.provider.ts +30 -0
  481. package/src/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.scss +13 -0
  482. package/src/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.state.ts +17 -0
  483. package/src/panel-component/panel-ctrl-view-page-caption/panel-ctrl-view-page-caption.tsx +77 -0
  484. package/src/panel-component/panel-field/index.ts +14 -0
  485. package/src/panel-component/panel-field/panel-field.controller.ts +272 -0
  486. package/src/panel-component/panel-field/panel-field.provider.ts +28 -0
  487. package/src/panel-component/panel-field/panel-field.scss +79 -0
  488. package/src/panel-component/panel-field/panel-field.state.ts +17 -0
  489. package/src/panel-component/panel-field/panel-field.tsx +138 -0
  490. package/src/panel-component/panel-item-render/index.ts +18 -0
  491. package/src/panel-component/panel-item-render/panel-item-render.controller.ts +53 -0
  492. package/src/panel-component/panel-item-render/panel-item-render.provider.ts +30 -0
  493. package/src/panel-component/panel-item-render/panel-item-render.tsx +69 -0
  494. package/src/panel-component/panel-rawitem/index.ts +26 -0
  495. package/src/panel-component/panel-rawitem/panel-rawitem.controller.ts +54 -0
  496. package/src/panel-component/panel-rawitem/panel-rawitem.provider.ts +28 -0
  497. package/src/panel-component/panel-rawitem/panel-rawitem.scss +8 -0
  498. package/src/panel-component/panel-rawitem/panel-rawitem.tsx +126 -0
  499. package/src/panel-component/panel-tab-page/index.ts +12 -0
  500. package/src/panel-component/panel-tab-page/panel-tab-page.provider.ts +28 -0
  501. package/src/panel-component/panel-tab-page/panel-tab-page.tsx +83 -0
  502. package/src/panel-component/scroll-container/index.ts +44 -0
  503. package/src/panel-component/scroll-container/scroll-container/index.ts +2 -0
  504. package/src/panel-component/scroll-container/scroll-container/scroll-container.controller.ts +29 -0
  505. package/src/panel-component/scroll-container/scroll-container/scroll-container.provider.ts +30 -0
  506. package/src/panel-component/scroll-container/scroll-container/scroll-container.scss +40 -0
  507. package/src/panel-component/scroll-container/scroll-container/scroll-container.tsx +155 -0
  508. package/src/panel-component/scroll-container/scroll-container-item/index.ts +2 -0
  509. package/src/panel-component/scroll-container/scroll-container-item/scroll-container-item.controller.ts +21 -0
  510. package/src/panel-component/scroll-container/scroll-container-item/scroll-container-item.provider.ts +30 -0
  511. package/src/panel-component/scroll-container/scroll-container-item/scroll-container-item.scss +9 -0
  512. package/src/panel-component/scroll-container/scroll-container-item/scroll-container-item.tsx +80 -0
  513. package/src/panel-component/single-data-container/index.ts +22 -0
  514. package/src/panel-component/single-data-container/single-data-container.controller.ts +507 -0
  515. package/src/panel-component/single-data-container/single-data-container.provider.ts +30 -0
  516. package/src/panel-component/single-data-container/single-data-container.scss +10 -0
  517. package/src/panel-component/single-data-container/single-data-container.state.ts +17 -0
  518. package/src/panel-component/single-data-container/single-data-container.tsx +124 -0
  519. package/src/panel-component/teleport-placeholder/index.ts +20 -0
  520. package/src/panel-component/teleport-placeholder/teleport-placeholder.controller.ts +54 -0
  521. package/src/panel-component/teleport-placeholder/teleport-placeholder.provider.ts +30 -0
  522. package/src/panel-component/teleport-placeholder/teleport-placeholder.scss +8 -0
  523. package/src/panel-component/teleport-placeholder/teleport-placeholder.state.ts +17 -0
  524. package/src/panel-component/teleport-placeholder/teleport-placeholder.tsx +65 -0
  525. package/src/plugin/index.ts +1 -0
  526. package/src/plugin/plugin-factory/plugin-factory.ts +519 -0
  527. package/src/props/common.ts +30 -0
  528. package/src/props/editor/array.ts +28 -0
  529. package/src/props/editor/autocomplete.ts +28 -0
  530. package/src/props/editor/cascader.ts +28 -0
  531. package/src/props/editor/check-box-list.ts +28 -0
  532. package/src/props/editor/check-box.ts +28 -0
  533. package/src/props/editor/code.ts +56 -0
  534. package/src/props/editor/color-picker.ts +28 -0
  535. package/src/props/editor/common.ts +120 -0
  536. package/src/props/editor/data-picker.ts +28 -0
  537. package/src/props/editor/date-picker.ts +29 -0
  538. package/src/props/editor/date-range-select.ts +52 -0
  539. package/src/props/editor/date-range.ts +29 -0
  540. package/src/props/editor/dropdown-list.ts +28 -0
  541. package/src/props/editor/html.ts +44 -0
  542. package/src/props/editor/index.ts +29 -0
  543. package/src/props/editor/input-ip.ts +28 -0
  544. package/src/props/editor/input-number.ts +28 -0
  545. package/src/props/editor/list-box.ts +28 -0
  546. package/src/props/editor/map-picker.ts +28 -0
  547. package/src/props/editor/markdown.ts +74 -0
  548. package/src/props/editor/number-range.ts +28 -0
  549. package/src/props/editor/radio-button-list.ts +28 -0
  550. package/src/props/editor/rate.ts +28 -0
  551. package/src/props/editor/raw.ts +28 -0
  552. package/src/props/editor/slider.ts +28 -0
  553. package/src/props/editor/span.ts +33 -0
  554. package/src/props/editor/stepper.ts +28 -0
  555. package/src/props/editor/switch.ts +28 -0
  556. package/src/props/editor/text-box.ts +28 -0
  557. package/src/props/editor/upload.ts +28 -0
  558. package/src/props/index.ts +2 -0
  559. package/src/types/index.d.ts +8 -0
  560. package/src/use/autofocus-blur/autofocus-blur.ts +31 -0
  561. package/src/use/click-outside/click-outside.ts +72 -0
  562. package/src/use/codeList-listen/codelist-listen.ts +28 -0
  563. package/src/use/control/index.ts +1 -0
  564. package/src/use/control/use-control-controller/use-control-controller.ts +186 -0
  565. package/src/use/event/event.ts +57 -0
  566. package/src/use/focus-blur/focus-blur.ts +83 -0
  567. package/src/use/index.ts +16 -0
  568. package/src/use/namespace/namespace.ts +14 -0
  569. package/src/use/popover/popover.ts +157 -0
  570. package/src/use/route/route.ts +47 -0
  571. package/src/use/storage/index.ts +46 -0
  572. package/src/use/tooltip/tooltip.ts +153 -0
  573. package/src/use/use-semantic-node/use-semantic-node.ts +154 -0
  574. package/src/use/util/index.ts +26 -0
  575. package/src/use/view/index.ts +2 -0
  576. package/src/use/view/use-view-controller/use-view-controller.ts +163 -0
  577. package/src/use/view/use-view-operation/use-view-operation.ts +44 -0
  578. package/src/use/vue/vue.ts +168 -0
  579. package/src/use/vue-use/computed-async.ts +151 -0
  580. package/src/use/vue-use/index.ts +1 -0
  581. package/src/util/index.ts +9 -0
  582. package/src/util/install.ts +14 -0
  583. package/src/util/overlay-container/overlay-container.ts +162 -0
  584. package/src/util/overlay-popover-container/overlay-popover-container.ts +30 -0
  585. package/src/util/overlay-view-util/overlay-view-util.ts +93 -0
  586. package/src/util/render/render.ts +54 -0
  587. package/src/util/route/route-listener.ts +91 -0
  588. package/src/util/route/route.ts +606 -0
  589. package/src/util/router-callback/router-callback-item.ts +98 -0
  590. package/src/util/router-callback/router-callback.ts +110 -0
  591. package/src/util/store/app-store/app-store.ts +10 -0
  592. package/src/util/store/index.ts +6 -0
  593. package/src/util/store/ui-store/ui-store.ts +37 -0
  594. package/src/util/store/ui-store/z-index.ts +53 -0
  595. package/src/view/app-data-upload-view/app-data-upload-view.provider.ts +31 -0
  596. package/src/view/app-redirect-view/app-redirect-view.tsx +26 -0
  597. package/src/view/common/index.ts +19 -0
  598. package/src/view/common/view.provider.ts +14 -0
  599. package/src/view/common/view.scss +39 -0
  600. package/src/view/common/view.tsx +285 -0
  601. package/src/view/de-redirect-view/de-redirect-view.provider.ts +14 -0
  602. package/src/view/de-redirect-view/de-redirect-view.tsx +86 -0
  603. package/src/view/de-redirect-view/index.ts +17 -0
  604. package/src/view/html-view/html-view.provider.ts +14 -0
  605. package/src/view/html-view/html-view.scss +7 -0
  606. package/src/view/html-view/html-view.tsx +86 -0
  607. package/src/view/html-view/index.ts +10 -0
  608. package/src/view/index.ts +6 -0
  609. package/src/view/md-custom-view/md-custom-view.provider.ts +30 -0
  610. package/src/view/portal-view/index.ts +18 -0
  611. package/src/view/portal-view/portal-view.provider.ts +14 -0
  612. package/src/view/portal-view/portal-view.tsx +83 -0
  613. package/src/view/todo-redirect/todo-redirect.tsx +51 -0
  614. package/es/panel-component/panel-container/panel-container.controller.d.ts +0 -21
  615. package/es/panel-component/panel-container/panel-container.controller.d.ts.map +0 -1
  616. package/es/panel-component/panel-container/panel-container.controller.mjs +0 -12
  617. package/es/panel-component/panel-container/panel-container.state.d.ts +0 -10
  618. package/es/panel-component/panel-container/panel-container.state.d.ts.map +0 -1
  619. package/es/panel-component/panel-container/panel-container.state.mjs +0 -7
  620. package/es/panel-component/panel-container-group/index.d.ts +0 -29
  621. package/es/panel-component/panel-container-group/index.d.ts.map +0 -1
  622. package/es/panel-component/panel-container-group/index.mjs +0 -21
  623. package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts +0 -34
  624. package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts.map +0 -1
  625. package/es/panel-component/panel-container-group/panel-container-group.controller.mjs +0 -31
  626. package/es/panel-component/panel-container-group/panel-container-group.css +0 -1
  627. package/es/panel-component/panel-container-group/panel-container-group.d.ts +0 -46
  628. package/es/panel-component/panel-container-group/panel-container-group.d.ts.map +0 -1
  629. package/es/panel-component/panel-container-group/panel-container-group.mjs +0 -119
  630. package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts +0 -16
  631. package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts.map +0 -1
  632. package/es/panel-component/panel-container-group/panel-container-group.provider.mjs +0 -15
  633. package/es/panel-component/panel-container-group/panel-container-group.state.d.ts +0 -13
  634. package/es/panel-component/panel-container-group/panel-container-group.state.d.ts.map +0 -1
  635. package/es/panel-component/panel-container-group/panel-container-group.state.mjs +0 -7
  636. package/es/util/control/prepare-control.d.ts +0 -15
  637. package/es/util/control/prepare-control.d.ts.map +0 -1
  638. package/es/util/control/prepare-control.mjs +0 -22
  639. package/lib/panel-component/panel-container/panel-container.controller.cjs +0 -14
  640. package/lib/panel-component/panel-container/panel-container.state.cjs +0 -9
  641. package/lib/panel-component/panel-container-group/index.cjs +0 -28
  642. package/lib/panel-component/panel-container-group/panel-container-group.cjs +0 -121
  643. package/lib/panel-component/panel-container-group/panel-container-group.controller.cjs +0 -33
  644. package/lib/panel-component/panel-container-group/panel-container-group.css +0 -1
  645. package/lib/panel-component/panel-container-group/panel-container-group.provider.cjs +0 -17
  646. package/lib/panel-component/panel-container-group/panel-container-group.state.cjs +0 -9
  647. package/lib/util/control/prepare-control.cjs +0 -24
@@ -0,0 +1,1018 @@
1
+ import { throttle, isNumber, isObject } from 'lodash-es';
2
+ import { Bezier } from './bezier.mjs';
3
+ import { Point } from './point.mjs';
4
+
5
+ "use strict";
6
+ class SignaturePad {
7
+ constructor(canvas, options = {}) {
8
+ this.canvas = canvas;
9
+ /**
10
+ * @description 是否正在绘制中(笔触未抬起)
11
+ * @private
12
+ * @memberof SignaturePad
13
+ */
14
+ this._drawingStroke = false;
15
+ /**
16
+ * @description 签名是否为空(未绘制任何内容)
17
+ * @private
18
+ * @memberof SignaturePad
19
+ */
20
+ this._isEmpty = true;
21
+ /**
22
+ * @description 是否重新绘制过签名(用于判断是否从数据恢复过签名)
23
+ * @private
24
+ * @memberof SignaturePad
25
+ */
26
+ this._isRedrawn = false;
27
+ /**
28
+ * @description 上一次从DataURL加载的签名图片地址,用于撤销操作时恢复
29
+ * @private
30
+ * @memberof SignaturePad
31
+ */
32
+ this._oldFromDataURL = "";
33
+ /**
34
+ * @description 存储最近的点(最多4个),用于生成新的贝塞尔曲线
35
+ * @private
36
+ * @type {Point[]}
37
+ * @memberof SignaturePad
38
+ */
39
+ this._lastPoints = [];
40
+ /**
41
+ * @description 存储所有签名数据(按轨迹分组,每组包含一段连续绘制的点及样式配置)
42
+ * @private
43
+ * @type {IPointGroup[]}
44
+ * @memberof SignaturePad
45
+ */
46
+ this._data = [];
47
+ /**
48
+ * @description 上一次计算的绘制速度(用于平滑线条宽度变化)
49
+ * @private
50
+ * @memberof SignaturePad
51
+ */
52
+ this._lastVelocity = 0;
53
+ /**
54
+ * @description 上一次绘制的线条宽度(用于平滑过渡到当前宽度)
55
+ * @private
56
+ * @memberof SignaturePad
57
+ */
58
+ this._lastWidth = 0;
59
+ var _a, _b, _c;
60
+ this.velocityFilterWeight = options.velocityFilterWeight || 0.7;
61
+ this.minWidth = options.minWidth || 2;
62
+ this.maxWidth = options.maxWidth || 2;
63
+ this.throttle = (_a = options.throttle) != null ? _a : 16;
64
+ this.minDistance = (_b = options.minDistance) != null ? _b : 5;
65
+ this.dotSize = options.dotSize || 0;
66
+ this.penColor = options.penColor || "black";
67
+ this.backgroundColor = options.backgroundColor || "rgba(0,0,0,0)";
68
+ this.compositeOperation = options.compositeOperation || "source-over";
69
+ this.canvasContextOptions = (_c = options.canvasContextOptions) != null ? _c : {};
70
+ this._strokeMoveUpdate = this.throttle ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle) : SignaturePad.prototype._strokeUpdate;
71
+ this._handleMouseDown = this._handleMouseDown.bind(this);
72
+ this._handleMouseMove = this._handleMouseMove.bind(this);
73
+ this._handleMouseUp = this._handleMouseUp.bind(this);
74
+ this._handleTouchStart = this._handleTouchStart.bind(this);
75
+ this._handleTouchMove = this._handleTouchMove.bind(this);
76
+ this._handleTouchEnd = this._handleTouchEnd.bind(this);
77
+ this._handlePointerDown = this._handlePointerDown.bind(this);
78
+ this._handlePointerMove = this._handlePointerMove.bind(this);
79
+ this._handlePointerUp = this._handlePointerUp.bind(this);
80
+ this._ctx = canvas.getContext(
81
+ "2d",
82
+ this.canvasContextOptions
83
+ );
84
+ this.clear();
85
+ this.on();
86
+ }
87
+ clear() {
88
+ const { _ctx: ctx, canvas } = this;
89
+ ctx.fillStyle = this.backgroundColor;
90
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
91
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
92
+ this._data = [];
93
+ this._reset(this._getPointGroupOptions());
94
+ this._isEmpty = true;
95
+ this._strokePointerId = void 0;
96
+ this._oldFromDataURL = "";
97
+ }
98
+ /**
99
+ * 从数据URL加载图像并绘制到签名画布上
100
+ * 支持对图像进行旋转、缩放和偏移等处理,适用于恢复保存的签名图像
101
+ * @param {string} dataUrl - 图像的DataURL(如base64编码的图片数据)
102
+ * @param {Object} [options={}] - 加载配置选项
103
+ * @returns {Promise<void>} - 加载完成的Promise(成功时resolve,失败时reject)
104
+ */
105
+ async fromDataURL(dataUrl, options = {}) {
106
+ let _tempDataUrl = dataUrl;
107
+ if (isNumber(options.rotation) && options.rotation !== 0) {
108
+ _tempDataUrl = await this.rotateDataURL(
109
+ _tempDataUrl,
110
+ options.rotation,
111
+ // 顺时针旋转指定角度
112
+ "image/png"
113
+ );
114
+ }
115
+ return new Promise((resolve, reject) => {
116
+ const image = new Image();
117
+ const ratio = options.ratio || window.devicePixelRatio || 1;
118
+ const width = options.width || this.canvas.width / ratio;
119
+ const height = options.height || this.canvas.height / ratio;
120
+ const xOffset = options.xOffset || 0;
121
+ const yOffset = options.yOffset || 0;
122
+ this._reset(this._getPointGroupOptions());
123
+ image.onload = () => {
124
+ this._ctx.drawImage(image, xOffset, yOffset, width, height);
125
+ resolve();
126
+ };
127
+ image.onerror = (error) => {
128
+ reject(error);
129
+ };
130
+ image.crossOrigin = "anonymous";
131
+ image.src = _tempDataUrl;
132
+ this._oldFromDataURL = _tempDataUrl;
133
+ this._isEmpty = false;
134
+ });
135
+ }
136
+ /**
137
+ * @description 将已有的 DataURL 旋转指定角度后,返回新的 DataURL
138
+ * @private
139
+ * @param {string} dataUrl - 原始图片的DataURL
140
+ * @param {number} rotation - 旋转角度(度数,顺时针),默认0
141
+ * @param {string} type - 图片格式,默认'image/png'
142
+ * @param {number} [encoderOptions] - 图片质量(0-1),仅适用于jpeg等格式
143
+ * @returns {*} {Promise<string>}
144
+ * @memberof SignaturePad
145
+ */
146
+ rotateDataURL(dataUrl, rotation = 0, type = "image/png", encoderOptions) {
147
+ return new Promise((resolve, reject) => {
148
+ const image = new Image();
149
+ image.onload = () => {
150
+ const radians = rotation * Math.PI / 180;
151
+ const width = image.width;
152
+ const height = image.height;
153
+ const tmpCanvas = document.createElement("canvas");
154
+ const ctx = tmpCanvas.getContext("2d");
155
+ if (rotation % 180 === 0) {
156
+ tmpCanvas.width = width;
157
+ tmpCanvas.height = height;
158
+ } else {
159
+ tmpCanvas.width = height;
160
+ tmpCanvas.height = width;
161
+ }
162
+ ctx.translate(tmpCanvas.width / 2, tmpCanvas.height / 2);
163
+ ctx.rotate(radians);
164
+ ctx.drawImage(image, -width / 2, -height / 2);
165
+ resolve(tmpCanvas.toDataURL(type, encoderOptions));
166
+ };
167
+ image.onerror = reject;
168
+ image.crossOrigin = "anonymous";
169
+ image.src = dataUrl;
170
+ });
171
+ }
172
+ /**
173
+ * @description 撤销上一步
174
+ * @returns {*} {void}
175
+ * @memberof SignaturePad
176
+ */
177
+ undoLastStep() {
178
+ const tempData = [...this._data];
179
+ const tempFromDataURL = this._oldFromDataURL;
180
+ this.clear();
181
+ this._isRedrawn = true;
182
+ if (tempData.length === 0) {
183
+ this._oldFromDataURL = "";
184
+ return;
185
+ }
186
+ tempData.pop();
187
+ this.fromDataURL(tempFromDataURL);
188
+ this.fromData(tempData, { clear: false });
189
+ this._isEmpty = tempData.length <= 0;
190
+ }
191
+ /**
192
+ * @description 封装获取当前旋转方位的方法
193
+ * @returns {*} {IData} 包含屏幕状态、旋转角度和方向的对象
194
+ * @memberof SignaturePad
195
+ */
196
+ getCurrentOrientation() {
197
+ const { screen } = window;
198
+ const screenOrientation = screen.orientation || screen.mozOrientation || screen.msOrientation;
199
+ let angle = 0;
200
+ if (screenOrientation) {
201
+ angle = screenOrientation.angle;
202
+ }
203
+ const orientationText = {
204
+ "0": "DEFAULT",
205
+ "90": "Rotated right",
206
+ "-90": "Rotated left",
207
+ "180": "Upside down"
208
+ };
209
+ const isLandscape = window.innerWidth > window.innerHeight;
210
+ const status = isLandscape ? "\u6A2A\u5C4F" : "\u7AD6\u5C4F";
211
+ const orientation = orientationText["".concat(angle)] || "\u672A\u77E5 (".concat(angle, "\xB0)");
212
+ return {
213
+ isLandscape,
214
+ status,
215
+ angle,
216
+ orientation
217
+ };
218
+ }
219
+ /**
220
+ * @description 将签名图像作为数据 URL 返回
221
+ * @param {string} [type='image/png']
222
+ * @param {{
223
+ * rotation?: number;
224
+ * quality?: number;
225
+ * encoderOptions?: IToSVGOptions;
226
+ * }} [options={}]
227
+ * @returns {*} {string}
228
+ * @memberof SignaturePad
229
+ */
230
+ toDataURL(type = "image/png", options = {}) {
231
+ switch (type) {
232
+ case "image/svg+xml":
233
+ if (isObject(options == null ? void 0 : options.encoderOptions)) {
234
+ options.encoderOptions = void 0;
235
+ }
236
+ return "data:image/svg+xml;base64,".concat(btoa(
237
+ this.toSVG(options == null ? void 0 : options.encoderOptions)
238
+ ));
239
+ default:
240
+ return this.toCanvasDataURL(
241
+ type,
242
+ options.encoderOptions,
243
+ options.rotation
244
+ );
245
+ }
246
+ }
247
+ /**
248
+ * @description 导出为 Canvas DataURL(支持旋转)
249
+ * @private
250
+ * @param {string} [type='image/png'] 图片格式
251
+ * @param {number} [encoderOptions] 图片质量(0-1)
252
+ * @param {number} [rotation] 旋转角度(度数)
253
+ * @returns {*} {string}
254
+ * @memberof SignaturePad
255
+ */
256
+ toCanvasDataURL(type = "image/png", encoderOptions, rotation) {
257
+ if (typeof encoderOptions !== "number") {
258
+ encoderOptions = void 0;
259
+ }
260
+ if (isNumber(rotation) && rotation !== 0) {
261
+ const radians = rotation * Math.PI / 180;
262
+ const tmpCanvas = document.createElement("canvas");
263
+ const ctx = tmpCanvas.getContext("2d");
264
+ const width = this.canvas.width;
265
+ const height = this.canvas.height;
266
+ if (rotation % 180 === 0) {
267
+ tmpCanvas.width = width;
268
+ tmpCanvas.height = height;
269
+ } else {
270
+ tmpCanvas.width = height;
271
+ tmpCanvas.height = width;
272
+ }
273
+ ctx.translate(tmpCanvas.width / 2, tmpCanvas.height / 2);
274
+ ctx.rotate(radians);
275
+ ctx.drawImage(this.canvas, -width / 2, -height / 2);
276
+ return tmpCanvas.toDataURL(type, encoderOptions);
277
+ }
278
+ return this.canvas.toDataURL(type, encoderOptions);
279
+ }
280
+ /**
281
+ * @description 启用签名功能的事件监听,配置画布样式以禁用默认的触摸行为(如平移、缩放),并根据设备类型绑定相应的事件处理器
282
+ * @memberof SignaturePad
283
+ */
284
+ on() {
285
+ this.canvas.style.touchAction = "none";
286
+ this.canvas.style.msTouchAction = "none";
287
+ this.canvas.style.userSelect = "none";
288
+ const isIOS = /Macintosh/.test(navigator.userAgent) && "ontouchstart" in document;
289
+ if (window.PointerEvent && !isIOS) {
290
+ this._handlePointerEvents();
291
+ } else {
292
+ this._handleMouseEvents();
293
+ if ("ontouchstart" in window) {
294
+ this._handleTouchEvents();
295
+ }
296
+ }
297
+ }
298
+ /**
299
+ * @description 禁用签名功能的事件监听,恢复画布默认样式(允许平移、缩放等),并移除所有已绑定的事件处理器
300
+ * @memberof SignaturePad
301
+ */
302
+ off() {
303
+ this.canvas.style.touchAction = "auto";
304
+ this.canvas.style.msTouchAction = "auto";
305
+ this.canvas.style.userSelect = "auto";
306
+ this.canvas.removeEventListener("pointerdown", this._handlePointerDown);
307
+ this.canvas.removeEventListener("mousedown", this._handleMouseDown);
308
+ this.canvas.removeEventListener("touchstart", this._handleTouchStart);
309
+ this._removeMoveUpEventListeners();
310
+ }
311
+ /**
312
+ * @description 获取事件监听器的工具函数(适配不同文档上下文的窗口)
313
+ * @private
314
+ * @returns {*} 包含addEventListener和removeEventListener的对象
315
+ * @memberof SignaturePad
316
+ */
317
+ _getListenerFunctions() {
318
+ var _a;
319
+ const canvasWindow = window.document === this.canvas.ownerDocument ? window : (_a = this.canvas.ownerDocument.defaultView) != null ? _a : this.canvas.ownerDocument;
320
+ return {
321
+ addEventListener: canvasWindow.addEventListener.bind(
322
+ canvasWindow
323
+ ),
324
+ removeEventListener: canvasWindow.removeEventListener.bind(
325
+ canvasWindow
326
+ )
327
+ };
328
+ }
329
+ /**
330
+ * @description 移除所有移动和抬起事件的监听器(清理事件绑定)
331
+ * @private
332
+ * @memberof SignaturePad
333
+ */
334
+ _removeMoveUpEventListeners() {
335
+ const { removeEventListener } = this._getListenerFunctions();
336
+ removeEventListener("pointermove", this._handlePointerMove);
337
+ removeEventListener("pointerup", this._handlePointerUp);
338
+ removeEventListener("mousemove", this._handleMouseMove);
339
+ removeEventListener("mouseup", this._handleMouseUp);
340
+ removeEventListener("touchmove", this._handleTouchMove);
341
+ removeEventListener("touchend", this._handleTouchEnd);
342
+ }
343
+ /**
344
+ * @description 判断签名画布是否为空(未绘制任何内容)
345
+ * @returns {*} {boolean}
346
+ * @memberof SignaturePad
347
+ */
348
+ isEmpty() {
349
+ return this._isEmpty;
350
+ }
351
+ /**
352
+ * @description 判断签名是否经过重新绘制(如从数据恢复签名、执行撤销后重新渲染等场景)
353
+ * @returns {*} {boolean}
354
+ * @memberof SignaturePad
355
+ */
356
+ isRedrawn() {
357
+ return this._isRedrawn;
358
+ }
359
+ /**
360
+ * @description 从点组数据加载并渲染签名,可根据配置决定是否先清空现有签名,再基于传入的点组数据重新绘制曲线和点
361
+ * @param {IPointGroup[]} pointGroups - 签名点组数据数组,每个点组包含一段签名的点集合及对应的样式配置
362
+ * @param {IFromDataOptions} [options={ clear: true }] - 加载配置项,默认清空现有签名
363
+ * @memberof SignaturePad
364
+ */
365
+ fromData(pointGroups, { clear = true } = {}) {
366
+ if (clear) {
367
+ this.clear();
368
+ }
369
+ this._fromData(
370
+ pointGroups,
371
+ this._drawCurve.bind(this),
372
+ // 绑定当前实例上下文的曲线绘制方法
373
+ this._drawDot.bind(this)
374
+ // 绑定当前实例上下文的点绘制方法
375
+ );
376
+ this._data = this._data.concat(pointGroups);
377
+ }
378
+ /**
379
+ * @description 导出当前签名的点组数据,用于保存签名原始数据,后续可通过fromData方法恢复签名
380
+ * @returns {*} {IPointGroup[]}
381
+ * @memberof SignaturePad
382
+ */
383
+ toData() {
384
+ return this._data;
385
+ }
386
+ /**
387
+ * @description 判断鼠标左键是否按下(支持判断是否仅左键按下)
388
+ * @private
389
+ * @param {MouseEvent} event - 鼠标事件对象
390
+ * @param {boolean} [only] - 是否要求仅左键按下
391
+ * @returns {*} {boolean}
392
+ * @memberof SignaturePad
393
+ */
394
+ _isLeftButtonPressed(event, only) {
395
+ if (only) {
396
+ return event.buttons === 1;
397
+ }
398
+ return (event.buttons & 1) === 1;
399
+ }
400
+ /**
401
+ * @description 将鼠标/指针事件转换为签名事件对象
402
+ * @private
403
+ * @param {(MouseEvent | PointerEvent)} event - 原始事件对象
404
+ * @returns {*} {ISignatureEvent}
405
+ * @memberof SignaturePad
406
+ */
407
+ _pointerEventToSignatureEvent(event) {
408
+ return {
409
+ event,
410
+ type: event.type,
411
+ x: event.clientX,
412
+ y: event.clientY,
413
+ pressure: "pressure" in event ? event.pressure : 0
414
+ };
415
+ }
416
+ /**
417
+ * @description 将触摸事件转换为签名事件对象
418
+ * @private
419
+ * @param {TouchEvent} event - 原始触摸事件
420
+ * @returns {*} {ISignatureEvent}
421
+ * @memberof SignaturePad
422
+ */
423
+ _touchEventToSignatureEvent(event) {
424
+ const touch = event.changedTouches[0];
425
+ return {
426
+ event,
427
+ type: event.type,
428
+ x: touch.clientX,
429
+ y: touch.clientY,
430
+ pressure: touch.force
431
+ };
432
+ }
433
+ /**
434
+ * @description 处理鼠标按下事件,当左键按下且未正在绘制时,开始新的笔触
435
+ * @private
436
+ * @param {MouseEvent} event
437
+ * @returns {*} {void}
438
+ * @memberof SignaturePad
439
+ */
440
+ _handleMouseDown(event) {
441
+ if (!this._isLeftButtonPressed(event, true) || this._drawingStroke) {
442
+ return;
443
+ }
444
+ this._strokeBegin(this._pointerEventToSignatureEvent(event));
445
+ }
446
+ /**
447
+ * @description 处理鼠标移动事件,当左键持续按下且正在绘制时,更新笔触;否则结束笔触
448
+ * @private
449
+ * @param {MouseEvent} event
450
+ * @returns {*} {void}
451
+ * @memberof SignaturePad
452
+ */
453
+ _handleMouseMove(event) {
454
+ if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {
455
+ this._strokeEnd(this._pointerEventToSignatureEvent(event), false);
456
+ return;
457
+ }
458
+ this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));
459
+ }
460
+ /**
461
+ * @description 处理鼠标抬起事件,当左键抬起时,结束当前笔触
462
+ * @private
463
+ * @param {MouseEvent} event
464
+ * @returns {*} {void}
465
+ * @memberof SignaturePad
466
+ */
467
+ _handleMouseUp(event) {
468
+ if (this._isLeftButtonPressed(event)) {
469
+ return;
470
+ }
471
+ this._strokeEnd(this._pointerEventToSignatureEvent(event));
472
+ }
473
+ /**
474
+ * @description 处理触摸开始事件,当单点触摸且不在绘制状态时,开始新的笔触,并阻止页面滚动
475
+ * @private
476
+ * @param {TouchEvent} event
477
+ * @returns {*} {void}
478
+ * @memberof SignaturePad
479
+ */
480
+ _handleTouchStart(event) {
481
+ if (event.targetTouches.length !== 1 || this._drawingStroke) {
482
+ return;
483
+ }
484
+ if (event.cancelable) {
485
+ event.preventDefault();
486
+ }
487
+ this._strokeBegin(this._touchEventToSignatureEvent(event));
488
+ }
489
+ /**
490
+ * @description 处理触摸移动事件,当单点触摸且正在绘制时,更新笔触;否则结束笔触,并阻止页面滚动
491
+ * @private
492
+ * @param {TouchEvent} event
493
+ * @returns {*} {void}
494
+ * @memberof SignaturePad
495
+ */
496
+ _handleTouchMove(event) {
497
+ if (event.targetTouches.length !== 1) {
498
+ return;
499
+ }
500
+ if (event.cancelable) {
501
+ event.preventDefault();
502
+ }
503
+ if (!this._drawingStroke) {
504
+ this._strokeEnd(this._touchEventToSignatureEvent(event), false);
505
+ return;
506
+ }
507
+ this._strokeMoveUpdate(this._touchEventToSignatureEvent(event));
508
+ }
509
+ /**
510
+ * @description 处理触摸结束事件,当所有触摸点离开时,结束当前笔触,并阻止默认行为
511
+ * @private
512
+ * @param {TouchEvent} event
513
+ * @returns {*} {void}
514
+ * @memberof SignaturePad
515
+ */
516
+ _handleTouchEnd(event) {
517
+ if (event.targetTouches.length !== 0) {
518
+ return;
519
+ }
520
+ if (event.cancelable) {
521
+ event.preventDefault();
522
+ }
523
+ this._strokeEnd(this._touchEventToSignatureEvent(event));
524
+ }
525
+ /**
526
+ * @description 获取指针事件的唯一ID(优先使用persistentDeviceId,兼容旧设备用pointerId)
527
+ * @private
528
+ * @param {PointerEvent} event
529
+ * @returns {*} {number}
530
+ * @memberof SignaturePad
531
+ */
532
+ _getPointerId(event) {
533
+ return (event == null ? void 0 : event.persistentDeviceId) || event.pointerId;
534
+ }
535
+ /**
536
+ * @description 判断当前指针事件的ID是否为当前活跃的笔触ID
537
+ * @private
538
+ * @param {PointerEvent} event - 指针事件对象
539
+ * @param {boolean} [allowUndefined] - 是否允许当前无活跃ID(初始状态)
540
+ * @returns {*} {boolean}
541
+ * @memberof SignaturePad
542
+ */
543
+ _allowPointerId(event, allowUndefined = false) {
544
+ if (typeof this._strokePointerId === "undefined") {
545
+ return allowUndefined;
546
+ }
547
+ return this._getPointerId(event) === this._strokePointerId;
548
+ }
549
+ /**
550
+ * @description 处理指针按下事件(兼容鼠标、触摸等多种输入设备)
551
+ * @private
552
+ * @param {PointerEvent} event
553
+ * @returns {*} {void}
554
+ * @memberof SignaturePad
555
+ */
556
+ _handlePointerDown(event) {
557
+ if (this._drawingStroke || !this._isLeftButtonPressed(event) || !this._allowPointerId(event, true)) {
558
+ return;
559
+ }
560
+ this._strokePointerId = this._getPointerId(event);
561
+ event.preventDefault();
562
+ this._strokeBegin(this._pointerEventToSignatureEvent(event));
563
+ }
564
+ /**
565
+ * @description 处理指针移动事件,当指针ID有效、左键持续按下且正在绘制时,更新笔触;否则结束笔触
566
+ * @private
567
+ * @param {PointerEvent} event
568
+ * @returns {*} {void}
569
+ * @memberof SignaturePad
570
+ */
571
+ _handlePointerMove(event) {
572
+ if (!this._allowPointerId(event)) {
573
+ return;
574
+ }
575
+ if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {
576
+ this._strokeEnd(this._pointerEventToSignatureEvent(event), false);
577
+ return;
578
+ }
579
+ event.preventDefault();
580
+ this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));
581
+ }
582
+ /**
583
+ * @description 处理指针抬起事件,当左键抬起且指针ID有效时,结束当前笔触
584
+ * @private
585
+ * @param {PointerEvent} event
586
+ * @returns {*} {void}
587
+ * @memberof SignaturePad
588
+ */
589
+ _handlePointerUp(event) {
590
+ if (this._isLeftButtonPressed(event) || !this._allowPointerId(event)) {
591
+ return;
592
+ }
593
+ event.preventDefault();
594
+ this._strokeEnd(this._pointerEventToSignatureEvent(event));
595
+ }
596
+ /**
597
+ * @description 获取点组的样式配置(优先使用点组自身配置,否则用全局配置)
598
+ * @private
599
+ * @param {IPointGroup} [group] - 点组对象(可选)
600
+ * @returns {*} {IPointGroupOptions}
601
+ * @memberof SignaturePad
602
+ */
603
+ _getPointGroupOptions(group) {
604
+ return {
605
+ penColor: group && "penColor" in group ? group.penColor : this.penColor,
606
+ dotSize: group && "dotSize" in group ? group.dotSize : this.dotSize,
607
+ minWidth: group && "minWidth" in group ? group.minWidth : this.minWidth,
608
+ maxWidth: group && "maxWidth" in group ? group.maxWidth : this.maxWidth,
609
+ velocityFilterWeight: group && "velocityFilterWeight" in group ? group.velocityFilterWeight : this.velocityFilterWeight,
610
+ compositeOperation: group && "compositeOperation" in group ? group.compositeOperation : this.compositeOperation
611
+ };
612
+ }
613
+ /**
614
+ * @description 开始绘制笔触(初始化事件监听和绘制状态)
615
+ * @private
616
+ * @param {ISignatureEvent} event - 签名事件对象
617
+ * @memberof SignaturePad
618
+ */
619
+ _strokeBegin(event) {
620
+ const { addEventListener } = this._getListenerFunctions();
621
+ switch (event.event.type) {
622
+ case "mousedown":
623
+ addEventListener("mousemove", this._handleMouseMove, {
624
+ passive: false
625
+ });
626
+ addEventListener("mouseup", this._handleMouseUp, { passive: false });
627
+ break;
628
+ case "touchstart":
629
+ addEventListener("touchmove", this._handleTouchMove, {
630
+ passive: false
631
+ });
632
+ addEventListener("touchend", this._handleTouchEnd, { passive: false });
633
+ break;
634
+ case "pointerdown":
635
+ addEventListener("pointermove", this._handlePointerMove, {
636
+ passive: false
637
+ });
638
+ addEventListener("pointerup", this._handlePointerUp, {
639
+ passive: false
640
+ });
641
+ break;
642
+ default:
643
+ }
644
+ this._drawingStroke = true;
645
+ const pointGroupOptions = this._getPointGroupOptions();
646
+ const newPointGroup = {
647
+ ...pointGroupOptions,
648
+ points: []
649
+ };
650
+ this._data.push(newPointGroup);
651
+ this._reset(pointGroupOptions);
652
+ this._strokeUpdate(event);
653
+ }
654
+ /**
655
+ * @description 更新绘制(处理新点并绘制曲线/点)
656
+ * @private
657
+ * @param {ISignatureEvent} event
658
+ * @returns {*} {void}
659
+ * @memberof SignaturePad
660
+ */
661
+ _strokeUpdate(event) {
662
+ if (!this._drawingStroke) {
663
+ return;
664
+ }
665
+ if (this._data.length === 0) {
666
+ this._strokeBegin(event);
667
+ return;
668
+ }
669
+ const point = this._createPoint(event.x, event.y, event.pressure);
670
+ const lastPointGroup = this._data[this._data.length - 1];
671
+ const lastPoints = lastPointGroup.points;
672
+ const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];
673
+ const isLastPointTooClose = lastPoint ? point.distanceTo(lastPoint) <= this.minDistance : false;
674
+ const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);
675
+ if (!lastPoint || !(lastPoint && isLastPointTooClose)) {
676
+ const curve = this._addPoint(point, pointGroupOptions);
677
+ if (!lastPoint) {
678
+ this._drawDot(point, pointGroupOptions);
679
+ } else if (curve) {
680
+ this._drawCurve(curve, pointGroupOptions);
681
+ }
682
+ lastPoints.push({
683
+ time: point.time,
684
+ x: point.x,
685
+ y: point.y,
686
+ pressure: point.pressure
687
+ });
688
+ }
689
+ }
690
+ /**
691
+ * @description 结束绘制笔触(清理事件监听和绘制状态)
692
+ * @private
693
+ * @param {ISignatureEvent} event - 签名事件对象
694
+ * @param {boolean} [shouldUpdate=true] - 是否在结束前更新绘制
695
+ * @returns {*} {void}
696
+ * @memberof SignaturePad
697
+ */
698
+ _strokeEnd(event, shouldUpdate = true) {
699
+ this._removeMoveUpEventListeners();
700
+ if (!this._drawingStroke) {
701
+ return;
702
+ }
703
+ if (shouldUpdate) {
704
+ this._strokeUpdate(event);
705
+ }
706
+ this._drawingStroke = false;
707
+ this._strokePointerId = void 0;
708
+ }
709
+ /**
710
+ * @description 初始化指针事件处理(绑定指针按下事件)
711
+ * @private
712
+ * @memberof SignaturePad
713
+ */
714
+ _handlePointerEvents() {
715
+ this._drawingStroke = false;
716
+ this.canvas.addEventListener("pointerdown", this._handlePointerDown, {
717
+ passive: false
718
+ });
719
+ }
720
+ /**
721
+ * @description 初始化鼠标事件处理(绑定鼠标按下事件)
722
+ * @private
723
+ * @memberof SignaturePad
724
+ */
725
+ _handleMouseEvents() {
726
+ this._drawingStroke = false;
727
+ this.canvas.addEventListener("mousedown", this._handleMouseDown, {
728
+ passive: false
729
+ });
730
+ }
731
+ /**
732
+ * @description 初始化触摸事件处理(绑定触摸开始事件)
733
+ * @private
734
+ * @memberof SignaturePad
735
+ */
736
+ _handleTouchEvents() {
737
+ this.canvas.addEventListener("touchstart", this._handleTouchStart, {
738
+ passive: false
739
+ });
740
+ }
741
+ /**
742
+ * @description 重置绘制状态(清空最近点、重置速度和宽度等)
743
+ * @private
744
+ * @param {IPointGroupOptions} options - 点组样式配置
745
+ * @memberof SignaturePad
746
+ */
747
+ _reset(options) {
748
+ this._lastPoints = [];
749
+ this._lastVelocity = 0;
750
+ this._lastWidth = (options.minWidth + options.maxWidth) / 2;
751
+ this._ctx.fillStyle = options.penColor;
752
+ this._ctx.globalCompositeOperation = options.compositeOperation;
753
+ }
754
+ /**
755
+ * @description 创建点对象(转换坐标为画布相对坐标)
756
+ * @private
757
+ * @param {number} x - 原始X坐标(相对于视口)
758
+ * @param {number} y - 原始Y坐标(相对于视口)
759
+ * @param {number} pressure - 压力值
760
+ * @returns {*} {Point}
761
+ * @memberof SignaturePad
762
+ */
763
+ _createPoint(x, y, pressure) {
764
+ const rect = this.canvas.getBoundingClientRect();
765
+ return new Point(
766
+ x - rect.left,
767
+ y - rect.top,
768
+ pressure,
769
+ (/* @__PURE__ */ new Date()).getTime()
770
+ );
771
+ }
772
+ /**
773
+ * @description 添加点到最近点列表,并在点足够时生成贝塞尔曲线
774
+ * @private
775
+ * @param {Point} point - 新点
776
+ * @param {IPointGroupOptions} options - 样式配置
777
+ * @returns {*} {(Bezier | null)}
778
+ * @memberof SignaturePad
779
+ */
780
+ _addPoint(point, options) {
781
+ const { _lastPoints } = this;
782
+ _lastPoints.push(point);
783
+ if (_lastPoints.length > 2) {
784
+ if (_lastPoints.length === 3) {
785
+ _lastPoints.unshift(_lastPoints[0]);
786
+ }
787
+ const widths = this._calculateCurveWidths(
788
+ _lastPoints[1],
789
+ _lastPoints[2],
790
+ options
791
+ );
792
+ const curve = Bezier.fromPoints(_lastPoints, widths);
793
+ _lastPoints.shift();
794
+ return curve;
795
+ }
796
+ return null;
797
+ }
798
+ /**
799
+ * @description 计算曲线的起始和结束宽度(基于速度动态调整)
800
+ * @private
801
+ * @param {Point} startPoint - 曲线起点
802
+ * @param {Point} endPoint - 曲线终点
803
+ * @param {IPointGroupOptions} options - 样式配置
804
+ * @returns {*} {{ start: number; end: number }}
805
+ * @memberof SignaturePad
806
+ */
807
+ _calculateCurveWidths(startPoint, endPoint, options) {
808
+ const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - options.velocityFilterWeight) * this._lastVelocity;
809
+ const newWidth = this._strokeWidth(velocity, options);
810
+ const widths = {
811
+ end: newWidth,
812
+ start: this._lastWidth
813
+ };
814
+ this._lastVelocity = velocity;
815
+ this._lastWidth = newWidth;
816
+ return widths;
817
+ }
818
+ /**
819
+ * @description 根据速度计算线条宽度(速度越快,宽度越接近最小宽度)
820
+ * @private
821
+ * @param {number} velocity - 绘制速度
822
+ * @param {IPointGroupOptions} options - 样式配置
823
+ * @returns {*} {number}
824
+ * @memberof SignaturePad
825
+ */
826
+ _strokeWidth(velocity, options) {
827
+ return Math.max(options.maxWidth / (velocity + 1), options.minWidth);
828
+ }
829
+ /**
830
+ * @description 绘制曲线片段(以点为中心的圆,用于模拟线条)
831
+ * @private
832
+ * @param {number} x - 片段X坐标
833
+ * @param {number} y - 片段Y坐标
834
+ * @param {number} width - 片段宽度(圆的半径)
835
+ * @memberof SignaturePad
836
+ */
837
+ _drawCurveSegment(x, y, width) {
838
+ const ctx = this._ctx;
839
+ ctx.moveTo(x, y);
840
+ ctx.arc(x, y, width, 0, 2 * Math.PI, false);
841
+ this._isEmpty = false;
842
+ this._isRedrawn = true;
843
+ }
844
+ /**
845
+ * @description 绘制贝塞尔曲线(通过分段绘制多个圆模拟平滑线条)
846
+ * @private
847
+ * @param {Bezier} curve - 贝塞尔曲线对象
848
+ * @param {IPointGroupOptions} options - 样式配置
849
+ * @memberof SignaturePad
850
+ */
851
+ _drawCurve(curve, options) {
852
+ const ctx = this._ctx;
853
+ const widthDelta = curve.endWidth - curve.startWidth;
854
+ const drawSteps = Math.ceil(curve.length()) * 2;
855
+ ctx.beginPath();
856
+ ctx.fillStyle = options.penColor;
857
+ for (let i = 0; i < drawSteps; i += 1) {
858
+ const t = i / drawSteps;
859
+ const tt = t * t;
860
+ const ttt = tt * t;
861
+ const u = 1 - t;
862
+ const uu = u * u;
863
+ const uuu = uu * u;
864
+ let x = uuu * curve.startPoint.x;
865
+ x += 3 * uu * t * curve.control1.x;
866
+ x += 3 * u * tt * curve.control2.x;
867
+ x += ttt * curve.endPoint.x;
868
+ let y = uuu * curve.startPoint.y;
869
+ y += 3 * uu * t * curve.control1.y;
870
+ y += 3 * u * tt * curve.control2.y;
871
+ y += ttt * curve.endPoint.y;
872
+ const width = Math.min(
873
+ curve.startWidth + ttt * widthDelta,
874
+ options.maxWidth
875
+ );
876
+ this._drawCurveSegment(x, y, width);
877
+ }
878
+ ctx.closePath();
879
+ ctx.fill();
880
+ }
881
+ /**
882
+ * @description 绘制点(用于笔触起始或单点点击)
883
+ * @private
884
+ * @param {IBasicPoint} point - 点对象
885
+ * @param {IPointGroupOptions} options - 样式配置
886
+ * @memberof SignaturePad
887
+ */
888
+ _drawDot(point, options) {
889
+ const ctx = this._ctx;
890
+ const width = options.dotSize > 0 ? options.dotSize : (options.minWidth + options.maxWidth) / 2;
891
+ ctx.beginPath();
892
+ this._drawCurveSegment(point.x, point.y, width);
893
+ ctx.closePath();
894
+ ctx.fillStyle = options.penColor;
895
+ ctx.fill();
896
+ }
897
+ /**
898
+ * @description 从点组数据绘制签名(用于从保存的数据恢复签名)
899
+ * @private
900
+ * @param {IPointGroup[]} pointGroups - 点组数据数组
901
+ * @param {Function} drawCurve - 绘制曲线的函数
902
+ * @param {Function} drawDot - 绘制点的函数
903
+ * @memberof SignaturePad
904
+ */
905
+ _fromData(pointGroups, drawCurve, drawDot) {
906
+ for (const group of pointGroups) {
907
+ const { points } = group;
908
+ const pointGroupOptions = this._getPointGroupOptions(group);
909
+ if (points.length > 1) {
910
+ for (let j = 0; j < points.length; j += 1) {
911
+ const basicPoint = points[j];
912
+ const point = new Point(
913
+ basicPoint.x,
914
+ basicPoint.y,
915
+ basicPoint.pressure,
916
+ basicPoint.time
917
+ );
918
+ if (j === 0) {
919
+ this._reset(pointGroupOptions);
920
+ }
921
+ const curve = this._addPoint(point, pointGroupOptions);
922
+ if (curve) {
923
+ drawCurve(curve, pointGroupOptions);
924
+ }
925
+ }
926
+ } else {
927
+ this._reset(pointGroupOptions);
928
+ drawDot(points[0], pointGroupOptions);
929
+ }
930
+ }
931
+ }
932
+ /**
933
+ * @description 返回 svg 字符串而不转换为 base64
934
+ * @param {IToSVGOptions} [{ includeBackgroundColor = false }={}] includeBackgroundColor值为true时将背景颜色添加到 SVG 输出
935
+ * @returns {*} {string}
936
+ * @memberof SignaturePad
937
+ */
938
+ toSVG({ includeBackgroundColor = false } = {}) {
939
+ const pointGroups = this._data;
940
+ const ratio = Math.max(window.devicePixelRatio || 1, 1);
941
+ const minX = 0;
942
+ const minY = 0;
943
+ const maxX = this.canvas.width / ratio;
944
+ const maxY = this.canvas.height / ratio;
945
+ const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
946
+ svg.setAttribute("xmlns", "http://www.w3.org/2000/svg");
947
+ svg.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");
948
+ svg.setAttribute("viewBox", "".concat(minX, " ").concat(minY, " ").concat(maxX, " ").concat(maxY));
949
+ svg.setAttribute("width", maxX.toString());
950
+ svg.setAttribute("height", maxY.toString());
951
+ if (includeBackgroundColor && this.backgroundColor) {
952
+ const rect = document.createElement("rect");
953
+ rect.setAttribute("width", "100%");
954
+ rect.setAttribute("height", "100%");
955
+ rect.setAttribute("fill", this.backgroundColor);
956
+ svg.appendChild(rect);
957
+ }
958
+ this._fromData(
959
+ pointGroups,
960
+ (curve, { penColor }) => {
961
+ const path = document.createElement("path");
962
+ if (!Number.isNaN(curve.control1.x) && !Number.isNaN(curve.control1.y) && !Number.isNaN(curve.control2.x) && !Number.isNaN(curve.control2.y)) {
963
+ const attr = "M ".concat(curve.startPoint.x.toFixed(3), ",").concat(curve.startPoint.y.toFixed(
964
+ 3
965
+ ), " ") + "C ".concat(curve.control1.x.toFixed(3), ",").concat(curve.control1.y.toFixed(3), " ") + "".concat(curve.control2.x.toFixed(3), ",").concat(curve.control2.y.toFixed(3), " ") + "".concat(curve.endPoint.x.toFixed(3), ",").concat(curve.endPoint.y.toFixed(3));
966
+ path.setAttribute("d", attr);
967
+ path.setAttribute("stroke-width", (curve.endWidth * 2.25).toFixed(3));
968
+ path.setAttribute("stroke", penColor);
969
+ path.setAttribute("fill", "none");
970
+ path.setAttribute("stroke-linecap", "round");
971
+ svg.appendChild(path);
972
+ }
973
+ },
974
+ (point, { penColor, dotSize, minWidth, maxWidth }) => {
975
+ const circle = document.createElement("circle");
976
+ const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;
977
+ circle.setAttribute("r", size.toString());
978
+ circle.setAttribute("cx", point.x.toString());
979
+ circle.setAttribute("cy", point.y.toString());
980
+ circle.setAttribute("fill", penColor);
981
+ svg.appendChild(circle);
982
+ }
983
+ );
984
+ return svg.outerHTML;
985
+ }
986
+ /**
987
+ * @description 将Blob对象转换为DataURL
988
+ * @param {Blob} blob - 要转换的Blob对象
989
+ * @returns {*} {Promise<string>}
990
+ * @memberof SignaturePad
991
+ */
992
+ blobToDataURL(blob) {
993
+ return new Promise((resolve, reject) => {
994
+ const reader = new FileReader();
995
+ reader.onload = () => {
996
+ resolve(reader.result);
997
+ };
998
+ reader.onerror = () => {
999
+ reject(new Error("\u65E0\u6CD5\u8F6C\u6362Blob\u4E3ADataURL"));
1000
+ };
1001
+ reader.readAsDataURL(blob);
1002
+ });
1003
+ }
1004
+ /**
1005
+ * @description 处理图片加载并计算加载时间(通过回调通知完成状态)
1006
+ * @param {string} imageUrl
1007
+ * @param {() => void} _callBack
1008
+ * @memberof SignaturePad
1009
+ */
1010
+ loadImage(imageUrl, _callBack) {
1011
+ const img = new Image();
1012
+ img.onload = () => _callBack();
1013
+ img.onerror = () => _callBack;
1014
+ img.src = imageUrl;
1015
+ }
1016
+ }
1017
+
1018
+ export { SignaturePad as default };